@brianmcd/di 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -84,7 +84,7 @@ There are 3 provider types you can use:
84
84
 
85
85
  3. Value providers: call `.registerValue(token, value)`. This is useful for making static data injectable. Use `createToken` to create the token.
86
86
 
87
- Note: Each token can only be registered once. Attempting to register the same token twice will throw an error. Use `override()` if you need to replace a registration (e.g., for testing).
87
+ Note: Each token can only be registered once. Attempting to register the same token twice will throw an error. Use `overrideValue()`, `overrideClass()`, or `overrideFactory()` if you need to replace a registration (e.g., for testing).
88
88
 
89
89
  ### Class Providers
90
90
 
@@ -251,9 +251,17 @@ Fluent builder for constructing Containers. Call `.build()` at the end to get yo
251
251
  - `registerClass<T>(Class, options?): this` - Register a class with static `deps` property
252
252
  - `registerFactory<T>(provider, options?): this` - Register a factory provider
253
253
  - `merge(otherBuilder): this` - Merge registrations from another builder
254
- - `override<T>(token, value): this` - Override an existing registration (useful for testing)
254
+ - `has(token): boolean` - Check if a token has been registered
255
255
  - `build(options?: { init?: boolean }): Promise<Container>` - Build the container. By default, also calls `init()` on the container. Set `{ init: false }` to skip automatic initialization if you need manual control over when `onInit` hooks run (useful for testing or staged startup).
256
256
 
257
+ For testing, you can explicitly override tokens that have already been registered:
258
+
259
+ - `overrideValue<T>(token, value): this` - Override an existing singleton registration with a value. Throws if the original provider is scoped.
260
+ - `overrideClass<T>(token, Class): this` - Override an existing registration with a class. Preserves the original scope.
261
+ - `overrideFactory<T>(provider): this` - Override an existing registration with a factory. Preserves the original scope.
262
+
263
+ You don't need to use the same provider type in your override that was used when the token was first registered. It's common to override a class with a mocked value using `overrideValue`, for example.
264
+
257
265
  ### Container
258
266
 
259
267
  The core DI container that holds service instances.
@@ -287,7 +295,7 @@ Container for scoped instances, created via `container.createScope()`.
287
295
 
288
296
  ## Testing
289
297
 
290
- Use `merge()` and `override()` to easily mock dependencies:
298
+ Use `merge()` and override methods to easily mock dependencies:
291
299
 
292
300
  ```typescript
293
301
  // Create a module with your production services
@@ -300,14 +308,35 @@ const createAppModule = () =>
300
308
  // In tests, merge and override specific dependencies
301
309
  const testContainer = await new ContainerBuilder()
302
310
  .merge(createAppModule())
303
- .override(CONFIG, testConfig)
304
- .override(DATABASE, mockDatabase)
311
+ .overrideValue(CONFIG, testConfig)
312
+ .overrideValue(DATABASE, mockDatabase)
305
313
  .build();
306
314
 
307
315
  // UserService now uses mockDatabase
308
316
  const userService = testContainer.get(UserService);
309
317
  ```
310
318
 
319
+ ### Overriding Scoped Providers
320
+
321
+ For scoped providers, use `overrideClass()` or `overrideFactory()`. These methods automatically preserve the original scope, so the provider remains accessible via `getScoped()`:
322
+
323
+ ```typescript
324
+ // Override a scoped class with a mock factory
325
+ const testContainer = await new ContainerBuilder()
326
+ .merge(createAppModule())
327
+ .overrideFactory({
328
+ provide: RequestScopedService,
329
+ deps: [] as const,
330
+ factory: () => mockRequestScopedService,
331
+ })
332
+ .build();
333
+
334
+ const scope = testContainer.createScope();
335
+ const service = await scope.getScoped(RequestScopedService); // Returns mock
336
+ ```
337
+
338
+ Note: `overrideValue()` cannot be used with scoped providers because values are always singletons. Use `overrideFactory()` instead.
339
+
311
340
  ## Type Safety
312
341
 
313
342
  The goal of this library is to provide type safety without limiting or complicating the library.
@@ -39,10 +39,26 @@ export declare class ContainerBuilder {
39
39
  * You can use `merge` to bring these standalone packages together into a single Container.
40
40
  */
41
41
  merge(other: ContainerBuilder): this;
42
+ /**
43
+ * Check if a token has been registered.
44
+ */
45
+ has(token: Token<unknown>): boolean;
42
46
  /**
43
47
  * Override an existing provider with a value; intended for mocking during tests.
48
+ * Only works for singleton providers. For scoped providers, use overrideFactory instead.
49
+ */
50
+ overrideValue<T>(token: Token<T>, value: T): this;
51
+ /**
52
+ * Override an existing provider with a class; intended for mocking during tests.
53
+ * Preserves the original provider's scope.
54
+ */
55
+ overrideClass<T, Deps extends readonly Token<any>[] = readonly []>(token: Token<T>, Class: InjectableClass<T, Deps>): this;
56
+ /**
57
+ * Override an existing provider with a factory; intended for mocking during tests.
58
+ * Preserves the original provider's scope.
44
59
  */
45
- override<T>(token: Token<T>, value: T): this;
60
+ overrideFactory<T, Deps extends readonly Token<any>[], DestroyDeps extends readonly Token<any>[]>(provider: FactoryProvider<T, Deps, DestroyDeps>): this;
61
+ private assertTokenRegistered;
46
62
  /**
47
63
  * Build the container - topologically sorts providers and instantiates singletons.
48
64
  * Scoped providers are validated but not instantiated - they're stored for later use in Scopes.
@@ -1 +1 @@
1
- {"version":3,"file":"container-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAE9E;;OAEG;IACI,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKxD;;;;OAIG;IACI,aAAa,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EACtE,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAYP;;OAEG;IACI,eAAe,CACpB,CAAC,EACD,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAClC,WAAW,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAYvF;;;;;OAKG;IACI,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAO3C;;OAEG;IACI,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQnD;;;;OAIG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA+DpE;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA+EvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;CAYpB"}
1
+ {"version":3,"file":"container-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAE9E;;OAEG;IACI,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKxD;;;;OAIG;IACI,aAAa,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EACtE,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAYP;;OAEG;IACI,eAAe,CACpB,CAAC,EACD,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAClC,WAAW,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAYvF;;;;;OAKG;IACI,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAO3C;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO;IAI1C;;;OAGG;IACI,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAWxD;;;OAGG;IACI,aAAa,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EACtE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,GAC9B,IAAI;IAYP;;;OAGG;IACI,eAAe,CACpB,CAAC,EACD,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAClC,WAAW,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,IAAI;IAaxD,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA+DpE;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA+EvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;CAYpB"}
@@ -68,16 +68,62 @@ class ContainerBuilder {
68
68
  }
69
69
  return this;
70
70
  }
71
+ /**
72
+ * Check if a token has been registered.
73
+ */
74
+ has(token) {
75
+ return this.registrations.has(token);
76
+ }
71
77
  /**
72
78
  * Override an existing provider with a value; intended for mocking during tests.
79
+ * Only works for singleton providers. For scoped providers, use overrideFactory instead.
73
80
  */
74
- override(token, value) {
75
- if (!this.registrations.has(token)) {
76
- throw new Error(`Cannot override: ${(0, token_to_string_js_1.tokenToString)(token)} is not registered`);
81
+ overrideValue(token, value) {
82
+ const existing = this.assertTokenRegistered(token);
83
+ if (existing.scope === scope_js_1.Scope.Scoped) {
84
+ throw new Error(`Cannot use overrideValue on scoped provider ${(0, token_to_string_js_1.tokenToString)(token)}. Use overrideFactory instead.`);
77
85
  }
78
86
  this.registrations.set(token, { type: 'value', scope: scope_js_1.Scope.Singleton, token, value });
79
87
  return this;
80
88
  }
89
+ /**
90
+ * Override an existing provider with a class; intended for mocking during tests.
91
+ * Preserves the original provider's scope.
92
+ */
93
+ overrideClass(token, Class) {
94
+ const existing = this.assertTokenRegistered(token);
95
+ this.registrations.set(token, {
96
+ type: 'class',
97
+ scope: existing.scope,
98
+ token,
99
+ Class,
100
+ deps: Class.deps ?? [],
101
+ });
102
+ return this;
103
+ }
104
+ /**
105
+ * Override an existing provider with a factory; intended for mocking during tests.
106
+ * Preserves the original provider's scope.
107
+ */
108
+ overrideFactory(provider) {
109
+ const token = provider.provide;
110
+ const existing = this.assertTokenRegistered(token);
111
+ this.registrations.set(token, {
112
+ type: 'factory',
113
+ scope: existing.scope,
114
+ token,
115
+ provider,
116
+ deps: provider.deps,
117
+ });
118
+ return this;
119
+ }
120
+ assertTokenRegistered(token) {
121
+ const existing = this.registrations.get(token);
122
+ if (!existing) {
123
+ throw new Error(`Cannot override: ${(0, token_to_string_js_1.tokenToString)(token)} is not registered`);
124
+ }
125
+ return existing;
126
+ }
81
127
  /**
82
128
  * Build the container - topologically sorts providers and instantiates singletons.
83
129
  * Scoped providers are validated but not instantiated - they're stored for later use in Scopes.
@@ -1 +1 @@
1
- {"version":3,"file":"container-builder.js","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-builder.js","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare class ScopedContainer {
11
11
  private readonly scopedClassProviders;
12
12
  private readonly scopedFactoryProviders;
13
13
  private readonly instances;
14
+ private readonly pendingPromises;
14
15
  private readonly creationOrder;
15
16
  private _isDestroyed;
16
17
  constructor(parentInstances: Map<Token<unknown>, unknown>, scopedClassProviders: Map<Token<unknown>, ScopedClassData>, scopedFactoryProviders: Map<Token<unknown>, FactoryProvider<any, any, any>>);
@@ -33,9 +34,14 @@ export declare class ScopedContainer {
33
34
  private createScopedClassInstance;
34
35
  private createScopedFactoryInstance;
35
36
  /**
36
- * Internal resolution logic shared by get() and dependency resolution.
37
+ * Internal resolution logic for dependency resolution.
37
38
  * Does not check if scope is destroyed - caller must handle that.
38
39
  */
39
40
  private resolve;
41
+ /**
42
+ * Resolves a scoped instance, returning undefined if the token is not a scoped provider.
43
+ * Handles caching of both instances and in-flight promises to prevent race conditions.
44
+ */
45
+ private resolveScoped;
40
46
  }
41
47
  //# sourceMappingURL=scoped-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-container.d.ts","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD;;;;GAIG;AACH,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAPzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IACrE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,YAAY,CAAS;gBAGV,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAC7C,oBAAoB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,EAC1D,sBAAsB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAG9F,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;OAGG;IACI,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAsBjC;;;;OAIG;IACU,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8BtD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA0CvB,yBAAyB;YAgBzB,2BAA2B;IAazC;;;OAGG;YACW,OAAO;CAuBtB"}
1
+ {"version":3,"file":"scoped-container.d.ts","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD;;;;GAIG;AACH,qBAAa,eAAe;IAYxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAbzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IAIrE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoD;IAEpF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IAEtD,OAAO,CAAC,YAAY,CAAS;gBAGV,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAC7C,oBAAoB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,EAC1D,sBAAsB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAG9F,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;OAGG;IACI,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAsBjC;;;;OAIG;IACU,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoBtD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA0CvB,yBAAyB;YAgBzB,2BAA2B;IAazC;;;OAGG;YACW,OAAO;IAcrB;;;OAGG;YACW,aAAa;CAmC5B"}
@@ -14,6 +14,9 @@ class ScopedContainer {
14
14
  scopedClassProviders;
15
15
  scopedFactoryProviders;
16
16
  instances = new Map();
17
+ // Scoped instances are created async, so we need to track pending promises to ensure that
18
+ // multiple `.getScoped` calls resolve to the same value instead of creating multiple instances.
19
+ pendingPromises = new Map();
17
20
  creationOrder = [];
18
21
  _isDestroyed = false;
19
22
  constructor(parentInstances, scopedClassProviders, scopedFactoryProviders) {
@@ -52,19 +55,11 @@ class ScopedContainer {
52
55
  if (this._isDestroyed) {
53
56
  throw new Error('Scope has been destroyed');
54
57
  }
55
- // Check if already cached in this scope
56
- if (this.instances.has(token)) {
57
- return this.instances.get(token);
58
- }
59
- // Check if it's a scoped class
60
- if (this.scopedClassProviders.has(token)) {
61
- return this.createScopedClassInstance(token);
58
+ const instance = await this.resolveScoped(token);
59
+ if (instance !== undefined) {
60
+ return instance;
62
61
  }
63
- // Check if it's a scoped factory
64
- if (this.scopedFactoryProviders.has(token)) {
65
- return this.createScopedFactoryInstance(token);
66
- }
67
- // Not a scoped provider - throw an error
62
+ // Not a scoped provider - throw appropriate error
68
63
  if (this.parentInstances.has(token)) {
69
64
  throw new Error(`Token ${(0, token_to_string_js_1.tokenToString)(token)} is a singleton. Use get() instead of getScoped().`);
70
65
  }
@@ -127,27 +122,56 @@ class ScopedContainer {
127
122
  return instance;
128
123
  }
129
124
  /**
130
- * Internal resolution logic shared by get() and dependency resolution.
125
+ * Internal resolution logic for dependency resolution.
131
126
  * Does not check if scope is destroyed - caller must handle that.
132
127
  */
133
128
  async resolve(token) {
129
+ const instance = await this.resolveScoped(token);
130
+ if (instance !== undefined) {
131
+ return instance;
132
+ }
133
+ // Fall back to parent container
134
+ if (this.parentInstances.has(token)) {
135
+ return this.parentInstances.get(token);
136
+ }
137
+ throw new Error(`Token not registered: ${(0, token_to_string_js_1.tokenToString)(token)}`);
138
+ }
139
+ /**
140
+ * Resolves a scoped instance, returning undefined if the token is not a scoped provider.
141
+ * Handles caching of both instances and in-flight promises to prevent race conditions.
142
+ */
143
+ async resolveScoped(token) {
134
144
  // Check if already cached in this scope
135
145
  if (this.instances.has(token)) {
136
146
  return this.instances.get(token);
137
147
  }
148
+ // Check if creation is already in progress (prevents race condition)
149
+ if (this.pendingPromises.has(token)) {
150
+ return this.pendingPromises.get(token);
151
+ }
138
152
  // Check if it's a scoped class
139
153
  if (this.scopedClassProviders.has(token)) {
140
- return this.createScopedClassInstance(token);
154
+ const promise = this.createScopedClassInstance(token);
155
+ this.pendingPromises.set(token, promise);
156
+ try {
157
+ return await promise;
158
+ }
159
+ finally {
160
+ this.pendingPromises.delete(token);
161
+ }
141
162
  }
142
163
  // Check if it's a scoped factory
143
164
  if (this.scopedFactoryProviders.has(token)) {
144
- return this.createScopedFactoryInstance(token);
145
- }
146
- // Fall back to parent container
147
- if (this.parentInstances.has(token)) {
148
- return this.parentInstances.get(token);
165
+ const promise = this.createScopedFactoryInstance(token);
166
+ this.pendingPromises.set(token, promise);
167
+ try {
168
+ return await promise;
169
+ }
170
+ finally {
171
+ this.pendingPromises.delete(token);
172
+ }
149
173
  }
150
- throw new Error(`Token not registered: ${(0, token_to_string_js_1.tokenToString)(token)}`);
174
+ return undefined;
151
175
  }
152
176
  }
153
177
  exports.ScopedContainer = ScopedContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-container.js","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scoped-container.js","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"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"}
@@ -39,10 +39,26 @@ export declare class ContainerBuilder {
39
39
  * You can use `merge` to bring these standalone packages together into a single Container.
40
40
  */
41
41
  merge(other: ContainerBuilder): this;
42
+ /**
43
+ * Check if a token has been registered.
44
+ */
45
+ has(token: Token<unknown>): boolean;
42
46
  /**
43
47
  * Override an existing provider with a value; intended for mocking during tests.
48
+ * Only works for singleton providers. For scoped providers, use overrideFactory instead.
49
+ */
50
+ overrideValue<T>(token: Token<T>, value: T): this;
51
+ /**
52
+ * Override an existing provider with a class; intended for mocking during tests.
53
+ * Preserves the original provider's scope.
54
+ */
55
+ overrideClass<T, Deps extends readonly Token<any>[] = readonly []>(token: Token<T>, Class: InjectableClass<T, Deps>): this;
56
+ /**
57
+ * Override an existing provider with a factory; intended for mocking during tests.
58
+ * Preserves the original provider's scope.
44
59
  */
45
- override<T>(token: Token<T>, value: T): this;
60
+ overrideFactory<T, Deps extends readonly Token<any>[], DestroyDeps extends readonly Token<any>[]>(provider: FactoryProvider<T, Deps, DestroyDeps>): this;
61
+ private assertTokenRegistered;
46
62
  /**
47
63
  * Build the container - topologically sorts providers and instantiates singletons.
48
64
  * Scoped providers are validated but not instantiated - they're stored for later use in Scopes.
@@ -1 +1 @@
1
- {"version":3,"file":"container-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAE9E;;OAEG;IACI,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKxD;;;;OAIG;IACI,aAAa,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EACtE,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAYP;;OAEG;IACI,eAAe,CACpB,CAAC,EACD,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAClC,WAAW,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAYvF;;;;;OAKG;IACI,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAO3C;;OAEG;IACI,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQnD;;;;OAIG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA+DpE;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA+EvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;CAYpB"}
1
+ {"version":3,"file":"container-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAE9E;;OAEG;IACI,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKxD;;;;OAIG;IACI,aAAa,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EACtE,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAYP;;OAEG;IACI,eAAe,CACpB,CAAC,EACD,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAClC,WAAW,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAYvF;;;;;OAKG;IACI,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAO3C;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO;IAI1C;;;OAGG;IACI,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAWxD;;;OAGG;IACI,aAAa,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EACtE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,GAC9B,IAAI;IAYP;;;OAGG;IACI,eAAe,CACpB,CAAC,EACD,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAClC,WAAW,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,IAAI;IAaxD,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA+DpE;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA+EvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;CAYpB"}
@@ -65,16 +65,62 @@ export class ContainerBuilder {
65
65
  }
66
66
  return this;
67
67
  }
68
+ /**
69
+ * Check if a token has been registered.
70
+ */
71
+ has(token) {
72
+ return this.registrations.has(token);
73
+ }
68
74
  /**
69
75
  * Override an existing provider with a value; intended for mocking during tests.
76
+ * Only works for singleton providers. For scoped providers, use overrideFactory instead.
70
77
  */
71
- override(token, value) {
72
- if (!this.registrations.has(token)) {
73
- throw new Error(`Cannot override: ${tokenToString(token)} is not registered`);
78
+ overrideValue(token, value) {
79
+ const existing = this.assertTokenRegistered(token);
80
+ if (existing.scope === Scope.Scoped) {
81
+ throw new Error(`Cannot use overrideValue on scoped provider ${tokenToString(token)}. Use overrideFactory instead.`);
74
82
  }
75
83
  this.registrations.set(token, { type: 'value', scope: Scope.Singleton, token, value });
76
84
  return this;
77
85
  }
86
+ /**
87
+ * Override an existing provider with a class; intended for mocking during tests.
88
+ * Preserves the original provider's scope.
89
+ */
90
+ overrideClass(token, Class) {
91
+ const existing = this.assertTokenRegistered(token);
92
+ this.registrations.set(token, {
93
+ type: 'class',
94
+ scope: existing.scope,
95
+ token,
96
+ Class,
97
+ deps: Class.deps ?? [],
98
+ });
99
+ return this;
100
+ }
101
+ /**
102
+ * Override an existing provider with a factory; intended for mocking during tests.
103
+ * Preserves the original provider's scope.
104
+ */
105
+ overrideFactory(provider) {
106
+ const token = provider.provide;
107
+ const existing = this.assertTokenRegistered(token);
108
+ this.registrations.set(token, {
109
+ type: 'factory',
110
+ scope: existing.scope,
111
+ token,
112
+ provider,
113
+ deps: provider.deps,
114
+ });
115
+ return this;
116
+ }
117
+ assertTokenRegistered(token) {
118
+ const existing = this.registrations.get(token);
119
+ if (!existing) {
120
+ throw new Error(`Cannot override: ${tokenToString(token)} is not registered`);
121
+ }
122
+ return existing;
123
+ }
78
124
  /**
79
125
  * Build the container - topologically sorts providers and instantiates singletons.
80
126
  * Scoped providers are validated but not instantiated - they're stored for later use in Scopes.
@@ -1 +1 @@
1
- {"version":3,"file":"container-builder.js","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-builder.js","sourceRoot":"","sources":["../../../src/lib/container-builder.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare class ScopedContainer {
11
11
  private readonly scopedClassProviders;
12
12
  private readonly scopedFactoryProviders;
13
13
  private readonly instances;
14
+ private readonly pendingPromises;
14
15
  private readonly creationOrder;
15
16
  private _isDestroyed;
16
17
  constructor(parentInstances: Map<Token<unknown>, unknown>, scopedClassProviders: Map<Token<unknown>, ScopedClassData>, scopedFactoryProviders: Map<Token<unknown>, FactoryProvider<any, any, any>>);
@@ -33,9 +34,14 @@ export declare class ScopedContainer {
33
34
  private createScopedClassInstance;
34
35
  private createScopedFactoryInstance;
35
36
  /**
36
- * Internal resolution logic shared by get() and dependency resolution.
37
+ * Internal resolution logic for dependency resolution.
37
38
  * Does not check if scope is destroyed - caller must handle that.
38
39
  */
39
40
  private resolve;
41
+ /**
42
+ * Resolves a scoped instance, returning undefined if the token is not a scoped provider.
43
+ * Handles caching of both instances and in-flight promises to prevent race conditions.
44
+ */
45
+ private resolveScoped;
40
46
  }
41
47
  //# sourceMappingURL=scoped-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-container.d.ts","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD;;;;GAIG;AACH,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAPzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IACrE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,YAAY,CAAS;gBAGV,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAC7C,oBAAoB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,EAC1D,sBAAsB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAG9F,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;OAGG;IACI,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAsBjC;;;;OAIG;IACU,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8BtD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA0CvB,yBAAyB;YAgBzB,2BAA2B;IAazC;;;OAGG;YACW,OAAO;CAuBtB"}
1
+ {"version":3,"file":"scoped-container.d.ts","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD;;;;GAIG;AACH,qBAAa,eAAe;IAYxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAbzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IAIrE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoD;IAEpF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IAEtD,OAAO,CAAC,YAAY,CAAS;gBAGV,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAC7C,oBAAoB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,EAC1D,sBAAsB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAG9F,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;OAGG;IACI,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAsBjC;;;;OAIG;IACU,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoBtD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA0CvB,yBAAyB;YAgBzB,2BAA2B;IAazC;;;OAGG;YACW,OAAO;IAcrB;;;OAGG;YACW,aAAa;CAmC5B"}
@@ -11,6 +11,9 @@ export class ScopedContainer {
11
11
  scopedClassProviders;
12
12
  scopedFactoryProviders;
13
13
  instances = new Map();
14
+ // Scoped instances are created async, so we need to track pending promises to ensure that
15
+ // multiple `.getScoped` calls resolve to the same value instead of creating multiple instances.
16
+ pendingPromises = new Map();
14
17
  creationOrder = [];
15
18
  _isDestroyed = false;
16
19
  constructor(parentInstances, scopedClassProviders, scopedFactoryProviders) {
@@ -49,19 +52,11 @@ export class ScopedContainer {
49
52
  if (this._isDestroyed) {
50
53
  throw new Error('Scope has been destroyed');
51
54
  }
52
- // Check if already cached in this scope
53
- if (this.instances.has(token)) {
54
- return this.instances.get(token);
55
- }
56
- // Check if it's a scoped class
57
- if (this.scopedClassProviders.has(token)) {
58
- return this.createScopedClassInstance(token);
55
+ const instance = await this.resolveScoped(token);
56
+ if (instance !== undefined) {
57
+ return instance;
59
58
  }
60
- // Check if it's a scoped factory
61
- if (this.scopedFactoryProviders.has(token)) {
62
- return this.createScopedFactoryInstance(token);
63
- }
64
- // Not a scoped provider - throw an error
59
+ // Not a scoped provider - throw appropriate error
65
60
  if (this.parentInstances.has(token)) {
66
61
  throw new Error(`Token ${tokenToString(token)} is a singleton. Use get() instead of getScoped().`);
67
62
  }
@@ -124,27 +119,56 @@ export class ScopedContainer {
124
119
  return instance;
125
120
  }
126
121
  /**
127
- * Internal resolution logic shared by get() and dependency resolution.
122
+ * Internal resolution logic for dependency resolution.
128
123
  * Does not check if scope is destroyed - caller must handle that.
129
124
  */
130
125
  async resolve(token) {
126
+ const instance = await this.resolveScoped(token);
127
+ if (instance !== undefined) {
128
+ return instance;
129
+ }
130
+ // Fall back to parent container
131
+ if (this.parentInstances.has(token)) {
132
+ return this.parentInstances.get(token);
133
+ }
134
+ throw new Error(`Token not registered: ${tokenToString(token)}`);
135
+ }
136
+ /**
137
+ * Resolves a scoped instance, returning undefined if the token is not a scoped provider.
138
+ * Handles caching of both instances and in-flight promises to prevent race conditions.
139
+ */
140
+ async resolveScoped(token) {
131
141
  // Check if already cached in this scope
132
142
  if (this.instances.has(token)) {
133
143
  return this.instances.get(token);
134
144
  }
145
+ // Check if creation is already in progress (prevents race condition)
146
+ if (this.pendingPromises.has(token)) {
147
+ return this.pendingPromises.get(token);
148
+ }
135
149
  // Check if it's a scoped class
136
150
  if (this.scopedClassProviders.has(token)) {
137
- return this.createScopedClassInstance(token);
151
+ const promise = this.createScopedClassInstance(token);
152
+ this.pendingPromises.set(token, promise);
153
+ try {
154
+ return await promise;
155
+ }
156
+ finally {
157
+ this.pendingPromises.delete(token);
158
+ }
138
159
  }
139
160
  // Check if it's a scoped factory
140
161
  if (this.scopedFactoryProviders.has(token)) {
141
- return this.createScopedFactoryInstance(token);
142
- }
143
- // Fall back to parent container
144
- if (this.parentInstances.has(token)) {
145
- return this.parentInstances.get(token);
162
+ const promise = this.createScopedFactoryInstance(token);
163
+ this.pendingPromises.set(token, promise);
164
+ try {
165
+ return await promise;
166
+ }
167
+ finally {
168
+ this.pendingPromises.delete(token);
169
+ }
146
170
  }
147
- throw new Error(`Token not registered: ${tokenToString(token)}`);
171
+ return undefined;
148
172
  }
149
173
  }
150
174
  //# sourceMappingURL=scoped-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-container.js","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scoped-container.js","sourceRoot":"","sources":["../../../src/lib/scoped-container.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brianmcd/di",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Lightweight, decorator-free, type-safe dependency injection container for TypeScript",
5
5
  "author": "Brian McDaniel",
6
6
  "license": "MIT",