chore(otel): avoid lazy loading workflow package in interceptors #1872
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.
What was changed
Introduce a new
workflow-importsmodule in the interceptors package the just rexports what is needed by the workflow interceptors. In the package itself these exports are just stubs that throw if they are used.When bundling the workflow bundle we use NormalModuleReplacementPlugin to swap out this module with one that actually re-exports from
@temporalio/workflow.Why?
A follow up to #1812 overdue to avoid lazy module loading while keeping
@temporalio/workflowas an optional dependency.Checklist
Closes N/A
How was this tested:
The OTEL tests continue to pass with spans getting created.
Made a quick test project to show it is okay to not have
@temporal/workflowand use the interceptors package up until you attempt to use a Workflow interceptor.{ "dependencies": { "@temporalio/common": "^1.14.0", "@temporalio/interceptors-opentelemetry": "file:/Users/olszewski/tmp/otel_lazy_fix/packages/interceptors-opentelemetry" }, "scripts": { "test": "node index.js" }, "type": "module" }Result:
N/A