Skip to content

Commit e2ef301

Browse files
authored
refactor(sdk): Clean-up tsyringe setup (#3362)
## Summary Centralizes the `tsyringe` dependency injection setup by introducing a dedicated `setupTsyringe.ts` module that handles the `reflect-metadata` import. This eliminates the need for scattered `import 'reflect-metadata'` statements across source and test files, making the DI configuration more maintainable and ensuring consistent initialization. ## Changes - Created `packages/sdk/src/setupTsyringe.ts` to centralize the `reflect-metadata` import - Updated core SDK entry points (`StreamrClient.ts`, `Config.ts`, `ConfigTypes.ts`, `PersistenceManager.ts`) to import the new setup module instead of `reflect-metadata` directly - Added `setupTsyringe.ts` to Jest's `setupFilesAfterEnv` configuration for automatic test initialization - Added `setupTsyringe.ts` import to `karma-setup.js` to fix the browser test build - Removed redundant `import 'reflect-metadata'` statements from 60+ test files ## Limitations and future improvements - The setup module currently only imports `reflect-metadata`, but could be extended in the future to include other tsyringe configuration or polyfills if needed
1 parent 4f55793 commit e2ef301

File tree

69 files changed

+5
-124
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+5
-124
lines changed

packages/sdk/jest.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const config: Config.InitialOptions = {
66
globalSetup: './jest.setup.ts',
77
setupFilesAfterEnv: [
88
...defaultConfig.setupFilesAfterEnv,
9+
'./src/setupTsyringe.ts',
910
'./test/test-utils/customMatchers.ts',
1011
'@streamr/test-utils/setupCustomMatchers',
1112
],

packages/sdk/jest.setup.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// eslint-disable-next-line import/no-extraneous-dependencies
22
import { GitRevisionPlugin } from 'git-revision-webpack-plugin'
3-
import 'reflect-metadata'
43
import pkg from './package.json'
54

65
export default async function setup(): Promise<void> {

packages/sdk/karma-setup.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* package. See karma-config.js in that package for more details.
44
*/
55

6+
import './src/setupTsyringe.ts'
67
import './test/test-utils/customMatchers'
78
import { customMatchers } from '@streamr/test-utils'
89

packages/sdk/src/Config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'reflect-metadata'
21
import cloneDeep from 'lodash/cloneDeep'
32
import { merge } from '@streamr/utils'
43
import { generateClientId } from './utils/utils'

packages/sdk/src/ConfigTypes.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'reflect-metadata'
21
import type { Overrides, Eip1193Provider } from 'ethers'
32
import type { DeepRequired, MarkOptional } from 'ts-essentials'
43
import type { HexString, LogLevel, KeyType } from '@streamr/utils'

packages/sdk/src/PersistenceManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'reflect-metadata'
1+
import './setupTsyringe'
22

33
import { join } from 'path'
44
import { inject, Lifecycle, scoped } from 'tsyringe'

packages/sdk/src/StreamrClient.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
* Importing 'timers' ensures `setImmediate` is available in browsers,
33
* as it's polyfilled by `timers-browserify`. In Node.js, it's already global.
44
*/
5-
import 'reflect-metadata'
65
import 'timers'
6+
import './setupTsyringe'
77
import './utils/PatchTsyringe'
88

99
import { DhtAddress } from '@streamr/dht'

packages/sdk/src/setupTsyringe.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import 'reflect-metadata'

packages/sdk/test/end-to-end/MemoryLeaks.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { config as CHAIN_CONFIG } from '@streamr/config'
22
import { createTestPrivateKey, describeOnlyInNodeJs } from '@streamr/test-utils'
33
import { Defer, merge, TheGraphClient, wait } from '@streamr/utils'
4-
import 'reflect-metadata'
54
import { DependencyContainer, container as rootContainer } from 'tsyringe'
65
import { writeHeapSnapshot } from 'v8'
76
import { IdentityInjectionToken } from '../../src/identity/Identity'

packages/sdk/test/end-to-end/StorageNodeRegistry.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import 'reflect-metadata'
2-
31
import { createTestWallet, randomEthereumAddress } from '@streamr/test-utils'
42
import { until } from '@streamr/utils'
53
import { Wallet } from 'ethers'

0 commit comments

Comments
 (0)