@codefast/di 0.5.0-canary.5 → 0.5.0-canary.7
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/CHANGELOG.md +65 -0
- package/README.md +73 -496
- package/dist/binding.d.ts +211 -0
- package/dist/binding.d.ts.map +1 -0
- package/dist/binding.js +46 -0
- package/dist/binding.js.map +1 -0
- package/dist/{constructor-type.d.mts → constructor-type.d.ts} +3 -5
- package/dist/constructor-type.d.ts.map +1 -0
- package/dist/constructor-type.js +2 -0
- package/dist/constructor-type.js.map +1 -0
- package/dist/container/binding-builders.d.ts +35 -0
- package/dist/container/binding-builders.d.ts.map +1 -0
- package/dist/container/binding-builders.js +247 -0
- package/dist/container/binding-builders.js.map +1 -0
- package/dist/container/container.d.ts +58 -0
- package/dist/container/container.d.ts.map +1 -0
- package/dist/container/container.js +641 -0
- package/dist/container/container.js.map +1 -0
- package/dist/decorators/inject.d.ts +57 -0
- package/dist/decorators/inject.d.ts.map +1 -0
- package/dist/decorators/inject.js +145 -0
- package/dist/decorators/inject.js.map +1 -0
- package/dist/decorators/injectable.d.ts +29 -0
- package/dist/decorators/injectable.d.ts.map +1 -0
- package/dist/decorators/injectable.js +53 -0
- package/dist/decorators/injectable.js.map +1 -0
- package/dist/decorators/lifecycle-decorators.d.ts +9 -0
- package/dist/decorators/lifecycle-decorators.d.ts.map +1 -0
- package/dist/decorators/lifecycle-decorators.js +40 -0
- package/dist/decorators/lifecycle-decorators.js.map +1 -0
- package/dist/errors.d.ts +150 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +197 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/introspection/dependency-graph.d.ts +40 -0
- package/dist/introspection/dependency-graph.d.ts.map +1 -0
- package/dist/introspection/dependency-graph.js +66 -0
- package/dist/introspection/dependency-graph.js.map +1 -0
- package/dist/introspection/graph-adapters/cytoscape.d.ts +33 -0
- package/dist/introspection/graph-adapters/cytoscape.d.ts.map +1 -0
- package/dist/introspection/graph-adapters/cytoscape.js +30 -0
- package/dist/introspection/graph-adapters/cytoscape.js.map +1 -0
- package/dist/introspection/graph-adapters/dot.d.ts +6 -0
- package/dist/introspection/graph-adapters/dot.d.ts.map +1 -0
- package/dist/introspection/graph-adapters/dot.js +18 -0
- package/dist/introspection/graph-adapters/dot.js.map +1 -0
- package/dist/introspection/graph-adapters/reactflow.d.ts +38 -0
- package/dist/introspection/graph-adapters/reactflow.d.ts.map +1 -0
- package/dist/introspection/graph-adapters/reactflow.js +33 -0
- package/dist/introspection/graph-adapters/reactflow.js.map +1 -0
- package/dist/introspection/inspector.d.ts +39 -0
- package/dist/introspection/inspector.d.ts.map +1 -0
- package/dist/introspection/inspector.js +82 -0
- package/dist/introspection/inspector.js.map +1 -0
- package/dist/metadata/{metadata-keys.d.mts → metadata-keys.d.ts} +5 -7
- package/dist/metadata/metadata-keys.d.ts.map +1 -0
- package/dist/metadata/metadata-keys.js +25 -0
- package/dist/metadata/metadata-keys.js.map +1 -0
- package/dist/metadata/metadata-reader-token.d.ts +7 -0
- package/dist/metadata/metadata-reader-token.d.ts.map +1 -0
- package/dist/metadata/metadata-reader-token.js +6 -0
- package/dist/metadata/metadata-reader-token.js.map +1 -0
- package/dist/metadata/metadata-types.d.ts +48 -0
- package/dist/metadata/metadata-types.d.ts.map +1 -0
- package/dist/metadata/metadata-types.js +2 -0
- package/dist/metadata/metadata-types.js.map +1 -0
- package/dist/metadata/symbol-metadata-reader.d.ts +20 -0
- package/dist/metadata/symbol-metadata-reader.d.ts.map +1 -0
- package/dist/metadata/symbol-metadata-reader.js +34 -0
- package/dist/metadata/symbol-metadata-reader.js.map +1 -0
- package/dist/module.d.ts +67 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +54 -0
- package/dist/module.js.map +1 -0
- package/dist/registry.d.ts +33 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +249 -0
- package/dist/registry.js.map +1 -0
- package/dist/resolution/binding-scope.d.ts +10 -0
- package/dist/resolution/binding-scope.d.ts.map +1 -0
- package/dist/resolution/binding-scope.js +24 -0
- package/dist/resolution/binding-scope.js.map +1 -0
- package/dist/resolution/binding-select.d.ts +16 -0
- package/dist/resolution/binding-select.d.ts.map +1 -0
- package/dist/resolution/binding-select.js +143 -0
- package/dist/resolution/binding-select.js.map +1 -0
- package/dist/resolution/constraints.d.ts +51 -0
- package/dist/resolution/constraints.d.ts.map +1 -0
- package/dist/resolution/constraints.js +88 -0
- package/dist/resolution/constraints.js.map +1 -0
- package/dist/resolution/environment.d.ts +47 -0
- package/dist/resolution/environment.d.ts.map +1 -0
- package/dist/resolution/environment.js +100 -0
- package/dist/resolution/environment.js.map +1 -0
- package/dist/resolution/instantiation-plan.d.ts +67 -0
- package/dist/resolution/instantiation-plan.d.ts.map +1 -0
- package/dist/resolution/instantiation-plan.js +163 -0
- package/dist/resolution/instantiation-plan.js.map +1 -0
- package/dist/resolution/lifecycle.d.ts +21 -0
- package/dist/resolution/lifecycle.d.ts.map +1 -0
- package/dist/resolution/lifecycle.js +178 -0
- package/dist/resolution/lifecycle.js.map +1 -0
- package/dist/resolution/resolution-path.d.ts +31 -0
- package/dist/resolution/resolution-path.d.ts.map +1 -0
- package/dist/resolution/resolution-path.js +53 -0
- package/dist/resolution/resolution-path.js.map +1 -0
- package/dist/resolution/resolve-options.d.ts +19 -0
- package/dist/resolution/resolve-options.d.ts.map +1 -0
- package/dist/resolution/resolve-options.js +32 -0
- package/dist/resolution/resolve-options.js.map +1 -0
- package/dist/resolution/resolver.d.ts +35 -0
- package/dist/resolution/resolver.d.ts.map +1 -0
- package/dist/resolution/resolver.js +1320 -0
- package/dist/resolution/resolver.js.map +1 -0
- package/dist/resolution/scope.d.ts +32 -0
- package/dist/resolution/scope.d.ts.map +1 -0
- package/dist/resolution/scope.js +76 -0
- package/dist/resolution/scope.js.map +1 -0
- package/dist/token.d.ts +23 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +22 -0
- package/dist/token.js.map +1 -0
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +143 -120
- package/src/binding.ts +38 -22
- package/src/container/binding-builders.ts +397 -0
- package/src/container/container.ts +838 -0
- package/src/decorators/inject.ts +16 -3
- package/src/decorators/injectable.ts +3 -3
- package/src/index.ts +14 -7
- package/src/{dependency-graph.ts → introspection/dependency-graph.ts} +1 -1
- package/src/{graph-adapters → introspection/graph-adapters}/cytoscape.ts +1 -1
- package/src/{graph-adapters → introspection/graph-adapters}/dot.ts +1 -1
- package/src/{graph-adapters → introspection/graph-adapters}/reactflow.ts +13 -2
- package/src/{inspector.ts → introspection/inspector.ts} +26 -21
- package/src/metadata/symbol-metadata-reader.ts +4 -4
- package/src/module.ts +14 -6
- package/src/registry.ts +115 -61
- package/src/{binding-select.ts → resolution/binding-select.ts} +16 -3
- package/src/{environment.ts → resolution/environment.ts} +35 -35
- package/src/resolution/instantiation-plan.ts +240 -0
- package/src/{lifecycle.ts → resolution/lifecycle.ts} +20 -13
- package/src/resolution/resolution-path.ts +77 -0
- package/src/resolution/resolver.ts +1755 -0
- package/src/{scope.ts → resolution/scope.ts} +35 -18
- package/src/token.ts +0 -3
- package/dist/binding-scope.d.mts +0 -13
- package/dist/binding-scope.mjs +0 -21
- package/dist/binding-select.d.mts +0 -19
- package/dist/binding-select.mjs +0 -72
- package/dist/binding.d.mts +0 -191
- package/dist/binding.mjs +0 -36
- package/dist/constraints.d.mts +0 -55
- package/dist/constraints.mjs +0 -87
- package/dist/constructor-type.mjs +0 -1
- package/dist/container.d.mts +0 -62
- package/dist/container.mjs +0 -741
- package/dist/decorators/inject.d.mts +0 -49
- package/dist/decorators/inject.mjs +0 -136
- package/dist/decorators/injectable.d.mts +0 -32
- package/dist/decorators/injectable.mjs +0 -57
- package/dist/decorators/lifecycle-decorators.d.mts +0 -11
- package/dist/decorators/lifecycle-decorators.mjs +0 -38
- package/dist/dependency-graph.d.mts +0 -43
- package/dist/dependency-graph.mjs +0 -63
- package/dist/environment.d.mts +0 -55
- package/dist/environment.mjs +0 -98
- package/dist/errors.d.mts +0 -153
- package/dist/errors.mjs +0 -197
- package/dist/graph-adapters/cytoscape.d.mts +0 -36
- package/dist/graph-adapters/cytoscape.mjs +0 -26
- package/dist/graph-adapters/dot.d.mts +0 -9
- package/dist/graph-adapters/dot.mjs +0 -20
- package/dist/graph-adapters/reactflow.d.mts +0 -41
- package/dist/graph-adapters/reactflow.mjs +0 -29
- package/dist/index.d.mts +0 -18
- package/dist/index.mjs +0 -12
- package/dist/inspector.d.mts +0 -48
- package/dist/inspector.mjs +0 -71
- package/dist/lifecycle.d.mts +0 -25
- package/dist/lifecycle.mjs +0 -118
- package/dist/metadata/metadata-keys.mjs +0 -27
- package/dist/metadata/metadata-reader-token.d.mts +0 -10
- package/dist/metadata/metadata-reader-token.mjs +0 -8
- package/dist/metadata/metadata-types.d.mts +0 -51
- package/dist/metadata/metadata-types.mjs +0 -1
- package/dist/metadata/symbol-metadata-reader.d.mts +0 -23
- package/dist/metadata/symbol-metadata-reader.mjs +0 -29
- package/dist/module.d.mts +0 -62
- package/dist/module.mjs +0 -42
- package/dist/registry.d.mts +0 -45
- package/dist/registry.mjs +0 -163
- package/dist/resolve-options.d.mts +0 -22
- package/dist/resolve-options.mjs +0 -28
- package/dist/resolver.d.mts +0 -94
- package/dist/resolver.mjs +0 -767
- package/dist/scope.d.mts +0 -28
- package/dist/scope.mjs +0 -58
- package/dist/token.d.mts +0 -25
- package/dist/token.mjs +0 -22
- package/dist/types.d.mts +0 -92
- package/dist/types.mjs +0 -1
- package/src/container.ts +0 -1141
- package/src/resolver.ts +0 -1626
- /package/src/{binding-scope.ts → resolution/binding-scope.ts} +0 -0
- /package/src/{constraints.ts → resolution/constraints.ts} +0 -0
- /package/src/{resolve-options.ts → resolution/resolve-options.ts} +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the cycle check switches from a linear `Array.includes` scan to an attached Set.
|
|
3
|
+
*
|
|
4
|
+
* @remarks Re-measured on Node 26 / M3 Max over an async transient chain (ns/op at depth
|
|
5
|
+
* 16 / 32 / 64 / 128): a threshold of 128 gives 1275 / 3641 / 9645 / 26082, of 32 gives
|
|
6
|
+
* 1202 / 3285 / 7735 / 16837, of 16 gives 1299 / 3694 / 7449 / 15625. Switching at 32 wins
|
|
7
|
+
* the shallow-to-mid depths real graphs actually have while staying close to the best deep
|
|
8
|
+
* numbers; the previous value of 128 was the worst of the three almost everywhere.
|
|
9
|
+
*
|
|
10
|
+
* @since 0.5.0-canary.7
|
|
11
|
+
*/
|
|
12
|
+
export declare const RESOLUTION_SET_THRESHOLD = 32;
|
|
13
|
+
/**
|
|
14
|
+
* Shared cycle guard for every transient resolution path: attaches the O(1) membership
|
|
15
|
+
* Set to the path array (lazily past RESOLUTION_SET_THRESHOLD, eagerly when `forceSet`),
|
|
16
|
+
* throws on a repeated token, then marks the token on both structures.
|
|
17
|
+
*
|
|
18
|
+
* Callers unmark with `resolutionPath.pop()` + `set?.delete(name)` on unwind.
|
|
19
|
+
*/
|
|
20
|
+
export declare function enterResolutionPath(resolutionPath: Array<string>, tokenDisplayName: string, forceSet: true): Set<string>;
|
|
21
|
+
export declare function enterResolutionPath(resolutionPath: Array<string>, tokenDisplayName: string, forceSet: boolean): Set<string> | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Unwinds the innermost `enterResolutionPath` entry, keeping the attached membership Set in
|
|
24
|
+
* sync. Callers that already hold the entry's name can pop and delete directly; this exists for
|
|
25
|
+
* unwind paths that only have the path array — notably the async chain's shared settle callback,
|
|
26
|
+
* which serves every level and therefore cannot capture a per-level name.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.5.0-canary.7
|
|
29
|
+
*/
|
|
30
|
+
export declare function exitResolutionPath(resolutionPath: Array<string>): void;
|
|
31
|
+
//# sourceMappingURL=resolution-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolution-path.d.ts","sourceRoot":"","sources":["../../src/resolution/resolution-path.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAG3C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,IAAI,GACb,GAAG,CAAC,MAAM,CAAC,CAAC;AACf,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,OAAO,GAChB,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAuB3B;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAKtE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cycle-detection bookkeeping shared by every resolution path.
|
|
3
|
+
*
|
|
4
|
+
* The resolution path is a plain string array for cheap push/pop; past
|
|
5
|
+
* RESOLUTION_SET_THRESHOLD entries an O(1) membership Set is attached to the
|
|
6
|
+
* array itself (symbol-keyed) so very deep graphs keep bounded cycle checks.
|
|
7
|
+
*/
|
|
8
|
+
import { CircularDependencyError } from "#/errors";
|
|
9
|
+
const RESOLUTION_SET_KEY = Symbol("di:resolution-set");
|
|
10
|
+
/**
|
|
11
|
+
* Where the cycle check switches from a linear `Array.includes` scan to an attached Set.
|
|
12
|
+
*
|
|
13
|
+
* @remarks Re-measured on Node 26 / M3 Max over an async transient chain (ns/op at depth
|
|
14
|
+
* 16 / 32 / 64 / 128): a threshold of 128 gives 1275 / 3641 / 9645 / 26082, of 32 gives
|
|
15
|
+
* 1202 / 3285 / 7735 / 16837, of 16 gives 1299 / 3694 / 7449 / 15625. Switching at 32 wins
|
|
16
|
+
* the shallow-to-mid depths real graphs actually have while staying close to the best deep
|
|
17
|
+
* numbers; the previous value of 128 was the worst of the three almost everywhere.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.5.0-canary.7
|
|
20
|
+
*/
|
|
21
|
+
export const RESOLUTION_SET_THRESHOLD = 32;
|
|
22
|
+
/**
|
|
23
|
+
* @since 0.5.0-canary.7
|
|
24
|
+
*/
|
|
25
|
+
export function enterResolutionPath(resolutionPath, tokenDisplayName, forceSet) {
|
|
26
|
+
const pathWithSet = resolutionPath;
|
|
27
|
+
let resolutionSet = pathWithSet[RESOLUTION_SET_KEY];
|
|
28
|
+
if (resolutionSet === undefined && (forceSet || resolutionPath.length >= RESOLUTION_SET_THRESHOLD)) {
|
|
29
|
+
resolutionSet = new Set(resolutionPath);
|
|
30
|
+
pathWithSet[RESOLUTION_SET_KEY] = resolutionSet;
|
|
31
|
+
}
|
|
32
|
+
if (resolutionSet === undefined ? resolutionPath.includes(tokenDisplayName) : resolutionSet.has(tokenDisplayName)) {
|
|
33
|
+
throw new CircularDependencyError([...resolutionPath, tokenDisplayName]);
|
|
34
|
+
}
|
|
35
|
+
resolutionPath.push(tokenDisplayName);
|
|
36
|
+
resolutionSet?.add(tokenDisplayName);
|
|
37
|
+
return resolutionSet;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Unwinds the innermost `enterResolutionPath` entry, keeping the attached membership Set in
|
|
41
|
+
* sync. Callers that already hold the entry's name can pop and delete directly; this exists for
|
|
42
|
+
* unwind paths that only have the path array — notably the async chain's shared settle callback,
|
|
43
|
+
* which serves every level and therefore cannot capture a per-level name.
|
|
44
|
+
*
|
|
45
|
+
* @since 0.5.0-canary.7
|
|
46
|
+
*/
|
|
47
|
+
export function exitResolutionPath(resolutionPath) {
|
|
48
|
+
const tokenDisplayName = resolutionPath.pop();
|
|
49
|
+
if (tokenDisplayName !== undefined) {
|
|
50
|
+
resolutionPath[RESOLUTION_SET_KEY]?.delete(tokenDisplayName);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=resolution-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolution-path.js","sourceRoot":"","sources":["../../src/resolution/resolution-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,kBAAkB,GAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACtE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAoB3C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA6B,EAC7B,gBAAwB,EACxB,QAAiB;IAEjB,MAAM,WAAW,GAAG,cAAuC,CAAC;IAC5D,IAAI,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACpD,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,MAAM,IAAI,wBAAwB,CAAC,EAAE,CAAC;QACnG,aAAa,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;QAChD,WAAW,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;IAClD,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClH,MAAM,IAAI,uBAAuB,CAAC,CAAC,GAAG,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtC,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA6B;IAC9D,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;IAC9C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAClC,cAAwC,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BindingSlot } from "#/binding";
|
|
2
|
+
import type { BindingTag, ResolveOptions } from "#/types";
|
|
3
|
+
/**
|
|
4
|
+
* Builds a {@link ResolveOptions} safe for `exactOptionalPropertyTypes`:
|
|
5
|
+
* omits keys instead of assigning `undefined`.
|
|
6
|
+
*
|
|
7
|
+
* @since 0.3.16-canary.0
|
|
8
|
+
*/
|
|
9
|
+
export declare function injectionSlotToResolveOptions(injectionSlot: {
|
|
10
|
+
readonly name?: string;
|
|
11
|
+
readonly tags?: ReadonlyArray<BindingTag>;
|
|
12
|
+
}): ResolveOptions | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve options derived from a binding {@link BindingSlot} (tags may be empty; omits when nothing to match).
|
|
15
|
+
*
|
|
16
|
+
* @since 0.3.16-canary.0
|
|
17
|
+
*/
|
|
18
|
+
export declare function bindingSlotToResolveOptions(bindingSlot: BindingSlot): ResolveOptions | undefined;
|
|
19
|
+
//# sourceMappingURL=resolve-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-options.d.ts","sourceRoot":"","sources":["../../src/resolution/resolve-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAoB1D;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,EAAE;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAC3C,GAAG,cAAc,GAAG,SAAS,CAE7B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAEhG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Shared core: build a ResolveOptions from already-normalised name + tags. */
|
|
2
|
+
function buildOptions(name, tags) {
|
|
3
|
+
if (name === undefined && tags === undefined) {
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
const options = {};
|
|
7
|
+
if (name !== undefined) {
|
|
8
|
+
options.name = name;
|
|
9
|
+
}
|
|
10
|
+
if (tags !== undefined) {
|
|
11
|
+
options.tags = tags;
|
|
12
|
+
}
|
|
13
|
+
return options;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds a {@link ResolveOptions} safe for `exactOptionalPropertyTypes`:
|
|
17
|
+
* omits keys instead of assigning `undefined`.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.3.16-canary.0
|
|
20
|
+
*/
|
|
21
|
+
export function injectionSlotToResolveOptions(injectionSlot) {
|
|
22
|
+
return buildOptions(injectionSlot.name, injectionSlot.tags);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resolve options derived from a binding {@link BindingSlot} (tags may be empty; omits when nothing to match).
|
|
26
|
+
*
|
|
27
|
+
* @since 0.3.16-canary.0
|
|
28
|
+
*/
|
|
29
|
+
export function bindingSlotToResolveOptions(bindingSlot) {
|
|
30
|
+
return buildOptions(bindingSlot.name, bindingSlot.tags.length > 0 ? bindingSlot.tags : undefined);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=resolve-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-options.js","sourceRoot":"","sources":["../../src/resolution/resolve-options.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,SAAS,YAAY,CACnB,IAAwB,EACxB,IAA2C;IAE3C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,aAG7C;IACC,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAwB;IAClE,OAAO,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Binding } from "#/binding";
|
|
2
|
+
import type { Container } from "#/container/container";
|
|
3
|
+
import type { MetadataReader } from "#/metadata/metadata-types";
|
|
4
|
+
import type { BindingRegistry } from "#/registry";
|
|
5
|
+
import type { LifecycleManager } from "#/resolution/lifecycle";
|
|
6
|
+
import type { ScopeManager } from "#/resolution/scope";
|
|
7
|
+
import type { Token } from "#/token";
|
|
8
|
+
import type { Constructor, ResolutionFrame, ResolveOptions } from "#/types";
|
|
9
|
+
/**
|
|
10
|
+
* @since 0.3.16-canary.0
|
|
11
|
+
*/
|
|
12
|
+
export declare class DependencyResolver {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(registry: BindingRegistry, scope: ScopeManager, lifecycle: LifecycleManager, metadataReader: MetadataReader, container: Container, parent: DependencyResolver | undefined);
|
|
15
|
+
/**
|
|
16
|
+
* Binding lookup aligned with `resolve` — used by `Container.validate` without instantiating.
|
|
17
|
+
*/
|
|
18
|
+
peekBindingForValidate(token: Token<unknown> | Constructor, options: ResolveOptions | undefined): {
|
|
19
|
+
binding: Binding;
|
|
20
|
+
owner: DependencyResolver;
|
|
21
|
+
} | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Mirrors {@link DependencyResolver.resolveAll} candidate selection only (no instantiation).
|
|
24
|
+
*/
|
|
25
|
+
peekCandidateBindingsForValidate(token: Token<unknown> | Constructor, options: ResolveOptions | undefined): Array<Binding>;
|
|
26
|
+
resolveFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
|
|
27
|
+
resolve<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
|
|
28
|
+
resolveOptional<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value | undefined;
|
|
29
|
+
resolveAll<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Array<Value>;
|
|
30
|
+
resolveAsyncFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value>;
|
|
31
|
+
resolveAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value>;
|
|
32
|
+
resolveOptionalAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value | undefined>;
|
|
33
|
+
resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Array<Value>>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/resolver.ts"],"names":[],"mappings":"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"}
|