@codefast/di 0.5.0-canary.6 → 0.5.0-canary.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +13 -4
  3. package/dist/binding.d.ts +36 -19
  4. package/dist/binding.d.ts.map +1 -1
  5. package/dist/binding.js +2 -2
  6. package/dist/binding.js.map +1 -1
  7. package/dist/container/binding-builders.d.ts +35 -0
  8. package/dist/container/binding-builders.d.ts.map +1 -0
  9. package/dist/container/binding-builders.js +247 -0
  10. package/dist/container/binding-builders.js.map +1 -0
  11. package/dist/{container.d.ts → container/container.d.ts} +2 -2
  12. package/dist/container/container.d.ts.map +1 -0
  13. package/dist/container/container.js +641 -0
  14. package/dist/container/container.js.map +1 -0
  15. package/dist/decorators/inject.d.ts +12 -1
  16. package/dist/decorators/inject.d.ts.map +1 -1
  17. package/dist/decorators/inject.js +2 -2
  18. package/dist/decorators/inject.js.map +1 -1
  19. package/dist/decorators/injectable.js +3 -3
  20. package/dist/decorators/injectable.js.map +1 -1
  21. package/dist/index.d.ts +12 -7
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +8 -4
  24. package/dist/index.js.map +1 -1
  25. package/dist/introspection/dependency-graph.d.ts.map +1 -0
  26. package/dist/{dependency-graph.js → introspection/dependency-graph.js} +1 -1
  27. package/dist/introspection/dependency-graph.js.map +1 -0
  28. package/dist/{graph-adapters → introspection/graph-adapters}/cytoscape.d.ts +1 -1
  29. package/dist/introspection/graph-adapters/cytoscape.d.ts.map +1 -0
  30. package/dist/introspection/graph-adapters/cytoscape.js.map +1 -0
  31. package/dist/introspection/graph-adapters/dot.d.ts +6 -0
  32. package/dist/introspection/graph-adapters/dot.d.ts.map +1 -0
  33. package/dist/introspection/graph-adapters/dot.js.map +1 -0
  34. package/dist/{graph-adapters → introspection/graph-adapters}/reactflow.d.ts +2 -2
  35. package/dist/introspection/graph-adapters/reactflow.d.ts.map +1 -0
  36. package/dist/{graph-adapters → introspection/graph-adapters}/reactflow.js +11 -1
  37. package/dist/introspection/graph-adapters/reactflow.js.map +1 -0
  38. package/dist/{inspector.d.ts → introspection/inspector.d.ts} +3 -8
  39. package/dist/introspection/inspector.d.ts.map +1 -0
  40. package/dist/{inspector.js → introspection/inspector.js} +23 -23
  41. package/dist/introspection/inspector.js.map +1 -0
  42. package/dist/metadata/symbol-metadata-reader.d.ts +1 -1
  43. package/dist/metadata/symbol-metadata-reader.d.ts.map +1 -1
  44. package/dist/metadata/symbol-metadata-reader.js +4 -4
  45. package/dist/metadata/symbol-metadata-reader.js.map +1 -1
  46. package/dist/module.d.ts +9 -2
  47. package/dist/module.d.ts.map +1 -1
  48. package/dist/module.js +9 -2
  49. package/dist/module.js.map +1 -1
  50. package/dist/registry.d.ts +5 -13
  51. package/dist/registry.d.ts.map +1 -1
  52. package/dist/registry.js +102 -61
  53. package/dist/registry.js.map +1 -1
  54. package/dist/resolution/binding-scope.d.ts.map +1 -0
  55. package/dist/resolution/binding-scope.js.map +1 -0
  56. package/dist/resolution/binding-select.d.ts.map +1 -0
  57. package/dist/{binding-select.js → resolution/binding-select.js} +16 -3
  58. package/dist/resolution/binding-select.js.map +1 -0
  59. package/dist/resolution/constraints.d.ts.map +1 -0
  60. package/dist/resolution/constraints.js.map +1 -0
  61. package/dist/{environment.d.ts → resolution/environment.d.ts} +2 -6
  62. package/dist/resolution/environment.d.ts.map +1 -0
  63. package/dist/resolution/environment.js +100 -0
  64. package/dist/resolution/environment.js.map +1 -0
  65. package/dist/resolution/instantiation-plan.d.ts +67 -0
  66. package/dist/resolution/instantiation-plan.d.ts.map +1 -0
  67. package/dist/resolution/instantiation-plan.js +163 -0
  68. package/dist/resolution/instantiation-plan.js.map +1 -0
  69. package/dist/{lifecycle.d.ts → resolution/lifecycle.d.ts} +3 -3
  70. package/dist/resolution/lifecycle.d.ts.map +1 -0
  71. package/dist/{lifecycle.js → resolution/lifecycle.js} +17 -13
  72. package/dist/resolution/lifecycle.js.map +1 -0
  73. package/dist/resolution/resolution-path.d.ts +31 -0
  74. package/dist/resolution/resolution-path.d.ts.map +1 -0
  75. package/dist/resolution/resolution-path.js +53 -0
  76. package/dist/resolution/resolution-path.js.map +1 -0
  77. package/dist/resolution/resolve-options.d.ts.map +1 -0
  78. package/dist/resolution/resolve-options.js.map +1 -0
  79. package/dist/resolution/resolver.d.ts +35 -0
  80. package/dist/resolution/resolver.d.ts.map +1 -0
  81. package/dist/resolution/resolver.js +1320 -0
  82. package/dist/resolution/resolver.js.map +1 -0
  83. package/dist/{scope.d.ts → resolution/scope.d.ts} +10 -3
  84. package/dist/resolution/scope.d.ts.map +1 -0
  85. package/dist/resolution/scope.js +76 -0
  86. package/dist/resolution/scope.js.map +1 -0
  87. package/dist/token.d.ts.map +1 -1
  88. package/dist/token.js +0 -3
  89. package/dist/token.js.map +1 -1
  90. package/package.json +80 -65
  91. package/src/binding.ts +38 -22
  92. package/src/container/binding-builders.ts +397 -0
  93. package/src/container/container.ts +838 -0
  94. package/src/decorators/inject.ts +16 -3
  95. package/src/decorators/injectable.ts +3 -3
  96. package/src/index.ts +14 -7
  97. package/src/{dependency-graph.ts → introspection/dependency-graph.ts} +1 -1
  98. package/src/{graph-adapters → introspection/graph-adapters}/cytoscape.ts +1 -1
  99. package/src/{graph-adapters → introspection/graph-adapters}/dot.ts +1 -1
  100. package/src/{graph-adapters → introspection/graph-adapters}/reactflow.ts +13 -2
  101. package/src/{inspector.ts → introspection/inspector.ts} +26 -21
  102. package/src/metadata/symbol-metadata-reader.ts +4 -4
  103. package/src/module.ts +14 -6
  104. package/src/registry.ts +115 -61
  105. package/src/{binding-select.ts → resolution/binding-select.ts} +16 -3
  106. package/src/{environment.ts → resolution/environment.ts} +35 -35
  107. package/src/resolution/instantiation-plan.ts +240 -0
  108. package/src/{lifecycle.ts → resolution/lifecycle.ts} +20 -13
  109. package/src/resolution/resolution-path.ts +77 -0
  110. package/src/resolution/resolver.ts +1755 -0
  111. package/src/{scope.ts → resolution/scope.ts} +35 -18
  112. package/src/token.ts +0 -3
  113. package/dist/binding-scope.d.ts.map +0 -1
  114. package/dist/binding-scope.js.map +0 -1
  115. package/dist/binding-select.d.ts.map +0 -1
  116. package/dist/binding-select.js.map +0 -1
  117. package/dist/constraints.d.ts.map +0 -1
  118. package/dist/constraints.js.map +0 -1
  119. package/dist/container.d.ts.map +0 -1
  120. package/dist/container.js +0 -853
  121. package/dist/container.js.map +0 -1
  122. package/dist/dependency-graph.d.ts.map +0 -1
  123. package/dist/dependency-graph.js.map +0 -1
  124. package/dist/environment.d.ts.map +0 -1
  125. package/dist/environment.js +0 -100
  126. package/dist/environment.js.map +0 -1
  127. package/dist/graph-adapters/cytoscape.d.ts.map +0 -1
  128. package/dist/graph-adapters/cytoscape.js.map +0 -1
  129. package/dist/graph-adapters/dot.d.ts +0 -6
  130. package/dist/graph-adapters/dot.d.ts.map +0 -1
  131. package/dist/graph-adapters/dot.js.map +0 -1
  132. package/dist/graph-adapters/reactflow.d.ts.map +0 -1
  133. package/dist/graph-adapters/reactflow.js.map +0 -1
  134. package/dist/inspector.d.ts.map +0 -1
  135. package/dist/inspector.js.map +0 -1
  136. package/dist/lifecycle.d.ts.map +0 -1
  137. package/dist/lifecycle.js.map +0 -1
  138. package/dist/resolve-options.d.ts.map +0 -1
  139. package/dist/resolve-options.js.map +0 -1
  140. package/dist/resolver.d.ts +0 -90
  141. package/dist/resolver.d.ts.map +0 -1
  142. package/dist/resolver.js +0 -1208
  143. package/dist/resolver.js.map +0 -1
  144. package/dist/scope.d.ts.map +0 -1
  145. package/dist/scope.js +0 -61
  146. package/dist/scope.js.map +0 -1
  147. package/src/container.ts +0 -1141
  148. package/src/resolver.ts +0 -1626
  149. /package/dist/{dependency-graph.d.ts → introspection/dependency-graph.d.ts} +0 -0
  150. /package/dist/{graph-adapters → introspection/graph-adapters}/cytoscape.js +0 -0
  151. /package/dist/{graph-adapters → introspection/graph-adapters}/dot.js +0 -0
  152. /package/dist/{binding-scope.d.ts → resolution/binding-scope.d.ts} +0 -0
  153. /package/dist/{binding-scope.js → resolution/binding-scope.js} +0 -0
  154. /package/dist/{binding-select.d.ts → resolution/binding-select.d.ts} +0 -0
  155. /package/dist/{constraints.d.ts → resolution/constraints.d.ts} +0 -0
  156. /package/dist/{constraints.js → resolution/constraints.js} +0 -0
  157. /package/dist/{resolve-options.d.ts → resolution/resolve-options.d.ts} +0 -0
  158. /package/dist/{resolve-options.js → resolution/resolve-options.js} +0 -0
  159. /package/src/{binding-scope.ts → resolution/binding-scope.ts} +0 -0
  160. /package/src/{constraints.ts → resolution/constraints.ts} +0 -0
  161. /package/src/{resolve-options.ts → resolution/resolve-options.ts} +0 -0
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Compiler for the resolver's Dagger-style instantiation plans: a transient
3
+ * class or resolved-factory binding whose dependency subgraph is pure static
4
+ * (class/constant/cached-singleton deps, no activation hooks or postConstruct)
5
+ * compiles once into a nested-constructor/factory closure, cycle-checked at
6
+ * compile time.
7
+ *
8
+ * Compilation is cold-path — it runs once per (binding, cache version). The
9
+ * closures it returns ARE the hot path and touch nothing but their captures.
10
+ * Anything dynamic refuses to compile so the runtime cycle guard stays in
11
+ * charge and error semantics never change.
12
+ */
13
+ import type { Binding } from "#/binding";
14
+ import type { ConstructorMetadata } from "#/metadata/metadata-types";
15
+ import type { ScopeManager } from "#/resolution/scope";
16
+ import type { Token } from "#/token";
17
+ import type { Constructor } from "#/types";
18
+ /**
19
+ * Compilation asked to retry later (class lifecycle metadata not discovered yet).
20
+ *
21
+ * @since 0.5.0-canary.7
22
+ */
23
+ export declare const PLAN_RETRY: unique symbol;
24
+ /**
25
+ * A compiled plan, `null` for "not plannable under the current cache versions",
26
+ * or {@link PLAN_RETRY} when a first runtime resolve must discover metadata first.
27
+ *
28
+ * @since 0.5.0-canary.7
29
+ */
30
+ export type InstantiationPlanCompileResult = (() => unknown) | null | typeof PLAN_RETRY;
31
+ /**
32
+ * A dependency's terminal binding plus the scope cache of the resolver that owns it.
33
+ *
34
+ * @since 0.5.0-canary.7
35
+ */
36
+ export interface InstantiationPlanDependencyEntry {
37
+ readonly binding: Binding;
38
+ readonly ownerScope: ScopeManager;
39
+ }
40
+ /**
41
+ * Everything the compiler needs from its resolver, expressed as behavior so the
42
+ * compiler stays independently testable and free of resolver internals.
43
+ *
44
+ * @since 0.5.0-canary.7
45
+ */
46
+ export interface InstantiationPlanHost {
47
+ hasActivationHandlers(token: Token<unknown> | Constructor): boolean;
48
+ /** Cached postConstruct presence — `undefined` until a runtime resolve discovers it. */
49
+ knownPostConstruct(target: Constructor): boolean | undefined;
50
+ needsActiveContainer(target: Constructor): boolean;
51
+ getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
52
+ /** Options-less lookup with alias hops folded; `null` when the fast lane can't answer. */
53
+ lookupDependencyEntry(token: Token<unknown> | Constructor): InstantiationPlanDependencyEntry | null;
54
+ /** Full runtime resolve — used by singleton thunks for the first materialization. */
55
+ resolveFallback(token: Token<unknown> | Constructor): unknown;
56
+ }
57
+ /**
58
+ * @since 0.3.16-canary.1
59
+ */
60
+ export declare class InstantiationPlanCompiler {
61
+ #private;
62
+ constructor(host: InstantiationPlanHost);
63
+ compile(binding: Binding & {
64
+ kind: "class" | "resolved";
65
+ }): InstantiationPlanCompileResult;
66
+ }
67
+ //# sourceMappingURL=instantiation-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-plan.d.ts","sourceRoot":"","sources":["../../src/resolution/instantiation-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,SAAS,CAAC;AAKzD;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,OAAO,MAAgC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,UAAU,CAAC;AAExF;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC;IACpE,wFAAwF;IACxF,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7D,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IACnD,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC7E,0FAA0F;IAC1F,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,gCAAgC,GAAG,IAAI,CAAC;IACpG,qFAAqF;IACrF,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC;CAC/D;AAED;;GAEG;AACH,qBAAa,yBAAyB;;IAGpC,YAAY,IAAI,EAAE,qBAAqB,EAEtC;IAED,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG;QAAE,IAAI,EAAE,OAAO,GAAG,UAAU,CAAA;KAAE,GAAG,8BAA8B,CAIzF;CA2JF"}
@@ -0,0 +1,163 @@
1
+ import { AsyncResolutionError } from "#/errors";
2
+ import { injectionSlotToResolveOptions } from "#/resolution/resolve-options";
3
+ import { SINGLETON_MISS } from "#/resolution/scope";
4
+ import { tokenName } from "#/token";
5
+ // Bail out of pathological graphs — the runtime path handles them correctly.
6
+ const PLAN_DEPTH_LIMIT = 32;
7
+ /**
8
+ * Compilation asked to retry later (class lifecycle metadata not discovered yet).
9
+ *
10
+ * @since 0.5.0-canary.7
11
+ */
12
+ export const PLAN_RETRY = Symbol("di:plan-retry");
13
+ /**
14
+ * @since 0.3.16-canary.1
15
+ */
16
+ export class InstantiationPlanCompiler {
17
+ #host;
18
+ constructor(host) {
19
+ this.#host = host;
20
+ }
21
+ compile(binding) {
22
+ return binding.kind === "class"
23
+ ? this.#compileClassPlan(binding, new Set(), 0)
24
+ : this.#compileResolvedPlan(binding, new Set(), 0);
25
+ }
26
+ // A resolved binding declares its deps as explicit descriptors — same rules as
27
+ // class params, with the factory call (and its sync-only check) in place of `new`.
28
+ #compileResolvedPlan(binding, compileStack, depth) {
29
+ if (depth > PLAN_DEPTH_LIMIT || compileStack.has(binding.id)) {
30
+ return null;
31
+ }
32
+ if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding.token)) {
33
+ return null;
34
+ }
35
+ const factory = binding.factory;
36
+ const tokenDisplayName = tokenName(binding.token);
37
+ const depThunks = new Array(binding.deps.length);
38
+ compileStack.add(binding.id);
39
+ try {
40
+ for (let index = 0; index < binding.deps.length; index += 1) {
41
+ const thunk = this.#compileDescriptorThunk(binding.deps[index], compileStack, depth);
42
+ if (thunk === null || thunk === PLAN_RETRY) {
43
+ return thunk;
44
+ }
45
+ depThunks[index] = thunk;
46
+ }
47
+ }
48
+ finally {
49
+ compileStack.delete(binding.id);
50
+ }
51
+ return () => {
52
+ const factoryResult = factory(...depThunks.map((thunk) => thunk()));
53
+ if (factoryResult instanceof Promise) {
54
+ throw new AsyncResolutionError(tokenDisplayName, tokenDisplayName);
55
+ }
56
+ return factoryResult;
57
+ };
58
+ }
59
+ #compileDescriptorThunk(descriptor, compileStack, depth) {
60
+ if (descriptor.multi || descriptor.optional || injectionSlotToResolveOptions(descriptor) !== undefined) {
61
+ return null;
62
+ }
63
+ const entry = this.#host.lookupDependencyEntry(descriptor.token);
64
+ if (entry === null) {
65
+ return null;
66
+ }
67
+ return this.#compileDepThunk(entry, compileStack, depth);
68
+ }
69
+ #compileClassPlan(binding, compileStack, depth) {
70
+ if (depth > PLAN_DEPTH_LIMIT || compileStack.has(binding.id)) {
71
+ return null;
72
+ }
73
+ if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding.token)) {
74
+ return null;
75
+ }
76
+ const target = binding.target;
77
+ const hasPostConstruct = this.#host.knownPostConstruct(target);
78
+ if (hasPostConstruct === undefined) {
79
+ return PLAN_RETRY;
80
+ }
81
+ if (hasPostConstruct || this.#host.needsActiveContainer(target)) {
82
+ return null;
83
+ }
84
+ const invokable = target;
85
+ const meta = this.#host.getConstructorMetadata(target);
86
+ if (meta === undefined) {
87
+ // Metadata-less classes with required params throw on the runtime path — keep them there.
88
+ return target.length === 0 ? () => new invokable() : null;
89
+ }
90
+ const params = meta.params;
91
+ if (params.length === 0) {
92
+ return () => new invokable();
93
+ }
94
+ const depThunks = new Array(params.length);
95
+ compileStack.add(binding.id);
96
+ try {
97
+ for (let index = 0; index < params.length; index += 1) {
98
+ const param = params[index];
99
+ if (param.multi || param.optional || injectionSlotToResolveOptions(param) !== undefined) {
100
+ return null;
101
+ }
102
+ const entry = this.#host.lookupDependencyEntry(param.token);
103
+ if (entry === null) {
104
+ return null;
105
+ }
106
+ const thunk = this.#compileDepThunk(entry, compileStack, depth);
107
+ if (thunk === null || thunk === PLAN_RETRY) {
108
+ return thunk;
109
+ }
110
+ depThunks[index] = thunk;
111
+ }
112
+ }
113
+ finally {
114
+ compileStack.delete(binding.id);
115
+ }
116
+ switch (depThunks.length) {
117
+ case 1: {
118
+ const dep0 = depThunks[0];
119
+ return () => new invokable(dep0());
120
+ }
121
+ case 2: {
122
+ const dep0 = depThunks[0];
123
+ const dep1 = depThunks[1];
124
+ return () => new invokable(dep0(), dep1());
125
+ }
126
+ case 3: {
127
+ const dep0 = depThunks[0];
128
+ const dep1 = depThunks[1];
129
+ const dep2 = depThunks[2];
130
+ return () => new invokable(dep0(), dep1(), dep2());
131
+ }
132
+ default:
133
+ return () => new invokable(...depThunks.map((thunk) => thunk()));
134
+ }
135
+ }
136
+ #compileDepThunk(entry, compileStack, depth) {
137
+ const { binding, ownerScope } = entry;
138
+ if (binding.kind === "constant") {
139
+ if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding.token)) {
140
+ return null;
141
+ }
142
+ const value = binding.value;
143
+ return () => value;
144
+ }
145
+ const scope = binding.scope ?? "transient";
146
+ if (scope === "singleton") {
147
+ // Cached-singleton read with a full-resolve fallback for the first materialization.
148
+ const host = this.#host;
149
+ const bindingId = binding.id;
150
+ const singletonToken = binding.token;
151
+ return () => {
152
+ const cachedSingleton = ownerScope.peekSingleton(bindingId);
153
+ return cachedSingleton === SINGLETON_MISS ? host.resolveFallback(singletonToken) : cachedSingleton;
154
+ };
155
+ }
156
+ if (scope === "transient" && binding.kind === "class") {
157
+ return this.#compileClassPlan(binding, compileStack, depth + 1);
158
+ }
159
+ // Dynamic/resolved/scoped deps keep the runtime path (and its cycle guard).
160
+ return null;
161
+ }
162
+ }
163
+ //# sourceMappingURL=instantiation-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-plan.js","sourceRoot":"","sources":["../../src/resolution/instantiation-plan.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,12 @@ import type { ActivationHandler, Constructor, DeactivationHandler, ResolutionCon
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
8
  export declare class LifecycleManager {
9
- private readonly _activationHooks;
10
- private readonly _deactivationHooks;
11
- private _activationVersion;
9
+ #private;
12
10
  registerActivation<const Value>(token: Token<Value> | Constructor<Value>, handler: ActivationHandler<Value>): void;
13
11
  hasActivationHandlers<const Value>(token: Token<Value> | Constructor<Value>): boolean;
14
12
  get activationVersion(): number;
13
+ /** Container-level activation handlers for a token — hot-path accessor, no copies. */
14
+ activationHandlersFor<const Value>(token: Token<Value> | Constructor<Value>): ReadonlyArray<ActivationHandler<unknown>> | undefined;
15
15
  registerDeactivation<const Value>(token: Token<Value> | Constructor<Value>, handler: DeactivationHandler<Value>): void;
16
16
  runActivation<const Value>(resolutionContext: ResolutionContext, binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Promise<Value>;
17
17
  runActivationSync<const Value>(resolutionContext: ResolutionContext, binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Value;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/resolution/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEtG;;GAEG;AACH,qBAAa,gBAAgB;;IAM3B,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAKjH;IAED,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAMpF;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,sFAAsF;IACtF,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAC/B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GACvC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAEvD;IAED,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EACxC,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAClC,IAAI,CAGN;IAEK,aAAa,CAAC,KAAK,CAAC,KAAK,EAC7B,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACvB,QAAQ,EAAE,KAAK,EACf,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,KAAK,CAAC,CAmChB;IAED,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACvB,QAAQ,EAAE,KAAK,EACf,cAAc,EAAE,cAAc,GAC7B,KAAK,CA0CP;IAEK,eAAe,CAAC,KAAK,CAAC,KAAK,EAC/B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACvB,QAAQ,EAAE,KAAK,EACf,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqCf;IAED,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CAsC/G;CACF"}
@@ -5,27 +5,31 @@ import { tokenName } from "#/token";
5
5
  */
6
6
  export class LifecycleManager {
7
7
  // Container-level activation/deactivation hooks per token
8
- _activationHooks = new Map();
9
- _deactivationHooks = new Map();
10
- _activationVersion = 0;
8
+ #activationHooks = new Map();
9
+ #deactivationHooks = new Map();
10
+ #activationVersion = 0;
11
11
  registerActivation(token, handler) {
12
- this._activationVersion += 1;
12
+ this.#activationVersion += 1;
13
13
  // ✓ TS6.0: Map.getOrInsert (ES2025)
14
- const list = this._activationHooks.getOrInsert(token, []);
14
+ const list = this.#activationHooks.getOrInsert(token, []);
15
15
  list.push(handler);
16
16
  }
17
17
  hasActivationHandlers(token) {
18
- if (this._activationHooks.size === 0) {
18
+ if (this.#activationHooks.size === 0) {
19
19
  return false;
20
20
  }
21
- const list = this._activationHooks.get(token);
21
+ const list = this.#activationHooks.get(token);
22
22
  return list !== undefined && list.length > 0;
23
23
  }
24
24
  get activationVersion() {
25
- return this._activationVersion;
25
+ return this.#activationVersion;
26
+ }
27
+ /** Container-level activation handlers for a token — hot-path accessor, no copies. */
28
+ activationHandlersFor(token) {
29
+ return this.#activationHooks.get(token);
26
30
  }
27
31
  registerDeactivation(token, handler) {
28
- const list = this._deactivationHooks.getOrInsert(token, []);
32
+ const list = this.#deactivationHooks.getOrInsert(token, []);
29
33
  list.push(handler);
30
34
  }
31
35
  async runActivation(resolutionContext, binding, instance, metadataReader) {
@@ -51,7 +55,7 @@ export class LifecycleManager {
51
55
  activatedInstance = activationResult instanceof Promise ? await activationResult : activationResult;
52
56
  }
53
57
  // 3. container-level onActivation
54
- const containerHooks = this._activationHooks.get(binding.token);
58
+ const containerHooks = this.#activationHooks.get(binding.token);
55
59
  if (containerHooks !== undefined) {
56
60
  for (const hook of containerHooks) {
57
61
  const activationResult = hook(resolutionContext, activatedInstance);
@@ -87,7 +91,7 @@ export class LifecycleManager {
87
91
  }
88
92
  // 3. container-level onActivation (must be sync)
89
93
  const tokenDisplayName = tokenName(binding.token);
90
- const containerHooks = this._activationHooks.get(binding.token);
94
+ const containerHooks = this.#activationHooks.get(binding.token);
91
95
  if (containerHooks !== undefined) {
92
96
  for (const hook of containerHooks) {
93
97
  const activationResult = hook(resolutionContext, activatedInstance);
@@ -102,7 +106,7 @@ export class LifecycleManager {
102
106
  async runDeactivation(binding, instance, metadataReader) {
103
107
  const tokenKey = binding.token;
104
108
  // 1. container-level onDeactivation
105
- const containerHooks = this._deactivationHooks.get(tokenKey);
109
+ const containerHooks = this.#deactivationHooks.get(tokenKey);
106
110
  if (containerHooks !== undefined) {
107
111
  for (const hook of containerHooks) {
108
112
  const hookResult = hook(instance);
@@ -138,7 +142,7 @@ export class LifecycleManager {
138
142
  const tokenDisplayName = tokenName(binding.token);
139
143
  const tokenKey = binding.token;
140
144
  // 1. container-level onDeactivation
141
- const containerHooks = this._deactivationHooks.get(tokenKey);
145
+ const containerHooks = this.#deactivationHooks.get(tokenKey);
142
146
  if (containerHooks !== undefined) {
143
147
  for (const hook of containerHooks) {
144
148
  const hookResult = hook(instance);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/resolution/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGxE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,0DAA0D;IACjD,gBAAgB,GAAG,IAAI,GAAG,EAAmE,CAAC;IAC9F,kBAAkB,GAAG,IAAI,GAAG,EAAqE,CAAC;IAC3G,kBAAkB,GAAG,CAAC,CAAC;IAEvB,kBAAkB,CAAc,KAAwC,EAAE,OAAiC;QACzG,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;QAC7B,oCAAoC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAqC,EAAE,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAI,CAAC,OAAqC,CAAC,CAAC;IACnD,CAAC;IAED,qBAAqB,CAAc,KAAwC;QACzE,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAqC,CAAC,CAAC;QAC9E,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,sFAAsF;IACtF,qBAAqB,CACnB,KAAwC;QAExC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAqC,CAAC,CAAC;IAC1E,CAAC;IAED,oBAAoB,CAClB,KAAwC,EACxC,OAAmC;QAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAqC,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,IAAI,CAAC,OAAuC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,iBAAoC,EACpC,OAAuB,EACvB,QAAe,EACf,cAA8B;QAE9B,IAAI,iBAAiB,GAAU,QAAQ,CAAC;QAExC,kGAAkG;QAClG,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtE,IAAI,SAAS,EAAE,aAAa,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;oBACjD,MAAM,MAAM,GAAI,iBAA6C,CAAC,UAAU,CAAC,CAAC;oBAC1E,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAI,MAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;wBACrE,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;4BAClC,MAAM,UAAU,CAAC;wBACnB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;YACpF,iBAAiB,GAAG,gBAAgB,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACtG,CAAC;QAED,kCAAkC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAqC,CAAC,CAAC;QAChG,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;gBACpE,iBAAiB,GAAG,CAAC,gBAAgB,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAU,CAAC;YACjH,CAAC;QACH,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,iBAAiB,CACf,iBAAoC,EACpC,OAAuB,EACvB,QAAe,EACf,cAA8B;QAE9B,IAAI,iBAAiB,GAAU,QAAQ,CAAC;QAExC,iFAAiF;QACjF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtE,IAAI,SAAS,EAAE,aAAa,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;oBACjD,MAAM,MAAM,GAAI,iBAA6C,CAAC,UAAU,CAAC,CAAC;oBAC1E,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAI,MAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;wBACrE,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;4BAClC,MAAM,IAAI,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;wBACxF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;YACpF,IAAI,gBAAgB,YAAY,OAAO,EAAE,CAAC;gBACxC,MAAM,IAAI,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;YAC3E,CAAC;YACD,iBAAiB,GAAG,gBAAgB,CAAC;QACvC,CAAC;QAED,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAqC,CAAC,CAAC;QAChG,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;gBACpE,IAAI,gBAAgB,YAAY,OAAO,EAAE,CAAC;oBACxC,MAAM,IAAI,oBAAoB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;gBACnE,CAAC;gBACD,iBAAiB,GAAG,gBAAyB,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,OAAuB,EACvB,QAAe,EACf,cAA8B;QAE9B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAqC,CAAC;QAE/D,oCAAoC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;oBAClC,MAAM,UAAU,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;gBAClC,MAAM,UAAU,CAAC;YACnB,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtE,IAAI,SAAS,EAAE,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBAC9C,MAAM,MAAM,GAAI,QAAoC,CAAC,UAAU,CAAC,CAAC;oBACjE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAI,MAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC5D,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;4BAClC,MAAM,UAAU,CAAC;wBACnB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB,CAAc,OAAuB,EAAE,QAAe,EAAE,cAA8B;QACvG,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAqC,CAAC;QAE/D,oCAAoC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;oBAClC,MAAM,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;gBAClC,MAAM,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtE,IAAI,SAAS,EAAE,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBAC9C,MAAM,MAAM,GAAI,QAAoC,CAAC,UAAU,CAAC,CAAC;oBACjE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;wBACjC,MAAM,UAAU,GAAI,MAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC5D,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;4BAClC,MAAM,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;wBACrD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Where the cycle check switches from a linear `Array.includes` scan to an attached Set.
3
+ *
4
+ * @remarks Re-measured on Node 26 / M3 Max over an async transient chain (ns/op at depth
5
+ * 16 / 32 / 64 / 128): a threshold of 128 gives 1275 / 3641 / 9645 / 26082, of 32 gives
6
+ * 1202 / 3285 / 7735 / 16837, of 16 gives 1299 / 3694 / 7449 / 15625. Switching at 32 wins
7
+ * the shallow-to-mid depths real graphs actually have while staying close to the best deep
8
+ * numbers; the previous value of 128 was the worst of the three almost everywhere.
9
+ *
10
+ * @since 0.5.0-canary.7
11
+ */
12
+ export declare const RESOLUTION_SET_THRESHOLD = 32;
13
+ /**
14
+ * Shared cycle guard for every transient resolution path: attaches the O(1) membership
15
+ * Set to the path array (lazily past RESOLUTION_SET_THRESHOLD, eagerly when `forceSet`),
16
+ * throws on a repeated token, then marks the token on both structures.
17
+ *
18
+ * Callers unmark with `resolutionPath.pop()` + `set?.delete(name)` on unwind.
19
+ */
20
+ export declare function enterResolutionPath(resolutionPath: Array<string>, tokenDisplayName: string, forceSet: true): Set<string>;
21
+ export declare function enterResolutionPath(resolutionPath: Array<string>, tokenDisplayName: string, forceSet: boolean): Set<string> | undefined;
22
+ /**
23
+ * Unwinds the innermost `enterResolutionPath` entry, keeping the attached membership Set in
24
+ * sync. Callers that already hold the entry's name can pop and delete directly; this exists for
25
+ * unwind paths that only have the path array — notably the async chain's shared settle callback,
26
+ * which serves every level and therefore cannot capture a per-level name.
27
+ *
28
+ * @since 0.5.0-canary.7
29
+ */
30
+ export declare function exitResolutionPath(resolutionPath: Array<string>): void;
31
+ //# sourceMappingURL=resolution-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution-path.d.ts","sourceRoot":"","sources":["../../src/resolution/resolution-path.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAG3C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,IAAI,GACb,GAAG,CAAC,MAAM,CAAC,CAAC;AACf,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,OAAO,GAChB,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAuB3B;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAKtE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Cycle-detection bookkeeping shared by every resolution path.
3
+ *
4
+ * The resolution path is a plain string array for cheap push/pop; past
5
+ * RESOLUTION_SET_THRESHOLD entries an O(1) membership Set is attached to the
6
+ * array itself (symbol-keyed) so very deep graphs keep bounded cycle checks.
7
+ */
8
+ import { CircularDependencyError } from "#/errors";
9
+ const RESOLUTION_SET_KEY = Symbol("di:resolution-set");
10
+ /**
11
+ * Where the cycle check switches from a linear `Array.includes` scan to an attached Set.
12
+ *
13
+ * @remarks Re-measured on Node 26 / M3 Max over an async transient chain (ns/op at depth
14
+ * 16 / 32 / 64 / 128): a threshold of 128 gives 1275 / 3641 / 9645 / 26082, of 32 gives
15
+ * 1202 / 3285 / 7735 / 16837, of 16 gives 1299 / 3694 / 7449 / 15625. Switching at 32 wins
16
+ * the shallow-to-mid depths real graphs actually have while staying close to the best deep
17
+ * numbers; the previous value of 128 was the worst of the three almost everywhere.
18
+ *
19
+ * @since 0.5.0-canary.7
20
+ */
21
+ export const RESOLUTION_SET_THRESHOLD = 32;
22
+ /**
23
+ * @since 0.5.0-canary.7
24
+ */
25
+ export function enterResolutionPath(resolutionPath, tokenDisplayName, forceSet) {
26
+ const pathWithSet = resolutionPath;
27
+ let resolutionSet = pathWithSet[RESOLUTION_SET_KEY];
28
+ if (resolutionSet === undefined && (forceSet || resolutionPath.length >= RESOLUTION_SET_THRESHOLD)) {
29
+ resolutionSet = new Set(resolutionPath);
30
+ pathWithSet[RESOLUTION_SET_KEY] = resolutionSet;
31
+ }
32
+ if (resolutionSet === undefined ? resolutionPath.includes(tokenDisplayName) : resolutionSet.has(tokenDisplayName)) {
33
+ throw new CircularDependencyError([...resolutionPath, tokenDisplayName]);
34
+ }
35
+ resolutionPath.push(tokenDisplayName);
36
+ resolutionSet?.add(tokenDisplayName);
37
+ return resolutionSet;
38
+ }
39
+ /**
40
+ * Unwinds the innermost `enterResolutionPath` entry, keeping the attached membership Set in
41
+ * sync. Callers that already hold the entry's name can pop and delete directly; this exists for
42
+ * unwind paths that only have the path array — notably the async chain's shared settle callback,
43
+ * which serves every level and therefore cannot capture a per-level name.
44
+ *
45
+ * @since 0.5.0-canary.7
46
+ */
47
+ export function exitResolutionPath(resolutionPath) {
48
+ const tokenDisplayName = resolutionPath.pop();
49
+ if (tokenDisplayName !== undefined) {
50
+ resolutionPath[RESOLUTION_SET_KEY]?.delete(tokenDisplayName);
51
+ }
52
+ }
53
+ //# sourceMappingURL=resolution-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution-path.js","sourceRoot":"","sources":["../../src/resolution/resolution-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,kBAAkB,GAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACtE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAoB3C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA6B,EAC7B,gBAAwB,EACxB,QAAiB;IAEjB,MAAM,WAAW,GAAG,cAAuC,CAAC;IAC5D,IAAI,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACpD,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,MAAM,IAAI,wBAAwB,CAAC,EAAE,CAAC;QACnG,aAAa,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;QAChD,WAAW,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;IAClD,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClH,MAAM,IAAI,uBAAuB,CAAC,CAAC,GAAG,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtC,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA6B;IAC9D,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;IAC9C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAClC,cAAwC,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-options.d.ts","sourceRoot":"","sources":["../../src/resolution/resolve-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAoB1D;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,EAAE;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAC3C,GAAG,cAAc,GAAG,SAAS,CAE7B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAEhG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-options.js","sourceRoot":"","sources":["../../src/resolution/resolve-options.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,SAAS,YAAY,CACnB,IAAwB,EACxB,IAA2C;IAE3C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,aAG7C;IACC,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAwB;IAClE,OAAO,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACpG,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { Binding } from "#/binding";
2
+ import type { Container } from "#/container/container";
3
+ import type { MetadataReader } from "#/metadata/metadata-types";
4
+ import type { BindingRegistry } from "#/registry";
5
+ import type { LifecycleManager } from "#/resolution/lifecycle";
6
+ import type { ScopeManager } from "#/resolution/scope";
7
+ import type { Token } from "#/token";
8
+ import type { Constructor, ResolutionFrame, ResolveOptions } from "#/types";
9
+ /**
10
+ * @since 0.3.16-canary.0
11
+ */
12
+ export declare class DependencyResolver {
13
+ #private;
14
+ constructor(registry: BindingRegistry, scope: ScopeManager, lifecycle: LifecycleManager, metadataReader: MetadataReader, container: Container, parent: DependencyResolver | undefined);
15
+ /**
16
+ * Binding lookup aligned with `resolve` — used by `Container.validate` without instantiating.
17
+ */
18
+ peekBindingForValidate(token: Token<unknown> | Constructor, options: ResolveOptions | undefined): {
19
+ binding: Binding;
20
+ owner: DependencyResolver;
21
+ } | undefined;
22
+ /**
23
+ * Mirrors {@link DependencyResolver.resolveAll} candidate selection only (no instantiation).
24
+ */
25
+ peekCandidateBindingsForValidate(token: Token<unknown> | Constructor, options: ResolveOptions | undefined): Array<Binding>;
26
+ resolveFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
27
+ resolve<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
28
+ resolveOptional<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value | undefined;
29
+ resolveAll<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Array<Value>;
30
+ resolveAsyncFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value>;
31
+ resolveAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value>;
32
+ resolveOptionalAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value | undefined>;
33
+ resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Array<Value>>;
34
+ }
35
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/resolver.ts"],"names":[],"mappings":"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"}