@codefast/di 0.5.0-canary.8 → 0.5.0-canary.9
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 +137 -0
- package/README.md +3 -1
- package/dist/binding.d.ts +41 -22
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +11 -0
- package/dist/binding.js.map +1 -1
- package/dist/container/binding-builders.d.ts.map +1 -1
- package/dist/container/binding-builders.js +8 -5
- package/dist/container/binding-builders.js.map +1 -1
- package/dist/container/container.d.ts.map +1 -1
- package/dist/container/container.js +67 -110
- package/dist/container/container.js.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/introspection/inspector.d.ts +0 -1
- package/dist/introspection/inspector.d.ts.map +1 -1
- package/dist/introspection/inspector.js +2 -7
- package/dist/introspection/inspector.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +46 -33
- package/dist/registry.js.map +1 -1
- package/dist/resolution/activation-need.d.ts +4 -2
- package/dist/resolution/activation-need.d.ts.map +1 -1
- package/dist/resolution/activation-need.js +15 -11
- package/dist/resolution/activation-need.js.map +1 -1
- package/dist/resolution/binding-lookup-cache.d.ts +1 -1
- package/dist/resolution/binding-lookup-cache.d.ts.map +1 -1
- package/dist/resolution/binding-lookup-cache.js +18 -2
- package/dist/resolution/binding-lookup-cache.js.map +1 -1
- package/dist/resolution/binding-scope.d.ts +5 -2
- package/dist/resolution/binding-scope.d.ts.map +1 -1
- package/dist/resolution/binding-scope.js +6 -17
- package/dist/resolution/binding-scope.js.map +1 -1
- package/dist/resolution/binding-select.d.ts +8 -1
- package/dist/resolution/binding-select.d.ts.map +1 -1
- package/dist/resolution/binding-select.js +13 -32
- package/dist/resolution/binding-select.js.map +1 -1
- package/dist/resolution/diagnostics.d.ts +2 -2
- package/dist/resolution/diagnostics.d.ts.map +1 -1
- package/dist/resolution/environment.d.ts +47 -21
- package/dist/resolution/environment.d.ts.map +1 -1
- package/dist/resolution/environment.js +134 -31
- package/dist/resolution/environment.js.map +1 -1
- package/dist/resolution/instantiation-plan.d.ts.map +1 -1
- package/dist/resolution/instantiation-plan.js +1 -1
- package/dist/resolution/instantiation-plan.js.map +1 -1
- package/dist/resolution/lifecycle.d.ts.map +1 -1
- package/dist/resolution/lifecycle.js +46 -53
- package/dist/resolution/lifecycle.js.map +1 -1
- package/dist/resolution/resolution-path.d.ts +82 -6
- package/dist/resolution/resolution-path.d.ts.map +1 -1
- package/dist/resolution/resolution-path.js +66 -8
- package/dist/resolution/resolution-path.js.map +1 -1
- package/dist/resolution/resolve-options.d.ts +41 -4
- package/dist/resolution/resolve-options.d.ts.map +1 -1
- package/dist/resolution/resolve-options.js +25 -1
- package/dist/resolution/resolve-options.js.map +1 -1
- package/dist/resolution/resolver.d.ts +29 -11
- package/dist/resolution/resolver.d.ts.map +1 -1
- package/dist/resolution/resolver.js +417 -564
- package/dist/resolution/resolver.js.map +1 -1
- package/dist/resolution/scope.d.ts +4 -0
- package/dist/resolution/scope.d.ts.map +1 -1
- package/dist/resolution/scope.js +8 -0
- package/dist/resolution/scope.js.map +1 -1
- package/package.json +5 -11
- package/src/binding.ts +46 -23
- package/src/container/binding-builders.ts +8 -5
- package/src/container/container.ts +72 -119
- package/src/errors.ts +17 -0
- package/src/index.ts +3 -1
- package/src/introspection/inspector.ts +2 -8
- package/src/registry.ts +52 -35
- package/src/resolution/activation-need.ts +18 -14
- package/src/resolution/binding-lookup-cache.ts +18 -2
- package/src/resolution/binding-scope.ts +6 -17
- package/src/resolution/binding-select.ts +14 -35
- package/src/resolution/diagnostics.ts +2 -2
- package/src/resolution/environment.ts +181 -35
- package/src/resolution/instantiation-plan.ts +5 -5
- package/src/resolution/lifecycle.ts +55 -53
- package/src/resolution/resolution-path.ts +119 -25
- package/src/resolution/resolve-options.ts +51 -4
- package/src/resolution/resolver.ts +582 -785
- package/src/resolution/scope.ts +10 -0
package/dist/registry.js
CHANGED
|
@@ -36,12 +36,13 @@ export class BindingRegistry {
|
|
|
36
36
|
add(binding) {
|
|
37
37
|
this.#version += 1;
|
|
38
38
|
const key = binding.token;
|
|
39
|
-
//
|
|
39
|
+
// Eager, not computed: a bind is usually the token's first, so the fallback is usually the
|
|
40
|
+
// one that gets stored — and the computed form would add a call to allocating it anyway.
|
|
40
41
|
const bindingsForToken = this.#bindings.getOrInsert(key, []);
|
|
41
42
|
// Only apply last-wins for slot-based bindings (not predicate-only)
|
|
42
43
|
let displacedBinding;
|
|
43
|
-
if (!
|
|
44
|
-
const existingIndex = bindingsForToken.findIndex((candidate) => !
|
|
44
|
+
if (!isPurePredicateBinding(binding)) {
|
|
45
|
+
const existingIndex = bindingsForToken.findIndex((candidate) => !isPurePredicateBinding(candidate) && bindingSlotEquals(candidate.slot, binding.slot));
|
|
45
46
|
if (existingIndex !== -1) {
|
|
46
47
|
displacedBinding = bindingsForToken[existingIndex];
|
|
47
48
|
this.#byId.delete(displacedBinding.id);
|
|
@@ -151,21 +152,21 @@ export class BindingRegistry {
|
|
|
151
152
|
return bindingsForToken.map((binding) => bindingSlotToString(binding.slot));
|
|
152
153
|
}
|
|
153
154
|
#indexSimpleTaggedBinding(tokenKey, binding) {
|
|
154
|
-
const
|
|
155
|
-
if (
|
|
155
|
+
const tag = simpleTagOf(binding);
|
|
156
|
+
if (tag === undefined) {
|
|
156
157
|
return;
|
|
157
158
|
}
|
|
158
|
-
const [tagKey, tagValue] =
|
|
159
|
+
const [tagKey, tagValue] = tag;
|
|
159
160
|
const byTagKey = (this.#simpleTagged ??= new Map()).getOrInsert(tokenKey, new Map());
|
|
160
161
|
const byTagValue = byTagKey.getOrInsert(tagKey, new Map());
|
|
161
162
|
byTagValue.set(tagValue, binding);
|
|
162
163
|
}
|
|
163
164
|
#deindexSimpleTaggedBinding(tokenKey, binding) {
|
|
164
|
-
const
|
|
165
|
-
if (
|
|
165
|
+
const tag = simpleTagOf(binding);
|
|
166
|
+
if (tag === undefined) {
|
|
166
167
|
return;
|
|
167
168
|
}
|
|
168
|
-
const [tagKey, tagValue] =
|
|
169
|
+
const [tagKey, tagValue] = tag;
|
|
169
170
|
const byTagKey = this.#simpleTagged?.get(tokenKey);
|
|
170
171
|
if (byTagKey === undefined) {
|
|
171
172
|
return;
|
|
@@ -185,33 +186,25 @@ export class BindingRegistry {
|
|
|
185
186
|
}
|
|
186
187
|
}
|
|
187
188
|
}
|
|
188
|
-
#isPurePredicateBinding(binding) {
|
|
189
|
-
const slot = binding.slot;
|
|
190
|
-
const hasPredicate = binding.predicate !== undefined;
|
|
191
|
-
const hasConstraint = slot.name !== undefined || slot.tags.length > 0;
|
|
192
|
-
// Pure predicate = has predicate but no slot constraint (name/tags)
|
|
193
|
-
return hasPredicate && !hasConstraint;
|
|
194
|
-
}
|
|
195
189
|
#indexSimpleNamedBinding(tokenKey, binding) {
|
|
196
|
-
const
|
|
197
|
-
if (
|
|
190
|
+
const name = simpleNameOf(binding);
|
|
191
|
+
if (name === undefined) {
|
|
198
192
|
return;
|
|
199
193
|
}
|
|
200
194
|
const bindingsByName = (this.#simpleNamed ??= new Map()).getOrInsert(tokenKey, new Map());
|
|
201
|
-
bindingsByName.set(
|
|
195
|
+
bindingsByName.set(name, binding);
|
|
202
196
|
}
|
|
203
197
|
#deindexSimpleNamedBinding(tokenKey, binding) {
|
|
204
|
-
const
|
|
205
|
-
if (
|
|
198
|
+
const name = simpleNameOf(binding);
|
|
199
|
+
if (name === undefined) {
|
|
206
200
|
return;
|
|
207
201
|
}
|
|
208
202
|
const bindingsByName = this.#simpleNamed?.get(tokenKey);
|
|
209
203
|
if (bindingsByName === undefined) {
|
|
210
204
|
return;
|
|
211
205
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
bindingsByName.delete(slot.name);
|
|
206
|
+
if (bindingsByName.get(name)?.id === binding.id) {
|
|
207
|
+
bindingsByName.delete(name);
|
|
215
208
|
if (bindingsByName.size === 0) {
|
|
216
209
|
this.#simpleNamed.delete(tokenKey);
|
|
217
210
|
}
|
|
@@ -219,21 +212,41 @@ export class BindingRegistry {
|
|
|
219
212
|
}
|
|
220
213
|
#refreshFastDefaultForToken(tokenKey) {
|
|
221
214
|
const bindingsForToken = this.#bindings.get(tokenKey);
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
const onlyBinding = bindingsForToken[0];
|
|
227
|
-
const isDefaultSlot = onlyBinding.slot.name === undefined && onlyBinding.slot.tags.length === 0;
|
|
228
|
-
if (!isDefaultSlot || onlyBinding.predicate !== undefined) {
|
|
229
|
-
this.#fastDefault.delete(tokenKey);
|
|
215
|
+
const onlyBinding = bindingsForToken?.length === 1 ? bindingsForToken[0] : undefined;
|
|
216
|
+
if (onlyBinding !== undefined && isDefaultSlotBinding(onlyBinding)) {
|
|
217
|
+
this.#fastDefault.set(tokenKey, onlyBinding);
|
|
230
218
|
return;
|
|
231
219
|
}
|
|
232
|
-
this.#fastDefault.
|
|
220
|
+
this.#fastDefault.delete(tokenKey);
|
|
233
221
|
}
|
|
234
222
|
/** Whether the deferred table behind `#simpleNamed` has had to be built. */
|
|
235
223
|
get isBuilt() {
|
|
236
224
|
return this.#simpleNamed !== undefined;
|
|
237
225
|
}
|
|
238
226
|
}
|
|
227
|
+
/** The name a binding is indexed under, or `undefined` when its slot is more than a plain name. */
|
|
228
|
+
function simpleNameOf(binding) {
|
|
229
|
+
const { name, tags } = binding.slot;
|
|
230
|
+
return name !== undefined && tags.length === 0 ? name : undefined;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* The tag a binding is indexed under, or `undefined` when its slot is more than one plain tag.
|
|
234
|
+
*
|
|
235
|
+
* @remarks A predicate is excluded here — unlike the name index — because the tag index is read
|
|
236
|
+
* without a re-check, so an indexed hit must be unconditional.
|
|
237
|
+
*/
|
|
238
|
+
function simpleTagOf(binding) {
|
|
239
|
+
const { name, tags } = binding.slot;
|
|
240
|
+
return name === undefined && tags.length === 1 && binding.predicate === undefined ? tags[0] : undefined;
|
|
241
|
+
}
|
|
242
|
+
/** A binding nothing has to be matched against: the default slot, no predicate. */
|
|
243
|
+
function isDefaultSlotBinding(binding) {
|
|
244
|
+
const { name, tags } = binding.slot;
|
|
245
|
+
return name === undefined && tags.length === 0 && binding.predicate === undefined;
|
|
246
|
+
}
|
|
247
|
+
/** A predicate with no slot constraint: last-wins does not apply to it. */
|
|
248
|
+
function isPurePredicateBinding(binding) {
|
|
249
|
+
const { name, tags } = binding.slot;
|
|
250
|
+
return binding.predicate !== undefined && name === undefined && tags.length === 0;
|
|
251
|
+
}
|
|
239
252
|
//# 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,oGAAoG;IACpG,QAAQ,GAAG,CAAC,CAAC;IACb,wEAAwE;IAC/D,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC9D,4BAA4B;IACnB,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACvD,6FAA6F;IAC7F,YAAY,CAAuD;IACnE,2DAA2D;IAClD,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC1D,8FAA8F;IAC9F,oDAAoD;IACpD,aAAa,CAAqE;IAElF,wDAAwD;IACxD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,OAAgB;QAClB,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAsB,CAAC;QAC3C,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per binding: does resolving it have to go through the activation pipeline?
|
|
3
3
|
*
|
|
4
|
-
* @remarks Versioned on the lifecycle manager, since `onActivation` can be
|
|
4
|
+
* @remarks Versioned on the lifecycle manager plus the own registry, since `onActivation` can be
|
|
5
|
+
* registered at any time and a rebind mints binding ids the memo must not keep forever.
|
|
5
6
|
*/
|
|
6
7
|
import type { Binding } from "#/binding";
|
|
8
|
+
import type { BindingRegistry } from "#/registry";
|
|
7
9
|
import type { ClassIntrospector } from "#/resolution/class-introspector";
|
|
8
10
|
import type { LifecycleManager } from "#/resolution/lifecycle";
|
|
9
11
|
/**
|
|
@@ -11,7 +13,7 @@ import type { LifecycleManager } from "#/resolution/lifecycle";
|
|
|
11
13
|
*/
|
|
12
14
|
export declare class ActivationNeedCache {
|
|
13
15
|
#private;
|
|
14
|
-
constructor(lifecycle: LifecycleManager, classes: ClassIntrospector);
|
|
16
|
+
constructor(lifecycle: LifecycleManager, classes: ClassIntrospector, registry: BindingRegistry);
|
|
15
17
|
needsActivation<const Value>(binding: Binding<Value>): boolean;
|
|
16
18
|
/**
|
|
17
19
|
* Settles a class binding's answer once its lifecycle metadata has actually been read, which
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activation-need.d.ts","sourceRoot":"","sources":["../../src/resolution/activation-need.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"activation-need.d.ts","sourceRoot":"","sources":["../../src/resolution/activation-need.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;GAEG;AACH,qBAAa,mBAAmB;;IAO9B,YAAY,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAI7F;IAED,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CA0B7D;IAED;;;;;;OAMG;IACH,8BAA8B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAOhG;CAcF"}
|
|
@@ -6,23 +6,29 @@ export class ActivationNeedCache {
|
|
|
6
6
|
#version = -1;
|
|
7
7
|
#lifecycle;
|
|
8
8
|
#classes;
|
|
9
|
-
|
|
9
|
+
#registry;
|
|
10
|
+
constructor(lifecycle, classes, registry) {
|
|
10
11
|
this.#lifecycle = lifecycle;
|
|
11
12
|
this.#classes = classes;
|
|
13
|
+
this.#registry = registry;
|
|
12
14
|
}
|
|
13
15
|
needsActivation(binding) {
|
|
16
|
+
// The chain writes a binding's own hook in place with no version anything here can see, so it
|
|
17
|
+
// is read fresh on every call; the memo covers only container hooks and lifecycle metadata.
|
|
18
|
+
if (binding.kind !== "alias" && binding.onActivation !== undefined) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
14
21
|
const lifecycleVersion = this.#lifecycle.activationVersion;
|
|
15
22
|
// No hooks registered anywhere and none on the binding: only classes can still surprise us,
|
|
16
23
|
// 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) {
|
|
24
|
+
if (lifecycleVersion === 0 && binding.kind !== "class" && binding.kind !== "alias") {
|
|
21
25
|
return false;
|
|
22
26
|
}
|
|
23
|
-
|
|
27
|
+
// The registry version evicts entries for binding ids a rebind has retired.
|
|
28
|
+
const version = lifecycleVersion + this.#registry.version;
|
|
29
|
+
if (this.#version !== version) {
|
|
24
30
|
this.#needByBindingId.clear();
|
|
25
|
-
this.#version =
|
|
31
|
+
this.#version = version;
|
|
26
32
|
}
|
|
27
33
|
const cached = this.#needByBindingId.get(binding.id);
|
|
28
34
|
if (cached !== undefined) {
|
|
@@ -47,17 +53,15 @@ export class ActivationNeedCache {
|
|
|
47
53
|
this.#needByBindingId.delete(binding.id);
|
|
48
54
|
return this.needsActivation(binding);
|
|
49
55
|
}
|
|
56
|
+
// Own hooks are answered before the memo, so both computations cover the memoizable rest only.
|
|
50
57
|
#classNeedsActivation(binding) {
|
|
51
|
-
if (this.#lifecycle.hasActivationHandlers(binding.token)
|
|
58
|
+
if (this.#lifecycle.hasActivationHandlers(binding.token)) {
|
|
52
59
|
return true;
|
|
53
60
|
}
|
|
54
61
|
// Unknown lifecycle metadata: activate once so the first instantiation can settle it.
|
|
55
62
|
return this.#classes.knownPostConstruct(binding.target) !== false;
|
|
56
63
|
}
|
|
57
64
|
#nonClassNeedsActivation(binding) {
|
|
58
|
-
if (binding.kind !== "alias" && binding.onActivation !== undefined) {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
65
|
return this.#lifecycle.hasActivationHandlers(binding.token);
|
|
62
66
|
}
|
|
63
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activation-need.js","sourceRoot":"","sources":["../../src/resolution/activation-need.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"activation-need.js","sourceRoot":"","sources":["../../src/resolution/activation-need.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-lookup-cache.d.ts","sourceRoot":"","sources":["../../src/resolution/binding-lookup-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB,CAAC,KAAK;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"binding-lookup-cache.d.ts","sourceRoot":"","sources":["../../src/resolution/binding-lookup-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB,CAAC,KAAK;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAOlC;;GAEG;AACH,qBAAa,kBAAkB,CAAC,KAAK;;IAenC,YAAY,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,SAAS,EAIjG;IAED,6EAA6E;IAC7E,YAAY,IAAI,MAAM,CAMrB;IAED,mEAAmE;IACnE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAiBlF;IAED,kEAAkE;IAClE,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAe9F;CA2CF"}
|
|
@@ -8,9 +8,18 @@ export const ALIAS_HOP_LIMIT = 32;
|
|
|
8
8
|
/**
|
|
9
9
|
* @since 0.5.0-canary.8
|
|
10
10
|
*/
|
|
11
|
+
const newNameToEntryMap = () => new Map();
|
|
12
|
+
/**
|
|
13
|
+
* @since 0.5.0-canary.9
|
|
14
|
+
*/
|
|
11
15
|
export class BindingLookupCache {
|
|
12
16
|
#byToken = new Map();
|
|
13
17
|
#version = -1;
|
|
18
|
+
// One entry in front of the map: the two shapes that reach here — an alias, and a token owned by
|
|
19
|
+
// a parent — are both resolved in a loop over the same token. `null` is a real answer, so absence
|
|
20
|
+
// is tracked by the token slot rather than by the entry.
|
|
21
|
+
#lastToken;
|
|
22
|
+
#lastEntry = null;
|
|
14
23
|
#byTokenAndName = new Map();
|
|
15
24
|
#namedVersion = -1;
|
|
16
25
|
#registry;
|
|
@@ -35,12 +44,18 @@ export class BindingLookupCache {
|
|
|
35
44
|
if (version !== this.#version) {
|
|
36
45
|
this.#byToken.clear();
|
|
37
46
|
this.#version = version;
|
|
47
|
+
this.#lastToken = undefined;
|
|
48
|
+
}
|
|
49
|
+
else if (token === this.#lastToken) {
|
|
50
|
+
return this.#lastEntry;
|
|
38
51
|
}
|
|
39
52
|
let entry = this.#byToken.get(token);
|
|
40
53
|
if (entry === undefined) {
|
|
41
54
|
entry = this.#foldAliases(token);
|
|
42
55
|
this.#byToken.set(token, entry);
|
|
43
56
|
}
|
|
57
|
+
this.#lastToken = token;
|
|
58
|
+
this.#lastEntry = entry;
|
|
44
59
|
return entry;
|
|
45
60
|
}
|
|
46
61
|
/** `null` when the name's shape needs the full selection path. */
|
|
@@ -50,8 +65,9 @@ export class BindingLookupCache {
|
|
|
50
65
|
this.#byTokenAndName.clear();
|
|
51
66
|
this.#namedVersion = version;
|
|
52
67
|
}
|
|
53
|
-
//
|
|
54
|
-
|
|
68
|
+
// Computed, not eager: this runs on every named resolve, and `getOrInsert(token, new Map())`
|
|
69
|
+
// would allocate a Map per call only to discard it on the hit that follows.
|
|
70
|
+
const byName = this.#byTokenAndName.getOrInsertComputed(token, newNameToEntryMap);
|
|
55
71
|
let entry = byName.get(name);
|
|
56
72
|
if (entry === undefined) {
|
|
57
73
|
entry = this.#findNamedInChain(token, name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-lookup-cache.js","sourceRoot":"","sources":["../../src/resolution/binding-lookup-cache.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACpB,QAAQ,GAAG,IAAI,GAAG,EAAkE,CAAC;IAC9F,QAAQ,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"binding-lookup-cache.js","sourceRoot":"","sources":["../../src/resolution/binding-lookup-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { Binding } from "#/binding";
|
|
2
2
|
import type { BindingScope } from "#/types";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The scope a binding resolves under.
|
|
5
|
+
*
|
|
6
|
+
* @remarks Every kind declares one — an alias declares `transient`, since it defers scoping to the
|
|
7
|
+
* binding it points at — so this is a field read, kept as a named function because it is the
|
|
8
|
+
* vocabulary validation and introspection speak.
|
|
6
9
|
*
|
|
7
10
|
* @since 0.3.16-canary.0
|
|
8
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-scope.d.ts","sourceRoot":"","sources":["../../src/resolution/binding-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"binding-scope.d.ts","sourceRoot":"","sources":["../../src/resolution/binding-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAEpE"}
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* The scope a binding resolves under.
|
|
3
|
+
*
|
|
4
|
+
* @remarks Every kind declares one — an alias declares `transient`, since it defers scoping to the
|
|
5
|
+
* binding it points at — so this is a field read, kept as a named function because it is the
|
|
6
|
+
* vocabulary validation and introspection speak.
|
|
4
7
|
*
|
|
5
8
|
* @since 0.3.16-canary.0
|
|
6
9
|
*/
|
|
7
10
|
export function effectiveBindingScope(binding) {
|
|
8
|
-
|
|
9
|
-
case "alias":
|
|
10
|
-
return "transient";
|
|
11
|
-
case "class":
|
|
12
|
-
case "constant":
|
|
13
|
-
case "dynamic":
|
|
14
|
-
case "dynamic-async":
|
|
15
|
-
case "resolved":
|
|
16
|
-
case "resolved-async":
|
|
17
|
-
return binding.scope;
|
|
18
|
-
default: {
|
|
19
|
-
const exhaustive = binding;
|
|
20
|
-
return exhaustive;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
11
|
+
return binding.scope;
|
|
23
12
|
}
|
|
24
13
|
//# sourceMappingURL=binding-scope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-scope.js","sourceRoot":"","sources":["../../src/resolution/binding-scope.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"binding-scope.js","sourceRoot":"","sources":["../../src/resolution/binding-scope.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Binding } from "#/binding";
|
|
1
|
+
import type { Binding, BindingSlot } from "#/binding";
|
|
2
2
|
import type { ConstraintContext, ResolveOptions } from "#/types";
|
|
3
3
|
/**
|
|
4
4
|
* Select a single candidate from a list of bindings using slot matching + predicates.
|
|
@@ -13,4 +13,11 @@ export declare function selectBinding(bindings: ReadonlyArray<Binding>, options:
|
|
|
13
13
|
* @since 0.3.16-canary.0
|
|
14
14
|
*/
|
|
15
15
|
export declare function selectAllBindings(bindings: ReadonlyArray<Binding>, options: ResolveOptions | undefined, ctx: ConstraintContext): Array<Binding>;
|
|
16
|
+
/**
|
|
17
|
+
* Whether a binding's slot satisfies a request: names must be equal, and every tag the slot
|
|
18
|
+
* declares must be among the tags requested (SPEC §6.9).
|
|
19
|
+
*
|
|
20
|
+
* @since 0.5.0-canary.9
|
|
21
|
+
*/
|
|
22
|
+
export declare function matchesSlot(slot: BindingSlot, options: ResolveOptions | undefined): boolean;
|
|
16
23
|
//# sourceMappingURL=binding-select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-select.d.ts","sourceRoot":"","sources":["../../src/resolution/binding-select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"binding-select.d.ts","sourceRoot":"","sources":["../../src/resolution/binding-select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,KAAK,EAAc,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,GAAG,EAAE,iBAAiB,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,GAAG,SAAS,CA4BrB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,GAAG,EAAE,iBAAiB,GACrB,KAAK,CAAC,OAAO,CAAC,CAEhB;AAwBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAmC3F"}
|
|
@@ -40,46 +40,27 @@ export function selectAllBindings(bindings, options, ctx) {
|
|
|
40
40
|
return filterBindings(bindings, options, ctx, "all");
|
|
41
41
|
}
|
|
42
42
|
function filterBindings(bindings, options, ctx, selectionMode = "single") {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
for (const binding of bindings) {
|
|
47
|
-
if (matchesPredicate(binding, ctx)) {
|
|
48
|
-
resultWithoutOptions.push(binding);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
for (const binding of bindings) {
|
|
54
|
-
const slot = binding.slot;
|
|
55
|
-
if (slot.name === undefined && slot.tags.length === 0 && matchesPredicate(binding, ctx)) {
|
|
56
|
-
resultWithoutOptions.push(binding);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return resultWithoutOptions;
|
|
61
|
-
}
|
|
43
|
+
// `resolveAll` with no slot criterion takes every binding; `resolve` always matches the slot,
|
|
44
|
+
// where an absent criterion means "the default slot".
|
|
45
|
+
const requiresSlotMatch = selectionMode === "single" || (options !== undefined && hasSlotCriterion(options));
|
|
62
46
|
const result = [];
|
|
63
47
|
for (const binding of bindings) {
|
|
64
|
-
|
|
65
|
-
if (slotMatched && matchesPredicate(binding, ctx)) {
|
|
48
|
+
if ((!requiresSlotMatch || matchesSlot(binding.slot, options)) && matchesPredicate(binding, ctx)) {
|
|
66
49
|
result.push(binding);
|
|
67
50
|
}
|
|
68
51
|
}
|
|
69
52
|
return result;
|
|
70
53
|
}
|
|
71
|
-
function
|
|
72
|
-
|
|
73
|
-
(options.name !== undefined ||
|
|
74
|
-
(options.tags !== undefined && options.tags.length > 0) ||
|
|
75
|
-
options.tag !== undefined);
|
|
76
|
-
if (!hasExplicitSlotFilter) {
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
return matchesSlot(binding, options);
|
|
54
|
+
function hasSlotCriterion(options) {
|
|
55
|
+
return options.name !== undefined || options.tag !== undefined || (options.tags?.length ?? 0) > 0;
|
|
80
56
|
}
|
|
81
|
-
|
|
82
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Whether a binding's slot satisfies a request: names must be equal, and every tag the slot
|
|
59
|
+
* declares must be among the tags requested (SPEC §6.9).
|
|
60
|
+
*
|
|
61
|
+
* @since 0.5.0-canary.9
|
|
62
|
+
*/
|
|
63
|
+
export function matchesSlot(slot, options) {
|
|
83
64
|
const requestedName = options?.name;
|
|
84
65
|
const requestedTags = options?.tags;
|
|
85
66
|
const singleRequestedTag = options?.tag;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-select.js","sourceRoot":"","sources":["../../src/resolution/binding-select.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAgC,EAChC,OAAmC,EACnC,GAAsB,EACtB,gBAAwB;IAExB,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,2EAA2E;IAC3E,yEAAyE;IACzE,6DAA6D;IAC7D,IAAI,mBAAwC,CAAC;IAC7C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBACtC,mBAAmB,GAAG,SAAS,CAAC;gBAChC,MAAM;YACR,CAAC;YACD,mBAAmB,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC;IACD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAChC,OAAmC,EACnC,GAAsB;IAEtB,OAAO,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CACrB,QAAgC,EAChC,OAAmC,EACnC,GAAsB,EACtB,aAAa,GAAqB,QAAQ;IAE1C,
|
|
1
|
+
{"version":3,"file":"binding-select.js","sourceRoot":"","sources":["../../src/resolution/binding-select.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,8 +25,8 @@ export interface ResolutionDiagnostics {
|
|
|
25
25
|
readonly compiledPlanCount: number;
|
|
26
26
|
/** Contexts held by the depth-indexed sync pool. */
|
|
27
27
|
readonly syncContextPoolSize: number;
|
|
28
|
-
/**
|
|
29
|
-
readonly
|
|
28
|
+
/** Scoped instances currently cached by this container's scope manager. */
|
|
29
|
+
readonly scopedInstanceCount: number;
|
|
30
30
|
/** Deferred collaborators this container has had to build. */
|
|
31
31
|
readonly builtSubsystems: ReadonlyArray<string>;
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/resolution/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,OAAO,MAA4C,CAAC;AAEzF;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/resolution/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,OAAO,MAA4C,CAAC;AAEzF;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,sBAAsB,CAAC,IAAI,qBAAqB,CAAC;CACnD"}
|