@codefast/di 0.8.0 → 0.9.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 (219) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +1 -1
  3. package/README.md +256 -164
  4. package/dist/ambient/active-container.d.ts +1 -2
  5. package/dist/ambient/active-container.js +1 -2
  6. package/dist/container/binding-builders.d.ts +12 -13
  7. package/dist/container/binding-builders.js +1 -2
  8. package/dist/container/container.d.ts +11 -12
  9. package/dist/container/container.js +23 -9
  10. package/dist/core/binding-scope.d.ts +1 -2
  11. package/dist/core/binding-scope.js +1 -2
  12. package/dist/core/binding.d.ts +20 -16
  13. package/dist/core/binding.js +1 -2
  14. package/dist/core/constraint-requirement.d.ts +20 -6
  15. package/dist/core/constraint-requirement.js +20 -11
  16. package/dist/core/constructor-type.d.ts +1 -2
  17. package/dist/core/constructor-type.js +1 -2
  18. package/dist/core/map-upsert.d.ts +1 -2
  19. package/dist/core/map-upsert.js +1 -2
  20. package/dist/core/module.d.ts +1 -2
  21. package/dist/core/module.js +1 -2
  22. package/dist/core/registry.d.ts +1 -2
  23. package/dist/core/registry.js +1 -2
  24. package/dist/core/tag.d.ts +3 -4
  25. package/dist/core/tag.js +3 -4
  26. package/dist/core/token.d.ts +25 -6
  27. package/dist/core/token.js +2 -3
  28. package/dist/core/types.d.ts +9 -4
  29. package/dist/core/types.js +1 -2
  30. package/dist/decorators/inject.d.ts +2 -3
  31. package/dist/decorators/inject.js +7 -6
  32. package/dist/decorators/injectable.d.ts +1 -2
  33. package/dist/decorators/injectable.js +1 -2
  34. package/dist/decorators/lifecycle-decorators.d.ts +1 -2
  35. package/dist/decorators/lifecycle-decorators.js +1 -2
  36. package/dist/errors/diagnostics.d.ts +1 -2
  37. package/dist/errors/diagnostics.js +1 -2
  38. package/dist/errors/errors.d.ts +5 -3
  39. package/dist/errors/errors.js +10 -5
  40. package/dist/index.d.ts +2 -3
  41. package/dist/index.js +1 -2
  42. package/dist/injection/descriptor.d.ts +12 -7
  43. package/dist/injection/descriptor.js +1 -2
  44. package/dist/injection/resolve-options.d.ts +1 -2
  45. package/dist/injection/resolve-options.js +1 -2
  46. package/dist/introspection/dependency-graph.d.ts +1 -2
  47. package/dist/introspection/dependency-graph.js +1 -2
  48. package/dist/introspection/graph-adapters/cytoscape.d.ts +1 -2
  49. package/dist/introspection/graph-adapters/cytoscape.js +1 -2
  50. package/dist/introspection/graph-adapters/dot.d.ts +1 -2
  51. package/dist/introspection/graph-adapters/dot.js +1 -2
  52. package/dist/introspection/graph-adapters/mermaid.d.ts +1 -2
  53. package/dist/introspection/graph-adapters/mermaid.js +1 -2
  54. package/dist/introspection/graph-adapters/reactflow.d.ts +1 -2
  55. package/dist/introspection/graph-adapters/reactflow.js +1 -2
  56. package/dist/introspection/inspector.d.ts +1 -2
  57. package/dist/introspection/inspector.js +1 -2
  58. package/dist/lifecycle/lifecycle-manager.d.ts +1 -2
  59. package/dist/lifecycle/lifecycle-manager.js +1 -2
  60. package/dist/lifecycle/scope-manager.d.ts +1 -2
  61. package/dist/lifecycle/scope-manager.js +1 -2
  62. package/dist/metadata/metadata-keys.d.ts +1 -2
  63. package/dist/metadata/metadata-keys.js +1 -2
  64. package/dist/metadata/metadata-reader-token.d.ts +1 -2
  65. package/dist/metadata/metadata-reader-token.js +1 -2
  66. package/dist/metadata/metadata-types.d.ts +1 -2
  67. package/dist/metadata/metadata-types.js +1 -2
  68. package/dist/metadata/symbol-metadata-reader.d.ts +1 -2
  69. package/dist/metadata/symbol-metadata-reader.js +1 -2
  70. package/dist/metadata/verifying-metadata-reader.d.ts +1 -2
  71. package/dist/metadata/verifying-metadata-reader.js +1 -2
  72. package/dist/resolution/cache/activation-need.d.ts +1 -2
  73. package/dist/resolution/cache/activation-need.js +1 -2
  74. package/dist/resolution/cache/binding-lookup-cache.d.ts +1 -2
  75. package/dist/resolution/cache/binding-lookup-cache.js +1 -2
  76. package/dist/resolution/cache/class-introspector.d.ts +1 -2
  77. package/dist/resolution/cache/class-introspector.js +1 -2
  78. package/dist/resolution/context.d.ts +1 -2
  79. package/dist/resolution/context.js +1 -2
  80. package/dist/resolution/path/resolution-path.d.ts +1 -2
  81. package/dist/resolution/path/resolution-path.js +1 -2
  82. package/dist/resolution/plan/instantiation-plan.d.ts +1 -2
  83. package/dist/resolution/plan/instantiation-plan.js +1 -2
  84. package/dist/resolution/resolver.d.ts +1 -2
  85. package/dist/resolution/resolver.js +1 -2
  86. package/dist/resolution/select/binding-select.d.ts +1 -2
  87. package/dist/resolution/select/binding-select.js +1 -2
  88. package/dist/resolution/select/constraints.d.ts +8 -6
  89. package/dist/resolution/select/constraints.js +35 -15
  90. package/package.json +6 -92
  91. package/dist/ambient/active-container.d.ts.map +0 -1
  92. package/dist/ambient/active-container.js.map +0 -1
  93. package/dist/container/binding-builders.d.ts.map +0 -1
  94. package/dist/container/binding-builders.js.map +0 -1
  95. package/dist/container/container.d.ts.map +0 -1
  96. package/dist/container/container.js.map +0 -1
  97. package/dist/core/binding-scope.d.ts.map +0 -1
  98. package/dist/core/binding-scope.js.map +0 -1
  99. package/dist/core/binding.d.ts.map +0 -1
  100. package/dist/core/binding.js.map +0 -1
  101. package/dist/core/constraint-requirement.d.ts.map +0 -1
  102. package/dist/core/constraint-requirement.js.map +0 -1
  103. package/dist/core/constructor-type.d.ts.map +0 -1
  104. package/dist/core/constructor-type.js.map +0 -1
  105. package/dist/core/map-upsert.d.ts.map +0 -1
  106. package/dist/core/map-upsert.js.map +0 -1
  107. package/dist/core/module.d.ts.map +0 -1
  108. package/dist/core/module.js.map +0 -1
  109. package/dist/core/registry.d.ts.map +0 -1
  110. package/dist/core/registry.js.map +0 -1
  111. package/dist/core/tag.d.ts.map +0 -1
  112. package/dist/core/tag.js.map +0 -1
  113. package/dist/core/token.d.ts.map +0 -1
  114. package/dist/core/token.js.map +0 -1
  115. package/dist/core/types.d.ts.map +0 -1
  116. package/dist/core/types.js.map +0 -1
  117. package/dist/decorators/inject.d.ts.map +0 -1
  118. package/dist/decorators/inject.js.map +0 -1
  119. package/dist/decorators/injectable.d.ts.map +0 -1
  120. package/dist/decorators/injectable.js.map +0 -1
  121. package/dist/decorators/lifecycle-decorators.d.ts.map +0 -1
  122. package/dist/decorators/lifecycle-decorators.js.map +0 -1
  123. package/dist/errors/diagnostics.d.ts.map +0 -1
  124. package/dist/errors/diagnostics.js.map +0 -1
  125. package/dist/errors/errors.d.ts.map +0 -1
  126. package/dist/errors/errors.js.map +0 -1
  127. package/dist/index.d.ts.map +0 -1
  128. package/dist/index.js.map +0 -1
  129. package/dist/injection/descriptor.d.ts.map +0 -1
  130. package/dist/injection/descriptor.js.map +0 -1
  131. package/dist/injection/resolve-options.d.ts.map +0 -1
  132. package/dist/injection/resolve-options.js.map +0 -1
  133. package/dist/introspection/dependency-graph.d.ts.map +0 -1
  134. package/dist/introspection/dependency-graph.js.map +0 -1
  135. package/dist/introspection/graph-adapters/cytoscape.d.ts.map +0 -1
  136. package/dist/introspection/graph-adapters/cytoscape.js.map +0 -1
  137. package/dist/introspection/graph-adapters/dot.d.ts.map +0 -1
  138. package/dist/introspection/graph-adapters/dot.js.map +0 -1
  139. package/dist/introspection/graph-adapters/mermaid.d.ts.map +0 -1
  140. package/dist/introspection/graph-adapters/mermaid.js.map +0 -1
  141. package/dist/introspection/graph-adapters/reactflow.d.ts.map +0 -1
  142. package/dist/introspection/graph-adapters/reactflow.js.map +0 -1
  143. package/dist/introspection/inspector.d.ts.map +0 -1
  144. package/dist/introspection/inspector.js.map +0 -1
  145. package/dist/lifecycle/lifecycle-manager.d.ts.map +0 -1
  146. package/dist/lifecycle/lifecycle-manager.js.map +0 -1
  147. package/dist/lifecycle/scope-manager.d.ts.map +0 -1
  148. package/dist/lifecycle/scope-manager.js.map +0 -1
  149. package/dist/metadata/metadata-keys.d.ts.map +0 -1
  150. package/dist/metadata/metadata-keys.js.map +0 -1
  151. package/dist/metadata/metadata-reader-token.d.ts.map +0 -1
  152. package/dist/metadata/metadata-reader-token.js.map +0 -1
  153. package/dist/metadata/metadata-types.d.ts.map +0 -1
  154. package/dist/metadata/metadata-types.js.map +0 -1
  155. package/dist/metadata/symbol-metadata-reader.d.ts.map +0 -1
  156. package/dist/metadata/symbol-metadata-reader.js.map +0 -1
  157. package/dist/metadata/verifying-metadata-reader.d.ts.map +0 -1
  158. package/dist/metadata/verifying-metadata-reader.js.map +0 -1
  159. package/dist/resolution/cache/activation-need.d.ts.map +0 -1
  160. package/dist/resolution/cache/activation-need.js.map +0 -1
  161. package/dist/resolution/cache/binding-lookup-cache.d.ts.map +0 -1
  162. package/dist/resolution/cache/binding-lookup-cache.js.map +0 -1
  163. package/dist/resolution/cache/class-introspector.d.ts.map +0 -1
  164. package/dist/resolution/cache/class-introspector.js.map +0 -1
  165. package/dist/resolution/context.d.ts.map +0 -1
  166. package/dist/resolution/context.js.map +0 -1
  167. package/dist/resolution/path/resolution-path.d.ts.map +0 -1
  168. package/dist/resolution/path/resolution-path.js.map +0 -1
  169. package/dist/resolution/plan/instantiation-plan.d.ts.map +0 -1
  170. package/dist/resolution/plan/instantiation-plan.js.map +0 -1
  171. package/dist/resolution/resolver.d.ts.map +0 -1
  172. package/dist/resolution/resolver.js.map +0 -1
  173. package/dist/resolution/select/binding-select.d.ts.map +0 -1
  174. package/dist/resolution/select/binding-select.js.map +0 -1
  175. package/dist/resolution/select/constraints.d.ts.map +0 -1
  176. package/dist/resolution/select/constraints.js.map +0 -1
  177. package/src/ambient/active-container.ts +0 -69
  178. package/src/container/binding-builders.ts +0 -337
  179. package/src/container/container.ts +0 -972
  180. package/src/core/binding-scope.ts +0 -15
  181. package/src/core/binding.ts +0 -505
  182. package/src/core/constraint-requirement.ts +0 -94
  183. package/src/core/constructor-type.ts +0 -18
  184. package/src/core/map-upsert.ts +0 -53
  185. package/src/core/module.ts +0 -117
  186. package/src/core/registry.ts +0 -319
  187. package/src/core/tag.ts +0 -212
  188. package/src/core/token.ts +0 -31
  189. package/src/core/types.ts +0 -149
  190. package/src/decorators/inject.ts +0 -101
  191. package/src/decorators/injectable.ts +0 -134
  192. package/src/decorators/lifecycle-decorators.ts +0 -43
  193. package/src/errors/diagnostics.ts +0 -45
  194. package/src/errors/errors.ts +0 -499
  195. package/src/index.ts +0 -139
  196. package/src/injection/descriptor.ts +0 -218
  197. package/src/injection/resolve-options.ts +0 -201
  198. package/src/introspection/dependency-graph.ts +0 -296
  199. package/src/introspection/graph-adapters/cytoscape.ts +0 -78
  200. package/src/introspection/graph-adapters/dot.ts +0 -32
  201. package/src/introspection/graph-adapters/mermaid.ts +0 -61
  202. package/src/introspection/graph-adapters/reactflow.ts +0 -84
  203. package/src/introspection/inspector.ts +0 -134
  204. package/src/lifecycle/lifecycle-manager.ts +0 -272
  205. package/src/lifecycle/scope-manager.ts +0 -158
  206. package/src/metadata/metadata-keys.ts +0 -28
  207. package/src/metadata/metadata-reader-token.ts +0 -10
  208. package/src/metadata/metadata-types.ts +0 -57
  209. package/src/metadata/symbol-metadata-reader.ts +0 -126
  210. package/src/metadata/verifying-metadata-reader.ts +0 -41
  211. package/src/resolution/cache/activation-need.ts +0 -87
  212. package/src/resolution/cache/binding-lookup-cache.ts +0 -169
  213. package/src/resolution/cache/class-introspector.ts +0 -256
  214. package/src/resolution/context.ts +0 -331
  215. package/src/resolution/path/resolution-path.ts +0 -167
  216. package/src/resolution/plan/instantiation-plan.ts +0 -592
  217. package/src/resolution/resolver.ts +0 -1654
  218. package/src/resolution/select/binding-select.ts +0 -207
  219. package/src/resolution/select/constraints.ts +0 -146
@@ -11,5 +11,4 @@ export declare function postConstruct(): MethodDecorator;
11
11
  * @since 0.3.16-canary.0
12
12
  */
13
13
  export declare function preDestroy(): MethodDecorator;
14
- export {};
15
- //# sourceMappingURL=lifecycle-decorators.d.ts.map
14
+ export {};
@@ -34,5 +34,4 @@ export function postConstruct() {
34
34
  */
35
35
  export function preDestroy() {
36
36
  return recordLifecycleMethod("preDestroy");
37
- }
38
- //# sourceMappingURL=lifecycle-decorators.js.map
37
+ }
@@ -39,5 +39,4 @@ export interface ResolutionDiagnostics {
39
39
  */
40
40
  export interface DiagnosableContainer {
41
41
  [RESOLUTION_DIAGNOSTICS](): ResolutionDiagnostics;
42
- }
43
- //# sourceMappingURL=diagnostics.d.ts.map
42
+ }
@@ -14,5 +14,4 @@
14
14
  *
15
15
  * @since 0.5.0-canary.8
16
16
  */
17
- export const RESOLUTION_DIAGNOSTICS = Symbol("di:resolution-diagnostics");
18
- //# sourceMappingURL=diagnostics.js.map
17
+ export const RESOLUTION_DIAGNOSTICS = Symbol("di:resolution-diagnostics");
@@ -1,3 +1,4 @@
1
+ import type { ConstraintRequirement } from "#/core/constraint-requirement";
1
2
  import type { BindingIdentifier, BindingScope, ResolveOptions } from "#/core/types";
2
3
  /**
3
4
  * Base class for every error the library throws, each carrying a machine-readable `code`.
@@ -132,8 +133,10 @@ export declare class UnreachableConstraintError extends DiError {
132
133
  readonly code = "UNREACHABLE_CONSTRAINT";
133
134
  readonly tokenName: string;
134
135
  readonly requiredName: string;
136
+ /** The token the name was required on, or `undefined` when the constraint named no token. */
137
+ readonly requiredTokenName: string | undefined;
135
138
  readonly helperName: string;
136
- constructor(tokenName: string, requiredName: string, helperName: string);
139
+ constructor(tokenName: string, requirement: ConstraintRequirement);
137
140
  }
138
141
  /**
139
142
  * A container-level lifecycle hook whose token nothing is bound to, so it can never run.
@@ -289,5 +292,4 @@ export declare class AsyncActivationError extends DiError {
289
292
  readonly hookKind: "postConstruct" | "onActivation";
290
293
  readonly methodName: string | undefined;
291
294
  constructor(tokenName: string, hookKind: "postConstruct" | "onActivation", methodName?: string);
292
- }
293
- //# sourceMappingURL=errors.d.ts.map
295
+ }
@@ -191,11 +191,17 @@ export class UnreachableConstraintError extends DiError {
191
191
  code = "UNREACHABLE_CONSTRAINT";
192
192
  tokenName;
193
193
  requiredName;
194
+ /** The token the name was required on, or `undefined` when the constraint named no token. */
195
+ requiredTokenName;
194
196
  helperName;
195
- constructor(tokenName, requiredName, helperName) {
196
- super(`The binding for '${tokenName}' is constrained by ${helperName}('${requiredName}'), but no binding in this container or its ancestors declares the slot name '${requiredName}', so the constraint can never hold. Name the slot with .whenNamed('${requiredName}') on the binding it should match, or correct the name here.`);
197
+ constructor(tokenName, requirement) {
198
+ const { name, helperName, tokenName: requiredTokenName } = requirement;
199
+ const scope = requiredTokenName === undefined ? "no binding" : `no binding for '${requiredTokenName}'`;
200
+ const target = requiredTokenName === undefined ? "the binding it should match" : `a '${requiredTokenName}' binding`;
201
+ super(`The binding for '${tokenName}' is constrained by ${helperName} waiting on the slot name '${name}', but ${scope} in this container or its ancestors declares it, so the constraint can never hold. Name the slot with .whenNamed('${name}') on ${target}, or correct the name here.`);
197
202
  this.tokenName = tokenName;
198
- this.requiredName = requiredName;
203
+ this.requiredName = name;
204
+ this.requiredTokenName = requiredTokenName;
199
205
  this.helperName = helperName;
200
206
  }
201
207
  }
@@ -402,5 +408,4 @@ export class AsyncActivationError extends DiError {
402
408
  this.hookKind = hookKind;
403
409
  this.methodName = methodName;
404
410
  }
405
- }
406
- //# sourceMappingURL=errors.js.map
411
+ }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type { ActivationHandler, BindingConstraint, BindingIdentifier, BindingKind, BindingScope, BindingTag, ConstraintContext, Constructor, DependencyKey, DeactivationHandler, ResolutionFrame, ResolveOptions, ResolutionContext, TokenValue, } from "#/core/types";
2
2
  export { token, tokenName } from "#/core/token";
3
- export type { Token } from "#/core/token";
3
+ export type { SlotNamesOf, Token } from "#/core/token";
4
4
  export { coversTagKeys, NO_TAG_KEYS, slotName, tag, tagKeyMaskOf } from "#/core/tag";
5
5
  export type { TagKey, TagKeyMask } from "#/core/tag";
6
6
  export type { AliasBindingBuilder, BindToBuilder, BindingBuilder, ConstantBindingBuilder, ScopedBindingBuilder, SingletonBindingBuilder, SingletonLifecycleBuilder, SlotConstrainedBuilder, TransientBindingBuilder, } from "#/core/binding";
@@ -32,5 +32,4 @@ export { toCytoscapeGraph } from "#/introspection/graph-adapters/cytoscape";
32
32
  export type { CytoscapeEdge, CytoscapeElements, CytoscapeNode } from "#/introspection/graph-adapters/cytoscape";
33
33
  export { toReactFlowGraph } from "#/introspection/graph-adapters/reactflow";
34
34
  export type { ReactFlowEdge, ReactFlowGraph, ReactFlowNode } from "#/introspection/graph-adapters/reactflow";
35
- export { toMermaidGraph } from "#/introspection/graph-adapters/mermaid";
36
- //# sourceMappingURL=index.d.ts.map
35
+ export { toMermaidGraph } from "#/introspection/graph-adapters/mermaid";
package/dist/index.js CHANGED
@@ -30,5 +30,4 @@ export { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, As
30
30
  export { toDotGraph } from "#/introspection/graph-adapters/dot";
31
31
  export { toCytoscapeGraph } from "#/introspection/graph-adapters/cytoscape";
32
32
  export { toReactFlowGraph } from "#/introspection/graph-adapters/reactflow";
33
- export { toMermaidGraph } from "#/introspection/graph-adapters/mermaid";
34
- //# sourceMappingURL=index.js.map
33
+ export { toMermaidGraph } from "#/introspection/graph-adapters/mermaid";
@@ -7,8 +7,14 @@ import type { DependencySlot } from "#/injection/resolve-options";
7
7
  *
8
8
  * @since 0.3.16-canary.0
9
9
  */
10
- export interface InjectOptions {
11
- name?: string | undefined;
10
+ export interface InjectOptions<Names extends string = string> {
11
+ /**
12
+ * The slot name a binding declared with `whenNamed`.
13
+ *
14
+ * @remarks Narrowed to the names the token declares, so a dependency cannot ask for a name no
15
+ * binding could carry; a token declaring none takes any string.
16
+ */
17
+ name?: Names | undefined;
12
18
  /**
13
19
  * Single-tag shorthand, equivalent to listing the one pair in `tags`.
14
20
  *
@@ -74,18 +80,17 @@ export declare function normalizeToDescriptor(dependency: InjectableDependency):
74
80
  *
75
81
  * @since 0.6.0
76
82
  */
77
- export declare function buildInjectionDescriptor<Value>(token: Token<Value> | Constructor<Value>, options?: InjectOptions): InjectionDescriptor<Value>;
83
+ export declare function buildInjectionDescriptor<Value, Names extends string = string>(token: Token<Value, Names> | Constructor<Value>, options?: NoInfer<InjectOptions<Names>>): InjectionDescriptor<Value>;
78
84
  /**
79
85
  * Creates a descriptor that resolves to `undefined` instead of throwing when no binding matches.
80
86
  *
81
87
  * @since 0.3.16-canary.0
82
88
  */
83
- export declare function optional<Value>(token: Token<Value> | Constructor<Value>, options?: InjectOptions): InjectionDescriptor<Value | undefined>;
89
+ export declare function optional<Value, Names extends string = string>(token: Token<Value, Names> | Constructor<Value>, options?: NoInfer<InjectOptions<Names>>): InjectionDescriptor<Value | undefined>;
84
90
  /**
85
91
  * Creates a descriptor that resolves every matching binding for the token into an array.
86
92
  *
87
93
  * @since 0.3.16-canary.0
88
94
  */
89
- export declare function injectAll<Value>(token: Token<Value> | Constructor<Value>, options?: InjectOptions): InjectionDescriptor<Array<Value>>;
90
- export {};
91
- //# sourceMappingURL=descriptor.d.ts.map
95
+ export declare function injectAll<Value, Names extends string = string>(token: Token<Value, Names> | Constructor<Value>, options?: NoInfer<InjectOptions<Names>>): InjectionDescriptor<Array<Value>>;
96
+ export {};
@@ -122,5 +122,4 @@ export function injectAll(token, options) {
122
122
  optional: false,
123
123
  multi: true,
124
124
  }, options);
125
- }
126
- //# sourceMappingURL=descriptor.js.map
125
+ }
@@ -67,5 +67,4 @@ export declare function singleCriterionForSlot(injectionSlot: DependencySlot): B
67
67
  export declare function bindingSlotToResolveOptions(bindingSlot: {
68
68
  readonly name?: string | undefined;
69
69
  readonly tags?: ReadonlyArray<BindingTag> | undefined;
70
- }): ResolveOptions | undefined;
71
- //# sourceMappingURL=resolve-options.d.ts.map
70
+ }): ResolveOptions | undefined;
@@ -151,5 +151,4 @@ export function bindingSlotToResolveOptions(bindingSlot) {
151
151
  }
152
152
  }
153
153
  return buildOptions(name, criteria);
154
- }
155
- //# sourceMappingURL=resolve-options.js.map
154
+ }
@@ -53,5 +53,4 @@ export interface GraphOptions {
53
53
  *
54
54
  * @since 0.3.16-canary.0
55
55
  */
56
- export declare function buildDependencyGraph(registry: BindingRegistry, metadataReader: MetadataReader, options: GraphOptions | undefined, parentRegistry?: BindingRegistry): ContainerGraphJson;
57
- //# sourceMappingURL=dependency-graph.d.ts.map
56
+ export declare function buildDependencyGraph(registry: BindingRegistry, metadataReader: MetadataReader, options: GraphOptions | undefined, parentRegistry?: BindingRegistry): ContainerGraphJson;
@@ -158,5 +158,4 @@ export function buildDependencyGraph(registry, metadataReader, options, parentRe
158
158
  addRegistryBindings(accumulator, parentRegistry, metadataReader, true);
159
159
  }
160
160
  return { nodes: accumulator.nodes, edges: accumulator.edges, includesParent };
161
- }
162
- //# sourceMappingURL=dependency-graph.js.map
161
+ }
@@ -40,5 +40,4 @@ export type CytoscapeElements = ReadonlyArray<CytoscapeNode | CytoscapeEdge>;
40
40
  *
41
41
  * @since 0.3.16-canary.0
42
42
  */
43
- export declare function toCytoscapeGraph(graph: ContainerGraphJson): CytoscapeElements;
44
- //# sourceMappingURL=cytoscape.d.ts.map
43
+ export declare function toCytoscapeGraph(graph: ContainerGraphJson): CytoscapeElements;
@@ -31,5 +31,4 @@ export function toCytoscapeGraph(graph) {
31
31
  });
32
32
  }
33
33
  return elements;
34
- }
35
- //# sourceMappingURL=cytoscape.js.map
34
+ }
@@ -4,5 +4,4 @@ import type { ContainerGraphJson } from "#/introspection/dependency-graph";
4
4
  *
5
5
  * @since 0.3.16-canary.0
6
6
  */
7
- export declare function toDotGraph(graph: ContainerGraphJson): string;
8
- //# sourceMappingURL=dot.d.ts.map
7
+ export declare function toDotGraph(graph: ContainerGraphJson): string;
@@ -23,5 +23,4 @@ export function toDotGraph(graph) {
23
23
  }
24
24
  lines.push("}");
25
25
  return lines.join("\n");
26
- }
27
- //# sourceMappingURL=dot.js.map
26
+ }
@@ -5,5 +5,4 @@ import type { ContainerGraphJson } from "#/introspection/dependency-graph";
5
5
  *
6
6
  * @since 0.6.0
7
7
  */
8
- export declare function toMermaidGraph(graph: ContainerGraphJson): string;
9
- //# sourceMappingURL=mermaid.d.ts.map
8
+ export declare function toMermaidGraph(graph: ContainerGraphJson): string;
@@ -43,5 +43,4 @@ export function toMermaidGraph(graph) {
43
43
  lines.push(` class ${unboundIds.join(",")} unbound;`);
44
44
  }
45
45
  return lines.join("\n");
46
- }
47
- //# sourceMappingURL=mermaid.js.map
46
+ }
@@ -45,5 +45,4 @@ export interface ReactFlowGraph {
45
45
  *
46
46
  * @since 0.5.0-canary.7
47
47
  */
48
- export declare function toReactFlowGraph(graph: ContainerGraphJson): ReactFlowGraph;
49
- //# sourceMappingURL=reactflow.d.ts.map
48
+ export declare function toReactFlowGraph(graph: ContainerGraphJson): ReactFlowGraph;
@@ -35,5 +35,4 @@ export function toReactFlowGraph(graph) {
35
35
  ...(edge.slotName !== undefined ? { slotName: edge.slotName } : {}),
36
36
  }));
37
37
  return { nodes, edges };
38
- }
39
- //# sourceMappingURL=reactflow.js.map
38
+ }
@@ -40,5 +40,4 @@ export declare class Inspector {
40
40
  lookupBindings<Value>(token: Token<Value> | Constructor<Value>): ReadonlyArray<BindingSnapshot>;
41
41
  has(token: Token<unknown> | Constructor, options?: ResolveOptions, parentHas?: () => boolean): boolean;
42
42
  hasOwn(token: Token<unknown> | Constructor, options?: ResolveOptions): boolean;
43
- }
44
- //# sourceMappingURL=inspector.d.ts.map
43
+ }
@@ -79,5 +79,4 @@ export class Inspector {
79
79
  id: binding.id,
80
80
  };
81
81
  }
82
- }
83
- //# sourceMappingURL=inspector.js.map
82
+ }
@@ -25,5 +25,4 @@ export declare class LifecycleManager {
25
25
  runDeactivationSync<Value>(binding: Binding<Value>, instance: Value, metadataReader: MetadataReader): void;
26
26
  /** Whether the deferred activation-hook table has had to be built. */
27
27
  get isActivationTableBuilt(): boolean;
28
- }
29
- //# sourceMappingURL=lifecycle-manager.d.ts.map
28
+ }
@@ -207,5 +207,4 @@ function callHook(instance, methodName) {
207
207
  throw new InvalidMetadataError(className, `lifecycle method '${methodName}' is not a method on the instance`);
208
208
  }
209
209
  return method.call(instance);
210
- }
211
- //# sourceMappingURL=lifecycle-manager.js.map
210
+ }
@@ -46,5 +46,4 @@ export declare class ScopeManager {
46
46
  *
47
47
  * @since 0.6.0
48
48
  */
49
- export declare const SCOPED_MISS: unique symbol;
50
- //# sourceMappingURL=scope-manager.d.ts.map
49
+ export declare const SCOPED_MISS: unique symbol;
@@ -133,5 +133,4 @@ const EMPTY_BINDINGS = [];
133
133
  *
134
134
  * @since 0.6.0
135
135
  */
136
- export const SCOPED_MISS = Symbol("di:scoped-miss");
137
- //# sourceMappingURL=scope-manager.js.map
136
+ export const SCOPED_MISS = Symbol("di:scoped-miss");
@@ -24,5 +24,4 @@ export declare const INJECT_ACCESSOR_KEY: unique symbol;
24
24
  *
25
25
  * @since 0.3.16-canary.0
26
26
  */
27
- export declare const METADATA_SYMBOL: symbol;
28
- //# sourceMappingURL=metadata-keys.d.ts.map
27
+ export declare const METADATA_SYMBOL: symbol;
@@ -24,5 +24,4 @@ export const INJECT_ACCESSOR_KEY = Symbol("di:inject-accessor");
24
24
  *
25
25
  * @since 0.3.16-canary.0
26
26
  */
27
- export const METADATA_SYMBOL = Symbol.metadata ?? Symbol.for("Symbol.metadata");
28
- //# sourceMappingURL=metadata-keys.js.map
27
+ export const METADATA_SYMBOL = Symbol.metadata ?? Symbol.for("Symbol.metadata");
@@ -5,5 +5,4 @@ import type { MetadataReader } from "#/metadata/metadata-types";
5
5
  *
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- export declare const MetadataReaderToken: Token<MetadataReader>;
9
- //# sourceMappingURL=metadata-reader-token.d.ts.map
8
+ export declare const MetadataReaderToken: Token<MetadataReader>;
@@ -4,5 +4,4 @@ import { token } from "#/core/token";
4
4
  *
5
5
  * @since 0.3.16-canary.0
6
6
  */
7
- export const MetadataReaderToken = token("MetadataReader");
8
- //# sourceMappingURL=metadata-reader-token.js.map
7
+ export const MetadataReaderToken = token("di:MetadataReader");
@@ -50,5 +50,4 @@ export interface MetadataReader {
50
50
  readonly key: string | symbol;
51
51
  readonly descriptor: InjectionDescriptor;
52
52
  }> | undefined;
53
- }
54
- //# sourceMappingURL=metadata-types.d.ts.map
53
+ }
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=metadata-types.js.map
1
+ export {};
@@ -33,5 +33,4 @@ export declare class SymbolMetadataReader implements MetadataReader {
33
33
  * @since 0.3.16-canary.0
34
34
  */
35
35
  export declare const defaultMetadataReader: SymbolMetadataReader;
36
- export {};
37
- //# sourceMappingURL=symbol-metadata-reader.d.ts.map
36
+ export {};
@@ -114,5 +114,4 @@ function mergeUniqueNames(lists) {
114
114
  *
115
115
  * @since 0.3.16-canary.0
116
116
  */
117
- export const defaultMetadataReader = new SymbolMetadataReader();
118
- //# sourceMappingURL=symbol-metadata-reader.js.map
117
+ export const defaultMetadataReader = new SymbolMetadataReader();
@@ -12,5 +12,4 @@ import type { MetadataReader } from "#/metadata/metadata-types";
12
12
  *
13
13
  * @since 0.6.0
14
14
  */
15
- export declare function verifyingMetadataReader(reader: MetadataReader): MetadataReader;
16
- //# sourceMappingURL=verifying-metadata-reader.d.ts.map
15
+ export declare function verifyingMetadataReader(reader: MetadataReader): MetadataReader;
@@ -28,5 +28,4 @@ export function verifyingMetadataReader(reader) {
28
28
  };
29
29
  verifyingReaders.add(verifying);
30
30
  return verifying;
31
- }
32
- //# sourceMappingURL=verifying-metadata-reader.js.map
31
+ }
@@ -25,5 +25,4 @@ export declare class ActivationNeedCache {
25
25
  * conservative `true`.
26
26
  */
27
27
  refreshAfterFirstInstantiation<Value>(binding: Binding<Value>, needsActivation: boolean): boolean;
28
- }
29
- //# sourceMappingURL=activation-need.d.ts.map
28
+ }
@@ -66,5 +66,4 @@ export class ActivationNeedCache {
66
66
  #nonClassNeedsActivation(binding) {
67
67
  return this.#lifecycle.hasActivationHandlers(binding.token);
68
68
  }
69
- }
70
- //# sourceMappingURL=activation-need.js.map
69
+ }
@@ -41,5 +41,4 @@ export declare class BindingLookupCache<Owner> {
41
41
  defaultEntry(token: Token<unknown> | Constructor): DefaultLookupEntry<Owner> | null;
42
42
  /** `null` when the tag's shape needs the full selection path. */
43
43
  taggedEntry(token: Token<unknown> | Constructor, tag: BindingTag): DefaultLookupEntry<Owner> | null;
44
- }
45
- //# sourceMappingURL=binding-lookup-cache.d.ts.map
44
+ }
@@ -135,5 +135,4 @@ export class BindingLookupCache {
135
135
  }
136
136
  return this.#parent === undefined ? null : this.#parent.#findTaggedInChain(token, tag);
137
137
  }
138
- }
139
- //# sourceMappingURL=binding-lookup-cache.js.map
138
+ }
@@ -64,5 +64,4 @@ export declare class ClassIntrospector {
64
64
  /** True when the class has accessor injection, which reads the container during construction. */
65
65
  needsActiveContainer(target: Constructor): boolean;
66
66
  instantiate(target: Constructor, deps: Array<unknown>, resolution?: AmbientResolution): unknown;
67
- }
68
- //# sourceMappingURL=class-introspector.d.ts.map
67
+ }
@@ -192,5 +192,4 @@ export class ClassIntrospector {
192
192
  }
193
193
  return runWithAmbientResolution(this.#container, resolution, () => new invokable(...deps));
194
194
  }
195
- }
196
- //# sourceMappingURL=class-introspector.js.map
195
+ }
@@ -86,5 +86,4 @@ export declare class AsyncCascadeContext implements ResolutionContext {
86
86
  *
87
87
  * @since 0.3.16-canary.0
88
88
  */
89
- export declare function buildResolutionFrame(tokenName: string, scope: BindingScope, bindingId: BindingIdentifier, kind: BindingKind, slot: ResolutionFrame["slot"]): ResolutionFrame;
90
- //# sourceMappingURL=context.d.ts.map
89
+ export declare function buildResolutionFrame(tokenName: string, scope: BindingScope, bindingId: BindingIdentifier, kind: BindingKind, slot: ResolutionFrame["slot"]): ResolutionFrame;
@@ -203,5 +203,4 @@ class DefaultConstraintContext {
203
203
  */
204
204
  export function buildResolutionFrame(tokenName, scope, bindingId, kind, slot) {
205
205
  return { tokenName, scope, bindingId, kind, slot };
206
- }
207
- //# sourceMappingURL=context.js.map
206
+ }
@@ -90,5 +90,4 @@ export declare function branchDepthOf(branch: OwnedBranchStack): OwnedBranchDept
90
90
  * @since 0.5.0-canary.9
91
91
  */
92
92
  export declare function extendResolutionBranch(resolutionStack: Array<ResolutionFrame>, branchDepth: BranchDepth, frame: ResolutionFrame): OwnedBranchStack;
93
- export {};
94
- //# sourceMappingURL=resolution-path.d.ts.map
93
+ export {};
@@ -113,5 +113,4 @@ export function extendResolutionBranch(resolutionStack, branchDepth, frame) {
113
113
  const branch = resolutionStack.slice(0, depth);
114
114
  branch.push(frame);
115
115
  return branch;
116
- }
117
- //# sourceMappingURL=resolution-path.js.map
116
+ }
@@ -87,5 +87,4 @@ export declare class InstantiationPlanCompiler {
87
87
  compileAsync(binding: Binding & {
88
88
  kind: "class" | "resolved" | "resolved-async";
89
89
  }): InstantiationPlanCompileResult;
90
- }
91
- //# sourceMappingURL=instantiation-plan.d.ts.map
90
+ }
@@ -399,5 +399,4 @@ export class InstantiationPlanCompiler {
399
399
  }
400
400
  return this.#compileAsyncEscapeThunk(binding.token, ancestors, "single", options);
401
401
  }
402
- }
403
- //# sourceMappingURL=instantiation-plan.js.map
402
+ }
@@ -63,5 +63,4 @@ export declare class DependencyResolver implements ResolverCallbacks {
63
63
  resolveAsyncFromCascade(token: Token<unknown> | Constructor): Promise<unknown>;
64
64
  /** Entry for a resolve the container starts, which opens the cascade rather than joining one. */
65
65
  resolveAsyncFromRoot(token: Token<unknown> | Constructor): Promise<unknown>;
66
- }
67
- //# sourceMappingURL=resolver.d.ts.map
66
+ }
@@ -1266,5 +1266,4 @@ function asyncResolutionErrorFor(binding, resolutionStack) {
1266
1266
  /** Only a factory is handed the resolution context; everything else gets its deps directly. */
1267
1267
  function requiresResolutionContext(binding) {
1268
1268
  return binding.kind === "dynamic" || binding.kind === "dynamic-async";
1269
- }
1270
- //# sourceMappingURL=resolver.js.map
1269
+ }
@@ -29,5 +29,4 @@ export declare function matchesSlot(slot: BindingSlot, options: ResolveOptions |
29
29
  *
30
30
  * @since 0.6.0
31
31
  */
32
- export declare function requestedTagKeyMask(options: ResolveOptions | undefined): TagKeyMask;
33
- //# sourceMappingURL=binding-select.d.ts.map
32
+ export declare function requestedTagKeyMask(options: ResolveOptions | undefined): TagKeyMask;
@@ -169,5 +169,4 @@ function requestCarries(options, criterion) {
169
169
  }
170
170
  }
171
171
  return false;
172
- }
173
- //# sourceMappingURL=binding-select.js.map
172
+ }
@@ -26,17 +26,20 @@ export declare function whenAnyAncestorIs(token: Token<unknown> | Constructor):
26
26
  */
27
27
  export declare function whenNoAncestorIs(token: Token<unknown> | Constructor): BindingConstraint;
28
28
  /**
29
- * Matches when the direct parent slot carries the given name.
29
+ * Matches when the direct parent resolves the given token at the slot carrying the given name.
30
+ *
31
+ * @remarks A slot name is a label on one token's bindings, so the token is part of the question — and
32
+ * what types `name` to the names that token declares.
30
33
  *
31
34
  * @since 0.3.16-canary.0
32
35
  */
33
- export declare function whenParentNamed(name: string): BindingConstraint;
36
+ export declare function whenParentNamed<Names extends string>(token: Token<unknown, Names> | Constructor, name: NoInfer<Names>): BindingConstraint;
34
37
  /**
35
- * Matches when at least one ancestor slot carries the given name.
38
+ * Matches when at least one ancestor resolves the given token at the slot carrying the given name.
36
39
  *
37
40
  * @since 0.3.16-canary.0
38
41
  */
39
- export declare function whenAnyAncestorNamed(name: string): BindingConstraint;
42
+ export declare function whenAnyAncestorNamed<Names extends string>(token: Token<unknown, Names> | Constructor, name: NoInfer<Names>): BindingConstraint;
40
43
  /**
41
44
  * Matches when the direct parent slot carries the given tag pair.
42
45
  *
@@ -64,5 +67,4 @@ export declare function whenParentTaggedAll(tags: ReadonlyArray<BindingTag>): Bi
64
67
  *
65
68
  * @since 0.3.16-canary.1
66
69
  */
67
- export declare function whenAnyAncestorTaggedAll(tags: ReadonlyArray<BindingTag>): BindingConstraint;
68
- //# sourceMappingURL=constraints.d.ts.map
70
+ export declare function whenAnyAncestorTaggedAll(tags: ReadonlyArray<BindingTag>): BindingConstraint;