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

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 (175) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +67 -499
  3. package/dist/binding-scope.d.ts +10 -0
  4. package/dist/binding-scope.d.ts.map +1 -0
  5. package/dist/binding-scope.js +24 -0
  6. package/dist/binding-scope.js.map +1 -0
  7. package/dist/binding-select.d.ts +16 -0
  8. package/dist/binding-select.d.ts.map +1 -0
  9. package/dist/binding-select.js +130 -0
  10. package/dist/binding-select.js.map +1 -0
  11. package/dist/binding.d.ts +194 -0
  12. package/dist/binding.d.ts.map +1 -0
  13. package/dist/binding.js +46 -0
  14. package/dist/binding.js.map +1 -0
  15. package/dist/constraints.d.ts +51 -0
  16. package/dist/constraints.d.ts.map +1 -0
  17. package/dist/constraints.js +88 -0
  18. package/dist/constraints.js.map +1 -0
  19. package/dist/{constructor-type.d.mts → constructor-type.d.ts} +3 -5
  20. package/dist/constructor-type.d.ts.map +1 -0
  21. package/dist/constructor-type.js +2 -0
  22. package/dist/constructor-type.js.map +1 -0
  23. package/dist/container.d.ts +58 -0
  24. package/dist/container.d.ts.map +1 -0
  25. package/dist/container.js +853 -0
  26. package/dist/container.js.map +1 -0
  27. package/dist/decorators/inject.d.ts +46 -0
  28. package/dist/decorators/inject.d.ts.map +1 -0
  29. package/dist/decorators/inject.js +145 -0
  30. package/dist/decorators/inject.js.map +1 -0
  31. package/dist/decorators/injectable.d.ts +29 -0
  32. package/dist/decorators/injectable.d.ts.map +1 -0
  33. package/dist/decorators/injectable.js +53 -0
  34. package/dist/decorators/injectable.js.map +1 -0
  35. package/dist/decorators/lifecycle-decorators.d.ts +9 -0
  36. package/dist/decorators/lifecycle-decorators.d.ts.map +1 -0
  37. package/dist/decorators/lifecycle-decorators.js +40 -0
  38. package/dist/decorators/lifecycle-decorators.js.map +1 -0
  39. package/dist/dependency-graph.d.ts +40 -0
  40. package/dist/dependency-graph.d.ts.map +1 -0
  41. package/dist/dependency-graph.js +66 -0
  42. package/dist/dependency-graph.js.map +1 -0
  43. package/dist/environment.d.ts +51 -0
  44. package/dist/environment.d.ts.map +1 -0
  45. package/dist/environment.js +100 -0
  46. package/dist/environment.js.map +1 -0
  47. package/dist/errors.d.ts +150 -0
  48. package/dist/errors.d.ts.map +1 -0
  49. package/dist/errors.js +197 -0
  50. package/dist/errors.js.map +1 -0
  51. package/dist/graph-adapters/cytoscape.d.ts +33 -0
  52. package/dist/graph-adapters/cytoscape.d.ts.map +1 -0
  53. package/dist/graph-adapters/cytoscape.js +30 -0
  54. package/dist/graph-adapters/cytoscape.js.map +1 -0
  55. package/dist/graph-adapters/dot.d.ts +6 -0
  56. package/dist/graph-adapters/dot.d.ts.map +1 -0
  57. package/dist/graph-adapters/dot.js +18 -0
  58. package/dist/graph-adapters/dot.js.map +1 -0
  59. package/dist/graph-adapters/reactflow.d.ts +38 -0
  60. package/dist/graph-adapters/reactflow.d.ts.map +1 -0
  61. package/dist/graph-adapters/reactflow.js +23 -0
  62. package/dist/graph-adapters/reactflow.js.map +1 -0
  63. package/dist/index.d.ts +25 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +21 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/inspector.d.ts +44 -0
  68. package/dist/inspector.d.ts.map +1 -0
  69. package/dist/inspector.js +82 -0
  70. package/dist/inspector.js.map +1 -0
  71. package/dist/lifecycle.d.ts +21 -0
  72. package/dist/lifecycle.d.ts.map +1 -0
  73. package/dist/lifecycle.js +174 -0
  74. package/dist/lifecycle.js.map +1 -0
  75. package/dist/metadata/{metadata-keys.d.mts → metadata-keys.d.ts} +5 -7
  76. package/dist/metadata/metadata-keys.d.ts.map +1 -0
  77. package/dist/metadata/metadata-keys.js +25 -0
  78. package/dist/metadata/metadata-keys.js.map +1 -0
  79. package/dist/metadata/metadata-reader-token.d.ts +7 -0
  80. package/dist/metadata/metadata-reader-token.d.ts.map +1 -0
  81. package/dist/metadata/metadata-reader-token.js +6 -0
  82. package/dist/metadata/metadata-reader-token.js.map +1 -0
  83. package/dist/metadata/metadata-types.d.ts +48 -0
  84. package/dist/metadata/metadata-types.d.ts.map +1 -0
  85. package/dist/metadata/metadata-types.js +2 -0
  86. package/dist/metadata/metadata-types.js.map +1 -0
  87. package/dist/metadata/symbol-metadata-reader.d.ts +20 -0
  88. package/dist/metadata/symbol-metadata-reader.d.ts.map +1 -0
  89. package/dist/metadata/symbol-metadata-reader.js +34 -0
  90. package/dist/metadata/symbol-metadata-reader.js.map +1 -0
  91. package/dist/module.d.ts +60 -0
  92. package/dist/module.d.ts.map +1 -0
  93. package/dist/module.js +47 -0
  94. package/dist/module.js.map +1 -0
  95. package/dist/registry.d.ts +41 -0
  96. package/dist/registry.d.ts.map +1 -0
  97. package/dist/registry.js +208 -0
  98. package/dist/registry.js.map +1 -0
  99. package/dist/resolve-options.d.ts +19 -0
  100. package/dist/resolve-options.d.ts.map +1 -0
  101. package/dist/resolve-options.js +32 -0
  102. package/dist/resolve-options.js.map +1 -0
  103. package/dist/resolver.d.ts +90 -0
  104. package/dist/resolver.d.ts.map +1 -0
  105. package/dist/resolver.js +1208 -0
  106. package/dist/resolver.js.map +1 -0
  107. package/dist/scope.d.ts +25 -0
  108. package/dist/scope.d.ts.map +1 -0
  109. package/dist/scope.js +61 -0
  110. package/dist/scope.js.map +1 -0
  111. package/dist/token.d.ts +23 -0
  112. package/dist/token.d.ts.map +1 -0
  113. package/dist/token.js +25 -0
  114. package/dist/token.js.map +1 -0
  115. package/dist/types.d.ts +90 -0
  116. package/dist/types.d.ts.map +1 -0
  117. package/dist/types.js +2 -0
  118. package/dist/types.js.map +1 -0
  119. package/package.json +87 -79
  120. package/dist/binding-scope.d.mts +0 -13
  121. package/dist/binding-scope.mjs +0 -21
  122. package/dist/binding-select.d.mts +0 -19
  123. package/dist/binding-select.mjs +0 -72
  124. package/dist/binding.d.mts +0 -191
  125. package/dist/binding.mjs +0 -36
  126. package/dist/constraints.d.mts +0 -55
  127. package/dist/constraints.mjs +0 -87
  128. package/dist/constructor-type.mjs +0 -1
  129. package/dist/container.d.mts +0 -62
  130. package/dist/container.mjs +0 -741
  131. package/dist/decorators/inject.d.mts +0 -49
  132. package/dist/decorators/inject.mjs +0 -136
  133. package/dist/decorators/injectable.d.mts +0 -32
  134. package/dist/decorators/injectable.mjs +0 -57
  135. package/dist/decorators/lifecycle-decorators.d.mts +0 -11
  136. package/dist/decorators/lifecycle-decorators.mjs +0 -38
  137. package/dist/dependency-graph.d.mts +0 -43
  138. package/dist/dependency-graph.mjs +0 -63
  139. package/dist/environment.d.mts +0 -55
  140. package/dist/environment.mjs +0 -98
  141. package/dist/errors.d.mts +0 -153
  142. package/dist/errors.mjs +0 -197
  143. package/dist/graph-adapters/cytoscape.d.mts +0 -36
  144. package/dist/graph-adapters/cytoscape.mjs +0 -26
  145. package/dist/graph-adapters/dot.d.mts +0 -9
  146. package/dist/graph-adapters/dot.mjs +0 -20
  147. package/dist/graph-adapters/reactflow.d.mts +0 -41
  148. package/dist/graph-adapters/reactflow.mjs +0 -29
  149. package/dist/index.d.mts +0 -18
  150. package/dist/index.mjs +0 -12
  151. package/dist/inspector.d.mts +0 -48
  152. package/dist/inspector.mjs +0 -71
  153. package/dist/lifecycle.d.mts +0 -25
  154. package/dist/lifecycle.mjs +0 -118
  155. package/dist/metadata/metadata-keys.mjs +0 -27
  156. package/dist/metadata/metadata-reader-token.d.mts +0 -10
  157. package/dist/metadata/metadata-reader-token.mjs +0 -8
  158. package/dist/metadata/metadata-types.d.mts +0 -51
  159. package/dist/metadata/metadata-types.mjs +0 -1
  160. package/dist/metadata/symbol-metadata-reader.d.mts +0 -23
  161. package/dist/metadata/symbol-metadata-reader.mjs +0 -29
  162. package/dist/module.d.mts +0 -62
  163. package/dist/module.mjs +0 -42
  164. package/dist/registry.d.mts +0 -45
  165. package/dist/registry.mjs +0 -163
  166. package/dist/resolve-options.d.mts +0 -22
  167. package/dist/resolve-options.mjs +0 -28
  168. package/dist/resolver.d.mts +0 -94
  169. package/dist/resolver.mjs +0 -767
  170. package/dist/scope.d.mts +0 -28
  171. package/dist/scope.mjs +0 -58
  172. package/dist/token.d.mts +0 -25
  173. package/dist/token.mjs +0 -22
  174. package/dist/types.d.mts +0 -92
  175. package/dist/types.mjs +0 -1
@@ -0,0 +1,60 @@
1
+ import type { BindToBuilder } from "#/binding";
2
+ import type { Token } from "#/token";
3
+ import type { Constructor } from "#/types";
4
+ declare const SYNC_MODULE_BRAND: unique symbol;
5
+ declare const ASYNC_MODULE_BRAND: unique symbol;
6
+ /**
7
+ * @since 0.3.16-canary.0
8
+ */
9
+ export interface SyncModule {
10
+ readonly name: string;
11
+ readonly [SYNC_MODULE_BRAND]: true;
12
+ readonly _setup: (builder: ModuleBuilder) => void;
13
+ }
14
+ /**
15
+ * @since 0.3.16-canary.0
16
+ */
17
+ export interface AsyncModule {
18
+ readonly name: string;
19
+ readonly [ASYNC_MODULE_BRAND]: true;
20
+ readonly _setup: (builder: AsyncModuleBuilder) => Promise<void>;
21
+ }
22
+ /**
23
+ * @since 0.3.16-canary.0
24
+ */
25
+ export interface ModuleBuilder {
26
+ bind<const Value>(token: Token<Value> | Constructor<Value>): BindToBuilder<Value>;
27
+ import(...modules: Array<SyncModule>): void;
28
+ }
29
+ /**
30
+ * @since 0.3.16-canary.0
31
+ */
32
+ export interface AsyncModuleBuilder {
33
+ bind<const Value>(token: Token<Value> | Constructor<Value>): BindToBuilder<Value>;
34
+ import(...modules: Array<SyncModule | AsyncModule>): void;
35
+ }
36
+ /**
37
+ * @since 0.3.16-canary.0
38
+ */
39
+ export declare const SyncModule: {
40
+ create(name: string, setup: (builder: ModuleBuilder) => void): SyncModule;
41
+ };
42
+ /**
43
+ * @since 0.3.16-canary.0
44
+ */
45
+ export declare const AsyncModule: {
46
+ create(name: string, setup: (builder: AsyncModuleBuilder) => Promise<void>): AsyncModule;
47
+ };
48
+ /**
49
+ * @since 0.3.16-canary.0
50
+ */
51
+ export declare const Module: {
52
+ create(name: string, setup: (builder: ModuleBuilder) => void): SyncModule;
53
+ createAsync(name: string, setup: (builder: AsyncModuleBuilder) => Promise<void>): AsyncModule;
54
+ };
55
+ /**
56
+ * @since 0.3.16-canary.0
57
+ */
58
+ export declare function isSyncModule(module: SyncModule | AsyncModule): module is SyncModule;
59
+ export {};
60
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,QAAA,MAAM,iBAAiB,EAAE,OAAO,MAAiC,CAAC;AAClE,QAAA,MAAM,kBAAkB,EAAE,OAAO,MAAkC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAID;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;CAC3D;AAID;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB,MAAM,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,UAAU;CAO1E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB,MAAM,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW;CAOzF,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,MAAM,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,UAAU;IAGzE,WAAW,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW;CAG9F,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,IAAI,UAAU,CAEnF"}
package/dist/module.js ADDED
@@ -0,0 +1,47 @@
1
+ // ── Branded types (runtime symbols for branding) ─────────────────────────────
2
+ const SYNC_MODULE_BRAND = Symbol("di:sync-module");
3
+ const ASYNC_MODULE_BRAND = Symbol("di:async-module");
4
+ // ── Static factories ──────────────────────────────────────────────────────────
5
+ /**
6
+ * @since 0.3.16-canary.0
7
+ */
8
+ export const SyncModule = {
9
+ create(name, setup) {
10
+ return {
11
+ name,
12
+ [SYNC_MODULE_BRAND]: true,
13
+ _setup: setup,
14
+ };
15
+ },
16
+ };
17
+ /**
18
+ * @since 0.3.16-canary.0
19
+ */
20
+ export const AsyncModule = {
21
+ create(name, setup) {
22
+ return {
23
+ name,
24
+ [ASYNC_MODULE_BRAND]: true,
25
+ _setup: setup,
26
+ };
27
+ },
28
+ };
29
+ // ── Module — unified API ──────────────────────────────────────────────────────
30
+ /**
31
+ * @since 0.3.16-canary.0
32
+ */
33
+ export const Module = {
34
+ create(name, setup) {
35
+ return SyncModule.create(name, setup);
36
+ },
37
+ createAsync(name, setup) {
38
+ return AsyncModule.create(name, setup);
39
+ },
40
+ };
41
+ /**
42
+ * @since 0.3.16-canary.0
43
+ */
44
+ export function isSyncModule(module) {
45
+ return module[SYNC_MODULE_BRAND];
46
+ }
47
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAEhF,MAAM,iBAAiB,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClE,MAAM,kBAAkB,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAsCpE,iFAAiF;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,CAAC,IAAY,EAAE,KAAuC;QAC1D,OAAO;YACL,IAAI;YACJ,CAAC,iBAAiB,CAAC,EAAE,IAAa;YAClC,MAAM,EAAE,KAAK;SACA,CAAC;IAClB,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,IAAY,EAAE,KAAqD;QACxE,OAAO;YACL,IAAI;YACJ,CAAC,kBAAkB,CAAC,EAAE,IAAa;YACnC,MAAM,EAAE,KAAK;SACC,CAAC;IACnB,CAAC;CACF,CAAC;AAEF,iFAAiF;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,CAAC,IAAY,EAAE,KAAuC;QAC1D,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,WAAW,CAAC,IAAY,EAAE,KAAqD;QAC7E,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAgC;IAC3D,OAAQ,MAAqB,CAAC,iBAAiB,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { Binding } from "#/binding";
2
+ import type { Token } from "#/token";
3
+ import type { BindingIdentifier, Constructor } from "#/types";
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ export declare class BindingRegistry {
8
+ private readonly _bindings;
9
+ private readonly _byId;
10
+ private readonly _simpleNamed;
11
+ private readonly _fastDefault;
12
+ private readonly _simpleTagged;
13
+ /** Add or replace binding using slot-aware last-wins. */
14
+ add(binding: Binding): void;
15
+ /** Remove all bindings for a token. Returns removed bindings. */
16
+ removeByToken(token: Token<unknown> | Constructor): Array<Binding>;
17
+ /** Remove a specific binding by ID. Returns the removed binding or undefined. */
18
+ removeById(id: BindingIdentifier): Binding | undefined;
19
+ /** Get all bindings for a token. */
20
+ getAll(token: Token<unknown> | Constructor): ReadonlyArray<Binding>;
21
+ /** Get binding by ID. */
22
+ getById(id: BindingIdentifier): Binding | undefined;
23
+ /** Check if any binding exists for token. */
24
+ has(token: Token<unknown> | Constructor): boolean;
25
+ /** All bindings in the registry. */
26
+ allBindings(): ReadonlyArray<Binding>;
27
+ /** Remove all bindings. Returns all removed. */
28
+ clear(): ReadonlyArray<Binding>;
29
+ getSimpleNamed(token: Token<unknown> | Constructor, name: string): Binding | undefined;
30
+ getSimpleTagged(token: Token<unknown> | Constructor, tagKey: string, tagValue: unknown): Binding | undefined;
31
+ getFastDefault(token: Token<unknown> | Constructor): Binding | undefined;
32
+ /** Summarize available slot strings for a token (for error messages). */
33
+ availableSlotStrings(token: Token<unknown> | Constructor): Array<string>;
34
+ private _indexSimpleTaggedBinding;
35
+ private _deindexSimpleTaggedBinding;
36
+ private _isPurePredicateBinding;
37
+ private _indexSimpleNamedBinding;
38
+ private _deindexSimpleNamedBinding;
39
+ private _refreshFastDefaultForToken;
40
+ }
41
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AAE7E;;GAEG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IAEtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAE/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkD;IAE/E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAElE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgE;IAE9F,yDAAyD;IACzD,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsB1B;IAED,iEAAiE;IACjE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAWjE;IAED,iFAAiF;IACjF,UAAU,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAyBrD;IAED,oCAAoC;IACpC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAElE;IAED,yBAAyB;IACzB,OAAO,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAElD;IAED,6CAA6C;IAC7C,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,OAAO,CAIhD;IAED,oCAAoC;IACpC,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC,CAMpC;IAED,gDAAgD;IAChD,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,CAQ9B;IAED,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAErF;IAED,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAK3G;IAED,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAEvE;IAED,yEAAyE;IACzE,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAGvE;IAED,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,2BAA2B;IA0BnC,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,2BAA2B;CAcpC"}
@@ -0,0 +1,208 @@
1
+ import { bindingSlotEquals, bindingSlotToString } from "#/binding";
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
5
+ export class BindingRegistry {
6
+ // Map from token key -> array of bindings (order matters for last-wins)
7
+ _bindings = new Map();
8
+ // Fast lookup by binding ID
9
+ _byId = new Map();
10
+ // Fast lookup for slot { name, tags: [] }
11
+ _simpleNamed = new Map();
12
+ // Fast path for one default slot binding with no predicate
13
+ _fastDefault = new Map();
14
+ // Fast lookup for slot { name: undefined, tags: [[key, value]] } with no predicate
15
+ _simpleTagged = new Map();
16
+ /** Add or replace binding using slot-aware last-wins. */
17
+ add(binding) {
18
+ const key = binding.token;
19
+ // ✓ TS6.0: Map.getOrInsert (ES2025) replaces the manual get+check+set upsert
20
+ const bindingsForToken = this._bindings.getOrInsert(key, []);
21
+ // Only apply last-wins for slot-based bindings (not predicate-only)
22
+ if (!this._isPurePredicateBinding(binding)) {
23
+ const existingIndex = bindingsForToken.findIndex((candidate) => !this._isPurePredicateBinding(candidate) && bindingSlotEquals(candidate.slot, binding.slot));
24
+ if (existingIndex !== -1) {
25
+ const replacedBinding = bindingsForToken[existingIndex];
26
+ this._byId.delete(replacedBinding.id);
27
+ bindingsForToken.splice(existingIndex, 1);
28
+ }
29
+ }
30
+ bindingsForToken.push(binding);
31
+ this._byId.set(binding.id, binding);
32
+ this._indexSimpleNamedBinding(key, binding);
33
+ this._indexSimpleTaggedBinding(key, binding);
34
+ this._refreshFastDefaultForToken(key);
35
+ }
36
+ /** Remove all bindings for a token. Returns removed bindings. */
37
+ removeByToken(token) {
38
+ const key = token;
39
+ const bindingsForToken = this._bindings.get(key) ?? [];
40
+ this._bindings.delete(key);
41
+ this._simpleNamed.delete(key);
42
+ this._simpleTagged.delete(key);
43
+ this._fastDefault.delete(key);
44
+ for (const binding of bindingsForToken) {
45
+ this._byId.delete(binding.id);
46
+ }
47
+ return bindingsForToken;
48
+ }
49
+ /** Remove a specific binding by ID. Returns the removed binding or undefined. */
50
+ removeById(id) {
51
+ const binding = this._byId.get(id);
52
+ if (binding === undefined) {
53
+ return undefined;
54
+ }
55
+ this._byId.delete(id);
56
+ const key = binding.token;
57
+ const bindingsForToken = this._bindings.get(key);
58
+ if (bindingsForToken !== undefined) {
59
+ const bindingIndex = bindingsForToken.findIndex((candidate) => candidate.id === id);
60
+ if (bindingIndex !== -1) {
61
+ bindingsForToken.splice(bindingIndex, 1);
62
+ }
63
+ this._deindexSimpleNamedBinding(key, binding);
64
+ this._deindexSimpleTaggedBinding(key, binding);
65
+ if (bindingsForToken.length === 0) {
66
+ this._bindings.delete(key);
67
+ this._simpleNamed.delete(key);
68
+ this._simpleTagged.delete(key);
69
+ this._fastDefault.delete(key);
70
+ }
71
+ else {
72
+ this._refreshFastDefaultForToken(key);
73
+ }
74
+ }
75
+ return binding;
76
+ }
77
+ /** Get all bindings for a token. */
78
+ getAll(token) {
79
+ return this._bindings.get(token) ?? [];
80
+ }
81
+ /** Get binding by ID. */
82
+ getById(id) {
83
+ return this._byId.get(id);
84
+ }
85
+ /** Check if any binding exists for token. */
86
+ has(token) {
87
+ const key = token;
88
+ const list = this._bindings.get(key);
89
+ return list !== undefined && list.length > 0;
90
+ }
91
+ /** All bindings in the registry. */
92
+ allBindings() {
93
+ const allBindings = [];
94
+ for (const bindingsForToken of this._bindings.values()) {
95
+ allBindings.push(...bindingsForToken);
96
+ }
97
+ return allBindings;
98
+ }
99
+ /** Remove all bindings. Returns all removed. */
100
+ clear() {
101
+ const all = this.allBindings();
102
+ this._bindings.clear();
103
+ this._byId.clear();
104
+ this._simpleNamed.clear();
105
+ this._simpleTagged.clear();
106
+ this._fastDefault.clear();
107
+ return all;
108
+ }
109
+ getSimpleNamed(token, name) {
110
+ return this._simpleNamed.get(token)?.get(name);
111
+ }
112
+ getSimpleTagged(token, tagKey, tagValue) {
113
+ return this._simpleTagged
114
+ .get(token)
115
+ ?.get(tagKey)
116
+ ?.get(tagValue);
117
+ }
118
+ getFastDefault(token) {
119
+ return this._fastDefault.get(token);
120
+ }
121
+ /** Summarize available slot strings for a token (for error messages). */
122
+ availableSlotStrings(token) {
123
+ const bindingsForToken = this._bindings.get(token) ?? [];
124
+ return bindingsForToken.map((binding) => bindingSlotToString(binding.slot));
125
+ }
126
+ _indexSimpleTaggedBinding(tokenKey, binding) {
127
+ const slot = binding.slot;
128
+ if (slot.name !== undefined || slot.tags.length !== 1 || binding.predicate !== undefined) {
129
+ return;
130
+ }
131
+ const [tagKey, tagValue] = slot.tags[0];
132
+ const byTagKey = this._simpleTagged.getOrInsert(tokenKey, new Map());
133
+ const byTagValue = byTagKey.getOrInsert(tagKey, new Map());
134
+ byTagValue.set(tagValue, binding);
135
+ }
136
+ _deindexSimpleTaggedBinding(tokenKey, binding) {
137
+ const slot = binding.slot;
138
+ if (slot.name !== undefined || slot.tags.length !== 1 || binding.predicate !== undefined) {
139
+ return;
140
+ }
141
+ const [tagKey, tagValue] = slot.tags[0];
142
+ const byTagKey = this._simpleTagged.get(tokenKey);
143
+ if (byTagKey === undefined) {
144
+ return;
145
+ }
146
+ const byTagValue = byTagKey.get(tagKey);
147
+ if (byTagValue === undefined) {
148
+ return;
149
+ }
150
+ const current = byTagValue.get(tagValue);
151
+ if (current?.id === binding.id) {
152
+ byTagValue.delete(tagValue);
153
+ if (byTagValue.size === 0) {
154
+ byTagKey.delete(tagKey);
155
+ if (byTagKey.size === 0) {
156
+ this._simpleTagged.delete(tokenKey);
157
+ }
158
+ }
159
+ }
160
+ }
161
+ _isPurePredicateBinding(binding) {
162
+ const slot = binding.slot;
163
+ const hasPredicate = binding.predicate !== undefined;
164
+ const hasConstraint = slot.name !== undefined || slot.tags.length > 0;
165
+ // Pure predicate = has predicate but no slot constraint (name/tags)
166
+ return hasPredicate && !hasConstraint;
167
+ }
168
+ _indexSimpleNamedBinding(tokenKey, binding) {
169
+ const slot = binding.slot;
170
+ if (slot.name === undefined || slot.tags.length > 0) {
171
+ return;
172
+ }
173
+ const bindingsByName = this._simpleNamed.getOrInsert(tokenKey, new Map());
174
+ bindingsByName.set(slot.name, binding);
175
+ }
176
+ _deindexSimpleNamedBinding(tokenKey, binding) {
177
+ const slot = binding.slot;
178
+ if (slot.name === undefined || slot.tags.length > 0) {
179
+ return;
180
+ }
181
+ const bindingsByName = this._simpleNamed.get(tokenKey);
182
+ if (bindingsByName === undefined) {
183
+ return;
184
+ }
185
+ const currentBinding = bindingsByName.get(slot.name);
186
+ if (currentBinding?.id === binding.id) {
187
+ bindingsByName.delete(slot.name);
188
+ if (bindingsByName.size === 0) {
189
+ this._simpleNamed.delete(tokenKey);
190
+ }
191
+ }
192
+ }
193
+ _refreshFastDefaultForToken(tokenKey) {
194
+ const bindingsForToken = this._bindings.get(tokenKey);
195
+ if (bindingsForToken === undefined || bindingsForToken.length !== 1) {
196
+ this._fastDefault.delete(tokenKey);
197
+ return;
198
+ }
199
+ const onlyBinding = bindingsForToken[0];
200
+ const isDefaultSlot = onlyBinding.slot.name === undefined && onlyBinding.slot.tags.length === 0;
201
+ if (!isDefaultSlot || onlyBinding.predicate !== undefined) {
202
+ this._fastDefault.delete(tokenKey);
203
+ return;
204
+ }
205
+ this._fastDefault.set(tokenKey, onlyBinding);
206
+ }
207
+ }
208
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -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/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/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,90 @@
1
+ import type { Binding } from "#/binding";
2
+ import type { Container } from "#/container";
3
+ import type { LifecycleManager } from "#/lifecycle";
4
+ import type { MetadataReader } from "#/metadata/metadata-types";
5
+ import type { BindingRegistry } from "#/registry";
6
+ import type { ScopeManager } from "#/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 readonly _registry;
14
+ private readonly _scope;
15
+ private readonly _lifecycle;
16
+ private readonly _metadataReader;
17
+ private readonly _container;
18
+ private readonly _parent;
19
+ private readonly _frameByBindingId;
20
+ private readonly _syncResolutionContextPool;
21
+ private readonly _deepCycleMarks;
22
+ private _deepCycleGen;
23
+ private _deepActiveLevels;
24
+ private _deepSyncCtx;
25
+ private _deepSyncCtxPath;
26
+ private _deepAsyncCtx;
27
+ private _deepAsyncCtxPath;
28
+ private _deepAsyncActiveLevels;
29
+ private readonly _classHasPostConstruct;
30
+ private readonly _classNeedsActiveContainer;
31
+ private readonly _classConstructorMetadata;
32
+ private readonly _activationNeedByBindingId;
33
+ private _activationCacheVersion;
34
+ constructor(_registry: BindingRegistry, _scope: ScopeManager, _lifecycle: LifecycleManager, _metadataReader: MetadataReader, _container: Container, _parent: DependencyResolver | undefined);
35
+ private _findBinding;
36
+ /**
37
+ * Binding lookup aligned with `resolve` — used by `Container.validate` without instantiating.
38
+ */
39
+ peekBindingForValidate(token: Token<unknown> | Constructor, options: ResolveOptions | undefined): {
40
+ binding: Binding;
41
+ owner: DependencyResolver;
42
+ } | undefined;
43
+ /**
44
+ * Mirrors {@link DependencyResolver.resolveAll} candidate selection only (no instantiation).
45
+ */
46
+ peekCandidateBindingsForValidate(token: Token<unknown> | Constructor, options: ResolveOptions | undefined): Array<Binding>;
47
+ resolveFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
48
+ resolve<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value;
49
+ private _resolveBinding;
50
+ private _instantiateSync;
51
+ private _resolveClassDeps;
52
+ private _resolveDescriptorDeps;
53
+ resolveOptional<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Value | undefined;
54
+ resolveAll<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Array<Value>;
55
+ resolveAsyncFromContext<const Value>(token: Token<Value> | Constructor<Value>, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value>;
56
+ resolveAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value>;
57
+ private _resolveBindingAsync;
58
+ private _instantiateAsync;
59
+ private _resolveClassDepsAsync;
60
+ private _resolveDescriptorDepsAsync;
61
+ resolveOptionalAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Value | undefined>;
62
+ resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, options: ResolveOptions | undefined, resolutionPath: Array<string>, resolutionStack: Array<ResolutionFrame>): Promise<Array<Value>>;
63
+ private _getAllBindingsFromChain;
64
+ private _getSimpleNamedBindingsFromChain;
65
+ private _getAvailableSlots;
66
+ private _makeConstraintContext;
67
+ private _matchesBindingFast;
68
+ private _matchesSlotFast;
69
+ private _getTokenName;
70
+ private _getConstructorMetadata;
71
+ private _instantiateClass;
72
+ private _matchesRequestedTag;
73
+ private _resolveTransientDynamicSyncFromContext;
74
+ private _resolveTransientDynamicSyncSlow;
75
+ private _resolveTransientDynamicAsyncFromContext;
76
+ private _resolveTransientDynamicAsyncSlow;
77
+ private _resolveCandidateSync;
78
+ private _resolveCandidateAsync;
79
+ private _getResolutionFrame;
80
+ private _needsActivation;
81
+ private _refreshClassPostConstructCache;
82
+ /**
83
+ * Refreshes the post-construct cache for class bindings on first instantiation and
84
+ * returns the (possibly updated) shouldActivate flag.
85
+ */
86
+ private _refreshActivationCacheIfNeeded;
87
+ private _requiresResolutionContext;
88
+ private _acquireSyncResolutionContext;
89
+ }
90
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}