@codefast/di 0.5.0-canary.7 → 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 +205 -0
- package/README.md +6 -2
- package/dist/binding.d.ts +85 -24
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +55 -0
- 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 +32 -11
- package/dist/container/binding-builders.d.ts.map +1 -1
- package/dist/container/binding-builders.js +144 -192
- package/dist/container/binding-builders.js.map +1 -1
- package/dist/container/container.d.ts.map +1 -1
- package/dist/container/container.js +141 -201
- package/dist/container/container.js.map +1 -1
- package/dist/decorators/inject.d.ts +2 -4
- package/dist/decorators/inject.d.ts.map +1 -1
- package/dist/decorators/inject.js.map +1 -1
- package/dist/errors.d.ts +24 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +30 -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 +3 -8
- package/dist/introspection/inspector.js.map +1 -1
- 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/registry.d.ts +14 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +81 -78
- package/dist/registry.js.map +1 -1
- package/dist/resolution/activation-need.d.ts +27 -0
- package/dist/resolution/activation-need.d.ts.map +1 -0
- package/dist/resolution/activation-need.js +68 -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 +118 -0
- package/dist/resolution/binding-lookup-cache.js.map +1 -0
- 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 +14 -36
- package/dist/resolution/binding-select.js.map +1 -1
- 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/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/resolution/environment.d.ts +48 -1
- package/dist/resolution/environment.d.ts.map +1 -1
- package/dist/resolution/environment.js +134 -5
- package/dist/resolution/environment.js.map +1 -1
- package/dist/resolution/instantiation-plan.d.ts +15 -15
- package/dist/resolution/instantiation-plan.d.ts.map +1 -1
- package/dist/resolution/instantiation-plan.js +69 -49
- package/dist/resolution/instantiation-plan.js.map +1 -1
- package/dist/resolution/lifecycle.d.ts +2 -0
- package/dist/resolution/lifecycle.d.ts.map +1 -1
- package/dist/resolution/lifecycle.js +60 -62
- package/dist/resolution/lifecycle.js.map +1 -1
- package/dist/resolution/resolution-path.d.ts +84 -17
- package/dist/resolution/resolution-path.d.ts.map +1 -1
- package/dist/resolution/resolution-path.js +68 -23
- 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 +33 -10
- package/dist/resolution/resolver.d.ts.map +1 -1
- package/dist/resolution/resolver.js +471 -830
- package/dist/resolution/resolver.js.map +1 -1
- package/dist/resolution/scope.d.ts +11 -15
- package/dist/resolution/scope.d.ts.map +1 -1
- package/dist/resolution/scope.js +55 -43
- package/dist/resolution/scope.js.map +1 -1
- package/package.json +10 -106
- package/src/binding.ts +146 -24
- package/src/constructor-type.ts +4 -5
- package/src/container/binding-builders.ts +184 -284
- package/src/container/container.ts +161 -221
- package/src/decorators/inject.ts +3 -5
- package/src/errors.ts +38 -0
- package/src/index.ts +4 -1
- package/src/introspection/inspector.ts +3 -9
- package/src/metadata/metadata-keys.ts +3 -6
- package/src/registry.ts +90 -94
- package/src/resolution/activation-need.ts +85 -0
- package/src/resolution/binding-lookup-cache.ts +148 -0
- package/src/resolution/binding-scope.ts +6 -17
- package/src/resolution/binding-select.ts +15 -39
- package/src/resolution/class-introspector.ts +74 -0
- package/src/resolution/diagnostics.ts +43 -0
- package/src/resolution/environment.ts +181 -5
- package/src/resolution/instantiation-plan.ts +116 -64
- package/src/resolution/lifecycle.ts +69 -62
- package/src/resolution/resolution-path.ts +122 -43
- package/src/resolution/resolve-options.ts +51 -4
- package/src/resolution/resolver.ts +649 -1081
- package/src/resolution/scope.ts +58 -47
|
@@ -1,24 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The fluent chain `bind()` returns: it registers the binding and refines it in place.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* previous binding by id) whenever a later fluent call refines the binding —
|
|
6
|
-
* so a chain left half-finished is still a valid registration.
|
|
4
|
+
* @see `ARCHITECTURE.md` — why one object plays every role, and what pins the ordering.
|
|
7
5
|
*/
|
|
8
|
-
import type { AliasBindingBuilder,
|
|
6
|
+
import type { AliasBindingBuilder, BindingBuilder, BindToBuilder, ConstantBindingBuilder, ScopedBindingBuilder, SingletonBindingBuilder, SingletonLifecycleBuilder, TransientBindingBuilder } from "#/binding";
|
|
9
7
|
import type { InjectableDependency, ResolvedDependencyValue } from "#/decorators/inject";
|
|
8
|
+
import type { BindingRegistry } from "#/registry";
|
|
10
9
|
import type { Token } from "#/token";
|
|
11
|
-
import type { BindingIdentifier, Constructor, ResolutionContext } from "#/types";
|
|
10
|
+
import type { ActivationHandler, BindingIdentifier, ConstraintContext, Constructor, DeactivationHandler, ResolutionContext } from "#/types";
|
|
12
11
|
/**
|
|
13
|
-
*
|
|
12
|
+
* Where a chain registers, and on whose behalf.
|
|
13
|
+
*
|
|
14
|
+
* @remarks Built once per container and shared by every chain it creates. `moduleBindingIds` is
|
|
15
|
+
* present exactly when the chain belongs to a module load.
|
|
16
|
+
*
|
|
17
|
+
* @since 0.5.0-canary.8
|
|
14
18
|
*/
|
|
15
|
-
export
|
|
19
|
+
export interface BindingRegistration {
|
|
20
|
+
readonly registry: BindingRegistry;
|
|
21
|
+
readonly moduleBindingIds: Array<BindingIdentifier> | undefined;
|
|
22
|
+
}
|
|
16
23
|
/**
|
|
17
|
-
*
|
|
24
|
+
* The one builder behind `bind()` and every `to*()` return type. Each interface exposes only the
|
|
25
|
+
* calls that are legal at that point in the chain; the runtime object is shared because every
|
|
26
|
+
* refinement is the same operation — narrow the registered binding, keep its id.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.5.0-canary.8
|
|
18
29
|
*/
|
|
19
|
-
export declare class
|
|
30
|
+
export declare class BindingChain<Value> implements AliasBindingBuilder, BindingBuilder<Value>, BindToBuilder<Value>, ConstantBindingBuilder<Value>, ScopedBindingBuilder<Value>, SingletonBindingBuilder<Value>, SingletonLifecycleBuilder<Value>, TransientBindingBuilder<Value> {
|
|
20
31
|
#private;
|
|
21
|
-
constructor(token: Token<Value> | Constructor<Value>,
|
|
32
|
+
constructor(token: Token<Value> | Constructor<Value>, registration: BindingRegistration);
|
|
22
33
|
to(type: Constructor<Value>): BindingBuilder<Value>;
|
|
23
34
|
toSelf(): BindingBuilder<Value>;
|
|
24
35
|
toConstantValue(value: Value): ConstantBindingBuilder<Value>;
|
|
@@ -31,5 +42,15 @@ export declare class BindingEntry<Value> implements BindToBuilder<Value> {
|
|
|
31
42
|
[K in keyof Deps]: ResolvedDependencyValue<NoInfer<Deps>[K]>;
|
|
32
43
|
}) => Promise<Value>, deps: Deps): BindingBuilder<Value>;
|
|
33
44
|
toAlias(target: Token<Value> | Constructor<Value>): AliasBindingBuilder;
|
|
45
|
+
when(predicate: (ctx: ConstraintContext) => boolean): this;
|
|
46
|
+
whenNamed(name: string): this;
|
|
47
|
+
whenTagged(tag: string, value: unknown): this;
|
|
48
|
+
whenDefault(): this;
|
|
49
|
+
singleton(): SingletonBindingBuilder<Value>;
|
|
50
|
+
transient(): TransientBindingBuilder<Value>;
|
|
51
|
+
scoped(): ScopedBindingBuilder<Value>;
|
|
52
|
+
onActivation(fn: ActivationHandler<Value>): this;
|
|
53
|
+
onDeactivation(fn: DeactivationHandler<Value>): this;
|
|
54
|
+
id(): BindingIdentifier;
|
|
34
55
|
}
|
|
35
56
|
//# sourceMappingURL=binding-builders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-builders.d.ts","sourceRoot":"","sources":["../../src/container/binding-builders.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"binding-builders.d.ts","sourceRoot":"","sources":["../../src/container/binding-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,247 +1,199 @@
|
|
|
1
|
-
import { DEFAULT_BINDING_SLOT,
|
|
1
|
+
import { bindingSlotEquals, clearBindingFrame, createBinding, DEFAULT_BINDING_SLOT, refinableFields } from "#/binding";
|
|
2
2
|
import { normalizeToDescriptor } from "#/decorators/inject";
|
|
3
|
+
import { ChainNotRegisteredError, SelfBindingRequiresClassError } from "#/errors";
|
|
4
|
+
import { tokenName } from "#/token";
|
|
3
5
|
function updateSlotTag(slot, tag, value) {
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
if (
|
|
7
|
-
|
|
6
|
+
const tags = [...slot.tags];
|
|
7
|
+
const existingIndex = tags.findIndex(([key]) => key === tag);
|
|
8
|
+
if (existingIndex === -1) {
|
|
9
|
+
tags.push([tag, value]);
|
|
8
10
|
}
|
|
9
11
|
else {
|
|
10
|
-
|
|
12
|
+
tags[existingIndex] = [tag, value];
|
|
11
13
|
}
|
|
12
|
-
return { ...slot, tags
|
|
14
|
+
return { ...slot, tags };
|
|
13
15
|
}
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
predicate;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.slot = updateSlotTag(this.slot, tag, value);
|
|
31
|
-
this.commit();
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
whenDefault() {
|
|
35
|
-
return this;
|
|
36
|
-
}
|
|
37
|
-
id() {
|
|
38
|
-
return this.committedId;
|
|
16
|
+
// True when re-adding `restored` would immediately be displaced again by `current`
|
|
17
|
+
// (both slot-based with equal slots) — in that case the replacement was legitimate.
|
|
18
|
+
function displacesRestoredBinding(current, restored) {
|
|
19
|
+
const currentIsPurePredicate = current.predicate !== undefined && current.slot.name === undefined && current.slot.tags.length === 0;
|
|
20
|
+
if (currentIsPurePredicate) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return bindingSlotEquals(current.slot, restored.slot);
|
|
24
|
+
}
|
|
25
|
+
/** Record a module's binding id, dropping the id the chain re-slotted away from. */
|
|
26
|
+
function trackBindingForModule(ids, id, previousId) {
|
|
27
|
+
if (previousId !== undefined) {
|
|
28
|
+
const previousIndex = ids.indexOf(previousId);
|
|
29
|
+
if (previousIndex !== -1) {
|
|
30
|
+
ids.splice(previousIndex, 1);
|
|
31
|
+
}
|
|
39
32
|
}
|
|
33
|
+
ids.push(id);
|
|
40
34
|
}
|
|
41
|
-
// ──
|
|
35
|
+
// ── BindingChain ──────────────────────────────────────────────────────────────
|
|
42
36
|
/**
|
|
43
|
-
*
|
|
37
|
+
* The one builder behind `bind()` and every `to*()` return type. Each interface exposes only the
|
|
38
|
+
* calls that are legal at that point in the chain; the runtime object is shared because every
|
|
39
|
+
* refinement is the same operation — narrow the registered binding, keep its id.
|
|
40
|
+
*
|
|
41
|
+
* @since 0.5.0-canary.8
|
|
44
42
|
*/
|
|
45
|
-
export class
|
|
43
|
+
export class BindingChain {
|
|
44
|
+
// Undefined until a `to*()` call registers the binding.
|
|
45
|
+
#binding;
|
|
46
|
+
// Allocated only by a chain that actually displaces something — most never do.
|
|
47
|
+
#displacedByChain;
|
|
46
48
|
#token;
|
|
47
|
-
#
|
|
48
|
-
constructor(token,
|
|
49
|
+
#registration;
|
|
50
|
+
constructor(token, registration) {
|
|
49
51
|
this.#token = token;
|
|
50
|
-
this.#
|
|
52
|
+
this.#registration = registration;
|
|
53
|
+
}
|
|
54
|
+
/** The registered binding, or a loud failure if no `to*()` has run yet. */
|
|
55
|
+
#registered() {
|
|
56
|
+
if (this.#binding === undefined) {
|
|
57
|
+
throw new ChainNotRegisteredError(tokenName(this.#token));
|
|
58
|
+
}
|
|
59
|
+
return this.#binding;
|
|
60
|
+
}
|
|
61
|
+
#register(partial) {
|
|
62
|
+
// Each `to*()` starts its own registration, so anything a previous one displaced is not this
|
|
63
|
+
// registration's to restore.
|
|
64
|
+
this.#displacedByChain = undefined;
|
|
65
|
+
this.#binding = createBinding(partial, this.#token, DEFAULT_BINDING_SLOT, undefined);
|
|
66
|
+
this.#commit(this.#binding, undefined);
|
|
67
|
+
return this;
|
|
51
68
|
}
|
|
69
|
+
// ── Registration ───────────────────────────────────────────────────────────
|
|
52
70
|
to(type) {
|
|
53
|
-
return
|
|
71
|
+
return this.#register({ kind: "class", target: type, scope: "transient" });
|
|
54
72
|
}
|
|
55
73
|
toSelf() {
|
|
56
74
|
if (typeof this.#token !== "function") {
|
|
57
|
-
throw new
|
|
75
|
+
throw new SelfBindingRequiresClassError(tokenName(this.#token));
|
|
58
76
|
}
|
|
59
|
-
return
|
|
77
|
+
return this.#register({ kind: "class", target: this.#token, scope: "transient" });
|
|
60
78
|
}
|
|
61
79
|
toConstantValue(value) {
|
|
62
|
-
return
|
|
80
|
+
return this.#register({ kind: "constant", scope: "singleton", value });
|
|
63
81
|
}
|
|
64
82
|
toDynamic(factory) {
|
|
65
|
-
return
|
|
83
|
+
return this.#register({ kind: "dynamic", factory, scope: "transient" });
|
|
66
84
|
}
|
|
67
85
|
toDynamicAsync(factory) {
|
|
68
|
-
return
|
|
86
|
+
return this.#register({ kind: "dynamic-async", factory, scope: "transient" });
|
|
69
87
|
}
|
|
70
88
|
toResolved(factory, deps) {
|
|
71
|
-
|
|
72
|
-
return new ConstraintBuilder(this.#token, {
|
|
89
|
+
return this.#register({
|
|
73
90
|
kind: "resolved",
|
|
91
|
+
deps: deps.map((dependency) => normalizeToDescriptor(dependency)),
|
|
74
92
|
factory: factory,
|
|
75
|
-
deps: normalizedDeps,
|
|
76
93
|
scope: "transient",
|
|
77
|
-
}
|
|
94
|
+
});
|
|
78
95
|
}
|
|
79
96
|
toResolvedAsync(factory, deps) {
|
|
80
|
-
|
|
81
|
-
return new ConstraintBuilder(this.#token, {
|
|
97
|
+
return this.#register({
|
|
82
98
|
kind: "resolved-async",
|
|
99
|
+
deps: deps.map((dependency) => normalizeToDescriptor(dependency)),
|
|
83
100
|
factory: factory,
|
|
84
|
-
deps: normalizedDeps,
|
|
85
101
|
scope: "transient",
|
|
86
|
-
}
|
|
102
|
+
});
|
|
87
103
|
}
|
|
88
104
|
toAlias(target) {
|
|
89
|
-
return
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
#
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.#token = token;
|
|
100
|
-
this.#partial = partial;
|
|
101
|
-
this.#commitBinding = commitBinding;
|
|
102
|
-
this.commit();
|
|
103
|
-
}
|
|
104
|
-
commit() {
|
|
105
|
-
const previousId = this.committedId;
|
|
106
|
-
const binding = {
|
|
107
|
-
...this.#partial,
|
|
108
|
-
id: generateBindingId(),
|
|
109
|
-
inFlight: false,
|
|
110
|
-
token: this.#token,
|
|
111
|
-
slot: this.slot,
|
|
112
|
-
predicate: this.predicate,
|
|
113
|
-
};
|
|
114
|
-
this.committedId = this.#commitBinding(binding, previousId);
|
|
105
|
+
return this.#register({ kind: "alias", scope: "transient", target });
|
|
106
|
+
}
|
|
107
|
+
// ── Refinement ─────────────────────────────────────────────────────────────
|
|
108
|
+
// Slot and predicate are what the registry indexes on, so a re-slot rebuilds the binding and
|
|
109
|
+
// re-registers it — under the original id, keeping `id()` stable for the whole chain.
|
|
110
|
+
#reslot(slot, predicate) {
|
|
111
|
+
const previous = this.#registered();
|
|
112
|
+
this.#binding = createBinding(previous, previous.token, slot, predicate, previous.id);
|
|
113
|
+
this.#commit(this.#binding, previous.id);
|
|
114
|
+
return this;
|
|
115
115
|
}
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
#withScope(scope) {
|
|
117
|
+
const binding = this.#registered();
|
|
118
|
+
refinableFields(binding).scope = scope;
|
|
119
|
+
// The frame reports the scope, so a resolve before this call memoized the previous one.
|
|
120
|
+
clearBindingFrame(binding);
|
|
121
|
+
this.#registration.registry.touch();
|
|
122
|
+
return this;
|
|
120
123
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
this.committedId = undefined;
|
|
124
|
-
return new ScopeBuilder(this.#token, { ...this.#partial, scope: "transient" }, this.slot, this.predicate, this.#commitBinding, previousId);
|
|
124
|
+
when(predicate) {
|
|
125
|
+
return this.#reslot(this.#registered().slot, predicate);
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
this.committedId = undefined;
|
|
129
|
-
return new ScopeBuilder(this.#token, { ...this.#partial, scope: "scoped" }, this.slot, this.predicate, this.#commitBinding, previousId);
|
|
127
|
+
whenNamed(name) {
|
|
128
|
+
return this.#reslot({ ...this.#registered().slot, name }, this.#registered().predicate);
|
|
130
129
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
#onActivation;
|
|
135
|
-
#onDeactivation;
|
|
136
|
-
#committedId;
|
|
137
|
-
#token;
|
|
138
|
-
#partial;
|
|
139
|
-
#slot;
|
|
140
|
-
#predicate;
|
|
141
|
-
#commitBinding;
|
|
142
|
-
#initialPreviousId;
|
|
143
|
-
constructor(token, partial, slot, predicate, commitBinding, initialPreviousId) {
|
|
144
|
-
this.#token = token;
|
|
145
|
-
this.#partial = partial;
|
|
146
|
-
this.#slot = slot;
|
|
147
|
-
this.#predicate = predicate;
|
|
148
|
-
this.#commitBinding = commitBinding;
|
|
149
|
-
this.#initialPreviousId = initialPreviousId;
|
|
150
|
-
this.#commit();
|
|
151
|
-
}
|
|
152
|
-
#commit() {
|
|
153
|
-
const previousId = this.#committedId ?? this.#initialPreviousId;
|
|
154
|
-
const binding = {
|
|
155
|
-
...this.#partial,
|
|
156
|
-
id: generateBindingId(),
|
|
157
|
-
inFlight: false,
|
|
158
|
-
token: this.#token,
|
|
159
|
-
slot: this.#slot,
|
|
160
|
-
predicate: this.#predicate,
|
|
161
|
-
onActivation: this.#onActivation,
|
|
162
|
-
onDeactivation: this.#onDeactivation,
|
|
163
|
-
};
|
|
164
|
-
this.#committedId = this.#commitBinding(binding, previousId);
|
|
130
|
+
whenTagged(tag, value) {
|
|
131
|
+
const binding = this.#registered();
|
|
132
|
+
return this.#reslot(updateSlotTag(binding.slot, tag, value), binding.predicate);
|
|
165
133
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
134
|
+
whenDefault() {
|
|
135
|
+
// The default slot is what a fresh registration already has, so there is nothing to re-slot —
|
|
136
|
+
// but an unregistered chain must fail here exactly as it does in every other refinement.
|
|
137
|
+
this.#registered();
|
|
169
138
|
return this;
|
|
170
139
|
}
|
|
171
|
-
|
|
172
|
-
this.#
|
|
173
|
-
this.#commit();
|
|
174
|
-
return this;
|
|
140
|
+
singleton() {
|
|
141
|
+
return this.#withScope("singleton");
|
|
175
142
|
}
|
|
176
|
-
|
|
177
|
-
return this.#
|
|
143
|
+
transient() {
|
|
144
|
+
return this.#withScope("transient");
|
|
178
145
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
class ConstantBuilder extends SlotBuilder {
|
|
182
|
-
#onActivation;
|
|
183
|
-
#onDeactivation;
|
|
184
|
-
#token;
|
|
185
|
-
#value;
|
|
186
|
-
#commitBinding;
|
|
187
|
-
constructor(token, value, commitBinding) {
|
|
188
|
-
super();
|
|
189
|
-
this.#token = token;
|
|
190
|
-
this.#value = value;
|
|
191
|
-
this.#commitBinding = commitBinding;
|
|
192
|
-
this.commit();
|
|
193
|
-
}
|
|
194
|
-
commit() {
|
|
195
|
-
const previousId = this.committedId;
|
|
196
|
-
const binding = {
|
|
197
|
-
kind: "constant",
|
|
198
|
-
id: generateBindingId(),
|
|
199
|
-
inFlight: false,
|
|
200
|
-
token: this.#token,
|
|
201
|
-
slot: this.slot,
|
|
202
|
-
predicate: this.predicate,
|
|
203
|
-
value: this.#value,
|
|
204
|
-
scope: "singleton",
|
|
205
|
-
onActivation: this.#onActivation,
|
|
206
|
-
onDeactivation: this.#onDeactivation,
|
|
207
|
-
};
|
|
208
|
-
this.committedId = this.#commitBinding(binding, previousId);
|
|
146
|
+
scoped() {
|
|
147
|
+
return this.#withScope("scoped");
|
|
209
148
|
}
|
|
210
149
|
onActivation(fn) {
|
|
211
|
-
this.#onActivation = fn;
|
|
212
|
-
this.
|
|
150
|
+
refinableFields(this.#registered()).onActivation = fn;
|
|
151
|
+
this.#registration.registry.touch();
|
|
213
152
|
return this;
|
|
214
153
|
}
|
|
215
154
|
onDeactivation(fn) {
|
|
216
|
-
this.#onDeactivation = fn;
|
|
217
|
-
this.
|
|
155
|
+
refinableFields(this.#registered()).onDeactivation = fn;
|
|
156
|
+
this.#registration.registry.touch();
|
|
218
157
|
return this;
|
|
219
158
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
159
|
+
id() {
|
|
160
|
+
return this.#registered().id;
|
|
161
|
+
}
|
|
162
|
+
// ── Registry ───────────────────────────────────────────────────────────────
|
|
163
|
+
/**
|
|
164
|
+
* Register `binding`, first removing `previousId` when the chain is re-slotting.
|
|
165
|
+
*
|
|
166
|
+
* @remarks A `when*()` that follows `to*()` re-slots an already-live binding and can displace one
|
|
167
|
+
* the final shape would never conflict with. Those stay parked in `#displacedByChain` until the
|
|
168
|
+
* chain settles, then get restored.
|
|
169
|
+
*/
|
|
170
|
+
#commit(binding, previousId) {
|
|
171
|
+
const { registry, moduleBindingIds } = this.#registration;
|
|
172
|
+
// The registry is heterogeneous by design — one instance holds every value type — so the
|
|
173
|
+
// chain's `Binding<Value>` is erased once, here, rather than at each call site.
|
|
174
|
+
const registered = binding;
|
|
175
|
+
if (previousId !== undefined) {
|
|
176
|
+
registry.removeById(previousId);
|
|
177
|
+
}
|
|
178
|
+
const displaced = registry.add(registered);
|
|
179
|
+
if (displaced !== undefined) {
|
|
180
|
+
(this.#displacedByChain ??= []).push(displaced);
|
|
181
|
+
}
|
|
182
|
+
if (previousId !== undefined && this.#displacedByChain !== undefined) {
|
|
183
|
+
this.#restoreNonConflicting(registered, this.#displacedByChain);
|
|
184
|
+
}
|
|
185
|
+
if (moduleBindingIds !== undefined) {
|
|
186
|
+
trackBindingForModule(moduleBindingIds, registered.id, previousId);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
#restoreNonConflicting(binding, displaced) {
|
|
190
|
+
for (let index = displaced.length - 1; index >= 0; index -= 1) {
|
|
191
|
+
const candidate = displaced[index];
|
|
192
|
+
if (!displacesRestoredBinding(binding, candidate)) {
|
|
193
|
+
this.#registration.registry.add(candidate);
|
|
194
|
+
displaced.splice(index, 1);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
245
197
|
}
|
|
246
198
|
}
|
|
247
199
|
//# sourceMappingURL=binding-builders.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-builders.js","sourceRoot":"","sources":["../../src/container/binding-builders.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binding-builders.js","sourceRoot":"","sources":["../../src/container/binding-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/container/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/container/container.ts"],"names":[],"mappings":"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"}
|