* feat: support for starting devtime dependencies in an abstract manner
* feat: support for starting devtime dependencies in an abstract manner
* fix: spell
* fix: lint
* fix: markdown lint
* fix: b.Helper
* fix: lint spell
* fix: field padding
* chore: protect the usage of dev dependencies with the "dev" build tag
* fix: error message
* docs: fix type name
* fix: mock context cancellation
* docs: simpler
* fix: lint unused receiver
* fix: handle error in benchmarks
* lint: remove build tag
* fix: wrap error
* fix: lint
* fix: explain why lint exclusion
* chore: best effort while terminating dependencies
* gix: lintern name
* fix: reduce flakiness in tests
* chore: get dependency state for logs
* chore: protect dev time tests and benchmarks under build tag
* chore: add build tag in more places
* fix: more conservative context cancellation timeout in tests
* chore: remove build tags
* chore: rename to Services
* fix: update tests
* fix: lint
* fix: lint
* fix: apply coderrabit suggestion
* chore: add more unit tests
* chore: add more unit tests
* chore: refactor tests
* fix: avoid control flags in tests
* chore: consistent error message in start
* chore: simplify error logic
* chore: remove flag coupling
* chore: simplify benchmarks
* chore: add corerabbit suggetion
* fix: wording
* chore: log error on service termination
* docs: wording
* fix: typo in error message
* fix: wording
* fix: panic on startup error
* chore: store started services separately, so that we can terminate them properly
* docs: update example
* fix: use context provider instead of storing the context
* chore: use require.Empty
* fix: no tabs in docs
* chore: move field for better alignment
* docs: do not use interface as method receiver
* docs: proper usage of JSON bind
* fix: use startup context for bootstrap log
* chore: move happy path to the left
* fix: use configured consistently
* chore: terminate started services in reverse order
* fix: consistent access to the config context
* chore: test names and benchmarks location
* chore: benchmark refinement
* chore: store the services into the global State
* chore: add functions to access the Services in the state
* chore: hex-encode the hashes
* chore: consistent var name for services
* chore: non racey service initialisation
* fix: wrong range iteration in service keys
* fix: use inline
* chore: more tests for the generics functions for services
* chore: add benchmarks for service functions
* fix: benchmarks refactor was wrong
* fix. refine error message
* fix: do not cause overhead in newState, instead pre-calculate the prefix hash at init
* chore: simplify hashing
* chore: use smaller, and testable function for initServices
* chore: initialize services in the app.init
* chore: init services before blocking the app init
* Revert "chore: init services before blocking the app init"
This reverts commit bb67cf6380cb71ad5ae4ab4807cdfbf0c7eafa1b.
* chore: move happy path to the left at initServices
* fix: register shutdown hooks for services after app's mutext is unlocked
---------
Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>