refactor(sdk): Resolve selected circular dependencies in the SDK package #3351
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 pull request refactors how configuration types are imported and organized throughout the SDK. The main change is the migration of type-only imports from
Configto a newConfigTypesmodule, improving type safety, clarity, and separation of concerns. Additionally, some exports are moved to reflect this new structure.Note
This PR resolves
Config.ts→utils/utils.ts→Config.tscircular dependency.Changes
Refactoring configuration type imports:
Replaced direct imports of types such as
StreamrClientConfig,StrictStreamrClientConfig,NetworkPeerDescriptor, and others fromConfigwith type-only imports from a newConfigTypesmodule across all SDK files. This includes files likeMetricsPublisher.ts,NetworkNodeFacade.ts,ProxyNodeFinder.ts, various contract-related files, and encryption modules. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18]Updated
StreamrClient.tsto import only types fromConfigTypes, while keeping function imports (likecreateStrictConfig,redactConfig) fromConfigfor clearer separation between types and implementation.Export and API surface changes:
Moved exports of types and constants (e.g.,
EnvironmentId,EntryPointDiscovery,GapFillStrategy,ConfigInjectionToken) fromConfigtoConfigTypesinexports.ts, ensuring all type exports come from the new module.Removed the direct export of
GapFillStrategyfromexports.tsin favor of exporting it viaConfigTypes.Future steps
These changes help ensure a cleaner codebase by keeping type definitions and implementation details separate, making the SDK easier to maintain and understand.
Important
Remember to run
npm run clean && npm run bootstrapto avoid confusion.