@codefast/di 0.5.0-canary.6 → 0.5.0-canary.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +123 -0
- package/README.md +15 -4
- package/dist/binding.d.ts +78 -19
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +46 -2
- package/dist/binding.js.map +1 -1
- package/dist/constructor-type.d.ts +4 -5
- package/dist/constructor-type.d.ts.map +1 -1
- package/dist/container/binding-builders.d.ts +56 -0
- package/dist/container/binding-builders.d.ts.map +1 -0
- package/dist/container/binding-builders.js +196 -0
- package/dist/container/binding-builders.js.map +1 -0
- package/dist/{container.d.ts → container/container.d.ts} +2 -2
- package/dist/container/container.d.ts.map +1 -0
- package/dist/container/container.js +624 -0
- package/dist/container/container.js.map +1 -0
- package/dist/decorators/inject.d.ts +10 -1
- package/dist/decorators/inject.d.ts.map +1 -1
- package/dist/decorators/inject.js +2 -2
- package/dist/decorators/inject.js.map +1 -1
- package/dist/decorators/injectable.js +3 -3
- package/dist/decorators/injectable.js.map +1 -1
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +13 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/introspection/dependency-graph.d.ts.map +1 -0
- package/dist/{dependency-graph.js → introspection/dependency-graph.js} +1 -1
- package/dist/introspection/dependency-graph.js.map +1 -0
- package/dist/{graph-adapters → introspection/graph-adapters}/cytoscape.d.ts +1 -1
- package/dist/introspection/graph-adapters/cytoscape.d.ts.map +1 -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.map +1 -0
- package/dist/{graph-adapters → introspection/graph-adapters}/reactflow.d.ts +2 -2
- package/dist/introspection/graph-adapters/reactflow.d.ts.map +1 -0
- package/dist/{graph-adapters → introspection/graph-adapters}/reactflow.js +11 -1
- package/dist/introspection/graph-adapters/reactflow.js.map +1 -0
- package/dist/{inspector.d.ts → introspection/inspector.d.ts} +3 -8
- package/dist/introspection/inspector.d.ts.map +1 -0
- package/dist/{inspector.js → introspection/inspector.js} +23 -23
- package/dist/introspection/inspector.js.map +1 -0
- package/dist/metadata/metadata-keys.d.ts +3 -6
- package/dist/metadata/metadata-keys.d.ts.map +1 -1
- package/dist/metadata/metadata-keys.js +3 -6
- package/dist/metadata/metadata-keys.js.map +1 -1
- package/dist/metadata/symbol-metadata-reader.d.ts +1 -1
- package/dist/metadata/symbol-metadata-reader.d.ts.map +1 -1
- package/dist/metadata/symbol-metadata-reader.js +4 -4
- package/dist/metadata/symbol-metadata-reader.js.map +1 -1
- package/dist/module.d.ts +9 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +9 -2
- package/dist/module.js.map +1 -1
- package/dist/registry.d.ts +17 -13
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +94 -63
- package/dist/registry.js.map +1 -1
- package/dist/resolution/activation-need.d.ts +25 -0
- package/dist/resolution/activation-need.d.ts.map +1 -0
- package/dist/resolution/activation-need.js +64 -0
- package/dist/resolution/activation-need.js.map +1 -0
- package/dist/resolution/binding-lookup-cache.d.ts +41 -0
- package/dist/resolution/binding-lookup-cache.d.ts.map +1 -0
- package/dist/resolution/binding-lookup-cache.js +102 -0
- package/dist/resolution/binding-lookup-cache.js.map +1 -0
- package/dist/resolution/binding-scope.d.ts.map +1 -0
- package/dist/resolution/binding-scope.js.map +1 -0
- package/dist/resolution/binding-select.d.ts.map +1 -0
- package/dist/{binding-select.js → resolution/binding-select.js} +17 -7
- package/dist/resolution/binding-select.js.map +1 -0
- package/dist/resolution/class-introspector.d.ts +27 -0
- package/dist/resolution/class-introspector.d.ts.map +1 -0
- package/dist/resolution/class-introspector.js +60 -0
- package/dist/resolution/class-introspector.js.map +1 -0
- package/dist/resolution/constraints.d.ts.map +1 -0
- package/dist/resolution/constraints.js.map +1 -0
- package/dist/resolution/diagnostics.d.ts +41 -0
- package/dist/resolution/diagnostics.d.ts.map +1 -0
- package/dist/resolution/diagnostics.js +18 -0
- package/dist/resolution/diagnostics.js.map +1 -0
- package/dist/{environment.d.ts → resolution/environment.d.ts} +24 -7
- package/dist/resolution/environment.d.ts.map +1 -0
- package/dist/resolution/environment.js +126 -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 +183 -0
- package/dist/resolution/instantiation-plan.js.map +1 -0
- package/dist/{lifecycle.d.ts → resolution/lifecycle.d.ts} +5 -3
- package/dist/resolution/lifecycle.d.ts.map +1 -0
- package/dist/{lifecycle.js → resolution/lifecycle.js} +23 -14
- package/dist/resolution/lifecycle.js.map +1 -0
- package/dist/resolution/resolution-path.d.ts +22 -0
- package/dist/resolution/resolution-path.d.ts.map +1 -0
- package/dist/resolution/resolution-path.js +40 -0
- package/dist/resolution/resolution-path.js.map +1 -0
- package/dist/resolution/resolve-options.d.ts.map +1 -0
- package/dist/resolution/resolve-options.js.map +1 -0
- package/dist/resolution/resolver.d.ts +40 -0
- package/dist/resolution/resolver.d.ts.map +1 -0
- package/dist/resolution/resolver.js +1108 -0
- package/dist/resolution/resolver.js.map +1 -0
- package/dist/{scope.d.ts → resolution/scope.d.ts} +8 -9
- package/dist/resolution/scope.d.ts.map +1 -0
- package/dist/resolution/scope.js +80 -0
- package/dist/resolution/scope.js.map +1 -0
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +0 -3
- package/dist/token.js.map +1 -1
- package/package.json +19 -94
- package/src/binding.ts +137 -22
- package/src/constructor-type.ts +4 -5
- package/src/container/binding-builders.ts +294 -0
- package/src/container/container.ts +825 -0
- package/src/decorators/inject.ts +15 -4
- package/src/decorators/injectable.ts +3 -3
- package/src/errors.ts +21 -0
- package/src/index.ts +15 -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/metadata-keys.ts +3 -6
- package/src/metadata/symbol-metadata-reader.ts +4 -4
- package/src/module.ts +14 -6
- package/src/registry.ts +97 -64
- package/src/resolution/activation-need.ts +81 -0
- package/src/resolution/binding-lookup-cache.ts +132 -0
- package/src/{binding-select.ts → resolution/binding-select.ts} +17 -7
- package/src/resolution/class-introspector.ts +74 -0
- package/src/resolution/diagnostics.ts +43 -0
- package/src/{environment.ts → resolution/environment.ts} +65 -35
- package/src/resolution/instantiation-plan.ts +292 -0
- package/src/{lifecycle.ts → resolution/lifecycle.ts} +26 -14
- package/src/resolution/resolution-path.ts +62 -0
- package/src/resolution/resolver.ts +1526 -0
- package/src/resolution/scope.ts +95 -0
- package/src/token.ts +0 -3
- package/dist/binding-scope.d.ts.map +0 -1
- package/dist/binding-scope.js.map +0 -1
- package/dist/binding-select.d.ts.map +0 -1
- package/dist/binding-select.js.map +0 -1
- package/dist/constraints.d.ts.map +0 -1
- package/dist/constraints.js.map +0 -1
- package/dist/container.d.ts.map +0 -1
- package/dist/container.js +0 -853
- package/dist/container.js.map +0 -1
- package/dist/dependency-graph.d.ts.map +0 -1
- package/dist/dependency-graph.js.map +0 -1
- package/dist/environment.d.ts.map +0 -1
- package/dist/environment.js +0 -100
- package/dist/environment.js.map +0 -1
- package/dist/graph-adapters/cytoscape.d.ts.map +0 -1
- package/dist/graph-adapters/cytoscape.js.map +0 -1
- package/dist/graph-adapters/dot.d.ts +0 -6
- package/dist/graph-adapters/dot.d.ts.map +0 -1
- package/dist/graph-adapters/dot.js.map +0 -1
- package/dist/graph-adapters/reactflow.d.ts.map +0 -1
- package/dist/graph-adapters/reactflow.js.map +0 -1
- package/dist/inspector.d.ts.map +0 -1
- package/dist/inspector.js.map +0 -1
- package/dist/lifecycle.d.ts.map +0 -1
- package/dist/lifecycle.js.map +0 -1
- package/dist/resolve-options.d.ts.map +0 -1
- package/dist/resolve-options.js.map +0 -1
- package/dist/resolver.d.ts +0 -90
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js +0 -1208
- package/dist/resolver.js.map +0 -1
- package/dist/scope.d.ts.map +0 -1
- package/dist/scope.js +0 -61
- package/dist/scope.js.map +0 -1
- package/src/container.ts +0 -1141
- package/src/resolver.ts +0 -1626
- package/src/scope.ts +0 -77
- /package/dist/{dependency-graph.d.ts → introspection/dependency-graph.d.ts} +0 -0
- /package/dist/{graph-adapters → introspection/graph-adapters}/cytoscape.js +0 -0
- /package/dist/{graph-adapters → introspection/graph-adapters}/dot.js +0 -0
- /package/dist/{binding-scope.d.ts → resolution/binding-scope.d.ts} +0 -0
- /package/dist/{binding-scope.js → resolution/binding-scope.js} +0 -0
- /package/dist/{binding-select.d.ts → resolution/binding-select.d.ts} +0 -0
- /package/dist/{constraints.d.ts → resolution/constraints.d.ts} +0 -0
- /package/dist/{constraints.js → resolution/constraints.js} +0 -0
- /package/dist/{resolve-options.d.ts → resolution/resolve-options.d.ts} +0 -0
- /package/dist/{resolve-options.js → resolution/resolve-options.js} +0 -0
- /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
|
@@ -3,7 +3,7 @@ import { INJECT_ACCESSOR_KEY, INJECTABLE_KEY, LIFECYCLE_KEY, METADATA_SYMBOL } f
|
|
|
3
3
|
* @since 0.3.16-canary.0
|
|
4
4
|
*/
|
|
5
5
|
export class SymbolMetadataReader {
|
|
6
|
-
|
|
6
|
+
#getMetadataRecord(target, key) {
|
|
7
7
|
const descriptor = Object.getOwnPropertyDescriptor(target, METADATA_SYMBOL);
|
|
8
8
|
if (descriptor === undefined) {
|
|
9
9
|
return undefined;
|
|
@@ -15,15 +15,15 @@ export class SymbolMetadataReader {
|
|
|
15
15
|
return record;
|
|
16
16
|
}
|
|
17
17
|
getConstructorMetadata(target) {
|
|
18
|
-
const record = this
|
|
18
|
+
const record = this.#getMetadataRecord(target, INJECTABLE_KEY);
|
|
19
19
|
return record?.[INJECTABLE_KEY];
|
|
20
20
|
}
|
|
21
21
|
getLifecycleMetadata(target) {
|
|
22
|
-
const record = this
|
|
22
|
+
const record = this.#getMetadataRecord(target, LIFECYCLE_KEY);
|
|
23
23
|
return record?.[LIFECYCLE_KEY];
|
|
24
24
|
}
|
|
25
25
|
getAccessorMetadata(target) {
|
|
26
|
-
const record = this
|
|
26
|
+
const record = this.#getMetadataRecord(target, INJECT_ACCESSOR_KEY);
|
|
27
27
|
return record?.[INJECT_ACCESSOR_KEY];
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-metadata-reader.js","sourceRoot":"","sources":["../../src/metadata/symbol-metadata-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI/G;;GAEG;AACH,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"symbol-metadata-reader.js","sourceRoot":"","sources":["../../src/metadata/symbol-metadata-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI/G;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B,kBAAkB,CAAC,MAAmB,EAAE,GAAoB;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC5E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,KAA4D,CAAC;QACvF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACzE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB,CAAC,MAAmB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC/D,OAAO,MAAM,EAAE,CAAC,cAAc,CAAoC,CAAC;IACrE,CAAC;IAED,oBAAoB,CAAC,MAAmB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC9D,OAAO,MAAM,EAAE,CAAC,aAAa,CAAkC,CAAC;IAClE,CAAC;IAED,mBAAmB,CACjB,MAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACpE,OAAO,MAAM,EAAE,CAAC,mBAAmB,CAEtB,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
package/dist/module.d.ts
CHANGED
|
@@ -3,13 +3,20 @@ import type { Token } from "#/token";
|
|
|
3
3
|
import type { Constructor } from "#/types";
|
|
4
4
|
declare const SYNC_MODULE_BRAND: unique symbol;
|
|
5
5
|
declare const ASYNC_MODULE_BRAND: unique symbol;
|
|
6
|
+
/**
|
|
7
|
+
* Key for the module's setup callback. A symbol (not exported from the package root)
|
|
8
|
+
* keeps the container-only member out of consumer-facing autocomplete entirely.
|
|
9
|
+
*
|
|
10
|
+
* @since 0.5.0-canary.7
|
|
11
|
+
*/
|
|
12
|
+
export declare const MODULE_SETUP: unique symbol;
|
|
6
13
|
/**
|
|
7
14
|
* @since 0.3.16-canary.0
|
|
8
15
|
*/
|
|
9
16
|
export interface SyncModule {
|
|
10
17
|
readonly name: string;
|
|
11
18
|
readonly [SYNC_MODULE_BRAND]: true;
|
|
12
|
-
readonly
|
|
19
|
+
readonly [MODULE_SETUP]: (builder: ModuleBuilder) => void;
|
|
13
20
|
}
|
|
14
21
|
/**
|
|
15
22
|
* @since 0.3.16-canary.0
|
|
@@ -17,7 +24,7 @@ export interface SyncModule {
|
|
|
17
24
|
export interface AsyncModule {
|
|
18
25
|
readonly name: string;
|
|
19
26
|
readonly [ASYNC_MODULE_BRAND]: true;
|
|
20
|
-
readonly
|
|
27
|
+
readonly [MODULE_SETUP]: (builder: AsyncModuleBuilder) => Promise<void>;
|
|
21
28
|
}
|
|
22
29
|
/**
|
|
23
30
|
* @since 0.3.16-canary.0
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,QAAA,MAAM,iBAAiB,EAAE,OAAO,MAAiC,CAAC;AAClE,QAAA,MAAM,kBAAkB,EAAE,OAAO,MAAkC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,QAAA,MAAM,iBAAiB,EAAE,OAAO,MAAiC,CAAC;AAClE,QAAA,MAAM,kBAAkB,EAAE,OAAO,MAAkC,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,MAAkC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IACpC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAID;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;CAC3D;AAID;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB,MAAM,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,UAAU;CAO1E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB,MAAM,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW;CAOzF,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,MAAM,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,UAAU;IAGzE,WAAW,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW;CAG9F,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,IAAI,UAAU,CAEnF"}
|
package/dist/module.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
// ── Branded types (runtime symbols for branding) ─────────────────────────────
|
|
2
2
|
const SYNC_MODULE_BRAND = Symbol("di:sync-module");
|
|
3
3
|
const ASYNC_MODULE_BRAND = Symbol("di:async-module");
|
|
4
|
+
/**
|
|
5
|
+
* Key for the module's setup callback. A symbol (not exported from the package root)
|
|
6
|
+
* keeps the container-only member out of consumer-facing autocomplete entirely.
|
|
7
|
+
*
|
|
8
|
+
* @since 0.5.0-canary.7
|
|
9
|
+
*/
|
|
10
|
+
export const MODULE_SETUP = Symbol("di:module-setup");
|
|
4
11
|
// ── Static factories ──────────────────────────────────────────────────────────
|
|
5
12
|
/**
|
|
6
13
|
* @since 0.3.16-canary.0
|
|
@@ -10,7 +17,7 @@ export const SyncModule = {
|
|
|
10
17
|
return {
|
|
11
18
|
name,
|
|
12
19
|
[SYNC_MODULE_BRAND]: true,
|
|
13
|
-
|
|
20
|
+
[MODULE_SETUP]: setup,
|
|
14
21
|
};
|
|
15
22
|
},
|
|
16
23
|
};
|
|
@@ -22,7 +29,7 @@ export const AsyncModule = {
|
|
|
22
29
|
return {
|
|
23
30
|
name,
|
|
24
31
|
[ASYNC_MODULE_BRAND]: true,
|
|
25
|
-
|
|
32
|
+
[MODULE_SETUP]: setup,
|
|
26
33
|
};
|
|
27
34
|
},
|
|
28
35
|
};
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAEhF,MAAM,iBAAiB,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClE,MAAM,kBAAkB,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAEhF,MAAM,iBAAiB,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClE,MAAM,kBAAkB,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAsCrE,iFAAiF;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,CAAC,IAAY,EAAE,KAAuC;QAC1D,OAAO;YACL,IAAI;YACJ,CAAC,iBAAiB,CAAC,EAAE,IAAa;YAClC,CAAC,YAAY,CAAC,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,IAAY,EAAE,KAAqD;QACxE,OAAO;YACL,IAAI;YACJ,CAAC,kBAAkB,CAAC,EAAE,IAAa;YACnC,CAAC,YAAY,CAAC,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,iFAAiF;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,CAAC,IAAY,EAAE,KAAuC;QAC1D,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,WAAW,CAAC,IAAY,EAAE,KAAqD;QAC7E,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAgC;IAC3D,OAAQ,MAAqB,CAAC,iBAAiB,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -5,13 +5,21 @@ import type { BindingIdentifier, Constructor } from "#/types";
|
|
|
5
5
|
* @since 0.3.16-canary.0
|
|
6
6
|
*/
|
|
7
7
|
export declare class BindingRegistry {
|
|
8
|
-
private
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
#private;
|
|
9
|
+
/** Monotonic version — increments on every mutation. */
|
|
10
|
+
get version(): number;
|
|
11
|
+
/**
|
|
12
|
+
* Registers a mutation the indexes don't care about (a fluent chain refining scope or an
|
|
13
|
+
* activation hook in place), so version-stamped resolver caches still invalidate.
|
|
14
|
+
*/
|
|
15
|
+
touch(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Add or replace binding using slot-aware last-wins. Returns the displaced binding, if any.
|
|
18
|
+
*
|
|
19
|
+
* @remarks The binding is stored by reference — it must come from `createBinding`, which is
|
|
20
|
+
* what guarantees the single hidden class the resolver's hot reads depend on.
|
|
21
|
+
*/
|
|
22
|
+
add(binding: Binding): Binding | undefined;
|
|
15
23
|
/** Remove all bindings for a token. Returns removed bindings. */
|
|
16
24
|
removeByToken(token: Token<unknown> | Constructor): Array<Binding>;
|
|
17
25
|
/** Remove a specific binding by ID. Returns the removed binding or undefined. */
|
|
@@ -31,11 +39,7 @@ export declare class BindingRegistry {
|
|
|
31
39
|
getFastDefault(token: Token<unknown> | Constructor): Binding | undefined;
|
|
32
40
|
/** Summarize available slot strings for a token (for error messages). */
|
|
33
41
|
availableSlotStrings(token: Token<unknown> | Constructor): Array<string>;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
private _isPurePredicateBinding;
|
|
37
|
-
private _indexSimpleNamedBinding;
|
|
38
|
-
private _deindexSimpleNamedBinding;
|
|
39
|
-
private _refreshFastDefaultForToken;
|
|
42
|
+
/** Whether the deferred table behind `#simpleNamed` has had to be built. */
|
|
43
|
+
get isBuilt(): boolean;
|
|
40
44
|
}
|
|
41
45
|
//# sourceMappingURL=registry.d.ts.map
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AAE7E;;GAEG;AACH,qBAAa,eAAe
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AAE7E;;GAEG;AACH,qBAAa,eAAe;;IAe1B,wDAAwD;IACxD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CA2BzC;IAED,iEAAiE;IACjE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAYjE;IAED,iFAAiF;IACjF,UAAU,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,CA0BrD;IAED,oCAAoC;IACpC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAElE;IAED,yBAAyB;IACzB,OAAO,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAElD;IAED,6CAA6C;IAC7C,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,OAAO,CAIhD;IAED,oCAAoC;IACpC,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC,CAMpC;IAED,gDAAgD;IAChD,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,CAS9B;IAED,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAErF;IAED,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAK3G;IAED,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAEvE;IAED,yEAAyE;IACzE,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAGvE;IAwFD,4EAA4E;IAC5E,IAAI,OAAO,IAAI,OAAO,CAErB;CACF"}
|
package/dist/registry.js
CHANGED
|
@@ -3,143 +3,170 @@ import { bindingSlotEquals, bindingSlotToString } from "#/binding";
|
|
|
3
3
|
* @since 0.3.16-canary.0
|
|
4
4
|
*/
|
|
5
5
|
export class BindingRegistry {
|
|
6
|
+
// Monotonic mutation counter — lets resolvers version-stamp lookup caches across a container chain.
|
|
7
|
+
#version = 0;
|
|
6
8
|
// Map from token key -> array of bindings (order matters for last-wins)
|
|
7
|
-
|
|
9
|
+
#bindings = new Map();
|
|
8
10
|
// Fast lookup by binding ID
|
|
9
|
-
|
|
10
|
-
// Fast lookup for slot { name, tags: [] }
|
|
11
|
-
|
|
11
|
+
#byId = new Map();
|
|
12
|
+
// Fast lookup for slot { name, tags: [] } — unallocated until a named binding is registered.
|
|
13
|
+
#simpleNamed;
|
|
12
14
|
// Fast path for one default slot binding with no predicate
|
|
13
|
-
|
|
14
|
-
// Fast lookup for slot { name: undefined, tags: [[key, value]] } with no predicate
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
#fastDefault = new Map();
|
|
16
|
+
// Fast lookup for slot { name: undefined, tags: [[key, value]] } with no predicate — likewise
|
|
17
|
+
// unallocated until a tagged binding is registered.
|
|
18
|
+
#simpleTagged;
|
|
19
|
+
/** Monotonic version — increments on every mutation. */
|
|
20
|
+
get version() {
|
|
21
|
+
return this.#version;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Registers a mutation the indexes don't care about (a fluent chain refining scope or an
|
|
25
|
+
* activation hook in place), so version-stamped resolver caches still invalidate.
|
|
26
|
+
*/
|
|
27
|
+
touch() {
|
|
28
|
+
this.#version += 1;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Add or replace binding using slot-aware last-wins. Returns the displaced binding, if any.
|
|
32
|
+
*
|
|
33
|
+
* @remarks The binding is stored by reference — it must come from `createBinding`, which is
|
|
34
|
+
* what guarantees the single hidden class the resolver's hot reads depend on.
|
|
35
|
+
*/
|
|
17
36
|
add(binding) {
|
|
37
|
+
this.#version += 1;
|
|
18
38
|
const key = binding.token;
|
|
19
39
|
// ✓ TS6.0: Map.getOrInsert (ES2025) replaces the manual get+check+set upsert
|
|
20
|
-
const bindingsForToken = this.
|
|
40
|
+
const bindingsForToken = this.#bindings.getOrInsert(key, []);
|
|
21
41
|
// Only apply last-wins for slot-based bindings (not predicate-only)
|
|
22
|
-
|
|
23
|
-
|
|
42
|
+
let displacedBinding;
|
|
43
|
+
if (!this.#isPurePredicateBinding(binding)) {
|
|
44
|
+
const existingIndex = bindingsForToken.findIndex((candidate) => !this.#isPurePredicateBinding(candidate) && bindingSlotEquals(candidate.slot, binding.slot));
|
|
24
45
|
if (existingIndex !== -1) {
|
|
25
|
-
|
|
26
|
-
this.
|
|
46
|
+
displacedBinding = bindingsForToken[existingIndex];
|
|
47
|
+
this.#byId.delete(displacedBinding.id);
|
|
27
48
|
bindingsForToken.splice(existingIndex, 1);
|
|
49
|
+
this.#deindexSimpleNamedBinding(key, displacedBinding);
|
|
50
|
+
this.#deindexSimpleTaggedBinding(key, displacedBinding);
|
|
28
51
|
}
|
|
29
52
|
}
|
|
30
53
|
bindingsForToken.push(binding);
|
|
31
|
-
this.
|
|
32
|
-
this
|
|
33
|
-
this
|
|
34
|
-
this
|
|
54
|
+
this.#byId.set(binding.id, binding);
|
|
55
|
+
this.#indexSimpleNamedBinding(key, binding);
|
|
56
|
+
this.#indexSimpleTaggedBinding(key, binding);
|
|
57
|
+
this.#refreshFastDefaultForToken(key);
|
|
58
|
+
return displacedBinding;
|
|
35
59
|
}
|
|
36
60
|
/** Remove all bindings for a token. Returns removed bindings. */
|
|
37
61
|
removeByToken(token) {
|
|
62
|
+
this.#version += 1;
|
|
38
63
|
const key = token;
|
|
39
|
-
const bindingsForToken = this.
|
|
40
|
-
this.
|
|
41
|
-
this
|
|
42
|
-
this
|
|
43
|
-
this.
|
|
64
|
+
const bindingsForToken = this.#bindings.get(key) ?? [];
|
|
65
|
+
this.#bindings.delete(key);
|
|
66
|
+
this.#simpleNamed?.delete(key);
|
|
67
|
+
this.#simpleTagged?.delete(key);
|
|
68
|
+
this.#fastDefault.delete(key);
|
|
44
69
|
for (const binding of bindingsForToken) {
|
|
45
|
-
this.
|
|
70
|
+
this.#byId.delete(binding.id);
|
|
46
71
|
}
|
|
47
72
|
return bindingsForToken;
|
|
48
73
|
}
|
|
49
74
|
/** Remove a specific binding by ID. Returns the removed binding or undefined. */
|
|
50
75
|
removeById(id) {
|
|
51
|
-
const binding = this.
|
|
76
|
+
const binding = this.#byId.get(id);
|
|
52
77
|
if (binding === undefined) {
|
|
53
78
|
return undefined;
|
|
54
79
|
}
|
|
55
|
-
this
|
|
80
|
+
this.#version += 1;
|
|
81
|
+
this.#byId.delete(id);
|
|
56
82
|
const key = binding.token;
|
|
57
|
-
const bindingsForToken = this.
|
|
83
|
+
const bindingsForToken = this.#bindings.get(key);
|
|
58
84
|
if (bindingsForToken !== undefined) {
|
|
59
85
|
const bindingIndex = bindingsForToken.findIndex((candidate) => candidate.id === id);
|
|
60
86
|
if (bindingIndex !== -1) {
|
|
61
87
|
bindingsForToken.splice(bindingIndex, 1);
|
|
62
88
|
}
|
|
63
|
-
this
|
|
64
|
-
this
|
|
89
|
+
this.#deindexSimpleNamedBinding(key, binding);
|
|
90
|
+
this.#deindexSimpleTaggedBinding(key, binding);
|
|
65
91
|
if (bindingsForToken.length === 0) {
|
|
66
|
-
this.
|
|
67
|
-
this
|
|
68
|
-
this
|
|
69
|
-
this.
|
|
92
|
+
this.#bindings.delete(key);
|
|
93
|
+
this.#simpleNamed?.delete(key);
|
|
94
|
+
this.#simpleTagged?.delete(key);
|
|
95
|
+
this.#fastDefault.delete(key);
|
|
70
96
|
}
|
|
71
97
|
else {
|
|
72
|
-
this
|
|
98
|
+
this.#refreshFastDefaultForToken(key);
|
|
73
99
|
}
|
|
74
100
|
}
|
|
75
101
|
return binding;
|
|
76
102
|
}
|
|
77
103
|
/** Get all bindings for a token. */
|
|
78
104
|
getAll(token) {
|
|
79
|
-
return this.
|
|
105
|
+
return this.#bindings.get(token) ?? [];
|
|
80
106
|
}
|
|
81
107
|
/** Get binding by ID. */
|
|
82
108
|
getById(id) {
|
|
83
|
-
return this.
|
|
109
|
+
return this.#byId.get(id);
|
|
84
110
|
}
|
|
85
111
|
/** Check if any binding exists for token. */
|
|
86
112
|
has(token) {
|
|
87
113
|
const key = token;
|
|
88
|
-
const list = this.
|
|
114
|
+
const list = this.#bindings.get(key);
|
|
89
115
|
return list !== undefined && list.length > 0;
|
|
90
116
|
}
|
|
91
117
|
/** All bindings in the registry. */
|
|
92
118
|
allBindings() {
|
|
93
119
|
const allBindings = [];
|
|
94
|
-
for (const bindingsForToken of this.
|
|
120
|
+
for (const bindingsForToken of this.#bindings.values()) {
|
|
95
121
|
allBindings.push(...bindingsForToken);
|
|
96
122
|
}
|
|
97
123
|
return allBindings;
|
|
98
124
|
}
|
|
99
125
|
/** Remove all bindings. Returns all removed. */
|
|
100
126
|
clear() {
|
|
127
|
+
this.#version += 1;
|
|
101
128
|
const all = this.allBindings();
|
|
102
|
-
this.
|
|
103
|
-
this.
|
|
104
|
-
this
|
|
105
|
-
this
|
|
106
|
-
this.
|
|
129
|
+
this.#bindings.clear();
|
|
130
|
+
this.#byId.clear();
|
|
131
|
+
this.#simpleNamed?.clear();
|
|
132
|
+
this.#simpleTagged?.clear();
|
|
133
|
+
this.#fastDefault.clear();
|
|
107
134
|
return all;
|
|
108
135
|
}
|
|
109
136
|
getSimpleNamed(token, name) {
|
|
110
|
-
return this
|
|
137
|
+
return this.#simpleNamed?.get(token)?.get(name);
|
|
111
138
|
}
|
|
112
139
|
getSimpleTagged(token, tagKey, tagValue) {
|
|
113
|
-
return this
|
|
114
|
-
|
|
140
|
+
return this.#simpleTagged
|
|
141
|
+
?.get(token)
|
|
115
142
|
?.get(tagKey)
|
|
116
143
|
?.get(tagValue);
|
|
117
144
|
}
|
|
118
145
|
getFastDefault(token) {
|
|
119
|
-
return this.
|
|
146
|
+
return this.#fastDefault.get(token);
|
|
120
147
|
}
|
|
121
148
|
/** Summarize available slot strings for a token (for error messages). */
|
|
122
149
|
availableSlotStrings(token) {
|
|
123
|
-
const bindingsForToken = this.
|
|
150
|
+
const bindingsForToken = this.#bindings.get(token) ?? [];
|
|
124
151
|
return bindingsForToken.map((binding) => bindingSlotToString(binding.slot));
|
|
125
152
|
}
|
|
126
|
-
|
|
153
|
+
#indexSimpleTaggedBinding(tokenKey, binding) {
|
|
127
154
|
const slot = binding.slot;
|
|
128
155
|
if (slot.name !== undefined || slot.tags.length !== 1 || binding.predicate !== undefined) {
|
|
129
156
|
return;
|
|
130
157
|
}
|
|
131
158
|
const [tagKey, tagValue] = slot.tags[0];
|
|
132
|
-
const byTagKey = this.
|
|
159
|
+
const byTagKey = (this.#simpleTagged ??= new Map()).getOrInsert(tokenKey, new Map());
|
|
133
160
|
const byTagValue = byTagKey.getOrInsert(tagKey, new Map());
|
|
134
161
|
byTagValue.set(tagValue, binding);
|
|
135
162
|
}
|
|
136
|
-
|
|
163
|
+
#deindexSimpleTaggedBinding(tokenKey, binding) {
|
|
137
164
|
const slot = binding.slot;
|
|
138
165
|
if (slot.name !== undefined || slot.tags.length !== 1 || binding.predicate !== undefined) {
|
|
139
166
|
return;
|
|
140
167
|
}
|
|
141
168
|
const [tagKey, tagValue] = slot.tags[0];
|
|
142
|
-
const byTagKey = this
|
|
169
|
+
const byTagKey = this.#simpleTagged?.get(tokenKey);
|
|
143
170
|
if (byTagKey === undefined) {
|
|
144
171
|
return;
|
|
145
172
|
}
|
|
@@ -153,32 +180,32 @@ export class BindingRegistry {
|
|
|
153
180
|
if (byTagValue.size === 0) {
|
|
154
181
|
byTagKey.delete(tagKey);
|
|
155
182
|
if (byTagKey.size === 0) {
|
|
156
|
-
this.
|
|
183
|
+
this.#simpleTagged.delete(tokenKey);
|
|
157
184
|
}
|
|
158
185
|
}
|
|
159
186
|
}
|
|
160
187
|
}
|
|
161
|
-
|
|
188
|
+
#isPurePredicateBinding(binding) {
|
|
162
189
|
const slot = binding.slot;
|
|
163
190
|
const hasPredicate = binding.predicate !== undefined;
|
|
164
191
|
const hasConstraint = slot.name !== undefined || slot.tags.length > 0;
|
|
165
192
|
// Pure predicate = has predicate but no slot constraint (name/tags)
|
|
166
193
|
return hasPredicate && !hasConstraint;
|
|
167
194
|
}
|
|
168
|
-
|
|
195
|
+
#indexSimpleNamedBinding(tokenKey, binding) {
|
|
169
196
|
const slot = binding.slot;
|
|
170
197
|
if (slot.name === undefined || slot.tags.length > 0) {
|
|
171
198
|
return;
|
|
172
199
|
}
|
|
173
|
-
const bindingsByName = this.
|
|
200
|
+
const bindingsByName = (this.#simpleNamed ??= new Map()).getOrInsert(tokenKey, new Map());
|
|
174
201
|
bindingsByName.set(slot.name, binding);
|
|
175
202
|
}
|
|
176
|
-
|
|
203
|
+
#deindexSimpleNamedBinding(tokenKey, binding) {
|
|
177
204
|
const slot = binding.slot;
|
|
178
205
|
if (slot.name === undefined || slot.tags.length > 0) {
|
|
179
206
|
return;
|
|
180
207
|
}
|
|
181
|
-
const bindingsByName = this
|
|
208
|
+
const bindingsByName = this.#simpleNamed?.get(tokenKey);
|
|
182
209
|
if (bindingsByName === undefined) {
|
|
183
210
|
return;
|
|
184
211
|
}
|
|
@@ -186,23 +213,27 @@ export class BindingRegistry {
|
|
|
186
213
|
if (currentBinding?.id === binding.id) {
|
|
187
214
|
bindingsByName.delete(slot.name);
|
|
188
215
|
if (bindingsByName.size === 0) {
|
|
189
|
-
this.
|
|
216
|
+
this.#simpleNamed.delete(tokenKey);
|
|
190
217
|
}
|
|
191
218
|
}
|
|
192
219
|
}
|
|
193
|
-
|
|
194
|
-
const bindingsForToken = this.
|
|
220
|
+
#refreshFastDefaultForToken(tokenKey) {
|
|
221
|
+
const bindingsForToken = this.#bindings.get(tokenKey);
|
|
195
222
|
if (bindingsForToken === undefined || bindingsForToken.length !== 1) {
|
|
196
|
-
this.
|
|
223
|
+
this.#fastDefault.delete(tokenKey);
|
|
197
224
|
return;
|
|
198
225
|
}
|
|
199
226
|
const onlyBinding = bindingsForToken[0];
|
|
200
227
|
const isDefaultSlot = onlyBinding.slot.name === undefined && onlyBinding.slot.tags.length === 0;
|
|
201
228
|
if (!isDefaultSlot || onlyBinding.predicate !== undefined) {
|
|
202
|
-
this.
|
|
229
|
+
this.#fastDefault.delete(tokenKey);
|
|
203
230
|
return;
|
|
204
231
|
}
|
|
205
|
-
this.
|
|
232
|
+
this.#fastDefault.set(tokenKey, onlyBinding);
|
|
233
|
+
}
|
|
234
|
+
/** Whether the deferred table behind `#simpleNamed` has had to be built. */
|
|
235
|
+
get isBuilt() {
|
|
236
|
+
return this.#simpleNamed !== undefined;
|
|
206
237
|
}
|
|
207
238
|
}
|
|
208
239
|
//# sourceMappingURL=registry.js.map
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAInE;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,wEAAwE;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per binding: does resolving it have to go through the activation pipeline?
|
|
3
|
+
*
|
|
4
|
+
* @remarks Versioned on the lifecycle manager, since `onActivation` can be registered at any time.
|
|
5
|
+
*/
|
|
6
|
+
import type { Binding } from "#/binding";
|
|
7
|
+
import type { ClassIntrospector } from "#/resolution/class-introspector";
|
|
8
|
+
import type { LifecycleManager } from "#/resolution/lifecycle";
|
|
9
|
+
/**
|
|
10
|
+
* @since 0.5.0-canary.8
|
|
11
|
+
*/
|
|
12
|
+
export declare class ActivationNeedCache {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(lifecycle: LifecycleManager, classes: ClassIntrospector);
|
|
15
|
+
needsActivation<const Value>(binding: Binding<Value>): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Settles a class binding's answer once its lifecycle metadata has actually been read, which
|
|
18
|
+
* only happens on the first instantiation.
|
|
19
|
+
*
|
|
20
|
+
* @returns the answer to use for this resolve — possibly now `false` where it was a
|
|
21
|
+
* conservative `true`.
|
|
22
|
+
*/
|
|
23
|
+
refreshAfterFirstInstantiation<Value>(binding: Binding<Value>, needsActivation: boolean): boolean;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=activation-need.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-need.d.ts","sourceRoot":"","sources":["../../src/resolution/activation-need.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;GAEG;AACH,qBAAa,mBAAmB;;IAM9B,YAAY,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAGlE;IAED,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAwB7D;IAED;;;;;;OAMG;IACH,8BAA8B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAOhG;CAgBF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 0.5.0-canary.8
|
|
3
|
+
*/
|
|
4
|
+
export class ActivationNeedCache {
|
|
5
|
+
#needByBindingId = new Map();
|
|
6
|
+
#version = -1;
|
|
7
|
+
#lifecycle;
|
|
8
|
+
#classes;
|
|
9
|
+
constructor(lifecycle, classes) {
|
|
10
|
+
this.#lifecycle = lifecycle;
|
|
11
|
+
this.#classes = classes;
|
|
12
|
+
}
|
|
13
|
+
needsActivation(binding) {
|
|
14
|
+
const lifecycleVersion = this.#lifecycle.activationVersion;
|
|
15
|
+
// No hooks registered anywhere and none on the binding: only classes can still surprise us,
|
|
16
|
+
// via a @postConstruct we have not looked for yet.
|
|
17
|
+
if (lifecycleVersion === 0 &&
|
|
18
|
+
binding.kind !== "class" &&
|
|
19
|
+
binding.kind !== "alias" &&
|
|
20
|
+
binding.onActivation === undefined) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (this.#version !== lifecycleVersion) {
|
|
24
|
+
this.#needByBindingId.clear();
|
|
25
|
+
this.#version = lifecycleVersion;
|
|
26
|
+
}
|
|
27
|
+
const cached = this.#needByBindingId.get(binding.id);
|
|
28
|
+
if (cached !== undefined) {
|
|
29
|
+
return cached;
|
|
30
|
+
}
|
|
31
|
+
const needsActivation = binding.kind === "class" ? this.#classNeedsActivation(binding) : this.#nonClassNeedsActivation(binding);
|
|
32
|
+
this.#needByBindingId.set(binding.id, needsActivation);
|
|
33
|
+
return needsActivation;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Settles a class binding's answer once its lifecycle metadata has actually been read, which
|
|
37
|
+
* only happens on the first instantiation.
|
|
38
|
+
*
|
|
39
|
+
* @returns the answer to use for this resolve — possibly now `false` where it was a
|
|
40
|
+
* conservative `true`.
|
|
41
|
+
*/
|
|
42
|
+
refreshAfterFirstInstantiation(binding, needsActivation) {
|
|
43
|
+
if (binding.kind !== "class" || this.#classes.knownPostConstruct(binding.target) !== undefined) {
|
|
44
|
+
return needsActivation;
|
|
45
|
+
}
|
|
46
|
+
this.#classes.discoverPostConstruct(binding.target);
|
|
47
|
+
this.#needByBindingId.delete(binding.id);
|
|
48
|
+
return this.needsActivation(binding);
|
|
49
|
+
}
|
|
50
|
+
#classNeedsActivation(binding) {
|
|
51
|
+
if (this.#lifecycle.hasActivationHandlers(binding.token) || binding.onActivation !== undefined) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
// Unknown lifecycle metadata: activate once so the first instantiation can settle it.
|
|
55
|
+
return this.#classes.knownPostConstruct(binding.target) !== false;
|
|
56
|
+
}
|
|
57
|
+
#nonClassNeedsActivation(binding) {
|
|
58
|
+
if (binding.kind !== "alias" && binding.onActivation !== undefined) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return this.#lifecycle.hasActivationHandlers(binding.token);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=activation-need.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-need.js","sourceRoot":"","sources":["../../src/resolution/activation-need.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACrB,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACL,UAAU,CAAmB;IAC7B,QAAQ,CAAoB;IAErC,YAAY,SAA2B,EAAE,OAA0B;QACjE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,eAAe,CAAc,OAAuB;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAC3D,4FAA4F;QAC5F,mDAAmD;QACnD,IACE,gBAAgB,KAAK,CAAC;YACtB,OAAO,CAAC,IAAI,KAAK,OAAO;YACxB,OAAO,CAAC,IAAI,KAAK,OAAO;YACxB,OAAO,CAAC,YAAY,KAAK,SAAS,EAClC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC;QACnC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,eAAe,GACnB,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC1G,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QACvD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,8BAA8B,CAAQ,OAAuB,EAAE,eAAwB;QACrF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/F,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,qBAAqB,CAAc,OAA2C;QAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,sFAAsF;QACtF,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;IACpE,CAAC;IAED,wBAAwB,CAAc,OAAuB;QAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;CACF"}
|