Module initialization using lifecycle hooks (ManagedModule) #44
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces module initialization with lifecycle hooks using ManagedModule and ModuleManager.
Modules deriving from ManagedModule can optionally implement the following lifecycle hooks to customize their behavior.
A ConduitService can be specified on the 'service' member.
Configurable modules can define a config schema using the optional abstract 'config' member.
Check out Authentication for an example implementation.
It's currently the only one migrated to the new format. I'll update the rest of the modules as a followup PR.
Writing modules based directly on ConduitServiceModule is still supported, but requires a minor single line change in module constructors (see Breaking Change below).
Closes #40.
What kind of change does this PR introduce? (check at least one)
Does this PR introduce a breaking change? (check one)
ConduitServiceModule does not receive a ConduitGrpcSdk arg anymore.
Constructors of modules extending ConduitServiceModule directly should explicitly set 'this.grpcSdk' instead of passing it as an arg to base constructor.
The PR fulfills these requirements:
master
branchfix #xxx
, where "xxx" is the issue number)If adding a new feature, the PR's description includes: