@khapu2906/treasure-chest 1.4.1 → 1.5.1

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.
@@ -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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"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Dependency graph for inspecting and filtering container bindings
3
+ *
4
+ * @module Graph
5
+ */
6
+ /**
7
+ * Read-only, filterable view over a container's bindings and the
8
+ * dependency edges discovered while resolving them.
9
+ *
10
+ * Edges are recorded as `resolve()` runs, so they only reflect
11
+ * dependencies that have actually been resolved at least once - this is
12
+ * a runtime graph, not a static analysis of factory source code.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const graph = container.graph();
17
+ *
18
+ * const singletons = graph.getNodes({ lifecycle: 'singleton' });
19
+ * const unresolved = graph.getNodes({ resolved: false });
20
+ * const deps = graph.dependenciesOf('userService');
21
+ *
22
+ * console.log(graph.toDot()); // paste into a Graphviz viewer
23
+ * ```
24
+ */
25
+ export class Graph {
26
+ /**
27
+ * @param snapshot Nodes and edges, keyed by label
28
+ * @param keyLabels Optional map from real service keys to their labels.
29
+ * Container#graph() passes this so lookups by a Symbol find that exact
30
+ * Symbol's node, even if another Symbol has the same description.
31
+ */
32
+ constructor(snapshot, keyLabels) {
33
+ this.nodes = snapshot.nodes;
34
+ this.edges = snapshot.edges;
35
+ this.keyLabels = keyLabels;
36
+ this.byPlainKey = new Map();
37
+ for (const node of this.nodes) {
38
+ if (!this.byPlainKey.has(node.key)) {
39
+ this.byPlainKey.set(node.key, node);
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Turn a service key (or an already-known label) into its node label
45
+ * @private
46
+ */
47
+ toLabel(key) {
48
+ var _a, _b;
49
+ return (_b = (_a = this.keyLabels) === null || _a === void 0 ? void 0 : _a.get(key)) !== null && _b !== void 0 ? _b : key.toString();
50
+ }
51
+ /**
52
+ * Get all nodes, optionally filtered
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * graph.getNodes({ lifecycle: ['singleton', 'scoped'], resolved: true });
57
+ * graph.getNodes({ key: /Repository$/ });
58
+ * ```
59
+ */
60
+ getNodes(filter) {
61
+ let result = this.nodes;
62
+ if (!filter) {
63
+ return [...result];
64
+ }
65
+ if (filter.lifecycle) {
66
+ const lifecycles = Array.isArray(filter.lifecycle)
67
+ ? filter.lifecycle
68
+ : [filter.lifecycle];
69
+ result = result.filter((n) => lifecycles.includes(n.lifecycle));
70
+ }
71
+ if (filter.resolved !== undefined) {
72
+ result = result.filter((n) => n.resolved === filter.resolved);
73
+ }
74
+ if (filter.lazy !== undefined) {
75
+ result = result.filter((n) => n.lazy === filter.lazy);
76
+ }
77
+ if (filter.inherited !== undefined) {
78
+ result = result.filter((n) => n.inherited === filter.inherited);
79
+ }
80
+ if (filter.key !== undefined) {
81
+ const matcher = filter.key;
82
+ result = result.filter((n) => matcher instanceof RegExp
83
+ ? matcher.test(n.key)
84
+ : n.key.includes(matcher));
85
+ }
86
+ return [...result];
87
+ }
88
+ /**
89
+ * Get a single (non-contextual) node by key
90
+ */
91
+ getNode(key) {
92
+ return this.byPlainKey.get(this.toLabel(key));
93
+ }
94
+ /**
95
+ * Get all edges, optionally filtered by source and/or target key
96
+ */
97
+ getEdges(filter) {
98
+ if (!filter) {
99
+ return [...this.edges];
100
+ }
101
+ const from = filter.from !== undefined ? this.toLabel(filter.from) : undefined;
102
+ const to = filter.to !== undefined ? this.toLabel(filter.to) : undefined;
103
+ return this.edges.filter((e) => {
104
+ if (from !== undefined && e.from !== from)
105
+ return false;
106
+ if (to !== undefined && e.to !== to)
107
+ return false;
108
+ return true;
109
+ });
110
+ }
111
+ /**
112
+ * Direct dependencies of a key - the services it needs
113
+ */
114
+ dependenciesOf(key) {
115
+ return this.dependenciesOfLabel(this.toLabel(key));
116
+ }
117
+ /** @private */
118
+ dependenciesOfLabel(keyStr) {
119
+ return this.edges
120
+ .filter((e) => e.from === keyStr)
121
+ .map((e) => this.byPlainKey.get(e.to))
122
+ .filter((n) => n !== undefined);
123
+ }
124
+ /**
125
+ * Direct dependents of a key - the services that need it
126
+ */
127
+ dependentsOf(key) {
128
+ const keyStr = this.toLabel(key);
129
+ return this.edges
130
+ .filter((e) => e.to === keyStr)
131
+ .map((e) => this.byPlainKey.get(e.from))
132
+ .filter((n) => n !== undefined);
133
+ }
134
+ /**
135
+ * Nodes that nothing else depends on (candidate entry points)
136
+ */
137
+ roots() {
138
+ const dependedOn = new Set(this.edges.map((e) => e.to));
139
+ return this.nodes.filter((n) => !dependedOn.has(n.key));
140
+ }
141
+ /**
142
+ * Nodes with no recorded dependencies (leaves of the graph)
143
+ */
144
+ leaves() {
145
+ const withDeps = new Set(this.edges.map((e) => e.from));
146
+ return this.nodes.filter((n) => !withDeps.has(n.key));
147
+ }
148
+ /**
149
+ * Build a nested tree starting at `key`, recursively expanding
150
+ * dependencies into `children`. Handy for rendering a dependency tree in
151
+ * a UI (e.g. a collapsible tree view).
152
+ *
153
+ * A node that reappears along the same branch (A depends on B, B depends
154
+ * on A, recorded from two separate resolve() calls) is marked
155
+ * `cyclic: true` instead of recursing forever - `children` stays empty
156
+ * there. Nodes that appear in multiple, unrelated branches (e.g. two
157
+ * services sharing the same `db` dependency) are duplicated as separate
158
+ * tree nodes, which is expected for a tree view.
159
+ *
160
+ * @param key The root key to build the tree from
161
+ * @returns The tree, or undefined if `key` isn't a known node
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const tree = container.graph().toTree('service');
166
+ * // { key: 'service', children: [{ key: 'repo', children: [{ key: 'db', children: [] }] }] }
167
+ * ```
168
+ */
169
+ toTree(key) {
170
+ return this.toTreeByLabel(this.toLabel(key), new Set());
171
+ }
172
+ /**
173
+ * Recursion works on labels directly (never back through toLabel), so a
174
+ * label can't be re-mapped to a different key mid-walk.
175
+ * @private
176
+ */
177
+ toTreeByLabel(keyStr, _visited) {
178
+ const node = this.byPlainKey.get(keyStr);
179
+ if (!node)
180
+ return undefined;
181
+ if (_visited.has(keyStr)) {
182
+ return { ...node, children: [], cyclic: true };
183
+ }
184
+ const visited = new Set(_visited);
185
+ visited.add(keyStr);
186
+ const children = this.dependenciesOfLabel(keyStr)
187
+ .map((dep) => this.toTreeByLabel(dep.key, visited))
188
+ .filter((n) => n !== undefined);
189
+ return { ...node, children };
190
+ }
191
+ /**
192
+ * Build a tree for every root (nodes nothing else depends on), covering
193
+ * the whole graph at once - ready to hand to a UI as-is.
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * const forest = container.graph().forest();
198
+ * // [{ key: 'service', children: [...] }, { key: 'unusedSingleton', children: [] }]
199
+ * ```
200
+ */
201
+ forest() {
202
+ return this.roots()
203
+ .map((root) => this.toTreeByLabel(root.key, new Set()))
204
+ .filter((n) => n !== undefined);
205
+ }
206
+ /**
207
+ * Plain JSON-serializable snapshot of the graph
208
+ */
209
+ toJSON() {
210
+ return { nodes: [...this.nodes], edges: [...this.edges] };
211
+ }
212
+ /**
213
+ * Export as Graphviz DOT source, for visualizing the graph
214
+ */
215
+ toDot() {
216
+ const lines = ['digraph Container {'];
217
+ for (const node of this.nodes) {
218
+ const label = `${node.key}\\n(${node.lifecycle}${node.lazy ? ', lazy' : ''})`;
219
+ lines.push(` "${node.key}" [label="${label}"];`);
220
+ }
221
+ for (const edge of this.edges) {
222
+ lines.push(` "${edge.from}" -> "${edge.to}";`);
223
+ }
224
+ lines.push('}');
225
+ return lines.join('\n');
226
+ }
227
+ }
228
+ //# 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/esm/index.js CHANGED
@@ -17,6 +17,7 @@
17
17
  * - High-performance Map-based storage (v1.2.0)
18
18
  * - Auto-dispose for IDisposable instances (v1.2.0)
19
19
  * - Modular architecture (v1.2.0)
20
+ * - Dependency graph inspection with filtering, tree, and DOT export (v1.5.0)
20
21
  *
21
22
  * @example
22
23
  * ```typescript
@@ -31,4 +32,5 @@
31
32
  export { Container } from './Container';
32
33
  export { Lazy } from './Lazy';
33
34
  export { Scope } from './Scope';
35
+ export { Graph } from './Graph';
34
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { ConditionFn, DisposeFn, FactoryFn, Lifecycle, ServiceKey } from './types';
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
@@ -19,8 +20,10 @@ import { Scope } from './Scope';
19
20
  export declare class Container {
20
21
  /** Map-based storage for bindings - O(1) lookup */
21
22
  private bindings;
22
- /** Cache for singleton instances */
23
+ /** Cache for singleton instances, keyed by (service key, binding context) */
23
24
  private instances;
25
+ /** Cache for lazy singleton wrappers */
26
+ private lazyInstances;
24
27
  /** Mapping of aliases to original keys */
25
28
  private aliases;
26
29
  /** Cache for resolved bindings - performance optimization */
@@ -35,17 +38,18 @@ export declare class Container {
35
38
  private currentScope?;
36
39
  /** Resolution stack for circular dependency detection */
37
40
  private resolutionStack;
41
+ /** Dependency edges observed while resolving: consumerKey -> Set of dependency keys */
42
+ private dependencyEdges;
38
43
  /**
39
44
  * Create a new container
40
45
  * @param parent Optional parent container for hierarchy
41
46
  */
42
47
  constructor(parent?: Container);
43
48
  /**
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()`.
49
+ * Record that `from` depends on `to`, for later inspection via graph()
46
50
  * @private
47
51
  */
48
- private _toCacheKey;
52
+ private _recordEdge;
49
53
  /**
50
54
  * Register a transient binding (new instance on each resolve)
51
55
  *
@@ -186,6 +190,18 @@ export declare class Container {
186
190
  * @returns The matching binding or undefined
187
191
  */
188
192
  private findBinding;
193
+ /**
194
+ * Find the appropriate binding for a given key and context, along with
195
+ * the container that actually declared it (the "owner"). Searches in
196
+ * current container and parent containers. Uses cached result when
197
+ * possible for performance.
198
+ *
199
+ * @private
200
+ * @param key The service key to find
201
+ * @param context Optional context for contextual binding
202
+ * @returns The matching binding paired with its owning container, or undefined
203
+ */
204
+ private findBindingEntry;
189
205
  /**
190
206
  * Resolve a service instance from the container
191
207
  * Handles transient, singleton, scoped, and lazy bindings
@@ -271,6 +287,41 @@ export declare class Container {
271
287
  * ```
272
288
  */
273
289
  keys(): ServiceKey[];
290
+ /**
291
+ * Collect this container's bindings (own, inherited from a parent, and
292
+ * inherited from composed containers), plus the dependency edges observed
293
+ * so far. Keys are kept as real ServiceKeys here; graph() turns them into
294
+ * unique display labels afterwards.
295
+ *
296
+ * @private
297
+ * @param seen Keys already captured by a more specific (closer) container
298
+ */
299
+ private inspect;
300
+ /**
301
+ * Assign every distinct service key a unique, human-readable label.
302
+ *
303
+ * String keys always keep their own value as label. Other keys use
304
+ * `toString()`; when that is already taken by a different key (e.g. two
305
+ * `Symbol('db')`s, or `Symbol('db')` next to the string `'Symbol(db)'`),
306
+ * a `#2`, `#3`, ... suffix is appended so graph nodes never merge.
307
+ *
308
+ * @private
309
+ */
310
+ private static labelKeys;
311
+ /**
312
+ * Build a filterable dependency graph of this container's bindings and
313
+ * the dependency edges observed while resolving them.
314
+ *
315
+ * @returns A Graph snapshot you can filter/inspect
316
+ *
317
+ * @example
318
+ * ```typescript
319
+ * const graph = container.graph();
320
+ * const singletons = graph.getNodes({ lifecycle: 'singleton' });
321
+ * const deps = graph.dependenciesOf('userService');
322
+ * ```
323
+ */
324
+ graph(): Graph;
274
325
  /**
275
326
  * Reset the container to its initial state
276
327
  * Clears all bindings, instances, aliases, and context
@@ -1 +1 @@
1
- {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/Container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/Container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Dependency graph for inspecting and filtering container bindings
3
+ *
4
+ * @module Graph
5
+ */
6
+ import type { Lifecycle, ServiceKey } from './types';
7
+ /** A single node in the dependency graph, representing one registered binding */
8
+ export interface GraphNode {
9
+ /**
10
+ * Unique, human-readable label of the service key. Usually `key.toString()`;
11
+ * when two distinct keys share the same string form (e.g. two
12
+ * `Symbol('db')`s), later ones get a `#2`, `#3`, ... suffix.
13
+ */
14
+ key: string;
15
+ /** Lifecycle of the binding (transient, singleton, scoped) */
16
+ lifecycle: Lifecycle;
17
+ /** Whether this binding is registered as lazy */
18
+ lazy: boolean;
19
+ /** Context this binding is scoped to, if it's a contextual binding */
20
+ context?: string;
21
+ /** Original key this node is an alias for, if any */
22
+ aliasOf?: string;
23
+ /** Whether this binding comes from a parent or composed container */
24
+ inherited: boolean;
25
+ /** Whether an instance has already been created and cached */
26
+ resolved: boolean;
27
+ }
28
+ /** A directed edge meaning `from` depends on `to` */
29
+ export interface GraphEdge {
30
+ from: string;
31
+ to: string;
32
+ }
33
+ /** Raw data used to build a Graph; produced by Container#graph() */
34
+ export interface GraphSnapshot {
35
+ nodes: GraphNode[];
36
+ edges: GraphEdge[];
37
+ }
38
+ /** A GraphNode nested with its dependencies, for tree-shaped UI rendering */
39
+ export interface GraphTreeNode extends GraphNode {
40
+ children: GraphTreeNode[];
41
+ /**
42
+ * True if this key already appears higher up in the current branch.
43
+ * Recursion stops here instead of looping forever - `children` will be empty.
44
+ */
45
+ cyclic?: boolean;
46
+ }
47
+ /** Criteria for filtering graph nodes */
48
+ export interface GraphNodeFilter {
49
+ /** Only include nodes matching this lifecycle (or one of these) */
50
+ lifecycle?: Lifecycle | Lifecycle[];
51
+ /** Only include nodes whose instance has (or hasn't) been resolved */
52
+ resolved?: boolean;
53
+ /** Only include lazy (or non-lazy) bindings */
54
+ lazy?: boolean;
55
+ /** Only include inherited (or own) bindings */
56
+ inherited?: boolean;
57
+ /** Only include keys matching this substring or RegExp */
58
+ key?: string | RegExp;
59
+ }
60
+ /**
61
+ * Read-only, filterable view over a container's bindings and the
62
+ * dependency edges discovered while resolving them.
63
+ *
64
+ * Edges are recorded as `resolve()` runs, so they only reflect
65
+ * dependencies that have actually been resolved at least once - this is
66
+ * a runtime graph, not a static analysis of factory source code.
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const graph = container.graph();
71
+ *
72
+ * const singletons = graph.getNodes({ lifecycle: 'singleton' });
73
+ * const unresolved = graph.getNodes({ resolved: false });
74
+ * const deps = graph.dependenciesOf('userService');
75
+ *
76
+ * console.log(graph.toDot()); // paste into a Graphviz viewer
77
+ * ```
78
+ */
79
+ export declare class Graph {
80
+ private readonly nodes;
81
+ private readonly edges;
82
+ private readonly byPlainKey;
83
+ private readonly keyLabels?;
84
+ /**
85
+ * @param snapshot Nodes and edges, keyed by label
86
+ * @param keyLabels Optional map from real service keys to their labels.
87
+ * Container#graph() passes this so lookups by a Symbol find that exact
88
+ * Symbol's node, even if another Symbol has the same description.
89
+ */
90
+ constructor(snapshot: GraphSnapshot, keyLabels?: ReadonlyMap<ServiceKey, string>);
91
+ /**
92
+ * Turn a service key (or an already-known label) into its node label
93
+ * @private
94
+ */
95
+ private toLabel;
96
+ /**
97
+ * Get all nodes, optionally filtered
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * graph.getNodes({ lifecycle: ['singleton', 'scoped'], resolved: true });
102
+ * graph.getNodes({ key: /Repository$/ });
103
+ * ```
104
+ */
105
+ getNodes(filter?: GraphNodeFilter): GraphNode[];
106
+ /**
107
+ * Get a single (non-contextual) node by key
108
+ */
109
+ getNode(key: ServiceKey): GraphNode | undefined;
110
+ /**
111
+ * Get all edges, optionally filtered by source and/or target key
112
+ */
113
+ getEdges(filter?: {
114
+ from?: ServiceKey;
115
+ to?: ServiceKey;
116
+ }): GraphEdge[];
117
+ /**
118
+ * Direct dependencies of a key - the services it needs
119
+ */
120
+ dependenciesOf(key: ServiceKey): GraphNode[];
121
+ /** @private */
122
+ private dependenciesOfLabel;
123
+ /**
124
+ * Direct dependents of a key - the services that need it
125
+ */
126
+ dependentsOf(key: ServiceKey): GraphNode[];
127
+ /**
128
+ * Nodes that nothing else depends on (candidate entry points)
129
+ */
130
+ roots(): GraphNode[];
131
+ /**
132
+ * Nodes with no recorded dependencies (leaves of the graph)
133
+ */
134
+ leaves(): GraphNode[];
135
+ /**
136
+ * Build a nested tree starting at `key`, recursively expanding
137
+ * dependencies into `children`. Handy for rendering a dependency tree in
138
+ * a UI (e.g. a collapsible tree view).
139
+ *
140
+ * A node that reappears along the same branch (A depends on B, B depends
141
+ * on A, recorded from two separate resolve() calls) is marked
142
+ * `cyclic: true` instead of recursing forever - `children` stays empty
143
+ * there. Nodes that appear in multiple, unrelated branches (e.g. two
144
+ * services sharing the same `db` dependency) are duplicated as separate
145
+ * tree nodes, which is expected for a tree view.
146
+ *
147
+ * @param key The root key to build the tree from
148
+ * @returns The tree, or undefined if `key` isn't a known node
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const tree = container.graph().toTree('service');
153
+ * // { key: 'service', children: [{ key: 'repo', children: [{ key: 'db', children: [] }] }] }
154
+ * ```
155
+ */
156
+ toTree(key: ServiceKey): GraphTreeNode | undefined;
157
+ /**
158
+ * Recursion works on labels directly (never back through toLabel), so a
159
+ * label can't be re-mapped to a different key mid-walk.
160
+ * @private
161
+ */
162
+ private toTreeByLabel;
163
+ /**
164
+ * Build a tree for every root (nodes nothing else depends on), covering
165
+ * the whole graph at once - ready to hand to a UI as-is.
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * const forest = container.graph().forest();
170
+ * // [{ key: 'service', children: [...] }, { key: 'unusedSingleton', children: [] }]
171
+ * ```
172
+ */
173
+ forest(): GraphTreeNode[];
174
+ /**
175
+ * Plain JSON-serializable snapshot of the graph
176
+ */
177
+ toJSON(): GraphSnapshot;
178
+ /**
179
+ * Export as Graphviz DOT source, for visualizing the graph
180
+ */
181
+ toDot(): string;
182
+ }
183
+ //# sourceMappingURL=Graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../src/Graph.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@
17
17
  * - High-performance Map-based storage (v1.2.0)
18
18
  * - Auto-dispose for IDisposable instances (v1.2.0)
19
19
  * - Modular architecture (v1.2.0)
20
+ * - Dependency graph inspection with filtering, tree, and DOT export (v1.5.0)
20
21
  *
21
22
  * @example
22
23
  * ```typescript
@@ -30,5 +31,7 @@
30
31
  export { Container } from './Container';
31
32
  export { Lazy } from './Lazy';
32
33
  export { Scope } from './Scope';
33
- export type { Lifecycle, IDisposable, DisposeFn } from './types';
34
+ export { Graph } from './Graph';
35
+ export type { Lifecycle, IDisposable, DisposeFn, ServiceKey } from './types';
36
+ export type { GraphNode, GraphEdge, GraphSnapshot, GraphNodeFilter, GraphTreeNode, } from './Graph';
34
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,YAAY,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,SAAS,CAAC"}