@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.
Files changed (114) hide show
  1. package/CHANGELOG.md +205 -0
  2. package/README.md +6 -2
  3. package/dist/binding.d.ts +85 -24
  4. package/dist/binding.d.ts.map +1 -1
  5. package/dist/binding.js +55 -0
  6. package/dist/binding.js.map +1 -1
  7. package/dist/constructor-type.d.ts +4 -5
  8. package/dist/constructor-type.d.ts.map +1 -1
  9. package/dist/container/binding-builders.d.ts +32 -11
  10. package/dist/container/binding-builders.d.ts.map +1 -1
  11. package/dist/container/binding-builders.js +144 -192
  12. package/dist/container/binding-builders.js.map +1 -1
  13. package/dist/container/container.d.ts.map +1 -1
  14. package/dist/container/container.js +141 -201
  15. package/dist/container/container.js.map +1 -1
  16. package/dist/decorators/inject.d.ts +2 -4
  17. package/dist/decorators/inject.d.ts.map +1 -1
  18. package/dist/decorators/inject.js.map +1 -1
  19. package/dist/errors.d.ts +24 -0
  20. package/dist/errors.d.ts.map +1 -1
  21. package/dist/errors.js +30 -0
  22. package/dist/errors.js.map +1 -1
  23. package/dist/index.d.ts +1 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/introspection/inspector.d.ts +0 -1
  28. package/dist/introspection/inspector.d.ts.map +1 -1
  29. package/dist/introspection/inspector.js +3 -8
  30. package/dist/introspection/inspector.js.map +1 -1
  31. package/dist/metadata/metadata-keys.d.ts +3 -6
  32. package/dist/metadata/metadata-keys.d.ts.map +1 -1
  33. package/dist/metadata/metadata-keys.js +3 -6
  34. package/dist/metadata/metadata-keys.js.map +1 -1
  35. package/dist/registry.d.ts +14 -2
  36. package/dist/registry.d.ts.map +1 -1
  37. package/dist/registry.js +81 -78
  38. package/dist/registry.js.map +1 -1
  39. package/dist/resolution/activation-need.d.ts +27 -0
  40. package/dist/resolution/activation-need.d.ts.map +1 -0
  41. package/dist/resolution/activation-need.js +68 -0
  42. package/dist/resolution/activation-need.js.map +1 -0
  43. package/dist/resolution/binding-lookup-cache.d.ts +41 -0
  44. package/dist/resolution/binding-lookup-cache.d.ts.map +1 -0
  45. package/dist/resolution/binding-lookup-cache.js +118 -0
  46. package/dist/resolution/binding-lookup-cache.js.map +1 -0
  47. package/dist/resolution/binding-scope.d.ts +5 -2
  48. package/dist/resolution/binding-scope.d.ts.map +1 -1
  49. package/dist/resolution/binding-scope.js +6 -17
  50. package/dist/resolution/binding-scope.js.map +1 -1
  51. package/dist/resolution/binding-select.d.ts +8 -1
  52. package/dist/resolution/binding-select.d.ts.map +1 -1
  53. package/dist/resolution/binding-select.js +14 -36
  54. package/dist/resolution/binding-select.js.map +1 -1
  55. package/dist/resolution/class-introspector.d.ts +27 -0
  56. package/dist/resolution/class-introspector.d.ts.map +1 -0
  57. package/dist/resolution/class-introspector.js +60 -0
  58. package/dist/resolution/class-introspector.js.map +1 -0
  59. package/dist/resolution/diagnostics.d.ts +41 -0
  60. package/dist/resolution/diagnostics.d.ts.map +1 -0
  61. package/dist/resolution/diagnostics.js +18 -0
  62. package/dist/resolution/diagnostics.js.map +1 -0
  63. package/dist/resolution/environment.d.ts +48 -1
  64. package/dist/resolution/environment.d.ts.map +1 -1
  65. package/dist/resolution/environment.js +134 -5
  66. package/dist/resolution/environment.js.map +1 -1
  67. package/dist/resolution/instantiation-plan.d.ts +15 -15
  68. package/dist/resolution/instantiation-plan.d.ts.map +1 -1
  69. package/dist/resolution/instantiation-plan.js +69 -49
  70. package/dist/resolution/instantiation-plan.js.map +1 -1
  71. package/dist/resolution/lifecycle.d.ts +2 -0
  72. package/dist/resolution/lifecycle.d.ts.map +1 -1
  73. package/dist/resolution/lifecycle.js +60 -62
  74. package/dist/resolution/lifecycle.js.map +1 -1
  75. package/dist/resolution/resolution-path.d.ts +84 -17
  76. package/dist/resolution/resolution-path.d.ts.map +1 -1
  77. package/dist/resolution/resolution-path.js +68 -23
  78. package/dist/resolution/resolution-path.js.map +1 -1
  79. package/dist/resolution/resolve-options.d.ts +41 -4
  80. package/dist/resolution/resolve-options.d.ts.map +1 -1
  81. package/dist/resolution/resolve-options.js +25 -1
  82. package/dist/resolution/resolve-options.js.map +1 -1
  83. package/dist/resolution/resolver.d.ts +33 -10
  84. package/dist/resolution/resolver.d.ts.map +1 -1
  85. package/dist/resolution/resolver.js +471 -830
  86. package/dist/resolution/resolver.js.map +1 -1
  87. package/dist/resolution/scope.d.ts +11 -15
  88. package/dist/resolution/scope.d.ts.map +1 -1
  89. package/dist/resolution/scope.js +55 -43
  90. package/dist/resolution/scope.js.map +1 -1
  91. package/package.json +10 -106
  92. package/src/binding.ts +146 -24
  93. package/src/constructor-type.ts +4 -5
  94. package/src/container/binding-builders.ts +184 -284
  95. package/src/container/container.ts +161 -221
  96. package/src/decorators/inject.ts +3 -5
  97. package/src/errors.ts +38 -0
  98. package/src/index.ts +4 -1
  99. package/src/introspection/inspector.ts +3 -9
  100. package/src/metadata/metadata-keys.ts +3 -6
  101. package/src/registry.ts +90 -94
  102. package/src/resolution/activation-need.ts +85 -0
  103. package/src/resolution/binding-lookup-cache.ts +148 -0
  104. package/src/resolution/binding-scope.ts +6 -17
  105. package/src/resolution/binding-select.ts +15 -39
  106. package/src/resolution/class-introspector.ts +74 -0
  107. package/src/resolution/diagnostics.ts +43 -0
  108. package/src/resolution/environment.ts +181 -5
  109. package/src/resolution/instantiation-plan.ts +116 -64
  110. package/src/resolution/lifecycle.ts +69 -62
  111. package/src/resolution/resolution-path.ts +122 -43
  112. package/src/resolution/resolve-options.ts +51 -4
  113. package/src/resolution/resolver.ts +649 -1081
  114. package/src/resolution/scope.ts +58 -47
@@ -1 +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"}
1
+ {"version":3,"file":"instantiation-plan.d.ts","sourceRoot":"","sources":["../../src/resolution/instantiation-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM5E;;;;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;AAUxF;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;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,wFAAwF;IACxF,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC;IACtD,qFAAqF;IACrF,cAAc,CACZ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EACnC,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC7B,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,GACtC,OAAO,CAAC;CACZ;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExD;;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;CA+LF"}
@@ -1,8 +1,9 @@
1
+ import { NO_INSTANCE } from "#/binding";
1
2
  import { AsyncResolutionError } from "#/errors";
2
3
  import { injectionSlotToResolveOptions } from "#/resolution/resolve-options";
3
- import { SINGLETON_MISS } from "#/resolution/scope";
4
4
  import { tokenName } from "#/token";
5
- // Bail out of pathological graphs — the runtime path handles them correctly.
5
+ // Past this depth a dependency escapes to the runtime path rather than inlining further —
6
+ // compiled closures nest one JS frame per level, and pathological graphs are the runtime's job.
6
7
  const PLAN_DEPTH_LIMIT = 32;
7
8
  /**
8
9
  * Compilation asked to retry later (class lifecycle metadata not discovered yet).
@@ -20,26 +21,36 @@ export class InstantiationPlanCompiler {
20
21
  }
21
22
  compile(binding) {
22
23
  return binding.kind === "class"
23
- ? this.#compileClassPlan(binding, new Set(), 0)
24
- : this.#compileResolvedPlan(binding, new Set(), 0);
24
+ ? this.#compileClassPlan(binding, new Set(), 0, [])
25
+ : this.#compileResolvedPlan(binding, new Set(), 0, []);
26
+ }
27
+ /**
28
+ * Re-entry into the runtime resolver for a dependency the plan can't see through.
29
+ *
30
+ * The ancestors are fixed at compile time, so the seeds are built once; each call copies
31
+ * them because the resolver pushes and pops on the arrays it is given.
32
+ */
33
+ #compileEscapeThunk(token, ancestors, arity = "single", options) {
34
+ const host = this.#host;
35
+ const frames = ancestors.map((ancestor) => host.getResolutionFrame(ancestor));
36
+ const names = frames.map((frame) => frame.tokenName);
37
+ return () => host.resolveEscaped(token, options, arity, [...names], [...frames]);
25
38
  }
26
39
  // A resolved binding declares its deps as explicit descriptors — same rules as
27
40
  // 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
- }
41
+ #compileResolvedPlan(binding, compileStack, depth, ancestors) {
32
42
  if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding.token)) {
33
43
  return null;
34
44
  }
35
45
  const factory = binding.factory;
36
46
  const tokenDisplayName = tokenName(binding.token);
37
47
  const depThunks = new Array(binding.deps.length);
48
+ const depAncestors = [...ancestors, binding];
38
49
  compileStack.add(binding.id);
39
50
  try {
40
51
  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) {
52
+ const thunk = this.#compileInjectionThunk(binding.deps[index], compileStack, depth, depAncestors);
53
+ if (thunk === PLAN_RETRY) {
43
54
  return thunk;
44
55
  }
45
56
  depThunks[index] = thunk;
@@ -56,20 +67,30 @@ export class InstantiationPlanCompiler {
56
67
  return factoryResult;
57
68
  };
58
69
  }
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);
70
+ /**
71
+ * One dependency of a plan node — a constructor param or a `toResolved` descriptor.
72
+ *
73
+ * @remarks Anything but a plain required single dependency escapes to the runtime path.
74
+ */
75
+ #compileInjectionThunk(descriptor, compileStack, depth, ancestors) {
76
+ const token = descriptor.token;
77
+ const options = injectionSlotToResolveOptions(descriptor);
78
+ if (descriptor.multi) {
79
+ return this.#compileEscapeThunk(token, ancestors, "all", options);
80
+ }
81
+ if (descriptor.optional) {
82
+ return this.#compileEscapeThunk(token, ancestors, "optional", options);
83
+ }
84
+ if (options !== undefined) {
85
+ return this.#compileEscapeThunk(token, ancestors, "single", options);
86
+ }
87
+ const entry = this.#host.lookupDependencyEntry(token);
64
88
  if (entry === null) {
65
- return null;
89
+ return this.#compileEscapeThunk(token, ancestors);
66
90
  }
67
- return this.#compileDepThunk(entry, compileStack, depth);
91
+ return this.#compileDepThunk(entry, compileStack, depth, ancestors);
68
92
  }
69
- #compileClassPlan(binding, compileStack, depth) {
70
- if (depth > PLAN_DEPTH_LIMIT || compileStack.has(binding.id)) {
71
- return null;
72
- }
93
+ #compileClassPlan(binding, compileStack, depth, ancestors) {
73
94
  if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding.token)) {
74
95
  return null;
75
96
  }
@@ -92,19 +113,12 @@ export class InstantiationPlanCompiler {
92
113
  return () => new invokable();
93
114
  }
94
115
  const depThunks = new Array(params.length);
116
+ const depAncestors = [...ancestors, binding];
95
117
  compileStack.add(binding.id);
96
118
  try {
97
119
  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) {
120
+ const thunk = this.#compileInjectionThunk(params[index], compileStack, depth, depAncestors);
121
+ if (thunk === PLAN_RETRY) {
108
122
  return thunk;
109
123
  }
110
124
  depThunks[index] = thunk;
@@ -133,31 +147,37 @@ export class InstantiationPlanCompiler {
133
147
  return () => new invokable(...depThunks.map((thunk) => thunk()));
134
148
  }
135
149
  }
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;
150
+ #compileDepThunk(entry, compileStack, depth, ancestors) {
151
+ const { binding } = entry;
152
+ if (binding.kind === "constant" && binding.onActivation === undefined) {
153
+ if (!this.#host.hasActivationHandlers(binding.token)) {
154
+ const value = binding.value;
155
+ return () => value;
141
156
  }
142
- const value = binding.value;
143
- return () => value;
144
157
  }
145
- const scope = binding.scope ?? "transient";
158
+ const scope = binding.scope;
146
159
  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;
160
+ // Cached-singleton read; the first materialization escapes so it sees the same ancestors
161
+ // (and therefore the same cycle detection) the interpreted path would have built.
162
+ const escape = this.#compileEscapeThunk(binding.token, ancestors);
163
+ const singletonBinding = binding;
151
164
  return () => {
152
- const cachedSingleton = ownerScope.peekSingleton(bindingId);
153
- return cachedSingleton === SINGLETON_MISS ? host.resolveFallback(singletonToken) : cachedSingleton;
165
+ const cached = singletonBinding.instance;
166
+ return cached === NO_INSTANCE ? escape() : cached;
154
167
  };
155
168
  }
156
- if (scope === "transient" && binding.kind === "class") {
157
- return this.#compileClassPlan(binding, compileStack, depth + 1);
169
+ if (scope === "transient" &&
170
+ binding.kind === "class" &&
171
+ depth < PLAN_DEPTH_LIMIT &&
172
+ !compileStack.has(binding.id)) {
173
+ const inlined = this.#compileClassPlan(binding, compileStack, depth + 1, ancestors);
174
+ if (inlined !== null) {
175
+ return inlined;
176
+ }
158
177
  }
159
- // Dynamic/resolved/scoped deps keep the runtime path (and its cycle guard).
160
- return null;
178
+ // Anything opaque — a factory, a scoped binding, an activation hook, a class the compiler
179
+ // declined — runs on the runtime path, seeded with this plan's ancestors.
180
+ return this.#compileEscapeThunk(binding.token, ancestors);
161
181
  }
162
182
  }
163
183
  //# sourceMappingURL=instantiation-plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instantiation-plan.js","sourceRoot":"","sources":["../../src/resolution/instantiation-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instantiation-plan.js","sourceRoot":"","sources":["../../src/resolution/instantiation-plan.ts"],"names":[],"mappings":"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"}
@@ -17,5 +17,7 @@ export declare class LifecycleManager {
17
17
  runActivationSync<const Value>(resolutionContext: ResolutionContext, binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Value;
18
18
  runDeactivation<const Value>(binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): Promise<void>;
19
19
  runDeactivationSync<const Value>(binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): void;
20
+ /** Whether the deferred table behind `#activationHooks` has had to be built. */
21
+ get isBuilt(): boolean;
20
22
  }
21
23
  //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +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"}
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;;IAY3B,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,CAOjH;IAED,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAGpF;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,CAavD;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,CA2BhB;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,CAiCP;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,CA6Bf;IAED,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CA6B/G;IAED,gFAAgF;IAChF,IAAI,OAAO,IAAI,OAAO,CAErB;CACF"}
@@ -4,21 +4,25 @@ import { tokenName } from "#/token";
4
4
  * @since 0.3.16-canary.0
5
5
  */
6
6
  export class LifecycleManager {
7
- // Container-level activation/deactivation hooks per token
8
- #activationHooks = new Map();
9
- #deactivationHooks = new Map();
7
+ // Container-level activation/deactivation hooks per token — most containers register none, so
8
+ // both tables stay unallocated until the first hook arrives.
9
+ #activationHooks;
10
+ #deactivationHooks;
10
11
  #activationVersion = 0;
12
+ // One-entry cache in front of the map: a resolve loop asks about the same token over and over,
13
+ // and registration is the only thing that can change the answer.
14
+ #cachedToken;
15
+ #cachedHooks;
11
16
  registerActivation(token, handler) {
12
17
  this.#activationVersion += 1;
18
+ this.#cachedToken = undefined;
19
+ this.#cachedHooks = undefined;
13
20
  // ✓ TS6.0: Map.getOrInsert (ES2025)
14
- const list = this.#activationHooks.getOrInsert(token, []);
21
+ const list = (this.#activationHooks ??= new Map()).getOrInsert(token, []);
15
22
  list.push(handler);
16
23
  }
17
24
  hasActivationHandlers(token) {
18
- if (this.#activationHooks.size === 0) {
19
- return false;
20
- }
21
- const list = this.#activationHooks.get(token);
25
+ const list = this.activationHandlersFor(token);
22
26
  return list !== undefined && list.length > 0;
23
27
  }
24
28
  get activationVersion() {
@@ -26,27 +30,30 @@ export class LifecycleManager {
26
30
  }
27
31
  /** Container-level activation handlers for a token — hot-path accessor, no copies. */
28
32
  activationHandlersFor(token) {
29
- return this.#activationHooks.get(token);
33
+ const hooks = this.#activationHooks;
34
+ if (hooks === undefined) {
35
+ return undefined;
36
+ }
37
+ const key = token;
38
+ if (key === this.#cachedToken) {
39
+ return this.#cachedHooks;
40
+ }
41
+ const list = hooks.get(key);
42
+ this.#cachedToken = key;
43
+ this.#cachedHooks = list;
44
+ return list;
30
45
  }
31
46
  registerDeactivation(token, handler) {
32
- const list = this.#deactivationHooks.getOrInsert(token, []);
47
+ const list = (this.#deactivationHooks ??= new Map()).getOrInsert(token, []);
33
48
  list.push(handler);
34
49
  }
35
50
  async runActivation(resolutionContext, binding, instance, metadataReader) {
36
51
  let activatedInstance = instance;
37
52
  // 1. @postConstruct() — after TC39 construction (constructor + accessor addInitializer callbacks)
38
- if (binding.kind === "class") {
39
- const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
40
- if (lifecycle?.postConstruct && lifecycle.postConstruct.length > 0) {
41
- for (const methodName of lifecycle.postConstruct) {
42
- const method = activatedInstance[methodName];
43
- if (typeof method === "function") {
44
- const hookResult = method.call(activatedInstance);
45
- if (hookResult instanceof Promise) {
46
- await hookResult;
47
- }
48
- }
49
- }
53
+ for (const methodName of lifecycleMethods(binding, metadataReader, "postConstruct")) {
54
+ const hookResult = callHook(activatedInstance, methodName);
55
+ if (hookResult instanceof Promise) {
56
+ await hookResult;
50
57
  }
51
58
  }
52
59
  // 2. per-binding onActivation
@@ -55,7 +62,7 @@ export class LifecycleManager {
55
62
  activatedInstance = activationResult instanceof Promise ? await activationResult : activationResult;
56
63
  }
57
64
  // 3. container-level onActivation
58
- const containerHooks = this.#activationHooks.get(binding.token);
65
+ const containerHooks = this.#activationHooks?.get(binding.token);
59
66
  if (containerHooks !== undefined) {
60
67
  for (const hook of containerHooks) {
61
68
  const activationResult = hook(resolutionContext, activatedInstance);
@@ -67,18 +74,9 @@ export class LifecycleManager {
67
74
  runActivationSync(resolutionContext, binding, instance, metadataReader) {
68
75
  let activatedInstance = instance;
69
76
  // 1. @postConstruct() — must be sync (instance fully constructed per TC39 order)
70
- if (binding.kind === "class") {
71
- const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
72
- if (lifecycle?.postConstruct && lifecycle.postConstruct.length > 0) {
73
- for (const methodName of lifecycle.postConstruct) {
74
- const method = activatedInstance[methodName];
75
- if (typeof method === "function") {
76
- const hookResult = method.call(activatedInstance);
77
- if (hookResult instanceof Promise) {
78
- throw new AsyncActivationError(tokenName(binding.token), "postConstruct", methodName);
79
- }
80
- }
81
- }
77
+ for (const methodName of lifecycleMethods(binding, metadataReader, "postConstruct")) {
78
+ if (callHook(activatedInstance, methodName) instanceof Promise) {
79
+ throw new AsyncActivationError(tokenName(binding.token), "postConstruct", methodName);
82
80
  }
83
81
  }
84
82
  // 2. per-binding onActivation (must be sync)
@@ -91,7 +89,7 @@ export class LifecycleManager {
91
89
  }
92
90
  // 3. container-level onActivation (must be sync)
93
91
  const tokenDisplayName = tokenName(binding.token);
94
- const containerHooks = this.#activationHooks.get(binding.token);
92
+ const containerHooks = this.#activationHooks?.get(binding.token);
95
93
  if (containerHooks !== undefined) {
96
94
  for (const hook of containerHooks) {
97
95
  const activationResult = hook(resolutionContext, activatedInstance);
@@ -106,7 +104,7 @@ export class LifecycleManager {
106
104
  async runDeactivation(binding, instance, metadataReader) {
107
105
  const tokenKey = binding.token;
108
106
  // 1. container-level onDeactivation
109
- const containerHooks = this.#deactivationHooks.get(tokenKey);
107
+ const containerHooks = this.#deactivationHooks?.get(tokenKey);
110
108
  if (containerHooks !== undefined) {
111
109
  for (const hook of containerHooks) {
112
110
  const hookResult = hook(instance);
@@ -123,18 +121,10 @@ export class LifecycleManager {
123
121
  }
124
122
  }
125
123
  // 3. @preDestroy() — all methods in declaration order
126
- if (binding.kind === "class") {
127
- const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
128
- if (lifecycle?.preDestroy && lifecycle.preDestroy.length > 0) {
129
- for (const methodName of lifecycle.preDestroy) {
130
- const method = instance[methodName];
131
- if (typeof method === "function") {
132
- const hookResult = method.call(instance);
133
- if (hookResult instanceof Promise) {
134
- await hookResult;
135
- }
136
- }
137
- }
124
+ for (const methodName of lifecycleMethods(binding, metadataReader, "preDestroy")) {
125
+ const hookResult = callHook(instance, methodName);
126
+ if (hookResult instanceof Promise) {
127
+ await hookResult;
138
128
  }
139
129
  }
140
130
  }
@@ -142,7 +132,7 @@ export class LifecycleManager {
142
132
  const tokenDisplayName = tokenName(binding.token);
143
133
  const tokenKey = binding.token;
144
134
  // 1. container-level onDeactivation
145
- const containerHooks = this.#deactivationHooks.get(tokenKey);
135
+ const containerHooks = this.#deactivationHooks?.get(tokenKey);
146
136
  if (containerHooks !== undefined) {
147
137
  for (const hook of containerHooks) {
148
138
  const hookResult = hook(instance);
@@ -159,20 +149,28 @@ export class LifecycleManager {
159
149
  }
160
150
  }
161
151
  // 3. @preDestroy()
162
- if (binding.kind === "class") {
163
- const lifecycle = metadataReader.getLifecycleMetadata(binding.target);
164
- if (lifecycle?.preDestroy && lifecycle.preDestroy.length > 0) {
165
- for (const methodName of lifecycle.preDestroy) {
166
- const method = instance[methodName];
167
- if (typeof method === "function") {
168
- const hookResult = method.call(instance);
169
- if (hookResult instanceof Promise) {
170
- throw new AsyncDeactivationError(tokenDisplayName);
171
- }
172
- }
173
- }
152
+ for (const methodName of lifecycleMethods(binding, metadataReader, "preDestroy")) {
153
+ if (callHook(instance, methodName) instanceof Promise) {
154
+ throw new AsyncDeactivationError(tokenDisplayName);
174
155
  }
175
156
  }
176
157
  }
158
+ /** Whether the deferred table behind `#activationHooks` has had to be built. */
159
+ get isBuilt() {
160
+ return this.#activationHooks !== undefined;
161
+ }
162
+ }
163
+ const NO_METHODS = [];
164
+ /** The `@postConstruct` / `@preDestroy` methods a binding declares — only a class can declare any. */
165
+ function lifecycleMethods(binding, metadataReader, phase) {
166
+ if (binding.kind !== "class") {
167
+ return NO_METHODS;
168
+ }
169
+ return metadataReader.getLifecycleMetadata(binding.target)?.[phase] ?? NO_METHODS;
170
+ }
171
+ /** Invokes a hook by name, tolerating a name whose member is not (or no longer) a method. */
172
+ function callHook(instance, methodName) {
173
+ const method = instance[methodName];
174
+ return typeof method === "function" ? method.call(instance) : undefined;
177
175
  }
178
176
  //# sourceMappingURL=lifecycle.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/resolution/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,98 @@
1
+ import type { ResolutionFrame } from "#/types";
1
2
  /**
2
3
  * Where the cycle check switches from a linear `Array.includes` scan to an attached Set.
3
4
  *
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.
5
+ * @see `ARCHITECTURE.md` — the depth sweep this value comes from.
9
6
  *
10
7
  * @since 0.5.0-canary.7
11
8
  */
12
9
  export declare const RESOLUTION_SET_THRESHOLD = 32;
13
10
  /**
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.
11
+ * Marks a token as in-flight on this path, throwing if it is already there.
17
12
  *
18
- * Callers unmark with `resolutionPath.pop()` + `set?.delete(name)` on unwind.
13
+ * @remarks Unmark with `resolutionPath.pop()` plus `set?.delete(name)`. Sync only — the async lane
14
+ * never removes an entry, so it extends a branch instead; see {@link extendResolutionBranch}.
15
+ *
16
+ * @returns the membership set once the path is deep enough to carry one, else `undefined`.
17
+ *
18
+ * @since 0.5.0-canary.7
19
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;
20
+ export declare function enterResolutionPath(resolutionPath: Array<string>, tokenDisplayName: string): Set<string> | undefined;
21
+ declare const BRANCH_BRAND: unique symbol;
22
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.
23
+ * A resolution path one async branch owns, so appending to it cannot disturb another branch.
27
24
  *
28
- * @since 0.5.0-canary.7
25
+ * @remarks Only {@link extendResolutionBranch} mints one. That is what makes "may this lane append
26
+ * to this array" a question the compiler answers instead of a rule in a doc — a sync frame's path,
27
+ * which that frame will pop, is a plain `Array<string>` and cannot reach a level that owns its own.
28
+ *
29
+ * @since 0.5.0-canary.9
30
+ */
31
+ export type OwnedBranchPath = Array<string> & {
32
+ readonly [BRANCH_BRAND]: true;
33
+ };
34
+ /**
35
+ * The stack half of {@link OwnedBranchPath}, minted only by {@link extendResolutionStackBranch}.
36
+ *
37
+ * @since 0.5.0-canary.9
38
+ */
39
+ export type OwnedBranchStack = Array<ResolutionFrame> & {
40
+ readonly [BRANCH_BRAND]: true;
41
+ };
42
+ declare const BRANCH_DEPTH_BRAND: unique symbol;
43
+ /**
44
+ * How many leading entries of a path belong to one async branch.
45
+ *
46
+ * @remarks Branded so a bare number cannot be passed: a depth from anywhere but this branch silently
47
+ * re-parents a level.
48
+ *
49
+ * @since 0.5.0-canary.9
50
+ */
51
+ export type OwnedBranchDepth = number & {
52
+ readonly [BRANCH_DEPTH_BRAND]: true;
53
+ };
54
+ /**
55
+ * A path no async branch owns yet, so its first extension must copy rather than append.
56
+ *
57
+ * @since 0.5.0-canary.9
58
+ */
59
+ export declare const UNOWNED_BRANCH = -1;
60
+ /**
61
+ * How far into a path one extension may reach: this branch's own depth, or nobody's.
62
+ *
63
+ * @remarks A union rather than a sentinel hidden inside the branded number, so the two cases are
64
+ * visible at every signature that takes one and `=== UNOWNED_BRANCH` narrows to the owned case.
65
+ *
66
+ * @since 0.5.0-canary.9
67
+ */
68
+ export type BranchDepth = OwnedBranchDepth | typeof UNOWNED_BRANCH;
69
+ /**
70
+ * The depth a chain's first level extends from, over an array its caller just minted.
71
+ *
72
+ * @since 0.5.0-canary.9
73
+ */
74
+ export declare const ROOT_BRANCH: OwnedBranchDepth;
75
+ /**
76
+ * A branch's own depth: the length its path had when this level took it.
77
+ *
78
+ * @since 0.5.0-canary.9
79
+ */
80
+ export declare function branchDepthOf(branch: OwnedBranchPath): OwnedBranchDepth;
81
+ /**
82
+ * Extends one branch of an append-only path, throwing if the entry is already an ancestor.
83
+ *
84
+ * @remarks Appends in place while this branch still owns the next slot, and copies its own prefix
85
+ * once a sibling has claimed it. Nothing is ever removed, so no async level has to observe its own
86
+ * settlement to unwind — see `ARCHITECTURE.md`.
87
+ *
88
+ * @since 0.5.0-canary.9
89
+ */
90
+ export declare function extendResolutionBranch(resolutionPath: Array<string>, branchDepth: BranchDepth, tokenDisplayName: string): OwnedBranchPath;
91
+ /**
92
+ * The stack half of {@link extendResolutionBranch}; frames carry no cycle to detect.
93
+ *
94
+ * @since 0.5.0-canary.9
29
95
  */
30
- export declare function exitResolutionPath(resolutionPath: Array<string>): void;
96
+ export declare function extendResolutionStackBranch(resolutionStack: Array<ResolutionFrame>, branchDepth: BranchDepth, frame: ResolutionFrame): OwnedBranchStack;
97
+ export {};
31
98
  //# sourceMappingURL=resolution-path.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"resolution-path.d.ts","sourceRoot":"","sources":["../../src/resolution/resolution-path.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAG3C;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAapH;AAED,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEhF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE1F,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,OAAO,cAAc,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAQ,gBAAgB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC7B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,MAAM,GACvB,eAAe,CAkBjB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,EACvC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,eAAe,GACrB,gBAAgB,CAQlB"}