@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
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency graph for inspecting and filtering container bindings
|
|
4
|
+
*
|
|
5
|
+
* @module Graph
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.Graph = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* Read-only, filterable view over a container's bindings and the
|
|
11
|
+
* dependency edges discovered while resolving them.
|
|
12
|
+
*
|
|
13
|
+
* Edges are recorded as `resolve()` runs, so they only reflect
|
|
14
|
+
* dependencies that have actually been resolved at least once - this is
|
|
15
|
+
* a runtime graph, not a static analysis of factory source code.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const graph = container.graph();
|
|
20
|
+
*
|
|
21
|
+
* const singletons = graph.getNodes({ lifecycle: 'singleton' });
|
|
22
|
+
* const unresolved = graph.getNodes({ resolved: false });
|
|
23
|
+
* const deps = graph.dependenciesOf('userService');
|
|
24
|
+
*
|
|
25
|
+
* console.log(graph.toDot()); // paste into a Graphviz viewer
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
class Graph {
|
|
29
|
+
constructor(snapshot) {
|
|
30
|
+
this.nodes = snapshot.nodes;
|
|
31
|
+
this.edges = snapshot.edges;
|
|
32
|
+
this.byPlainKey = new Map();
|
|
33
|
+
for (const node of this.nodes) {
|
|
34
|
+
if (!this.byPlainKey.has(node.key)) {
|
|
35
|
+
this.byPlainKey.set(node.key, node);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get all nodes, optionally filtered
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* graph.getNodes({ lifecycle: ['singleton', 'scoped'], resolved: true });
|
|
45
|
+
* graph.getNodes({ key: /Repository$/ });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
getNodes(filter) {
|
|
49
|
+
let result = this.nodes;
|
|
50
|
+
if (!filter) {
|
|
51
|
+
return [...result];
|
|
52
|
+
}
|
|
53
|
+
if (filter.lifecycle) {
|
|
54
|
+
const lifecycles = Array.isArray(filter.lifecycle)
|
|
55
|
+
? filter.lifecycle
|
|
56
|
+
: [filter.lifecycle];
|
|
57
|
+
result = result.filter((n) => lifecycles.includes(n.lifecycle));
|
|
58
|
+
}
|
|
59
|
+
if (filter.resolved !== undefined) {
|
|
60
|
+
result = result.filter((n) => n.resolved === filter.resolved);
|
|
61
|
+
}
|
|
62
|
+
if (filter.lazy !== undefined) {
|
|
63
|
+
result = result.filter((n) => n.lazy === filter.lazy);
|
|
64
|
+
}
|
|
65
|
+
if (filter.inherited !== undefined) {
|
|
66
|
+
result = result.filter((n) => n.inherited === filter.inherited);
|
|
67
|
+
}
|
|
68
|
+
if (filter.key !== undefined) {
|
|
69
|
+
const matcher = filter.key;
|
|
70
|
+
result = result.filter((n) => matcher instanceof RegExp
|
|
71
|
+
? matcher.test(n.key)
|
|
72
|
+
: n.key.includes(matcher));
|
|
73
|
+
}
|
|
74
|
+
return [...result];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get a single (non-contextual) node by key
|
|
78
|
+
*/
|
|
79
|
+
getNode(key) {
|
|
80
|
+
return this.byPlainKey.get(key.toString());
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get all edges, optionally filtered by source and/or target key
|
|
84
|
+
*/
|
|
85
|
+
getEdges(filter) {
|
|
86
|
+
if (!filter) {
|
|
87
|
+
return [...this.edges];
|
|
88
|
+
}
|
|
89
|
+
return this.edges.filter((e) => {
|
|
90
|
+
if (filter.from !== undefined && e.from !== filter.from.toString()) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
if (filter.to !== undefined && e.to !== filter.to.toString()) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
return true;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Direct dependencies of a key - the services it needs
|
|
101
|
+
*/
|
|
102
|
+
dependenciesOf(key) {
|
|
103
|
+
const keyStr = key.toString();
|
|
104
|
+
return this.edges
|
|
105
|
+
.filter((e) => e.from === keyStr)
|
|
106
|
+
.map((e) => this.byPlainKey.get(e.to))
|
|
107
|
+
.filter((n) => n !== undefined);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Direct dependents of a key - the services that need it
|
|
111
|
+
*/
|
|
112
|
+
dependentsOf(key) {
|
|
113
|
+
const keyStr = key.toString();
|
|
114
|
+
return this.edges
|
|
115
|
+
.filter((e) => e.to === keyStr)
|
|
116
|
+
.map((e) => this.byPlainKey.get(e.from))
|
|
117
|
+
.filter((n) => n !== undefined);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Nodes that nothing else depends on (candidate entry points)
|
|
121
|
+
*/
|
|
122
|
+
roots() {
|
|
123
|
+
const dependedOn = new Set(this.edges.map((e) => e.to));
|
|
124
|
+
return this.nodes.filter((n) => !dependedOn.has(n.key));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Nodes with no recorded dependencies (leaves of the graph)
|
|
128
|
+
*/
|
|
129
|
+
leaves() {
|
|
130
|
+
const withDeps = new Set(this.edges.map((e) => e.from));
|
|
131
|
+
return this.nodes.filter((n) => !withDeps.has(n.key));
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Build a nested tree starting at `key`, recursively expanding
|
|
135
|
+
* dependencies into `children`. Handy for rendering a dependency tree in
|
|
136
|
+
* a UI (e.g. a collapsible tree view).
|
|
137
|
+
*
|
|
138
|
+
* A node that reappears along the same branch (A depends on B, B depends
|
|
139
|
+
* on A, recorded from two separate resolve() calls) is marked
|
|
140
|
+
* `cyclic: true` instead of recursing forever - `children` stays empty
|
|
141
|
+
* there. Nodes that appear in multiple, unrelated branches (e.g. two
|
|
142
|
+
* services sharing the same `db` dependency) are duplicated as separate
|
|
143
|
+
* tree nodes, which is expected for a tree view.
|
|
144
|
+
*
|
|
145
|
+
* @param key The root key to build the tree from
|
|
146
|
+
* @returns The tree, or undefined if `key` isn't a known node
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const tree = container.graph().toTree('service');
|
|
151
|
+
* // { key: 'service', children: [{ key: 'repo', children: [{ key: 'db', children: [] }] }] }
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
toTree(key, _visited = new Set()) {
|
|
155
|
+
const keyStr = key.toString();
|
|
156
|
+
const node = this.byPlainKey.get(keyStr);
|
|
157
|
+
if (!node)
|
|
158
|
+
return undefined;
|
|
159
|
+
if (_visited.has(keyStr)) {
|
|
160
|
+
return { ...node, children: [], cyclic: true };
|
|
161
|
+
}
|
|
162
|
+
const visited = new Set(_visited);
|
|
163
|
+
visited.add(keyStr);
|
|
164
|
+
const children = this.dependenciesOf(keyStr)
|
|
165
|
+
.map((dep) => this.toTree(dep.key, visited))
|
|
166
|
+
.filter((n) => n !== undefined);
|
|
167
|
+
return { ...node, children };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Build a tree for every root (nodes nothing else depends on), covering
|
|
171
|
+
* the whole graph at once - ready to hand to a UI as-is.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* const forest = container.graph().forest();
|
|
176
|
+
* // [{ key: 'service', children: [...] }, { key: 'unusedSingleton', children: [] }]
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
forest() {
|
|
180
|
+
return this.roots()
|
|
181
|
+
.map((root) => this.toTree(root.key))
|
|
182
|
+
.filter((n) => n !== undefined);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Plain JSON-serializable snapshot of the graph
|
|
186
|
+
*/
|
|
187
|
+
toJSON() {
|
|
188
|
+
return { nodes: [...this.nodes], edges: [...this.edges] };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Export as Graphviz DOT source, for visualizing the graph
|
|
192
|
+
*/
|
|
193
|
+
toDot() {
|
|
194
|
+
const lines = ['digraph Container {'];
|
|
195
|
+
for (const node of this.nodes) {
|
|
196
|
+
const label = `${node.key}\\n(${node.lifecycle}${node.lazy ? ', lazy' : ''})`;
|
|
197
|
+
lines.push(` "${node.key}" [label="${label}"];`);
|
|
198
|
+
}
|
|
199
|
+
for (const edge of this.edges) {
|
|
200
|
+
lines.push(` "${edge.from}" -> "${edge.to}";`);
|
|
201
|
+
}
|
|
202
|
+
lines.push('}');
|
|
203
|
+
return lines.join('\n');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.Graph = Graph;
|
|
207
|
+
//# sourceMappingURL=Graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../src/Graph.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/Scope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scope.js","sourceRoot":"","sources":["../../src/Scope.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;;;;;;;;;GAUG;AACH,MAAa,KAAK;IAAlB;QACE,8DAA8D;QACtD,cAAS,
|
|
1
|
+
{"version":3,"file":"Scope.js","sourceRoot":"","sources":["../../src/Scope.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;;;;;;;;;GAUG;AACH,MAAa,KAAK;IAAlB;QACE,8DAA8D;QACtD,cAAS,GAAkC,IAAI,GAAG,EAAE,CAAC;QACrD,gBAAW,GAAgB,EAAE,CAAC;IA2ExC,CAAC;IAzEC;;;;OAIG;IACH,8DAA8D;IAC9D,GAAG,CAAC,GAAe;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;OAOG;IACH,8DAA8D;IAC9D,GAAG,CAAC,GAAe,EAAE,KAAU,EAAE,OAAmB;QAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE/B,0BAA0B;QAC1B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAe;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,8DAA8D;IACtD,YAAY,CAAC,KAAU;QAC7B,OAAO,CACL,KAAK,KAAK,IAAI;YACd,KAAK,KAAK,SAAS;YACnB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,CACpC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;CACF;AA9ED,sBA8EC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* - High-performance Map-based storage (v1.2.0)
|
|
19
19
|
* - Auto-dispose for IDisposable instances (v1.2.0)
|
|
20
20
|
* - Modular architecture (v1.2.0)
|
|
21
|
+
* - Dependency graph inspection with filtering, tree, and DOT export (v1.5.0)
|
|
21
22
|
*
|
|
22
23
|
* @example
|
|
23
24
|
* ```typescript
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
* ```
|
|
30
31
|
*/
|
|
31
32
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.Scope = exports.Lazy = exports.Container = void 0;
|
|
33
|
+
exports.Graph = exports.Scope = exports.Lazy = exports.Container = void 0;
|
|
33
34
|
// Export main classes
|
|
34
35
|
var Container_1 = require("./Container");
|
|
35
36
|
Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return Container_1.Container; } });
|
|
@@ -37,4 +38,6 @@ var Lazy_1 = require("./Lazy");
|
|
|
37
38
|
Object.defineProperty(exports, "Lazy", { enumerable: true, get: function () { return Lazy_1.Lazy; } });
|
|
38
39
|
var Scope_1 = require("./Scope");
|
|
39
40
|
Object.defineProperty(exports, "Scope", { enumerable: true, get: function () { return Scope_1.Scope; } });
|
|
41
|
+
var Graph_1 = require("./Graph");
|
|
42
|
+
Object.defineProperty(exports, "Graph", { enumerable: true, get: function () { return Graph_1.Graph; } });
|
|
40
43
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAEH,sBAAsB;AACtB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
|
package/dist/esm/Container.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Lazy } from './Lazy';
|
|
7
7
|
import { Scope } from './Scope';
|
|
8
|
+
import { Graph, } from './Graph';
|
|
8
9
|
/**
|
|
9
10
|
* Container class for dependency injection
|
|
10
11
|
* Manages service bindings, instances, and resolution logic
|
|
@@ -35,8 +36,36 @@ export class Container {
|
|
|
35
36
|
this.composedContainers = [];
|
|
36
37
|
/** Resolution stack for circular dependency detection */
|
|
37
38
|
this.resolutionStack = [];
|
|
39
|
+
/** Dependency edges observed while resolving: consumerKey -> Set of dependency keys */
|
|
40
|
+
this.dependencyEdges = new Map();
|
|
38
41
|
this.parent = parent;
|
|
39
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Generates a consistent string key for caching, handling both strings and symbols.
|
|
45
|
+
* This is a simple implementation; it assumes no string keys will collide with `Symbol().toString()`.
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
_toCacheKey(key, context) {
|
|
49
|
+
const keyStr = key.toString();
|
|
50
|
+
if (context) {
|
|
51
|
+
return `${keyStr}::${context.toString()}`;
|
|
52
|
+
}
|
|
53
|
+
return keyStr;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Record that `from` depends on `to`, for later inspection via graph()
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
_recordEdge(from, to) {
|
|
60
|
+
var _a;
|
|
61
|
+
const fromKey = from.toString();
|
|
62
|
+
const toKey = to.toString();
|
|
63
|
+
if (fromKey === toKey)
|
|
64
|
+
return;
|
|
65
|
+
const deps = (_a = this.dependencyEdges.get(fromKey)) !== null && _a !== void 0 ? _a : new Set();
|
|
66
|
+
deps.add(toKey);
|
|
67
|
+
this.dependencyEdges.set(fromKey, deps);
|
|
68
|
+
}
|
|
40
69
|
/**
|
|
41
70
|
* Register a transient binding (new instance on each resolve)
|
|
42
71
|
*
|
|
@@ -213,8 +242,23 @@ export class Container {
|
|
|
213
242
|
* @returns The matching binding or undefined
|
|
214
243
|
*/
|
|
215
244
|
findBinding(key, context) {
|
|
245
|
+
var _a;
|
|
246
|
+
return (_a = this.findBindingEntry(key, context)) === null || _a === void 0 ? void 0 : _a.binding;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Find the appropriate binding for a given key and context, along with
|
|
250
|
+
* the container that actually declared it (the "owner"). Searches in
|
|
251
|
+
* current container and parent containers. Uses cached result when
|
|
252
|
+
* possible for performance.
|
|
253
|
+
*
|
|
254
|
+
* @private
|
|
255
|
+
* @param key The service key to find
|
|
256
|
+
* @param context Optional context for contextual binding
|
|
257
|
+
* @returns The matching binding paired with its owning container, or undefined
|
|
258
|
+
*/
|
|
259
|
+
findBindingEntry(key, context) {
|
|
216
260
|
const realKey = this.aliases.get(key) || key;
|
|
217
|
-
const cacheKey =
|
|
261
|
+
const cacheKey = this._toCacheKey(realKey, context);
|
|
218
262
|
// Check cache first
|
|
219
263
|
if (this.bindingCache.has(cacheKey)) {
|
|
220
264
|
return this.bindingCache.get(cacheKey);
|
|
@@ -229,15 +273,18 @@ export class Container {
|
|
|
229
273
|
const match = bindings.find((b) => b.context === context && (!b.condition || b.condition(this))) ||
|
|
230
274
|
bindings.find((b) => !b.context && (!b.condition || b.condition(this))) ||
|
|
231
275
|
bindings[0];
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
276
|
+
if (match) {
|
|
277
|
+
const entry = { binding: match, owner: this };
|
|
278
|
+
// Cache the result only if no conditions (conditions are dynamic)
|
|
279
|
+
if (!match.condition) {
|
|
280
|
+
this.bindingCache.set(cacheKey, entry);
|
|
281
|
+
}
|
|
282
|
+
return entry;
|
|
235
283
|
}
|
|
236
|
-
return match;
|
|
237
284
|
}
|
|
238
285
|
// Try parent container
|
|
239
286
|
if (this.parent) {
|
|
240
|
-
return this.parent.
|
|
287
|
+
return this.parent.findBindingEntry(key, context);
|
|
241
288
|
}
|
|
242
289
|
return undefined;
|
|
243
290
|
}
|
|
@@ -262,15 +309,23 @@ export class Container {
|
|
|
262
309
|
const realKey = this.aliases.get(key) || key;
|
|
263
310
|
// Circular dependency detection
|
|
264
311
|
if (this.resolutionStack.includes(realKey)) {
|
|
265
|
-
const chain = [...this.resolutionStack, realKey]
|
|
312
|
+
const chain = [...this.resolutionStack, realKey]
|
|
313
|
+
.map((k) => k.toString())
|
|
314
|
+
.join(' -> ');
|
|
266
315
|
throw new Error(`Circular dependency detected: ${chain}`);
|
|
267
316
|
}
|
|
317
|
+
// Record dependency edge: whatever is currently resolving depends on this key
|
|
318
|
+
if (this.resolutionStack.length > 0) {
|
|
319
|
+
const consumer = this.resolutionStack[this.resolutionStack.length - 1];
|
|
320
|
+
this._recordEdge(consumer, realKey);
|
|
321
|
+
}
|
|
268
322
|
const prevContext = this.currentContext;
|
|
269
323
|
this.currentContext = context || key;
|
|
270
|
-
const
|
|
271
|
-
if (!
|
|
272
|
-
throw new Error(`No binding found for key: ${realKey}`);
|
|
324
|
+
const entry = this.findBindingEntry(key, this.currentContext);
|
|
325
|
+
if (!entry) {
|
|
326
|
+
throw new Error(`No binding found for key: ${realKey.toString()}`);
|
|
273
327
|
}
|
|
328
|
+
const { binding, owner } = entry;
|
|
274
329
|
// Add to resolution stack
|
|
275
330
|
this.resolutionStack.push(realKey);
|
|
276
331
|
try {
|
|
@@ -282,7 +337,9 @@ export class Container {
|
|
|
282
337
|
// Handle different lifecycles
|
|
283
338
|
switch (binding.lifecycle) {
|
|
284
339
|
case 'singleton':
|
|
285
|
-
|
|
340
|
+
// Cached on the owning container so the instance is truly
|
|
341
|
+
// shared across every child that inherits the binding.
|
|
342
|
+
return owner.resolveSingleton(binding, realKey);
|
|
286
343
|
case 'scoped':
|
|
287
344
|
return this.resolveScoped(binding, realKey);
|
|
288
345
|
case 'transient':
|
|
@@ -308,9 +365,8 @@ export class Container {
|
|
|
308
365
|
* @private
|
|
309
366
|
*/
|
|
310
367
|
resolveSingleton(binding, cacheKey) {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
: cacheKey;
|
|
368
|
+
// Singletons can be contextual, so we use a string-based key for the instance map.
|
|
369
|
+
const fullCacheKey = this._toCacheKey(cacheKey, binding.context);
|
|
314
370
|
if (this.instances.has(fullCacheKey)) {
|
|
315
371
|
return this.instances.get(fullCacheKey);
|
|
316
372
|
}
|
|
@@ -324,7 +380,7 @@ export class Container {
|
|
|
324
380
|
*/
|
|
325
381
|
resolveScoped(binding, key) {
|
|
326
382
|
if (!this.currentScope) {
|
|
327
|
-
throw new Error(`No active scope for scoped binding: ${key}. Call createScope() first.`);
|
|
383
|
+
throw new Error(`No active scope for scoped binding: ${key.toString()}. Call createScope() first.`);
|
|
328
384
|
}
|
|
329
385
|
if (this.currentScope.has(key)) {
|
|
330
386
|
return this.currentScope.get(key);
|
|
@@ -338,7 +394,7 @@ export class Container {
|
|
|
338
394
|
* @private
|
|
339
395
|
*/
|
|
340
396
|
resolveLazy(binding, cacheKey) {
|
|
341
|
-
const fullCacheKey = `lazy::${cacheKey}`;
|
|
397
|
+
const fullCacheKey = `lazy::${this._toCacheKey(cacheKey)}`;
|
|
342
398
|
if (this.instances.has(fullCacheKey)) {
|
|
343
399
|
return this.instances.get(fullCacheKey);
|
|
344
400
|
}
|
|
@@ -396,7 +452,22 @@ export class Container {
|
|
|
396
452
|
* ```
|
|
397
453
|
*/
|
|
398
454
|
has(key) {
|
|
399
|
-
|
|
455
|
+
// We check both the main bindings and aliases
|
|
456
|
+
if (this.bindings.has(key) || this.aliases.has(key)) {
|
|
457
|
+
return true;
|
|
458
|
+
}
|
|
459
|
+
// Check parent if it exists
|
|
460
|
+
if (this.parent && this.parent.has(key)) {
|
|
461
|
+
return true;
|
|
462
|
+
}
|
|
463
|
+
// A simple findBinding is not enough as it might not check aliases correctly
|
|
464
|
+
// across the hierarchy. A more robust check is needed.
|
|
465
|
+
try {
|
|
466
|
+
return this.findBinding(key) !== undefined;
|
|
467
|
+
}
|
|
468
|
+
catch (_a) {
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
400
471
|
}
|
|
401
472
|
/**
|
|
402
473
|
* Get all registered service keys
|
|
@@ -414,6 +485,86 @@ export class Container {
|
|
|
414
485
|
const parentKeys = this.parent ? this.parent.keys() : [];
|
|
415
486
|
return [...new Set([...ownKeys, ...parentKeys])];
|
|
416
487
|
}
|
|
488
|
+
/**
|
|
489
|
+
* Build a snapshot of this container's bindings (own, inherited from a
|
|
490
|
+
* parent, and inherited from composed containers), plus the dependency
|
|
491
|
+
* edges observed so far. Used to build a Graph via graph().
|
|
492
|
+
*
|
|
493
|
+
* @private
|
|
494
|
+
* @param seen Keys already captured by a more specific (closer) container
|
|
495
|
+
*/
|
|
496
|
+
inspect(seen = new Set()) {
|
|
497
|
+
var _a, _b;
|
|
498
|
+
const nodes = [];
|
|
499
|
+
for (const [key, bindingList] of this.bindings) {
|
|
500
|
+
const keyStr = key.toString();
|
|
501
|
+
if (seen.has(keyStr))
|
|
502
|
+
continue;
|
|
503
|
+
seen.add(keyStr);
|
|
504
|
+
for (const binding of bindingList) {
|
|
505
|
+
const fullCacheKey = this._toCacheKey(key, binding.context);
|
|
506
|
+
const lazyCacheKey = `lazy::${this._toCacheKey(key)}`;
|
|
507
|
+
nodes.push({
|
|
508
|
+
key: keyStr,
|
|
509
|
+
lifecycle: binding.lifecycle,
|
|
510
|
+
lazy: !!binding.lazy,
|
|
511
|
+
context: (_a = binding.context) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
512
|
+
inherited: false,
|
|
513
|
+
resolved: this.instances.has(fullCacheKey) ||
|
|
514
|
+
this.instances.has(lazyCacheKey),
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
for (const [aliasKey, originalKey] of this.aliases) {
|
|
519
|
+
const aliasKeyStr = aliasKey.toString();
|
|
520
|
+
if (seen.has(aliasKeyStr))
|
|
521
|
+
continue;
|
|
522
|
+
seen.add(aliasKeyStr);
|
|
523
|
+
const target = this.findBinding(aliasKey);
|
|
524
|
+
nodes.push({
|
|
525
|
+
key: aliasKeyStr,
|
|
526
|
+
lifecycle: (_b = target === null || target === void 0 ? void 0 : target.lifecycle) !== null && _b !== void 0 ? _b : 'transient',
|
|
527
|
+
lazy: !!(target === null || target === void 0 ? void 0 : target.lazy),
|
|
528
|
+
aliasOf: originalKey.toString(),
|
|
529
|
+
inherited: false,
|
|
530
|
+
resolved: false,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
const edges = [];
|
|
534
|
+
for (const [from, tos] of this.dependencyEdges) {
|
|
535
|
+
for (const to of tos) {
|
|
536
|
+
edges.push({ from, to });
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
const ancestors = [
|
|
540
|
+
...(this.parent ? [this.parent] : []),
|
|
541
|
+
...this.composedContainers,
|
|
542
|
+
];
|
|
543
|
+
for (const ancestor of ancestors) {
|
|
544
|
+
const snapshot = ancestor.inspect(seen);
|
|
545
|
+
for (const node of snapshot.nodes) {
|
|
546
|
+
nodes.push({ ...node, inherited: true });
|
|
547
|
+
}
|
|
548
|
+
edges.push(...snapshot.edges);
|
|
549
|
+
}
|
|
550
|
+
return { nodes, edges };
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Build a filterable dependency graph of this container's bindings and
|
|
554
|
+
* the dependency edges observed while resolving them.
|
|
555
|
+
*
|
|
556
|
+
* @returns A Graph snapshot you can filter/inspect
|
|
557
|
+
*
|
|
558
|
+
* @example
|
|
559
|
+
* ```typescript
|
|
560
|
+
* const graph = container.graph();
|
|
561
|
+
* const singletons = graph.getNodes({ lifecycle: 'singleton' });
|
|
562
|
+
* const deps = graph.dependenciesOf('userService');
|
|
563
|
+
* ```
|
|
564
|
+
*/
|
|
565
|
+
graph() {
|
|
566
|
+
return new Graph(this.inspect());
|
|
567
|
+
}
|
|
417
568
|
/**
|
|
418
569
|
* Reset the container to its initial state
|
|
419
570
|
* Clears all bindings, instances, aliases, and context
|
|
@@ -431,6 +582,7 @@ export class Container {
|
|
|
431
582
|
this.instances.clear();
|
|
432
583
|
this.aliases.clear();
|
|
433
584
|
this.bindingCache.clear();
|
|
585
|
+
this.dependencyEdges.clear();
|
|
434
586
|
this.currentContext = undefined;
|
|
435
587
|
this.currentScope = undefined;
|
|
436
588
|
this.resolutionStack = [];
|
|
@@ -457,7 +609,7 @@ export class Container {
|
|
|
457
609
|
});
|
|
458
610
|
// Bind proxy resolvers
|
|
459
611
|
for (const key of allKeys) {
|
|
460
|
-
composed.bind(key, (c) => c.resolveFromComposition(key));
|
|
612
|
+
composed.bind(key, (c) => c.resolveFromComposition(key, c.currentContext));
|
|
461
613
|
}
|
|
462
614
|
return composed;
|
|
463
615
|
}
|
|
@@ -465,14 +617,33 @@ export class Container {
|
|
|
465
617
|
* Resolve a service from composed containers
|
|
466
618
|
* @private
|
|
467
619
|
*/
|
|
468
|
-
resolveFromComposition(key) {
|
|
469
|
-
|
|
620
|
+
resolveFromComposition(key, context) {
|
|
621
|
+
let foundDefaultResolution;
|
|
470
622
|
for (const container of this.composedContainers) {
|
|
471
|
-
|
|
472
|
-
|
|
623
|
+
// Temporarily use `findBinding` to inspect without full resolution
|
|
624
|
+
// This is a workaround due to `resolve` not returning binding metadata.
|
|
625
|
+
const binding = container['findBinding'](key, context);
|
|
626
|
+
if (binding) {
|
|
627
|
+
if (binding.context === context) {
|
|
628
|
+
// Found a perfect contextual match, this takes highest priority.
|
|
629
|
+
return container.resolve(key, context);
|
|
630
|
+
}
|
|
631
|
+
else if (!binding.context &&
|
|
632
|
+
!binding.condition &&
|
|
633
|
+
!foundDefaultResolution) {
|
|
634
|
+
// This is a non-contextual, non-conditional default binding. Store the first one as fallback.
|
|
635
|
+
// Only store if we haven't found any default yet.
|
|
636
|
+
foundDefaultResolution = {
|
|
637
|
+
container: container,
|
|
638
|
+
result: container.resolve(key, undefined), // Resolve default from this container (without context)
|
|
639
|
+
};
|
|
640
|
+
}
|
|
473
641
|
}
|
|
474
642
|
}
|
|
475
|
-
|
|
643
|
+
if (foundDefaultResolution) {
|
|
644
|
+
return foundDefaultResolution.result;
|
|
645
|
+
}
|
|
646
|
+
throw new Error(`No binding found for key: ${key.toString()}`);
|
|
476
647
|
}
|
|
477
648
|
/**
|
|
478
649
|
* 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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"}
|