@khapu2906/treasure-chest 1.3.0 → 1.5.0
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 +69 -11
- package/dist/cjs/Container.js +194 -23
- package/dist/cjs/Container.js.map +1 -1
- package/dist/cjs/Graph.js +207 -0
- package/dist/cjs/Graph.js.map +1 -0
- package/dist/cjs/Scope.js.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/Container.js +194 -23
- package/dist/esm/Container.js.map +1 -1
- package/dist/esm/Graph.js +203 -0
- package/dist/esm/Graph.js.map +1 -0
- package/dist/esm/Scope.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/Container.d.ts +60 -11
- package/dist/types/Container.d.ts.map +1 -1
- package/dist/types/Graph.d.ts +159 -0
- package/dist/types/Graph.d.ts.map +1 -0
- package/dist/types/Scope.d.ts +4 -4
- package/dist/types/Scope.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +4 -2
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ A lightweight and powerful TypeScript dependency injection container for managin
|
|
|
33
33
|
### Developer Experience
|
|
34
34
|
|
|
35
35
|
- **Intuitive API**: Fluent API with comprehensive JSDoc
|
|
36
|
-
- **Well Tested**:
|
|
36
|
+
- **Well Tested**: 110+ test cases with full coverage
|
|
37
37
|
- **Dual Module Support**: Both CommonJS and ES Modules (ESM)
|
|
38
38
|
- **Type Safe**: Full TypeScript declarations
|
|
39
39
|
- **Production Ready**: Battle-tested patterns
|
|
@@ -234,6 +234,10 @@ tenant2.singleton('logger', () => new TenantLogger('tenant2'));
|
|
|
234
234
|
// Each tenant has its own logger but shares config
|
|
235
235
|
tenant1.resolve('config'); // From parent
|
|
236
236
|
tenant1.resolve('logger'); // From tenant1
|
|
237
|
+
|
|
238
|
+
// Singletons declared on the parent are a single shared instance across
|
|
239
|
+
// every child that inherits them (v1.5.0+):
|
|
240
|
+
tenant1.resolve('config') === tenant2.resolve('config'); // true
|
|
237
241
|
```
|
|
238
242
|
|
|
239
243
|
### 9. Circular Dependency Detection (NEW in v1.2.0)
|
|
@@ -327,26 +331,59 @@ app.use(expressScope(container));
|
|
|
327
331
|
|
|
328
332
|
See [examples/10-middleware.ts](./examples/10-middleware.ts) for complete implementations.
|
|
329
333
|
|
|
334
|
+
### 12. Dependency Graph Inspection (NEW in v1.5.0)
|
|
335
|
+
|
|
336
|
+
Inspect, filter, and visualize a container's bindings and the dependency edges discovered while resolving them - useful for debugging, admin tooling, or feeding a UI in another system.
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
container.singleton('db', () => new Database());
|
|
340
|
+
container.singleton('repo', (c) => new Repo(c.resolve('db')));
|
|
341
|
+
container.singleton('service', (c) => new Service(c.resolve('repo')));
|
|
342
|
+
container.resolve('service');
|
|
343
|
+
|
|
344
|
+
const graph = container.graph();
|
|
345
|
+
|
|
346
|
+
// Filter bindings
|
|
347
|
+
graph.getNodes({ lifecycle: 'singleton', resolved: true });
|
|
348
|
+
graph.getNodes({ key: /Service$/ });
|
|
349
|
+
|
|
350
|
+
// Walk relationships
|
|
351
|
+
graph.dependenciesOf('service'); // -> [repo]
|
|
352
|
+
graph.dependentsOf('db'); // -> [repo]
|
|
353
|
+
|
|
354
|
+
// UI-ready nested trees (safe against cross-call cycles)
|
|
355
|
+
graph.toTree('service'); // { key: 'service', children: [{ key: 'repo', children: [...] }] }
|
|
356
|
+
graph.forest(); // a tree for every root, covering the whole graph at once
|
|
357
|
+
|
|
358
|
+
// Export
|
|
359
|
+
graph.toJSON(); // plain { nodes, edges } - safe to send over an API to another system
|
|
360
|
+
graph.toDot(); // Graphviz DOT source for visualization
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
> **Note:** edges are recorded at runtime as `resolve()` runs, so they only reflect dependencies that have actually been resolved at least once - this is not static analysis of factory source code.
|
|
364
|
+
|
|
365
|
+
See [examples/15-dependency-graph.ts](./examples/15-dependency-graph.ts) for a complete walkthrough.
|
|
366
|
+
|
|
330
367
|
## API Reference
|
|
331
368
|
|
|
332
369
|
### Container Class
|
|
333
370
|
|
|
334
371
|
#### Lifecycle Methods
|
|
335
372
|
|
|
336
|
-
**`bind<T>(key:
|
|
373
|
+
**`bind<T>(key: ServiceKey, factory: FactoryFn<T>, condition?: ConditionFn)`**
|
|
337
374
|
|
|
338
375
|
- Register a transient service (new instance each time)
|
|
339
376
|
|
|
340
|
-
**`singleton<T>(key:
|
|
377
|
+
**`singleton<T>(key: ServiceKey, factory: FactoryFn<T>, condition?: ConditionFn)`**
|
|
341
378
|
|
|
342
379
|
- Register a singleton service (single instance shared)
|
|
343
380
|
|
|
344
|
-
**`scoped<T>(key:
|
|
381
|
+
**`scoped<T>(key: ServiceKey, factory: FactoryFn<T>, dispose?: DisposeFn)` ⭐ NEW**
|
|
345
382
|
|
|
346
383
|
- Register a scoped service (instance per scope)
|
|
347
384
|
- Optional cleanup function called on dispose
|
|
348
385
|
|
|
349
|
-
**`lazy<T>(key:
|
|
386
|
+
**`lazy<T>(key: ServiceKey, factory: FactoryFn<T>, lifecycle?: Lifecycle)` ⭐ NEW**
|
|
350
387
|
|
|
351
388
|
- Register a lazy service (deferred initialization)
|
|
352
389
|
- Returns `Lazy<T>` wrapper
|
|
@@ -354,33 +391,33 @@ See [examples/10-middleware.ts](./examples/10-middleware.ts) for complete implem
|
|
|
354
391
|
|
|
355
392
|
#### Resolution Methods
|
|
356
393
|
|
|
357
|
-
**`resolve<T>(key:
|
|
394
|
+
**`resolve<T>(key: ServiceKey, context?: ServiceKey): T`**
|
|
358
395
|
|
|
359
396
|
- Resolve a service from the container
|
|
360
397
|
- Supports circular dependency detection
|
|
361
398
|
|
|
362
|
-
**`has(key:
|
|
399
|
+
**`has(key: ServiceKey): boolean` ⭐ NEW**
|
|
363
400
|
|
|
364
401
|
- Check if a binding exists for a key
|
|
365
402
|
|
|
366
|
-
**`keys():
|
|
403
|
+
**`keys(): ServiceKey[]` ⭐ NEW**
|
|
367
404
|
|
|
368
405
|
- Get all registered service keys
|
|
369
406
|
|
|
370
407
|
#### Contextual Binding
|
|
371
408
|
|
|
372
|
-
**`when(context:
|
|
409
|
+
**`when(context: ServiceKey).needs(key: ServiceKey).give(factory: FactoryFn)`**
|
|
373
410
|
|
|
374
411
|
- Create context-specific bindings
|
|
375
412
|
- Fluent API for readability
|
|
376
413
|
|
|
377
|
-
**`alias(aliasKey:
|
|
414
|
+
**`alias(aliasKey: ServiceKey, originalKey: ServiceKey)`**
|
|
378
415
|
|
|
379
416
|
- Create an alias for a service
|
|
380
417
|
|
|
381
418
|
#### Container Composition
|
|
382
419
|
|
|
383
|
-
**`Container.compose(containers: Container[]): Container` ⭐ NEW v1.
|
|
420
|
+
**`Container.compose(containers: Container[]): Container` ⭐ NEW v1.3.0**
|
|
384
421
|
|
|
385
422
|
- Combine multiple containers into one
|
|
386
423
|
- Allows mixing services from different domains
|
|
@@ -417,6 +454,13 @@ See [examples/10-middleware.ts](./examples/10-middleware.ts) for complete implem
|
|
|
417
454
|
- Dispose container and all scoped instances
|
|
418
455
|
- Calls cleanup functions
|
|
419
456
|
|
|
457
|
+
#### Introspection
|
|
458
|
+
|
|
459
|
+
**`graph(): Graph` ⭐ NEW v1.5.0**
|
|
460
|
+
|
|
461
|
+
- Build a filterable snapshot of this container's bindings (own, inherited from a parent, and inherited from composed containers) plus the dependency edges observed while resolving
|
|
462
|
+
- See [Dependency Graph Inspection](#12-dependency-graph-inspection-new-in-v150) above
|
|
463
|
+
|
|
420
464
|
### Exported Types
|
|
421
465
|
|
|
422
466
|
```typescript
|
|
@@ -424,16 +468,26 @@ import {
|
|
|
424
468
|
Container,
|
|
425
469
|
Lazy,
|
|
426
470
|
Scope,
|
|
471
|
+
Graph,
|
|
427
472
|
Lifecycle,
|
|
428
473
|
IDisposable,
|
|
429
474
|
DisposeFn,
|
|
475
|
+
ServiceKey,
|
|
476
|
+
GraphNode,
|
|
477
|
+
GraphEdge,
|
|
478
|
+
GraphSnapshot,
|
|
479
|
+
GraphNodeFilter,
|
|
480
|
+
GraphTreeNode,
|
|
430
481
|
} from '@khapu2906/treasure-chest';
|
|
431
482
|
|
|
483
|
+
// ServiceKey: 'string' | 'Symbol' | 'Constructor' ⭐ NEW v1.4.1
|
|
432
484
|
// Lifecycle: 'transient' | 'singleton' | 'scoped'
|
|
433
485
|
// Lazy<T>: Wrapper with .value and .isInitialized
|
|
434
486
|
// Scope: Scope management with .dispose()
|
|
435
487
|
// IDisposable: Interface for auto-cleanup detection ⭐ NEW v1.2.0
|
|
436
488
|
// DisposeFn: Type for cleanup functions
|
|
489
|
+
// Graph: Filterable dependency graph, from container.graph() ⭐ NEW v1.5.0
|
|
490
|
+
// GraphNode / GraphEdge / GraphSnapshot / GraphNodeFilter / GraphTreeNode: Graph data shapes ⭐ NEW v1.5.0
|
|
437
491
|
```
|
|
438
492
|
|
|
439
493
|
### Global Container
|
|
@@ -523,6 +577,10 @@ Check out the [examples](./examples) directory for comprehensive real-world usag
|
|
|
523
577
|
- IDisposable auto-detection
|
|
524
578
|
- withScope() pattern demos
|
|
525
579
|
|
|
580
|
+
### Introspection & Tooling (v1.5.0) ⭐ NEW
|
|
581
|
+
|
|
582
|
+
15. **Dependency Graph**: Filter bindings, walk dependencies, and export UI-ready trees or Graphviz DOT with `container.graph()`
|
|
583
|
+
|
|
526
584
|
Each example includes detailed comments and runnable code.
|
|
527
585
|
|
|
528
586
|
## Development
|
package/dist/cjs/Container.js
CHANGED
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.Container = void 0;
|
|
9
9
|
const Lazy_1 = require("./Lazy");
|
|
10
10
|
const Scope_1 = require("./Scope");
|
|
11
|
+
const Graph_1 = require("./Graph");
|
|
11
12
|
/**
|
|
12
13
|
* Container class for dependency injection
|
|
13
14
|
* Manages service bindings, instances, and resolution logic
|
|
@@ -38,8 +39,36 @@ class Container {
|
|
|
38
39
|
this.composedContainers = [];
|
|
39
40
|
/** Resolution stack for circular dependency detection */
|
|
40
41
|
this.resolutionStack = [];
|
|
42
|
+
/** Dependency edges observed while resolving: consumerKey -> Set of dependency keys */
|
|
43
|
+
this.dependencyEdges = new Map();
|
|
41
44
|
this.parent = parent;
|
|
42
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Generates a consistent string key for caching, handling both strings and symbols.
|
|
48
|
+
* This is a simple implementation; it assumes no string keys will collide with `Symbol().toString()`.
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
_toCacheKey(key, context) {
|
|
52
|
+
const keyStr = key.toString();
|
|
53
|
+
if (context) {
|
|
54
|
+
return `${keyStr}::${context.toString()}`;
|
|
55
|
+
}
|
|
56
|
+
return keyStr;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Record that `from` depends on `to`, for later inspection via graph()
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
_recordEdge(from, to) {
|
|
63
|
+
var _a;
|
|
64
|
+
const fromKey = from.toString();
|
|
65
|
+
const toKey = to.toString();
|
|
66
|
+
if (fromKey === toKey)
|
|
67
|
+
return;
|
|
68
|
+
const deps = (_a = this.dependencyEdges.get(fromKey)) !== null && _a !== void 0 ? _a : new Set();
|
|
69
|
+
deps.add(toKey);
|
|
70
|
+
this.dependencyEdges.set(fromKey, deps);
|
|
71
|
+
}
|
|
43
72
|
/**
|
|
44
73
|
* Register a transient binding (new instance on each resolve)
|
|
45
74
|
*
|
|
@@ -216,8 +245,23 @@ class Container {
|
|
|
216
245
|
* @returns The matching binding or undefined
|
|
217
246
|
*/
|
|
218
247
|
findBinding(key, context) {
|
|
248
|
+
var _a;
|
|
249
|
+
return (_a = this.findBindingEntry(key, context)) === null || _a === void 0 ? void 0 : _a.binding;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Find the appropriate binding for a given key and context, along with
|
|
253
|
+
* the container that actually declared it (the "owner"). Searches in
|
|
254
|
+
* current container and parent containers. Uses cached result when
|
|
255
|
+
* possible for performance.
|
|
256
|
+
*
|
|
257
|
+
* @private
|
|
258
|
+
* @param key The service key to find
|
|
259
|
+
* @param context Optional context for contextual binding
|
|
260
|
+
* @returns The matching binding paired with its owning container, or undefined
|
|
261
|
+
*/
|
|
262
|
+
findBindingEntry(key, context) {
|
|
219
263
|
const realKey = this.aliases.get(key) || key;
|
|
220
|
-
const cacheKey =
|
|
264
|
+
const cacheKey = this._toCacheKey(realKey, context);
|
|
221
265
|
// Check cache first
|
|
222
266
|
if (this.bindingCache.has(cacheKey)) {
|
|
223
267
|
return this.bindingCache.get(cacheKey);
|
|
@@ -232,15 +276,18 @@ class Container {
|
|
|
232
276
|
const match = bindings.find((b) => b.context === context && (!b.condition || b.condition(this))) ||
|
|
233
277
|
bindings.find((b) => !b.context && (!b.condition || b.condition(this))) ||
|
|
234
278
|
bindings[0];
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
279
|
+
if (match) {
|
|
280
|
+
const entry = { binding: match, owner: this };
|
|
281
|
+
// Cache the result only if no conditions (conditions are dynamic)
|
|
282
|
+
if (!match.condition) {
|
|
283
|
+
this.bindingCache.set(cacheKey, entry);
|
|
284
|
+
}
|
|
285
|
+
return entry;
|
|
238
286
|
}
|
|
239
|
-
return match;
|
|
240
287
|
}
|
|
241
288
|
// Try parent container
|
|
242
289
|
if (this.parent) {
|
|
243
|
-
return this.parent.
|
|
290
|
+
return this.parent.findBindingEntry(key, context);
|
|
244
291
|
}
|
|
245
292
|
return undefined;
|
|
246
293
|
}
|
|
@@ -265,15 +312,23 @@ class Container {
|
|
|
265
312
|
const realKey = this.aliases.get(key) || key;
|
|
266
313
|
// Circular dependency detection
|
|
267
314
|
if (this.resolutionStack.includes(realKey)) {
|
|
268
|
-
const chain = [...this.resolutionStack, realKey]
|
|
315
|
+
const chain = [...this.resolutionStack, realKey]
|
|
316
|
+
.map((k) => k.toString())
|
|
317
|
+
.join(' -> ');
|
|
269
318
|
throw new Error(`Circular dependency detected: ${chain}`);
|
|
270
319
|
}
|
|
320
|
+
// Record dependency edge: whatever is currently resolving depends on this key
|
|
321
|
+
if (this.resolutionStack.length > 0) {
|
|
322
|
+
const consumer = this.resolutionStack[this.resolutionStack.length - 1];
|
|
323
|
+
this._recordEdge(consumer, realKey);
|
|
324
|
+
}
|
|
271
325
|
const prevContext = this.currentContext;
|
|
272
326
|
this.currentContext = context || key;
|
|
273
|
-
const
|
|
274
|
-
if (!
|
|
275
|
-
throw new Error(`No binding found for key: ${realKey}`);
|
|
327
|
+
const entry = this.findBindingEntry(key, this.currentContext);
|
|
328
|
+
if (!entry) {
|
|
329
|
+
throw new Error(`No binding found for key: ${realKey.toString()}`);
|
|
276
330
|
}
|
|
331
|
+
const { binding, owner } = entry;
|
|
277
332
|
// Add to resolution stack
|
|
278
333
|
this.resolutionStack.push(realKey);
|
|
279
334
|
try {
|
|
@@ -285,7 +340,9 @@ class Container {
|
|
|
285
340
|
// Handle different lifecycles
|
|
286
341
|
switch (binding.lifecycle) {
|
|
287
342
|
case 'singleton':
|
|
288
|
-
|
|
343
|
+
// Cached on the owning container so the instance is truly
|
|
344
|
+
// shared across every child that inherits the binding.
|
|
345
|
+
return owner.resolveSingleton(binding, realKey);
|
|
289
346
|
case 'scoped':
|
|
290
347
|
return this.resolveScoped(binding, realKey);
|
|
291
348
|
case 'transient':
|
|
@@ -311,9 +368,8 @@ class Container {
|
|
|
311
368
|
* @private
|
|
312
369
|
*/
|
|
313
370
|
resolveSingleton(binding, cacheKey) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
: cacheKey;
|
|
371
|
+
// Singletons can be contextual, so we use a string-based key for the instance map.
|
|
372
|
+
const fullCacheKey = this._toCacheKey(cacheKey, binding.context);
|
|
317
373
|
if (this.instances.has(fullCacheKey)) {
|
|
318
374
|
return this.instances.get(fullCacheKey);
|
|
319
375
|
}
|
|
@@ -327,7 +383,7 @@ class Container {
|
|
|
327
383
|
*/
|
|
328
384
|
resolveScoped(binding, key) {
|
|
329
385
|
if (!this.currentScope) {
|
|
330
|
-
throw new Error(`No active scope for scoped binding: ${key}. Call createScope() first.`);
|
|
386
|
+
throw new Error(`No active scope for scoped binding: ${key.toString()}. Call createScope() first.`);
|
|
331
387
|
}
|
|
332
388
|
if (this.currentScope.has(key)) {
|
|
333
389
|
return this.currentScope.get(key);
|
|
@@ -341,7 +397,7 @@ class Container {
|
|
|
341
397
|
* @private
|
|
342
398
|
*/
|
|
343
399
|
resolveLazy(binding, cacheKey) {
|
|
344
|
-
const fullCacheKey = `lazy::${cacheKey}`;
|
|
400
|
+
const fullCacheKey = `lazy::${this._toCacheKey(cacheKey)}`;
|
|
345
401
|
if (this.instances.has(fullCacheKey)) {
|
|
346
402
|
return this.instances.get(fullCacheKey);
|
|
347
403
|
}
|
|
@@ -399,7 +455,22 @@ class Container {
|
|
|
399
455
|
* ```
|
|
400
456
|
*/
|
|
401
457
|
has(key) {
|
|
402
|
-
|
|
458
|
+
// We check both the main bindings and aliases
|
|
459
|
+
if (this.bindings.has(key) || this.aliases.has(key)) {
|
|
460
|
+
return true;
|
|
461
|
+
}
|
|
462
|
+
// Check parent if it exists
|
|
463
|
+
if (this.parent && this.parent.has(key)) {
|
|
464
|
+
return true;
|
|
465
|
+
}
|
|
466
|
+
// A simple findBinding is not enough as it might not check aliases correctly
|
|
467
|
+
// across the hierarchy. A more robust check is needed.
|
|
468
|
+
try {
|
|
469
|
+
return this.findBinding(key) !== undefined;
|
|
470
|
+
}
|
|
471
|
+
catch (_a) {
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
403
474
|
}
|
|
404
475
|
/**
|
|
405
476
|
* Get all registered service keys
|
|
@@ -417,6 +488,86 @@ class Container {
|
|
|
417
488
|
const parentKeys = this.parent ? this.parent.keys() : [];
|
|
418
489
|
return [...new Set([...ownKeys, ...parentKeys])];
|
|
419
490
|
}
|
|
491
|
+
/**
|
|
492
|
+
* Build a snapshot of this container's bindings (own, inherited from a
|
|
493
|
+
* parent, and inherited from composed containers), plus the dependency
|
|
494
|
+
* edges observed so far. Used to build a Graph via graph().
|
|
495
|
+
*
|
|
496
|
+
* @private
|
|
497
|
+
* @param seen Keys already captured by a more specific (closer) container
|
|
498
|
+
*/
|
|
499
|
+
inspect(seen = new Set()) {
|
|
500
|
+
var _a, _b;
|
|
501
|
+
const nodes = [];
|
|
502
|
+
for (const [key, bindingList] of this.bindings) {
|
|
503
|
+
const keyStr = key.toString();
|
|
504
|
+
if (seen.has(keyStr))
|
|
505
|
+
continue;
|
|
506
|
+
seen.add(keyStr);
|
|
507
|
+
for (const binding of bindingList) {
|
|
508
|
+
const fullCacheKey = this._toCacheKey(key, binding.context);
|
|
509
|
+
const lazyCacheKey = `lazy::${this._toCacheKey(key)}`;
|
|
510
|
+
nodes.push({
|
|
511
|
+
key: keyStr,
|
|
512
|
+
lifecycle: binding.lifecycle,
|
|
513
|
+
lazy: !!binding.lazy,
|
|
514
|
+
context: (_a = binding.context) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
515
|
+
inherited: false,
|
|
516
|
+
resolved: this.instances.has(fullCacheKey) ||
|
|
517
|
+
this.instances.has(lazyCacheKey),
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
for (const [aliasKey, originalKey] of this.aliases) {
|
|
522
|
+
const aliasKeyStr = aliasKey.toString();
|
|
523
|
+
if (seen.has(aliasKeyStr))
|
|
524
|
+
continue;
|
|
525
|
+
seen.add(aliasKeyStr);
|
|
526
|
+
const target = this.findBinding(aliasKey);
|
|
527
|
+
nodes.push({
|
|
528
|
+
key: aliasKeyStr,
|
|
529
|
+
lifecycle: (_b = target === null || target === void 0 ? void 0 : target.lifecycle) !== null && _b !== void 0 ? _b : 'transient',
|
|
530
|
+
lazy: !!(target === null || target === void 0 ? void 0 : target.lazy),
|
|
531
|
+
aliasOf: originalKey.toString(),
|
|
532
|
+
inherited: false,
|
|
533
|
+
resolved: false,
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
const edges = [];
|
|
537
|
+
for (const [from, tos] of this.dependencyEdges) {
|
|
538
|
+
for (const to of tos) {
|
|
539
|
+
edges.push({ from, to });
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
const ancestors = [
|
|
543
|
+
...(this.parent ? [this.parent] : []),
|
|
544
|
+
...this.composedContainers,
|
|
545
|
+
];
|
|
546
|
+
for (const ancestor of ancestors) {
|
|
547
|
+
const snapshot = ancestor.inspect(seen);
|
|
548
|
+
for (const node of snapshot.nodes) {
|
|
549
|
+
nodes.push({ ...node, inherited: true });
|
|
550
|
+
}
|
|
551
|
+
edges.push(...snapshot.edges);
|
|
552
|
+
}
|
|
553
|
+
return { nodes, edges };
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* Build a filterable dependency graph of this container's bindings and
|
|
557
|
+
* the dependency edges observed while resolving them.
|
|
558
|
+
*
|
|
559
|
+
* @returns A Graph snapshot you can filter/inspect
|
|
560
|
+
*
|
|
561
|
+
* @example
|
|
562
|
+
* ```typescript
|
|
563
|
+
* const graph = container.graph();
|
|
564
|
+
* const singletons = graph.getNodes({ lifecycle: 'singleton' });
|
|
565
|
+
* const deps = graph.dependenciesOf('userService');
|
|
566
|
+
* ```
|
|
567
|
+
*/
|
|
568
|
+
graph() {
|
|
569
|
+
return new Graph_1.Graph(this.inspect());
|
|
570
|
+
}
|
|
420
571
|
/**
|
|
421
572
|
* Reset the container to its initial state
|
|
422
573
|
* Clears all bindings, instances, aliases, and context
|
|
@@ -434,6 +585,7 @@ class Container {
|
|
|
434
585
|
this.instances.clear();
|
|
435
586
|
this.aliases.clear();
|
|
436
587
|
this.bindingCache.clear();
|
|
588
|
+
this.dependencyEdges.clear();
|
|
437
589
|
this.currentContext = undefined;
|
|
438
590
|
this.currentScope = undefined;
|
|
439
591
|
this.resolutionStack = [];
|
|
@@ -460,7 +612,7 @@ class Container {
|
|
|
460
612
|
});
|
|
461
613
|
// Bind proxy resolvers
|
|
462
614
|
for (const key of allKeys) {
|
|
463
|
-
composed.bind(key, (c) => c.resolveFromComposition(key));
|
|
615
|
+
composed.bind(key, (c) => c.resolveFromComposition(key, c.currentContext));
|
|
464
616
|
}
|
|
465
617
|
return composed;
|
|
466
618
|
}
|
|
@@ -468,14 +620,33 @@ class Container {
|
|
|
468
620
|
* Resolve a service from composed containers
|
|
469
621
|
* @private
|
|
470
622
|
*/
|
|
471
|
-
resolveFromComposition(key) {
|
|
472
|
-
|
|
623
|
+
resolveFromComposition(key, context) {
|
|
624
|
+
let foundDefaultResolution;
|
|
473
625
|
for (const container of this.composedContainers) {
|
|
474
|
-
|
|
475
|
-
|
|
626
|
+
// Temporarily use `findBinding` to inspect without full resolution
|
|
627
|
+
// This is a workaround due to `resolve` not returning binding metadata.
|
|
628
|
+
const binding = container['findBinding'](key, context);
|
|
629
|
+
if (binding) {
|
|
630
|
+
if (binding.context === context) {
|
|
631
|
+
// Found a perfect contextual match, this takes highest priority.
|
|
632
|
+
return container.resolve(key, context);
|
|
633
|
+
}
|
|
634
|
+
else if (!binding.context &&
|
|
635
|
+
!binding.condition &&
|
|
636
|
+
!foundDefaultResolution) {
|
|
637
|
+
// This is a non-contextual, non-conditional default binding. Store the first one as fallback.
|
|
638
|
+
// Only store if we haven't found any default yet.
|
|
639
|
+
foundDefaultResolution = {
|
|
640
|
+
container: container,
|
|
641
|
+
result: container.resolve(key, undefined), // Resolve default from this container (without context)
|
|
642
|
+
};
|
|
643
|
+
}
|
|
476
644
|
}
|
|
477
645
|
}
|
|
478
|
-
|
|
646
|
+
if (foundDefaultResolution) {
|
|
647
|
+
return foundDefaultResolution.result;
|
|
648
|
+
}
|
|
649
|
+
throw new Error(`No binding found for key: ${key.toString()}`);
|
|
479
650
|
}
|
|
480
651
|
/**
|
|
481
652
|
* Dispose the container and all its scoped instances
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/Container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/Container.ts"],"names":[],"mappings":"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"}
|