@codefast/di 0.5.0-canary.9 → 0.6.0

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 (266) hide show
  1. package/CHANGELOG.md +865 -0
  2. package/README.md +119 -30
  3. package/dist/ambient/active-container.d.ts +37 -0
  4. package/dist/ambient/active-container.d.ts.map +1 -0
  5. package/dist/ambient/active-container.js +41 -0
  6. package/dist/ambient/active-container.js.map +1 -0
  7. package/dist/container/binding-builders.d.ts +12 -8
  8. package/dist/container/binding-builders.d.ts.map +1 -1
  9. package/dist/container/binding-builders.js +56 -31
  10. package/dist/container/binding-builders.js.map +1 -1
  11. package/dist/container/container.d.ts +33 -19
  12. package/dist/container/container.d.ts.map +1 -1
  13. package/dist/container/container.js +279 -118
  14. package/dist/container/container.js.map +1 -1
  15. package/dist/{resolution → core}/binding-scope.d.ts +2 -2
  16. package/dist/core/binding-scope.d.ts.map +1 -0
  17. package/dist/core/binding-scope.js.map +1 -0
  18. package/dist/{binding.d.ts → core/binding.d.ts} +70 -15
  19. package/dist/core/binding.d.ts.map +1 -0
  20. package/dist/{binding.js → core/binding.js} +27 -12
  21. package/dist/core/binding.js.map +1 -0
  22. package/dist/core/constraint-requirement.d.ts +38 -0
  23. package/dist/core/constraint-requirement.d.ts.map +1 -0
  24. package/dist/core/constraint-requirement.js +28 -0
  25. package/dist/core/constraint-requirement.js.map +1 -0
  26. package/dist/{constructor-type.d.ts → core/constructor-type.d.ts} +1 -1
  27. package/dist/core/constructor-type.d.ts.map +1 -0
  28. package/dist/core/constructor-type.js.map +1 -0
  29. package/dist/{module.d.ts → core/module.d.ts} +5 -5
  30. package/dist/core/module.d.ts.map +1 -0
  31. package/dist/{module.js → core/module.js} +4 -4
  32. package/dist/core/module.js.map +1 -0
  33. package/dist/{registry.d.ts → core/registry.d.ts} +27 -7
  34. package/dist/core/registry.d.ts.map +1 -0
  35. package/dist/{registry.js → core/registry.js} +125 -52
  36. package/dist/core/registry.js.map +1 -0
  37. package/dist/core/tag.d.ts +80 -0
  38. package/dist/core/tag.d.ts.map +1 -0
  39. package/dist/core/tag.js +84 -0
  40. package/dist/core/tag.js.map +1 -0
  41. package/dist/{token.d.ts → core/token.d.ts} +2 -6
  42. package/dist/core/token.d.ts.map +1 -0
  43. package/dist/core/token.js +13 -0
  44. package/dist/core/token.js.map +1 -0
  45. package/dist/{types.d.ts → core/types.d.ts} +27 -21
  46. package/dist/core/types.d.ts.map +1 -0
  47. package/dist/core/types.js.map +1 -0
  48. package/dist/decorators/inject.d.ts +5 -49
  49. package/dist/decorators/inject.d.ts.map +1 -1
  50. package/dist/decorators/inject.js +34 -104
  51. package/dist/decorators/inject.js.map +1 -1
  52. package/dist/decorators/injectable.d.ts +25 -5
  53. package/dist/decorators/injectable.d.ts.map +1 -1
  54. package/dist/decorators/injectable.js +2 -3
  55. package/dist/decorators/injectable.js.map +1 -1
  56. package/dist/decorators/lifecycle-decorators.d.ts +4 -2
  57. package/dist/decorators/lifecycle-decorators.d.ts.map +1 -1
  58. package/dist/decorators/lifecycle-decorators.js +19 -25
  59. package/dist/decorators/lifecycle-decorators.js.map +1 -1
  60. package/dist/{resolution → errors}/diagnostics.d.ts +2 -0
  61. package/dist/errors/diagnostics.d.ts.map +1 -0
  62. package/dist/errors/diagnostics.js.map +1 -0
  63. package/dist/{errors.d.ts → errors/errors.d.ts} +89 -4
  64. package/dist/errors/errors.d.ts.map +1 -0
  65. package/dist/{errors.js → errors/errors.js} +129 -7
  66. package/dist/errors/errors.js.map +1 -0
  67. package/dist/index.d.ts +21 -14
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +15 -7
  70. package/dist/index.js.map +1 -1
  71. package/dist/injection/descriptor.d.ts +79 -0
  72. package/dist/injection/descriptor.d.ts.map +1 -0
  73. package/dist/injection/descriptor.js +118 -0
  74. package/dist/injection/descriptor.js.map +1 -0
  75. package/dist/{resolution → injection}/resolve-options.d.ts +21 -11
  76. package/dist/injection/resolve-options.d.ts.map +1 -0
  77. package/dist/injection/resolve-options.js +101 -0
  78. package/dist/injection/resolve-options.js.map +1 -0
  79. package/dist/introspection/dependency-graph.d.ts +16 -5
  80. package/dist/introspection/dependency-graph.d.ts.map +1 -1
  81. package/dist/introspection/dependency-graph.js +138 -57
  82. package/dist/introspection/dependency-graph.js.map +1 -1
  83. package/dist/introspection/graph-adapters/cytoscape.d.ts +6 -3
  84. package/dist/introspection/graph-adapters/cytoscape.d.ts.map +1 -1
  85. package/dist/introspection/graph-adapters/cytoscape.js +3 -0
  86. package/dist/introspection/graph-adapters/cytoscape.js.map +1 -1
  87. package/dist/introspection/graph-adapters/dot.d.ts.map +1 -1
  88. package/dist/introspection/graph-adapters/dot.js +12 -5
  89. package/dist/introspection/graph-adapters/dot.js.map +1 -1
  90. package/dist/introspection/graph-adapters/mermaid.d.ts +9 -0
  91. package/dist/introspection/graph-adapters/mermaid.d.ts.map +1 -0
  92. package/dist/introspection/graph-adapters/mermaid.js +47 -0
  93. package/dist/introspection/graph-adapters/mermaid.js.map +1 -0
  94. package/dist/introspection/graph-adapters/reactflow.d.ts +6 -3
  95. package/dist/introspection/graph-adapters/reactflow.d.ts.map +1 -1
  96. package/dist/introspection/graph-adapters/reactflow.js +5 -1
  97. package/dist/introspection/graph-adapters/reactflow.js.map +1 -1
  98. package/dist/introspection/inspector.d.ts +4 -4
  99. package/dist/introspection/inspector.d.ts.map +1 -1
  100. package/dist/introspection/inspector.js +10 -6
  101. package/dist/introspection/inspector.js.map +1 -1
  102. package/dist/lifecycle/lifecycle-manager.d.ts +27 -0
  103. package/dist/lifecycle/lifecycle-manager.d.ts.map +1 -0
  104. package/dist/{resolution/lifecycle.js → lifecycle/lifecycle-manager.js} +39 -9
  105. package/dist/lifecycle/lifecycle-manager.js.map +1 -0
  106. package/dist/lifecycle/scope-manager.d.ts +48 -0
  107. package/dist/lifecycle/scope-manager.d.ts.map +1 -0
  108. package/dist/lifecycle/scope-manager.js +135 -0
  109. package/dist/lifecycle/scope-manager.js.map +1 -0
  110. package/dist/metadata/metadata-reader-token.d.ts +1 -1
  111. package/dist/metadata/metadata-reader-token.d.ts.map +1 -1
  112. package/dist/metadata/metadata-reader-token.js +1 -1
  113. package/dist/metadata/metadata-reader-token.js.map +1 -1
  114. package/dist/metadata/metadata-types.d.ts +9 -9
  115. package/dist/metadata/metadata-types.d.ts.map +1 -1
  116. package/dist/metadata/symbol-metadata-reader.d.ts +19 -6
  117. package/dist/metadata/symbol-metadata-reader.d.ts.map +1 -1
  118. package/dist/metadata/symbol-metadata-reader.js +89 -9
  119. package/dist/metadata/symbol-metadata-reader.js.map +1 -1
  120. package/dist/metadata/verifying-metadata-reader.d.ts +16 -0
  121. package/dist/metadata/verifying-metadata-reader.d.ts.map +1 -0
  122. package/dist/metadata/verifying-metadata-reader.js +32 -0
  123. package/dist/metadata/verifying-metadata-reader.js.map +1 -0
  124. package/dist/resolution/{activation-need.d.ts → cache/activation-need.d.ts} +5 -5
  125. package/dist/resolution/cache/activation-need.d.ts.map +1 -0
  126. package/dist/resolution/cache/activation-need.js.map +1 -0
  127. package/dist/resolution/{binding-lookup-cache.d.ts → cache/binding-lookup-cache.d.ts} +6 -5
  128. package/dist/resolution/cache/binding-lookup-cache.d.ts.map +1 -0
  129. package/dist/resolution/cache/binding-lookup-cache.js.map +1 -0
  130. package/dist/resolution/cache/class-introspector.d.ts +66 -0
  131. package/dist/resolution/cache/class-introspector.d.ts.map +1 -0
  132. package/dist/resolution/cache/class-introspector.js +194 -0
  133. package/dist/resolution/cache/class-introspector.js.map +1 -0
  134. package/dist/resolution/context.d.ts +84 -0
  135. package/dist/resolution/context.d.ts.map +1 -0
  136. package/dist/resolution/{environment.js → context.js} +54 -80
  137. package/dist/resolution/context.js.map +1 -0
  138. package/dist/resolution/path/resolution-path.d.ts +94 -0
  139. package/dist/resolution/path/resolution-path.d.ts.map +1 -0
  140. package/dist/resolution/path/resolution-path.js +117 -0
  141. package/dist/resolution/path/resolution-path.js.map +1 -0
  142. package/dist/resolution/{instantiation-plan.d.ts → plan/instantiation-plan.d.ts} +30 -7
  143. package/dist/resolution/plan/instantiation-plan.d.ts.map +1 -0
  144. package/dist/resolution/plan/instantiation-plan.js +390 -0
  145. package/dist/resolution/plan/instantiation-plan.js.map +1 -0
  146. package/dist/resolution/resolver.d.ts +28 -28
  147. package/dist/resolution/resolver.d.ts.map +1 -1
  148. package/dist/resolution/resolver.js +552 -239
  149. package/dist/resolution/resolver.js.map +1 -1
  150. package/dist/resolution/select/binding-select.d.ts +34 -0
  151. package/dist/resolution/select/binding-select.d.ts.map +1 -0
  152. package/dist/resolution/select/binding-select.js +175 -0
  153. package/dist/resolution/select/binding-select.js.map +1 -0
  154. package/dist/resolution/{constraints.d.ts → select/constraints.d.ts} +13 -12
  155. package/dist/resolution/select/constraints.d.ts.map +1 -0
  156. package/dist/resolution/{constraints.js → select/constraints.js} +33 -22
  157. package/dist/resolution/select/constraints.js.map +1 -0
  158. package/package.json +160 -20
  159. package/src/ambient/active-container.ts +65 -0
  160. package/src/container/binding-builders.ts +72 -44
  161. package/src/container/container.ts +355 -170
  162. package/src/{resolution → core}/binding-scope.ts +2 -2
  163. package/src/{binding.ts → core/binding.ts} +101 -39
  164. package/src/core/constraint-requirement.ts +51 -0
  165. package/src/{constructor-type.ts → core/constructor-type.ts} +1 -1
  166. package/src/{module.ts → core/module.ts} +10 -10
  167. package/src/core/registry.ts +365 -0
  168. package/src/core/tag.ts +144 -0
  169. package/src/{token.ts → core/token.ts} +2 -14
  170. package/src/{types.ts → core/types.ts} +37 -34
  171. package/src/decorators/inject.ts +39 -175
  172. package/src/decorators/injectable.ts +40 -10
  173. package/src/decorators/lifecycle-decorators.ts +22 -34
  174. package/src/{resolution → errors}/diagnostics.ts +2 -0
  175. package/src/{errors.ts → errors/errors.ts} +152 -8
  176. package/src/index.ts +43 -15
  177. package/src/injection/descriptor.ts +206 -0
  178. package/src/injection/resolve-options.ts +144 -0
  179. package/src/introspection/dependency-graph.ts +223 -63
  180. package/src/introspection/graph-adapters/cytoscape.ts +9 -3
  181. package/src/introspection/graph-adapters/dot.ts +13 -5
  182. package/src/introspection/graph-adapters/mermaid.ts +61 -0
  183. package/src/introspection/graph-adapters/reactflow.ts +11 -4
  184. package/src/introspection/inspector.ts +16 -12
  185. package/src/{resolution/lifecycle.ts → lifecycle/lifecycle-manager.ts} +68 -32
  186. package/src/lifecycle/scope-manager.ts +156 -0
  187. package/src/metadata/metadata-reader-token.ts +2 -2
  188. package/src/metadata/metadata-types.ts +9 -9
  189. package/src/metadata/symbol-metadata-reader.ts +95 -18
  190. package/src/metadata/verifying-metadata-reader.ts +41 -0
  191. package/src/resolution/{activation-need.ts → cache/activation-need.ts} +8 -8
  192. package/src/resolution/{binding-lookup-cache.ts → cache/binding-lookup-cache.ts} +6 -5
  193. package/src/resolution/cache/class-introspector.ts +251 -0
  194. package/src/resolution/{environment.ts → context.ts} +84 -145
  195. package/src/resolution/path/resolution-path.ts +167 -0
  196. package/src/resolution/plan/instantiation-plan.ts +579 -0
  197. package/src/resolution/resolver.ts +635 -313
  198. package/src/resolution/select/binding-select.ts +210 -0
  199. package/src/resolution/select/constraints.ts +130 -0
  200. package/dist/binding.d.ts.map +0 -1
  201. package/dist/binding.js.map +0 -1
  202. package/dist/constructor-type.d.ts.map +0 -1
  203. package/dist/constructor-type.js.map +0 -1
  204. package/dist/errors.d.ts.map +0 -1
  205. package/dist/errors.js.map +0 -1
  206. package/dist/module.d.ts.map +0 -1
  207. package/dist/module.js.map +0 -1
  208. package/dist/registry.d.ts.map +0 -1
  209. package/dist/registry.js.map +0 -1
  210. package/dist/resolution/activation-need.d.ts.map +0 -1
  211. package/dist/resolution/activation-need.js.map +0 -1
  212. package/dist/resolution/binding-lookup-cache.d.ts.map +0 -1
  213. package/dist/resolution/binding-lookup-cache.js.map +0 -1
  214. package/dist/resolution/binding-scope.d.ts.map +0 -1
  215. package/dist/resolution/binding-scope.js.map +0 -1
  216. package/dist/resolution/binding-select.d.ts +0 -23
  217. package/dist/resolution/binding-select.d.ts.map +0 -1
  218. package/dist/resolution/binding-select.js +0 -121
  219. package/dist/resolution/binding-select.js.map +0 -1
  220. package/dist/resolution/class-introspector.d.ts +0 -27
  221. package/dist/resolution/class-introspector.d.ts.map +0 -1
  222. package/dist/resolution/class-introspector.js +0 -60
  223. package/dist/resolution/class-introspector.js.map +0 -1
  224. package/dist/resolution/constraints.d.ts.map +0 -1
  225. package/dist/resolution/constraints.js.map +0 -1
  226. package/dist/resolution/diagnostics.d.ts.map +0 -1
  227. package/dist/resolution/diagnostics.js.map +0 -1
  228. package/dist/resolution/environment.d.ts +0 -94
  229. package/dist/resolution/environment.d.ts.map +0 -1
  230. package/dist/resolution/environment.js.map +0 -1
  231. package/dist/resolution/instantiation-plan.d.ts.map +0 -1
  232. package/dist/resolution/instantiation-plan.js +0 -183
  233. package/dist/resolution/instantiation-plan.js.map +0 -1
  234. package/dist/resolution/lifecycle.d.ts +0 -23
  235. package/dist/resolution/lifecycle.d.ts.map +0 -1
  236. package/dist/resolution/lifecycle.js.map +0 -1
  237. package/dist/resolution/resolution-path.d.ts +0 -98
  238. package/dist/resolution/resolution-path.d.ts.map +0 -1
  239. package/dist/resolution/resolution-path.js +0 -98
  240. package/dist/resolution/resolution-path.js.map +0 -1
  241. package/dist/resolution/resolve-options.d.ts.map +0 -1
  242. package/dist/resolution/resolve-options.js +0 -56
  243. package/dist/resolution/resolve-options.js.map +0 -1
  244. package/dist/resolution/scope.d.ts +0 -28
  245. package/dist/resolution/scope.d.ts.map +0 -1
  246. package/dist/resolution/scope.js +0 -88
  247. package/dist/resolution/scope.js.map +0 -1
  248. package/dist/token.d.ts.map +0 -1
  249. package/dist/token.js +0 -22
  250. package/dist/token.js.map +0 -1
  251. package/dist/types.d.ts.map +0 -1
  252. package/dist/types.js.map +0 -1
  253. package/src/registry.ts +0 -282
  254. package/src/resolution/binding-select.ts +0 -154
  255. package/src/resolution/class-introspector.ts +0 -74
  256. package/src/resolution/constraints.ts +0 -121
  257. package/src/resolution/instantiation-plan.ts +0 -292
  258. package/src/resolution/resolution-path.ts +0 -156
  259. package/src/resolution/resolve-options.ts +0 -89
  260. package/src/resolution/scope.ts +0 -105
  261. /package/dist/{resolution → core}/binding-scope.js +0 -0
  262. /package/dist/{constructor-type.js → core/constructor-type.js} +0 -0
  263. /package/dist/{types.js → core/types.js} +0 -0
  264. /package/dist/{resolution → errors}/diagnostics.js +0 -0
  265. /package/dist/resolution/{activation-need.js → cache/activation-need.js} +0 -0
  266. /package/dist/resolution/{binding-lookup-cache.js → cache/binding-lookup-cache.js} +0 -0
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * Compiles a transient class or resolved-factory binding into a nested-constructor closure.
3
3
  *
4
- * @see `ARCHITECTURE.md` — the escape contract every dependency the compiler cannot inline must honour.
4
+ * @remarks A dependency the compiler cannot inline escapes to a resolver callback instead; the
5
+ * closure must stay callable for it, which is what bounds what may be inlined.
5
6
  */
6
- import type { Binding } from "#/binding";
7
+ import type { Binding } from "#/core/binding";
8
+ import type { Token } from "#/core/token";
9
+ import type { Constructor, ResolutionFrame, ResolveOptions } from "#/core/types";
7
10
  import type { ConstructorMetadata } from "#/metadata/metadata-types";
8
- import type { Token } from "#/token";
9
- import type { Constructor, ResolutionFrame, ResolveOptions } from "#/types";
10
11
  /**
11
12
  * Compilation asked to retry later (class lifecycle metadata not discovered yet).
12
13
  *
@@ -35,17 +36,29 @@ export interface InstantiationPlanDependencyEntry {
35
36
  * @since 0.5.0-canary.7
36
37
  */
37
38
  export interface InstantiationPlanHost {
38
- hasActivationHandlers(token: Token<unknown> | Constructor): boolean;
39
+ /** Owner-aware: container-level hooks belong to the binding's owner, which may be a parent. */
40
+ hasActivationHandlers(binding: Binding): boolean;
39
41
  /** Cached postConstruct presence — `undefined` until a runtime resolve discovers it. */
40
42
  knownPostConstruct(target: Constructor): boolean | undefined;
41
43
  needsActiveContainer(target: Constructor): boolean;
42
44
  getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
43
45
  /** Options-less lookup with alias hops folded; `null` when the fast lane can't answer. */
44
46
  lookupDependencyEntry(token: Token<unknown> | Constructor): InstantiationPlanDependencyEntry | null;
47
+ /**
48
+ * A name-only lookup a plan may bake in, or `null` when the answer is not the compiler's to make.
49
+ *
50
+ * @remarks Selection for a named request is an index hit *and* a predicate, and a predicate reads
51
+ * the resolution path — so only a candidate carrying none of one can be decided ahead of time.
52
+ */
53
+ lookupPathIndependentNamedEntry(token: Token<unknown> | Constructor, options: ResolveOptions & {
54
+ name: string;
55
+ }): InstantiationPlanDependencyEntry | null;
45
56
  /** The frame the interpreted path pushes for this binding, so escapes can replay it. */
46
57
  getResolutionFrame(binding: Binding): ResolutionFrame;
47
- /** Runtime resolve for an escaped dependency, seeded with the ancestors above it. */
48
- resolveEscaped(token: Token<unknown> | Constructor, options: ResolveOptions | undefined, arity: EscapeArity, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): unknown;
58
+ /** Runtime resolve for an escaped dependency, seeded with the ancestor frames above it. */
59
+ resolveEscaped(token: Token<unknown> | Constructor, options: ResolveOptions | undefined, arity: EscapeArity, resolutionStack: Array<ResolutionFrame>): unknown;
60
+ /** The async counterpart of {@link InstantiationPlanHost.resolveEscaped}, replaying the async dispatch. */
61
+ resolveEscapedAsync(token: Token<unknown> | Constructor, options: ResolveOptions | undefined, arity: EscapeArity, resolutionStack: Array<ResolutionFrame>): Promise<unknown>;
49
62
  }
50
63
  /**
51
64
  * Which resolve an escaped dependency replays — mirrors how the interpreted path dispatches
@@ -63,5 +76,15 @@ export declare class InstantiationPlanCompiler {
63
76
  compile(binding: Binding & {
64
77
  kind: "class" | "resolved";
65
78
  }): InstantiationPlanCompileResult;
79
+ /**
80
+ * Compiles a transient binding whose graph is statically visible, for the async entry point.
81
+ *
82
+ * @remarks Same gates as the sync lane; the differences are downstream — escapes replay the async
83
+ * dispatch, and a node whose dependencies may yield promises awaits them together, exactly as the
84
+ * interpreted async path does.
85
+ */
86
+ compileAsync(binding: Binding & {
87
+ kind: "class" | "resolved" | "resolved-async";
88
+ }): InstantiationPlanCompileResult;
66
89
  }
67
90
  //# sourceMappingURL=instantiation-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-plan.d.ts","sourceRoot":"","sources":["../../../src/resolution/plan/instantiation-plan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAIjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAMrE;;;;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;AA0DxF;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,+FAA+F;IAC/F,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IACjD,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;;;;;OAKG;IACH,+BAA+B,CAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EACnC,OAAO,EAAE,cAAc,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GACzC,gCAAgC,GAAG,IAAI,CAAC;IAC3C,wFAAwF;IACxF,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC;IACtD,2FAA2F;IAC3F,cAAc,CACZ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EACnC,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,KAAK,EAAE,WAAW,EAClB,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,GACtC,OAAO,CAAC;IACX,2GAA2G;IAC3G,mBAAmB,CACjB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EACnC,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,KAAK,EAAE,WAAW,EAClB,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,GACtC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;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;IA0MD;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG;QAAE,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,gBAAgB,CAAA;KAAE,GAAG,8BAA8B,CASjH;CAkMF"}
@@ -0,0 +1,390 @@
1
+ import { NO_INSTANCE } from "#/core/binding";
2
+ import { tokenName } from "#/core/token";
3
+ import { AsyncResolutionError } from "#/errors/errors";
4
+ import { injectionSlotToResolveOptions, isNameOnlyOptions } from "#/injection/resolve-options";
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.
7
+ const PLAN_DEPTH_LIMIT = 32;
8
+ /**
9
+ * Compilation asked to retry later (class lifecycle metadata not discovered yet).
10
+ *
11
+ * @since 0.5.0-canary.7
12
+ */
13
+ export const PLAN_RETRY = Symbol("di:plan-retry");
14
+ function allSynchronous(deps) {
15
+ for (let index = 0; index < deps.length; index += 1) {
16
+ if (deps[index].promiseShape !== "never") {
17
+ return false;
18
+ }
19
+ }
20
+ return true;
21
+ }
22
+ /**
23
+ * The promise-aware combinator: run every dep thunk, await them together, then apply.
24
+ *
25
+ * @remarks A dep's sync throw becomes that slot's rejection so its siblings still start — the
26
+ * interpreted path starts every sibling before the first rejection propagates, and so does this.
27
+ */
28
+ function settleThenApply(deps, apply) {
29
+ return () => {
30
+ const pending = new Array(deps.length);
31
+ for (let index = 0; index < deps.length; index += 1) {
32
+ try {
33
+ pending[index] = deps[index].run();
34
+ }
35
+ catch (dependencyError) {
36
+ pending[index] = Promise.reject(dependencyError);
37
+ }
38
+ }
39
+ return Promise.all(pending).then(apply);
40
+ };
41
+ }
42
+ /**
43
+ * @since 0.3.16-canary.1
44
+ */
45
+ export class InstantiationPlanCompiler {
46
+ #host;
47
+ constructor(host) {
48
+ this.#host = host;
49
+ }
50
+ compile(binding) {
51
+ return binding.kind === "class"
52
+ ? this.#compileClassPlan(binding, new Set(), 0, [])
53
+ : this.#compileResolvedPlan(binding, new Set(), 0, []);
54
+ }
55
+ /**
56
+ * Re-entry into the runtime resolver for a dependency the plan can't see through.
57
+ *
58
+ * The ancestors are fixed at compile time, so the seeds are built once; each call copies
59
+ * them because the resolver pushes and pops on the arrays it is given.
60
+ */
61
+ #compileEscapeThunk(token, ancestors, arity = "single", options) {
62
+ const host = this.#host;
63
+ const frames = ancestors.map((ancestor) => host.getResolutionFrame(ancestor));
64
+ return () => host.resolveEscaped(token, options, arity, [...frames]);
65
+ }
66
+ // A resolved binding declares its deps as explicit descriptors — same rules as
67
+ // class params, with the factory call (and its sync-only check) in place of `new`.
68
+ #compileResolvedPlan(binding, compileStack, depth, ancestors) {
69
+ if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding)) {
70
+ return null;
71
+ }
72
+ const factory = binding.factory;
73
+ const tokenDisplayName = tokenName(binding.token);
74
+ const depThunks = new Array(binding.deps.length);
75
+ const depAncestors = [...ancestors, binding];
76
+ compileStack.add(binding.id);
77
+ try {
78
+ for (let index = 0; index < binding.deps.length; index += 1) {
79
+ const thunk = this.#compileInjectionThunk(binding.deps[index], compileStack, depth, depAncestors);
80
+ if (thunk === PLAN_RETRY) {
81
+ return thunk;
82
+ }
83
+ depThunks[index] = thunk;
84
+ }
85
+ }
86
+ finally {
87
+ compileStack.delete(binding.id);
88
+ }
89
+ return () => {
90
+ const factoryResult = factory(...depThunks.map((thunk) => thunk()));
91
+ if (factoryResult instanceof Promise) {
92
+ throw new AsyncResolutionError(tokenDisplayName);
93
+ }
94
+ return factoryResult;
95
+ };
96
+ }
97
+ /**
98
+ * One dependency of a plan node — a constructor param or a `toResolved` descriptor.
99
+ *
100
+ * @remarks Anything but a plain required single dependency escapes to the runtime path.
101
+ */
102
+ #compileInjectionThunk(descriptor, compileStack, depth, ancestors) {
103
+ const token = descriptor.token;
104
+ const options = injectionSlotToResolveOptions(descriptor);
105
+ if (descriptor.multi) {
106
+ return this.#compileEscapeThunk(token, ancestors, "all", options);
107
+ }
108
+ if (descriptor.optional) {
109
+ return this.#compileEscapeThunk(token, ancestors, "optional", options);
110
+ }
111
+ if (options !== undefined) {
112
+ // A name the registry can settle without reading a path is a dependency like any other: it
113
+ // escapes only because it carries a criterion, not because anything about it is opaque.
114
+ if (isNameOnlyOptions(options)) {
115
+ const named = this.#host.lookupPathIndependentNamedEntry(token, options);
116
+ if (named !== null) {
117
+ return this.#compileDepThunk(named, compileStack, depth, ancestors, options);
118
+ }
119
+ }
120
+ return this.#compileEscapeThunk(token, ancestors, "single", options);
121
+ }
122
+ const entry = this.#host.lookupDependencyEntry(token);
123
+ if (entry === null) {
124
+ return this.#compileEscapeThunk(token, ancestors);
125
+ }
126
+ return this.#compileDepThunk(entry, compileStack, depth, ancestors);
127
+ }
128
+ #compileClassPlan(binding, compileStack, depth, ancestors) {
129
+ if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding)) {
130
+ return null;
131
+ }
132
+ const target = binding.target;
133
+ const hasPostConstruct = this.#host.knownPostConstruct(target);
134
+ if (hasPostConstruct === undefined) {
135
+ return PLAN_RETRY;
136
+ }
137
+ if (hasPostConstruct || this.#host.needsActiveContainer(target)) {
138
+ return null;
139
+ }
140
+ const invokable = target;
141
+ const meta = this.#host.getConstructorMetadata(target);
142
+ if (meta === undefined) {
143
+ // Metadata-less classes with required params throw on the runtime path — keep them there.
144
+ return target.length === 0 ? () => new invokable() : null;
145
+ }
146
+ const params = meta.params;
147
+ if (params.length === 0) {
148
+ return () => new invokable();
149
+ }
150
+ const depThunks = new Array(params.length);
151
+ const depAncestors = [...ancestors, binding];
152
+ compileStack.add(binding.id);
153
+ try {
154
+ for (let index = 0; index < params.length; index += 1) {
155
+ const thunk = this.#compileInjectionThunk(params[index], compileStack, depth, depAncestors);
156
+ if (thunk === PLAN_RETRY) {
157
+ return thunk;
158
+ }
159
+ depThunks[index] = thunk;
160
+ }
161
+ }
162
+ finally {
163
+ compileStack.delete(binding.id);
164
+ }
165
+ switch (depThunks.length) {
166
+ case 1: {
167
+ const dep0 = depThunks[0];
168
+ return () => new invokable(dep0());
169
+ }
170
+ case 2: {
171
+ const dep0 = depThunks[0];
172
+ const dep1 = depThunks[1];
173
+ return () => new invokable(dep0(), dep1());
174
+ }
175
+ case 3: {
176
+ const dep0 = depThunks[0];
177
+ const dep1 = depThunks[1];
178
+ const dep2 = depThunks[2];
179
+ return () => new invokable(dep0(), dep1(), dep2());
180
+ }
181
+ default:
182
+ return () => new invokable(...depThunks.map((thunk) => thunk()));
183
+ }
184
+ }
185
+ #compileDepThunk(entry, compileStack, depth, ancestors, options) {
186
+ const { binding } = entry;
187
+ if (binding.kind === "constant" && binding.onActivation === undefined) {
188
+ if (!this.#host.hasActivationHandlers(binding)) {
189
+ const value = binding.value;
190
+ return () => value;
191
+ }
192
+ }
193
+ const scope = binding.scope;
194
+ if (scope === "singleton") {
195
+ // Cached-singleton read; the first materialization escapes so it sees the same ancestors
196
+ // (and therefore the same cycle detection) the interpreted path would have built.
197
+ const escape = this.#compileEscapeThunk(binding.token, ancestors, "single", options);
198
+ const singletonBinding = binding;
199
+ return () => {
200
+ const cached = singletonBinding.instance;
201
+ return cached === NO_INSTANCE ? escape() : cached;
202
+ };
203
+ }
204
+ if (scope === "transient" &&
205
+ binding.kind === "class" &&
206
+ depth < PLAN_DEPTH_LIMIT &&
207
+ !compileStack.has(binding.id)) {
208
+ const inlined = this.#compileClassPlan(binding, compileStack, depth + 1, ancestors);
209
+ if (inlined !== null) {
210
+ return inlined;
211
+ }
212
+ }
213
+ // Anything opaque — a factory, a scoped binding, an activation hook, a class the compiler
214
+ // declined — runs on the runtime path, seeded with this plan's ancestors.
215
+ return this.#compileEscapeThunk(binding.token, ancestors, "single", options);
216
+ }
217
+ // ── The async lane ─────────────────────────────────────────────────────────────────────────────────────────────────
218
+ /**
219
+ * Compiles a transient binding whose graph is statically visible, for the async entry point.
220
+ *
221
+ * @remarks Same gates as the sync lane; the differences are downstream — escapes replay the async
222
+ * dispatch, and a node whose dependencies may yield promises awaits them together, exactly as the
223
+ * interpreted async path does.
224
+ */
225
+ compileAsync(binding) {
226
+ const node = binding.kind === "class"
227
+ ? this.#compileAsyncClassNode(binding, new Set(), 0, [])
228
+ : this.#compileAsyncResolvedNode(binding, new Set(), 0, []);
229
+ if (node === null || node === PLAN_RETRY) {
230
+ return node;
231
+ }
232
+ return node.run;
233
+ }
234
+ #compileAsyncEscapeThunk(token, ancestors, arity = "single", options) {
235
+ const host = this.#host;
236
+ const frames = ancestors.map((ancestor) => host.getResolutionFrame(ancestor));
237
+ return {
238
+ run: () => host.resolveEscapedAsync(token, options, arity, [...frames]),
239
+ promiseShape: "always",
240
+ };
241
+ }
242
+ #compileAsyncClassNode(binding, compileStack, depth, ancestors) {
243
+ if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding)) {
244
+ return null;
245
+ }
246
+ const target = binding.target;
247
+ const hasPostConstruct = this.#host.knownPostConstruct(target);
248
+ if (hasPostConstruct === undefined) {
249
+ return PLAN_RETRY;
250
+ }
251
+ if (hasPostConstruct || this.#host.needsActiveContainer(target)) {
252
+ return null;
253
+ }
254
+ const invokable = target;
255
+ const meta = this.#host.getConstructorMetadata(target);
256
+ if (meta === undefined) {
257
+ // Metadata-less classes with required params throw on the runtime path — keep them there.
258
+ return target.length === 0 ? { run: () => new invokable(), promiseShape: "never" } : null;
259
+ }
260
+ const params = meta.params;
261
+ if (params.length === 0) {
262
+ return { run: () => new invokable(), promiseShape: "never" };
263
+ }
264
+ const depThunks = new Array(params.length);
265
+ const depAncestors = [...ancestors, binding];
266
+ compileStack.add(binding.id);
267
+ try {
268
+ for (let index = 0; index < params.length; index += 1) {
269
+ const thunk = this.#compileAsyncInjectionThunk(params[index], compileStack, depth, depAncestors);
270
+ if (thunk === PLAN_RETRY) {
271
+ return thunk;
272
+ }
273
+ depThunks[index] = thunk;
274
+ }
275
+ }
276
+ finally {
277
+ compileStack.delete(binding.id);
278
+ }
279
+ if (allSynchronous(depThunks)) {
280
+ switch (depThunks.length) {
281
+ case 1: {
282
+ const dep0 = depThunks[0].run;
283
+ return { run: () => new invokable(dep0()), promiseShape: "never" };
284
+ }
285
+ case 2: {
286
+ const dep0 = depThunks[0].run;
287
+ const dep1 = depThunks[1].run;
288
+ return { run: () => new invokable(dep0(), dep1()), promiseShape: "never" };
289
+ }
290
+ default:
291
+ return {
292
+ run: () => new invokable(...depThunks.map((thunk) => thunk.run())),
293
+ promiseShape: "never",
294
+ };
295
+ }
296
+ }
297
+ return { run: settleThenApply(depThunks, (values) => new invokable(...values)), promiseShape: "always" };
298
+ }
299
+ #compileAsyncResolvedNode(binding, compileStack, depth, ancestors) {
300
+ if (binding.onActivation !== undefined || this.#host.hasActivationHandlers(binding)) {
301
+ return null;
302
+ }
303
+ const factory = binding.factory;
304
+ const depThunks = new Array(binding.deps.length);
305
+ const depAncestors = [...ancestors, binding];
306
+ compileStack.add(binding.id);
307
+ try {
308
+ for (let index = 0; index < binding.deps.length; index += 1) {
309
+ const thunk = this.#compileAsyncInjectionThunk(binding.deps[index], compileStack, depth, depAncestors);
310
+ if (thunk === PLAN_RETRY) {
311
+ return thunk;
312
+ }
313
+ depThunks[index] = thunk;
314
+ }
315
+ }
316
+ finally {
317
+ compileStack.delete(binding.id);
318
+ }
319
+ // A sync-kind factory may still hand back a promise on this path — the async entry awaits it,
320
+ // so the consumer is told to as well.
321
+ const directShape = binding.kind === "resolved-async" ? "always" : "maybe";
322
+ if (allSynchronous(depThunks)) {
323
+ return { run: () => factory(...depThunks.map((thunk) => thunk.run())), promiseShape: directShape };
324
+ }
325
+ return { run: settleThenApply(depThunks, (values) => factory(...values)), promiseShape: "always" };
326
+ }
327
+ /** Mirrors {@link InstantiationPlanCompiler.#compileInjectionThunk}, escaping through the async dispatch. */
328
+ #compileAsyncInjectionThunk(descriptor, compileStack, depth, ancestors) {
329
+ const token = descriptor.token;
330
+ const options = injectionSlotToResolveOptions(descriptor);
331
+ if (descriptor.multi) {
332
+ return this.#compileAsyncEscapeThunk(token, ancestors, "all", options);
333
+ }
334
+ if (descriptor.optional) {
335
+ return this.#compileAsyncEscapeThunk(token, ancestors, "optional", options);
336
+ }
337
+ if (options !== undefined) {
338
+ if (isNameOnlyOptions(options)) {
339
+ const named = this.#host.lookupPathIndependentNamedEntry(token, options);
340
+ if (named !== null) {
341
+ return this.#compileAsyncDepThunk(named, compileStack, depth, ancestors, options);
342
+ }
343
+ }
344
+ return this.#compileAsyncEscapeThunk(token, ancestors, "single", options);
345
+ }
346
+ const entry = this.#host.lookupDependencyEntry(token);
347
+ if (entry === null) {
348
+ return this.#compileAsyncEscapeThunk(token, ancestors);
349
+ }
350
+ return this.#compileAsyncDepThunk(entry, compileStack, depth, ancestors);
351
+ }
352
+ #compileAsyncDepThunk(entry, compileStack, depth, ancestors, options) {
353
+ const { binding } = entry;
354
+ if (binding.kind === "constant" && binding.onActivation === undefined) {
355
+ if (!this.#host.hasActivationHandlers(binding)) {
356
+ const value = binding.value;
357
+ // The interpreted path funnels every dependency through an await, which unwraps a
358
+ // promise-valued constant — so one compiles as needing that same await.
359
+ return { run: () => value, promiseShape: value instanceof Promise ? "always" : "never" };
360
+ }
361
+ }
362
+ const scope = binding.scope;
363
+ if (scope === "singleton") {
364
+ // Cached-singleton read; the cold materialization escapes with the same criteria.
365
+ const escape = this.#compileAsyncEscapeThunk(binding.token, ancestors, "single", options);
366
+ const singletonBinding = binding;
367
+ return {
368
+ run: () => {
369
+ const cached = singletonBinding.instance;
370
+ return cached === NO_INSTANCE ? escape.run() : cached;
371
+ },
372
+ promiseShape: "maybe",
373
+ };
374
+ }
375
+ if (scope === "transient" && depth < PLAN_DEPTH_LIMIT && !compileStack.has(binding.id)) {
376
+ let inlined = null;
377
+ if (binding.kind === "class") {
378
+ inlined = this.#compileAsyncClassNode(binding, compileStack, depth + 1, ancestors);
379
+ }
380
+ else if (binding.kind === "resolved" || binding.kind === "resolved-async") {
381
+ inlined = this.#compileAsyncResolvedNode(binding, compileStack, depth + 1, ancestors);
382
+ }
383
+ if (inlined !== null) {
384
+ return inlined;
385
+ }
386
+ }
387
+ return this.#compileAsyncEscapeThunk(binding.token, ancestors, "single", options);
388
+ }
389
+ }
390
+ //# sourceMappingURL=instantiation-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-plan.js","sourceRoot":"","sources":["../../../src/resolution/plan/instantiation-plan.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,34 @@
1
- import type { Binding } from "#/binding";
2
1
  import type { Container } from "#/container/container";
2
+ import type { Binding } from "#/core/binding";
3
+ import type { BindingRegistry } from "#/core/registry";
4
+ import type { Token } from "#/core/token";
5
+ import type { Constructor, ResolutionFrame, ResolveOptions } from "#/core/types";
6
+ import type { ResolutionDiagnostics } from "#/errors/diagnostics";
7
+ import type { LifecycleManager } from "#/lifecycle/lifecycle-manager";
8
+ import type { ScopeManager } from "#/lifecycle/scope-manager";
3
9
  import type { MetadataReader } from "#/metadata/metadata-types";
4
- import type { BindingRegistry } from "#/registry";
5
- import type { DefaultLookupEntry } from "#/resolution/binding-lookup-cache";
6
- import type { ResolutionDiagnostics } from "#/resolution/diagnostics";
7
- import type { ResolverCallbacks } from "#/resolution/environment";
8
- import type { LifecycleManager } from "#/resolution/lifecycle";
9
- import type { BranchDepth } from "#/resolution/resolution-path";
10
- import type { ScopeManager } from "#/resolution/scope";
11
- import type { Token } from "#/token";
12
- import type { Constructor, ResolutionFrame, ResolveOptions } from "#/types";
10
+ import type { DefaultLookupEntry } from "#/resolution/cache/binding-lookup-cache";
11
+ import type { ResolverCallbacks } from "#/resolution/context";
12
+ import type { BranchDepth } from "#/resolution/path/resolution-path";
13
13
  /**
14
14
  * @since 0.3.16-canary.0
15
15
  */
16
16
  export declare class DependencyResolver implements ResolverCallbacks {
17
17
  #private;
18
18
  /**
19
- * The pair a top-level **sync** resolve reuses instead of minting two arrays per call.
19
+ * The stack a top-level **sync** resolve reuses instead of minting an array per call.
20
20
  *
21
- * @remarks Read directly rather than through an accessor returning both: a shallow resolve is one
22
- * top-level call, so a call and an object literal there are not amortised over anything. Every sync
23
- * lane pops what it pushes, so `rootStack.length === 0` means no resolve holds the pair; async
24
- * appends without popping and mints its own. Keeping the pair stable is also what lets a pooled
25
- * context skip storing pointers it already holds.
21
+ * @remarks Read directly rather than through an accessor: a shallow resolve is one top-level
22
+ * call, so a call there is not amortised over anything. Every sync lane pops what it pushes, so
23
+ * `rootStack.length === 0` means no resolve holds the stack; async appends without popping and
24
+ * mints its own. Keeping it stable is also what lets a pooled context skip re-storing it.
26
25
  */
27
- readonly rootPath: Array<string>;
28
26
  readonly rootStack: Array<ResolutionFrame>;
29
27
  constructor(registry: BindingRegistry, scope: ScopeManager, lifecycle: LifecycleManager, metadataReader: MetadataReader, container: Container, parent: DependencyResolver | undefined);
30
- /** Structural counts for {@link RESOLUTION_DIAGNOSTICS}; see `resolution/diagnostics.ts`. */
31
- describeCaches(): Pick<ResolutionDiagnostics, "compiledPlanCount" | "syncContextPoolSize">;
28
+ /** The reader this resolver was built with, which is the one its container answers with. */
29
+ get metadataReader(): MetadataReader;
30
+ /** Structural counts for the {@link ResolutionDiagnostics} a container reports. */
31
+ describeCaches(): Pick<ResolutionDiagnostics, "compiledPlanCount" | "compiledAsyncPlanCount" | "syncContextPoolSize">;
32
32
  /**
33
33
  * Binding lookup aligned with `resolve` — used by `Container.validate` without instantiating.
34
34
  */
@@ -37,19 +37,19 @@ export declare class DependencyResolver implements ResolverCallbacks {
37
37
  * Mirrors {@link DependencyResolver.resolveAll} candidate selection only (no instantiation).
38
38
  */
39
39
  peekCandidateBindingsForValidate(token: Token<unknown> | Constructor, options: ResolveOptions | undefined): ReadonlyArray<Binding>;
40
- resolveFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
41
- resolve<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
42
- resolveOptional<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value | undefined;
43
- resolveAll<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Array<Value>;
44
- resolveAsyncFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>, branchDepth: BranchDepth): Promise<Value>;
45
- resolveAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>, branchDepth?: BranchDepth): Promise<Value>;
46
- resolveOptionalAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>, branchDepth?: BranchDepth): Promise<Value | undefined>;
47
- resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>, branchDepth?: BranchDepth): Promise<Array<Value>>;
40
+ resolveFromContext<Value>(token: Token<Value> | Constructor<Value>, resolutionStack: Array<ResolutionFrame>): Value;
41
+ resolve<Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionStack: Array<ResolutionFrame>): Value;
42
+ resolveOptional<Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionStack: Array<ResolutionFrame>): Value | undefined;
43
+ resolveAll<Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionStack: Array<ResolutionFrame>): Array<Value>;
44
+ resolveAsyncFromContext<Value>(token: Token<Value> | Constructor<Value>, resolutionStack: Array<ResolutionFrame>, branchDepth: BranchDepth): Promise<Value>;
45
+ resolveAsync<Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionStack: Array<ResolutionFrame>, branchDepth?: BranchDepth): Promise<Value>;
46
+ resolveOptionalAsync<Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionStack: Array<ResolutionFrame>, branchDepth?: BranchDepth): Promise<Value | undefined>;
47
+ resolveAllAsync<Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionStack: Array<ResolutionFrame>, branchDepth?: BranchDepth): Promise<Array<Value>>;
48
48
  /**
49
49
  * Entry for a request a factory makes from inside an open synchronous cascade.
50
50
  *
51
51
  * @remarks A request arriving with no cascade open came out of a continuation, so its ancestors
52
- * are on no call stack — it escapes to the branch lane. See `ARCHITECTURE.md`.
52
+ * are on no call stack — it escapes to the branch lane.
53
53
  */
54
54
  resolveAsyncFromCascade(token: Token<unknown> | Constructor): Promise<unknown>;
55
55
  /** Entry for a resolve the container starts, which opens the cascade rather than joining one. */
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/resolver.ts"],"names":[],"mappings":"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"}