@codefast/di 0.5.0-canary.5 → 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 (214) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +73 -496
  3. package/dist/binding.d.ts +211 -0
  4. package/dist/binding.d.ts.map +1 -0
  5. package/dist/binding.js +46 -0
  6. package/dist/binding.js.map +1 -0
  7. package/dist/{constructor-type.d.mts → constructor-type.d.ts} +3 -5
  8. package/dist/constructor-type.d.ts.map +1 -0
  9. package/dist/constructor-type.js +2 -0
  10. package/dist/constructor-type.js.map +1 -0
  11. package/dist/container/binding-builders.d.ts +35 -0
  12. package/dist/container/binding-builders.d.ts.map +1 -0
  13. package/dist/container/binding-builders.js +247 -0
  14. package/dist/container/binding-builders.js.map +1 -0
  15. package/dist/container/container.d.ts +58 -0
  16. package/dist/container/container.d.ts.map +1 -0
  17. package/dist/container/container.js +641 -0
  18. package/dist/container/container.js.map +1 -0
  19. package/dist/decorators/inject.d.ts +57 -0
  20. package/dist/decorators/inject.d.ts.map +1 -0
  21. package/dist/decorators/inject.js +145 -0
  22. package/dist/decorators/inject.js.map +1 -0
  23. package/dist/decorators/injectable.d.ts +29 -0
  24. package/dist/decorators/injectable.d.ts.map +1 -0
  25. package/dist/decorators/injectable.js +53 -0
  26. package/dist/decorators/injectable.js.map +1 -0
  27. package/dist/decorators/lifecycle-decorators.d.ts +9 -0
  28. package/dist/decorators/lifecycle-decorators.d.ts.map +1 -0
  29. package/dist/decorators/lifecycle-decorators.js +40 -0
  30. package/dist/decorators/lifecycle-decorators.js.map +1 -0
  31. package/dist/errors.d.ts +150 -0
  32. package/dist/errors.d.ts.map +1 -0
  33. package/dist/errors.js +197 -0
  34. package/dist/errors.js.map +1 -0
  35. package/dist/index.d.ts +30 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +25 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/introspection/dependency-graph.d.ts +40 -0
  40. package/dist/introspection/dependency-graph.d.ts.map +1 -0
  41. package/dist/introspection/dependency-graph.js +66 -0
  42. package/dist/introspection/dependency-graph.js.map +1 -0
  43. package/dist/introspection/graph-adapters/cytoscape.d.ts +33 -0
  44. package/dist/introspection/graph-adapters/cytoscape.d.ts.map +1 -0
  45. package/dist/introspection/graph-adapters/cytoscape.js +30 -0
  46. package/dist/introspection/graph-adapters/cytoscape.js.map +1 -0
  47. package/dist/introspection/graph-adapters/dot.d.ts +6 -0
  48. package/dist/introspection/graph-adapters/dot.d.ts.map +1 -0
  49. package/dist/introspection/graph-adapters/dot.js +18 -0
  50. package/dist/introspection/graph-adapters/dot.js.map +1 -0
  51. package/dist/introspection/graph-adapters/reactflow.d.ts +38 -0
  52. package/dist/introspection/graph-adapters/reactflow.d.ts.map +1 -0
  53. package/dist/introspection/graph-adapters/reactflow.js +33 -0
  54. package/dist/introspection/graph-adapters/reactflow.js.map +1 -0
  55. package/dist/introspection/inspector.d.ts +39 -0
  56. package/dist/introspection/inspector.d.ts.map +1 -0
  57. package/dist/introspection/inspector.js +82 -0
  58. package/dist/introspection/inspector.js.map +1 -0
  59. package/dist/metadata/{metadata-keys.d.mts → metadata-keys.d.ts} +5 -7
  60. package/dist/metadata/metadata-keys.d.ts.map +1 -0
  61. package/dist/metadata/metadata-keys.js +25 -0
  62. package/dist/metadata/metadata-keys.js.map +1 -0
  63. package/dist/metadata/metadata-reader-token.d.ts +7 -0
  64. package/dist/metadata/metadata-reader-token.d.ts.map +1 -0
  65. package/dist/metadata/metadata-reader-token.js +6 -0
  66. package/dist/metadata/metadata-reader-token.js.map +1 -0
  67. package/dist/metadata/metadata-types.d.ts +48 -0
  68. package/dist/metadata/metadata-types.d.ts.map +1 -0
  69. package/dist/metadata/metadata-types.js +2 -0
  70. package/dist/metadata/metadata-types.js.map +1 -0
  71. package/dist/metadata/symbol-metadata-reader.d.ts +20 -0
  72. package/dist/metadata/symbol-metadata-reader.d.ts.map +1 -0
  73. package/dist/metadata/symbol-metadata-reader.js +34 -0
  74. package/dist/metadata/symbol-metadata-reader.js.map +1 -0
  75. package/dist/module.d.ts +67 -0
  76. package/dist/module.d.ts.map +1 -0
  77. package/dist/module.js +54 -0
  78. package/dist/module.js.map +1 -0
  79. package/dist/registry.d.ts +33 -0
  80. package/dist/registry.d.ts.map +1 -0
  81. package/dist/registry.js +249 -0
  82. package/dist/registry.js.map +1 -0
  83. package/dist/resolution/binding-scope.d.ts +10 -0
  84. package/dist/resolution/binding-scope.d.ts.map +1 -0
  85. package/dist/resolution/binding-scope.js +24 -0
  86. package/dist/resolution/binding-scope.js.map +1 -0
  87. package/dist/resolution/binding-select.d.ts +16 -0
  88. package/dist/resolution/binding-select.d.ts.map +1 -0
  89. package/dist/resolution/binding-select.js +143 -0
  90. package/dist/resolution/binding-select.js.map +1 -0
  91. package/dist/resolution/constraints.d.ts +51 -0
  92. package/dist/resolution/constraints.d.ts.map +1 -0
  93. package/dist/resolution/constraints.js +88 -0
  94. package/dist/resolution/constraints.js.map +1 -0
  95. package/dist/resolution/environment.d.ts +47 -0
  96. package/dist/resolution/environment.d.ts.map +1 -0
  97. package/dist/resolution/environment.js +100 -0
  98. package/dist/resolution/environment.js.map +1 -0
  99. package/dist/resolution/instantiation-plan.d.ts +67 -0
  100. package/dist/resolution/instantiation-plan.d.ts.map +1 -0
  101. package/dist/resolution/instantiation-plan.js +163 -0
  102. package/dist/resolution/instantiation-plan.js.map +1 -0
  103. package/dist/resolution/lifecycle.d.ts +21 -0
  104. package/dist/resolution/lifecycle.d.ts.map +1 -0
  105. package/dist/resolution/lifecycle.js +178 -0
  106. package/dist/resolution/lifecycle.js.map +1 -0
  107. package/dist/resolution/resolution-path.d.ts +31 -0
  108. package/dist/resolution/resolution-path.d.ts.map +1 -0
  109. package/dist/resolution/resolution-path.js +53 -0
  110. package/dist/resolution/resolution-path.js.map +1 -0
  111. package/dist/resolution/resolve-options.d.ts +19 -0
  112. package/dist/resolution/resolve-options.d.ts.map +1 -0
  113. package/dist/resolution/resolve-options.js +32 -0
  114. package/dist/resolution/resolve-options.js.map +1 -0
  115. package/dist/resolution/resolver.d.ts +35 -0
  116. package/dist/resolution/resolver.d.ts.map +1 -0
  117. package/dist/resolution/resolver.js +1320 -0
  118. package/dist/resolution/resolver.js.map +1 -0
  119. package/dist/resolution/scope.d.ts +32 -0
  120. package/dist/resolution/scope.d.ts.map +1 -0
  121. package/dist/resolution/scope.js +76 -0
  122. package/dist/resolution/scope.js.map +1 -0
  123. package/dist/token.d.ts +23 -0
  124. package/dist/token.d.ts.map +1 -0
  125. package/dist/token.js +22 -0
  126. package/dist/token.js.map +1 -0
  127. package/dist/types.d.ts +90 -0
  128. package/dist/types.d.ts.map +1 -0
  129. package/dist/types.js +2 -0
  130. package/dist/types.js.map +1 -0
  131. package/package.json +143 -120
  132. package/src/binding.ts +38 -22
  133. package/src/container/binding-builders.ts +397 -0
  134. package/src/container/container.ts +838 -0
  135. package/src/decorators/inject.ts +16 -3
  136. package/src/decorators/injectable.ts +3 -3
  137. package/src/index.ts +14 -7
  138. package/src/{dependency-graph.ts → introspection/dependency-graph.ts} +1 -1
  139. package/src/{graph-adapters → introspection/graph-adapters}/cytoscape.ts +1 -1
  140. package/src/{graph-adapters → introspection/graph-adapters}/dot.ts +1 -1
  141. package/src/{graph-adapters → introspection/graph-adapters}/reactflow.ts +13 -2
  142. package/src/{inspector.ts → introspection/inspector.ts} +26 -21
  143. package/src/metadata/symbol-metadata-reader.ts +4 -4
  144. package/src/module.ts +14 -6
  145. package/src/registry.ts +115 -61
  146. package/src/{binding-select.ts → resolution/binding-select.ts} +16 -3
  147. package/src/{environment.ts → resolution/environment.ts} +35 -35
  148. package/src/resolution/instantiation-plan.ts +240 -0
  149. package/src/{lifecycle.ts → resolution/lifecycle.ts} +20 -13
  150. package/src/resolution/resolution-path.ts +77 -0
  151. package/src/resolution/resolver.ts +1755 -0
  152. package/src/{scope.ts → resolution/scope.ts} +35 -18
  153. package/src/token.ts +0 -3
  154. package/dist/binding-scope.d.mts +0 -13
  155. package/dist/binding-scope.mjs +0 -21
  156. package/dist/binding-select.d.mts +0 -19
  157. package/dist/binding-select.mjs +0 -72
  158. package/dist/binding.d.mts +0 -191
  159. package/dist/binding.mjs +0 -36
  160. package/dist/constraints.d.mts +0 -55
  161. package/dist/constraints.mjs +0 -87
  162. package/dist/constructor-type.mjs +0 -1
  163. package/dist/container.d.mts +0 -62
  164. package/dist/container.mjs +0 -741
  165. package/dist/decorators/inject.d.mts +0 -49
  166. package/dist/decorators/inject.mjs +0 -136
  167. package/dist/decorators/injectable.d.mts +0 -32
  168. package/dist/decorators/injectable.mjs +0 -57
  169. package/dist/decorators/lifecycle-decorators.d.mts +0 -11
  170. package/dist/decorators/lifecycle-decorators.mjs +0 -38
  171. package/dist/dependency-graph.d.mts +0 -43
  172. package/dist/dependency-graph.mjs +0 -63
  173. package/dist/environment.d.mts +0 -55
  174. package/dist/environment.mjs +0 -98
  175. package/dist/errors.d.mts +0 -153
  176. package/dist/errors.mjs +0 -197
  177. package/dist/graph-adapters/cytoscape.d.mts +0 -36
  178. package/dist/graph-adapters/cytoscape.mjs +0 -26
  179. package/dist/graph-adapters/dot.d.mts +0 -9
  180. package/dist/graph-adapters/dot.mjs +0 -20
  181. package/dist/graph-adapters/reactflow.d.mts +0 -41
  182. package/dist/graph-adapters/reactflow.mjs +0 -29
  183. package/dist/index.d.mts +0 -18
  184. package/dist/index.mjs +0 -12
  185. package/dist/inspector.d.mts +0 -48
  186. package/dist/inspector.mjs +0 -71
  187. package/dist/lifecycle.d.mts +0 -25
  188. package/dist/lifecycle.mjs +0 -118
  189. package/dist/metadata/metadata-keys.mjs +0 -27
  190. package/dist/metadata/metadata-reader-token.d.mts +0 -10
  191. package/dist/metadata/metadata-reader-token.mjs +0 -8
  192. package/dist/metadata/metadata-types.d.mts +0 -51
  193. package/dist/metadata/metadata-types.mjs +0 -1
  194. package/dist/metadata/symbol-metadata-reader.d.mts +0 -23
  195. package/dist/metadata/symbol-metadata-reader.mjs +0 -29
  196. package/dist/module.d.mts +0 -62
  197. package/dist/module.mjs +0 -42
  198. package/dist/registry.d.mts +0 -45
  199. package/dist/registry.mjs +0 -163
  200. package/dist/resolve-options.d.mts +0 -22
  201. package/dist/resolve-options.mjs +0 -28
  202. package/dist/resolver.d.mts +0 -94
  203. package/dist/resolver.mjs +0 -767
  204. package/dist/scope.d.mts +0 -28
  205. package/dist/scope.mjs +0 -58
  206. package/dist/token.d.mts +0 -25
  207. package/dist/token.mjs +0 -22
  208. package/dist/types.d.mts +0 -92
  209. package/dist/types.mjs +0 -1
  210. package/src/container.ts +0 -1141
  211. package/src/resolver.ts +0 -1626
  212. /package/src/{binding-scope.ts → resolution/binding-scope.ts} +0 -0
  213. /package/src/{constraints.ts → resolution/constraints.ts} +0 -0
  214. /package/src/{resolve-options.ts → resolution/resolve-options.ts} +0 -0
@@ -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,19 @@
1
+ import type { BindingSlot } from "#/binding";
2
+ import type { BindingTag, ResolveOptions } from "#/types";
3
+ /**
4
+ * Builds a {@link ResolveOptions} safe for `exactOptionalPropertyTypes`:
5
+ * omits keys instead of assigning `undefined`.
6
+ *
7
+ * @since 0.3.16-canary.0
8
+ */
9
+ export declare function injectionSlotToResolveOptions(injectionSlot: {
10
+ readonly name?: string;
11
+ readonly tags?: ReadonlyArray<BindingTag>;
12
+ }): ResolveOptions | undefined;
13
+ /**
14
+ * Resolve options derived from a binding {@link BindingSlot} (tags may be empty; omits when nothing to match).
15
+ *
16
+ * @since 0.3.16-canary.0
17
+ */
18
+ export declare function bindingSlotToResolveOptions(bindingSlot: BindingSlot): ResolveOptions | undefined;
19
+ //# sourceMappingURL=resolve-options.d.ts.map
@@ -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,32 @@
1
+ /** Shared core: build a ResolveOptions from already-normalised name + tags. */
2
+ function buildOptions(name, tags) {
3
+ if (name === undefined && tags === undefined) {
4
+ return undefined;
5
+ }
6
+ const options = {};
7
+ if (name !== undefined) {
8
+ options.name = name;
9
+ }
10
+ if (tags !== undefined) {
11
+ options.tags = tags;
12
+ }
13
+ return options;
14
+ }
15
+ /**
16
+ * Builds a {@link ResolveOptions} safe for `exactOptionalPropertyTypes`:
17
+ * omits keys instead of assigning `undefined`.
18
+ *
19
+ * @since 0.3.16-canary.0
20
+ */
21
+ export function injectionSlotToResolveOptions(injectionSlot) {
22
+ return buildOptions(injectionSlot.name, injectionSlot.tags);
23
+ }
24
+ /**
25
+ * Resolve options derived from a binding {@link BindingSlot} (tags may be empty; omits when nothing to match).
26
+ *
27
+ * @since 0.3.16-canary.0
28
+ */
29
+ export function bindingSlotToResolveOptions(bindingSlot) {
30
+ return buildOptions(bindingSlot.name, bindingSlot.tags.length > 0 ? bindingSlot.tags : undefined);
31
+ }
32
+ //# sourceMappingURL=resolve-options.js.map
@@ -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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"}