@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,82 @@
1
+ import { effectiveBindingScope } from "#/resolution/binding-scope";
2
+ import { selectBinding } from "#/resolution/binding-select";
3
+ import { tokenName } from "#/token";
4
+ // ── Inspector ─────────────────────────────────────────────────────────────────
5
+ /**
6
+ * @since 0.3.16-canary.0
7
+ */
8
+ export class Inspector {
9
+ #registry;
10
+ #scope;
11
+ #hasParent;
12
+ #isDisposed;
13
+ constructor(registry, scope, hasParent, isDisposed) {
14
+ this.#registry = registry;
15
+ this.#scope = scope;
16
+ this.#hasParent = hasParent;
17
+ this.#isDisposed = isDisposed;
18
+ }
19
+ inspect() {
20
+ const snapshots = this.allBindingSnapshots();
21
+ return {
22
+ ownBindings: snapshots,
23
+ cachedSingletonCount: this.#scope.getAllSingletons().size,
24
+ hasParent: this.#hasParent,
25
+ isDisposed: this.#isDisposed(),
26
+ };
27
+ }
28
+ lookupBindings(token) {
29
+ const bindings = this.#registry.getAll(token);
30
+ return bindings.map((binding) => this.#toSnapshot(binding));
31
+ }
32
+ has(token, options, parentHas) {
33
+ const bindings = this.#registry.getAll(token);
34
+ if (bindings.length > 0) {
35
+ if (options !== undefined) {
36
+ if (selectBinding(bindings, options, this.#makeConstraintContext(options), tokenName(token)) !== undefined) {
37
+ return true;
38
+ }
39
+ }
40
+ else {
41
+ return true;
42
+ }
43
+ }
44
+ return parentHas?.() ?? false;
45
+ }
46
+ hasOwn(token, options) {
47
+ const bindings = this.#registry.getAll(token);
48
+ if (bindings.length === 0) {
49
+ return false;
50
+ }
51
+ if (options !== undefined) {
52
+ return selectBinding(bindings, options, this.#makeConstraintContext(options), tokenName(token)) !== undefined;
53
+ }
54
+ return true;
55
+ }
56
+ #makeConstraintContext(options) {
57
+ return {
58
+ resolutionPath: [],
59
+ resolutionStack: [],
60
+ parent: undefined,
61
+ ancestors: [],
62
+ currentResolveOptions: options,
63
+ };
64
+ }
65
+ allBindingSnapshots() {
66
+ return this.#registry.allBindings().map((binding) => this.#toSnapshot(binding));
67
+ }
68
+ #toSnapshot(binding) {
69
+ const scope = effectiveBindingScope(binding);
70
+ const slot = binding.slot.name !== undefined
71
+ ? { name: binding.slot.name, tags: binding.slot.tags }
72
+ : { tags: binding.slot.tags };
73
+ return {
74
+ tokenName: tokenName(binding.token),
75
+ kind: binding.kind,
76
+ scope,
77
+ slot,
78
+ id: binding.id,
79
+ };
80
+ }
81
+ }
82
+ //# sourceMappingURL=inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/introspection/inspector.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,15 @@
1
- //#region src/metadata/metadata-keys.d.ts
2
1
  /**
3
2
  * @since 0.3.16-canary.0
4
3
  */
5
- declare const INJECTABLE_KEY: unique symbol;
4
+ export declare const INJECTABLE_KEY: unique symbol;
6
5
  /**
7
6
  * @since 0.3.16-canary.0
8
7
  */
9
- declare const LIFECYCLE_KEY: unique symbol;
8
+ export declare const LIFECYCLE_KEY: unique symbol;
10
9
  /**
11
10
  * @since 0.3.16-canary.0
12
11
  */
13
- declare const INJECT_ACCESSOR_KEY: unique symbol;
12
+ export declare const INJECT_ACCESSOR_KEY: unique symbol;
14
13
  /**
15
14
  * The well-known symbol used by TC39 Stage 3 decorator transforms to store class metadata.
16
15
  *
@@ -22,6 +21,5 @@ declare const INJECT_ACCESSOR_KEY: unique symbol;
22
21
  *
23
22
  * @since 0.3.16-canary.0
24
23
  */
25
- declare const METADATA_SYMBOL: symbol;
26
- //#endregion
27
- export { INJECTABLE_KEY, INJECT_ACCESSOR_KEY, LIFECYCLE_KEY, METADATA_SYMBOL };
24
+ export declare const METADATA_SYMBOL: symbol;
25
+ //# sourceMappingURL=metadata-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-keys.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-keys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAAgC,CAAC;AACrE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,MAA+B,CAAC;AACnE;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,MAAqC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,MAAyD,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @since 0.3.16-canary.0
3
+ */
4
+ export const INJECTABLE_KEY = Symbol("di:injectable");
5
+ /**
6
+ * @since 0.3.16-canary.0
7
+ */
8
+ export const LIFECYCLE_KEY = Symbol("di:lifecycle");
9
+ /**
10
+ * @since 0.3.16-canary.0
11
+ */
12
+ export const INJECT_ACCESSOR_KEY = Symbol("di:inject-accessor");
13
+ /**
14
+ * The well-known symbol used by TC39 Stage 3 decorator transforms to store class metadata.
15
+ *
16
+ * `Symbol.metadata` is defined natively once the runtime ships the full TC39 decorator
17
+ * proposal. Until then (current Node.js / browsers), Babel and esbuild both fall back to
18
+ * `Symbol.for("Symbol.metadata")` — a global-registry symbol with the same string key.
19
+ * Resolving it here once keeps the reader and the decorator transforms in sync regardless
20
+ * of which path is taken.
21
+ *
22
+ * @since 0.3.16-canary.0
23
+ */
24
+ export const METADATA_SYMBOL = Symbol.metadata ?? Symbol.for("Symbol.metadata");
25
+ //# sourceMappingURL=metadata-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-keys.js","sourceRoot":"","sources":["../../src/metadata/metadata-keys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB,MAAM,CAAC,eAAe,CAAC,CAAC;AACrE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,MAAM,CAAC,cAAc,CAAC,CAAC;AACnE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkB,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAW,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { MetadataReader } from "#/metadata/metadata-types";
2
+ import type { Token } from "#/token";
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
6
+ export declare const MetadataReaderToken: Token<MetadataReader>;
7
+ //# sourceMappingURL=metadata-reader-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-reader-token.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-reader-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,cAAc,CAA2C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { token } from "#/token";
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
5
+ export const MetadataReaderToken = token("MetadataReader");
6
+ //# sourceMappingURL=metadata-reader-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-reader-token.js","sourceRoot":"","sources":["../../src/metadata/metadata-reader-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA0B,KAAK,CAAiB,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { InjectionDescriptor } from "#/decorators/inject";
2
+ import type { Token } from "#/token";
3
+ import type { Constructor } from "#/types";
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ export interface ParamMetadata {
8
+ readonly index: number;
9
+ readonly token: Token<unknown> | Constructor;
10
+ readonly optional: boolean;
11
+ readonly multi: boolean;
12
+ readonly name?: string;
13
+ readonly tags?: ReadonlyArray<readonly [string, unknown]>;
14
+ }
15
+ /**
16
+ * @since 0.3.16-canary.0
17
+ */
18
+ export interface ConstructorMetadata {
19
+ readonly params: ReadonlyArray<ParamMetadata>;
20
+ }
21
+ /**
22
+ * @since 0.3.16-canary.0
23
+ */
24
+ export interface LifecycleMetadata {
25
+ readonly postConstruct: ReadonlyArray<string>;
26
+ readonly preDestroy: ReadonlyArray<string>;
27
+ }
28
+ /**
29
+ * Mutable buckets used while aggregating decorator metadata (same keys as {@link LifecycleMetadata}).
30
+ *
31
+ * @since 0.3.16-canary.0
32
+ */
33
+ export interface MutableLifecycleMetadata {
34
+ postConstruct: Array<string>;
35
+ preDestroy: Array<string>;
36
+ }
37
+ /**
38
+ * @since 0.3.16-canary.0
39
+ */
40
+ export interface MetadataReader {
41
+ getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
42
+ getLifecycleMetadata(target: Constructor): LifecycleMetadata | undefined;
43
+ getAccessorMetadata?(target: Constructor): ReadonlyArray<{
44
+ readonly key: string | symbol;
45
+ readonly descriptor: InjectionDescriptor;
46
+ }> | undefined;
47
+ }
48
+ //# sourceMappingURL=metadata-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-types.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC7E,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACzE,mBAAmB,CAAC,CAClB,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;CAC3G"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=metadata-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-types.js","sourceRoot":"","sources":["../../src/metadata/metadata-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import type { InjectionDescriptor } from "#/decorators/inject";
2
+ import type { ConstructorMetadata, LifecycleMetadata, MetadataReader } from "#/metadata/metadata-types";
3
+ import type { Constructor } from "#/types";
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ export declare class SymbolMetadataReader implements MetadataReader {
8
+ #private;
9
+ getConstructorMetadata(target: Constructor): ConstructorMetadata | undefined;
10
+ getLifecycleMetadata(target: Constructor): LifecycleMetadata | undefined;
11
+ getAccessorMetadata(target: Constructor): Array<{
12
+ key: string | symbol;
13
+ descriptor: InjectionDescriptor;
14
+ }> | undefined;
15
+ }
16
+ /**
17
+ * @since 0.3.16-canary.0
18
+ */
19
+ export declare const defaultMetadataReader: SymbolMetadataReader;
20
+ //# sourceMappingURL=symbol-metadata-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-metadata-reader.d.ts","sourceRoot":"","sources":["../../src/metadata/symbol-metadata-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,oBAAqB,YAAW,cAAc;;IAazD,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAG3E;IAED,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS,CAGvE;IAED,mBAAmB,CACjB,MAAM,EAAE,WAAW,GAClB,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,UAAU,EAAE,mBAAmB,CAAA;KAAE,CAAC,GAAG,SAAS,CAK9E;CACF;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,sBAA6B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { INJECT_ACCESSOR_KEY, INJECTABLE_KEY, LIFECYCLE_KEY, METADATA_SYMBOL } from "#/metadata/metadata-keys";
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
5
+ export class SymbolMetadataReader {
6
+ #getMetadataRecord(target, key) {
7
+ const descriptor = Object.getOwnPropertyDescriptor(target, METADATA_SYMBOL);
8
+ if (descriptor === undefined) {
9
+ return undefined;
10
+ }
11
+ const record = descriptor.value;
12
+ if (!record || typeof record !== "object" || !Object.hasOwn(record, key)) {
13
+ return undefined;
14
+ }
15
+ return record;
16
+ }
17
+ getConstructorMetadata(target) {
18
+ const record = this.#getMetadataRecord(target, INJECTABLE_KEY);
19
+ return record?.[INJECTABLE_KEY];
20
+ }
21
+ getLifecycleMetadata(target) {
22
+ const record = this.#getMetadataRecord(target, LIFECYCLE_KEY);
23
+ return record?.[LIFECYCLE_KEY];
24
+ }
25
+ getAccessorMetadata(target) {
26
+ const record = this.#getMetadataRecord(target, INJECT_ACCESSOR_KEY);
27
+ return record?.[INJECT_ACCESSOR_KEY];
28
+ }
29
+ }
30
+ /**
31
+ * @since 0.3.16-canary.0
32
+ */
33
+ export const defaultMetadataReader = new SymbolMetadataReader();
34
+ //# sourceMappingURL=symbol-metadata-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-metadata-reader.js","sourceRoot":"","sources":["../../src/metadata/symbol-metadata-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI/G;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B,kBAAkB,CAAC,MAAmB,EAAE,GAAoB;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC5E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,KAA4D,CAAC;QACvF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACzE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB,CAAC,MAAmB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC/D,OAAO,MAAM,EAAE,CAAC,cAAc,CAAoC,CAAC;IACrE,CAAC;IAED,oBAAoB,CAAC,MAAmB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC9D,OAAO,MAAM,EAAE,CAAC,aAAa,CAAkC,CAAC;IAClE,CAAC;IAED,mBAAmB,CACjB,MAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACpE,OAAO,MAAM,EAAE,CAAC,mBAAmB,CAEtB,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,67 @@
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
+ * Key for the module's setup callback. A symbol (not exported from the package root)
8
+ * keeps the container-only member out of consumer-facing autocomplete entirely.
9
+ *
10
+ * @since 0.5.0-canary.7
11
+ */
12
+ export declare const MODULE_SETUP: unique symbol;
13
+ /**
14
+ * @since 0.3.16-canary.0
15
+ */
16
+ export interface SyncModule {
17
+ readonly name: string;
18
+ readonly [SYNC_MODULE_BRAND]: true;
19
+ readonly [MODULE_SETUP]: (builder: ModuleBuilder) => void;
20
+ }
21
+ /**
22
+ * @since 0.3.16-canary.0
23
+ */
24
+ export interface AsyncModule {
25
+ readonly name: string;
26
+ readonly [ASYNC_MODULE_BRAND]: true;
27
+ readonly [MODULE_SETUP]: (builder: AsyncModuleBuilder) => Promise<void>;
28
+ }
29
+ /**
30
+ * @since 0.3.16-canary.0
31
+ */
32
+ export interface ModuleBuilder {
33
+ bind<const Value>(token: Token<Value> | Constructor<Value>): BindToBuilder<Value>;
34
+ import(...modules: Array<SyncModule>): void;
35
+ }
36
+ /**
37
+ * @since 0.3.16-canary.0
38
+ */
39
+ export interface AsyncModuleBuilder {
40
+ bind<const Value>(token: Token<Value> | Constructor<Value>): BindToBuilder<Value>;
41
+ import(...modules: Array<SyncModule | AsyncModule>): void;
42
+ }
43
+ /**
44
+ * @since 0.3.16-canary.0
45
+ */
46
+ export declare const SyncModule: {
47
+ create(name: string, setup: (builder: ModuleBuilder) => void): SyncModule;
48
+ };
49
+ /**
50
+ * @since 0.3.16-canary.0
51
+ */
52
+ export declare const AsyncModule: {
53
+ create(name: string, setup: (builder: AsyncModuleBuilder) => Promise<void>): AsyncModule;
54
+ };
55
+ /**
56
+ * @since 0.3.16-canary.0
57
+ */
58
+ export declare const Module: {
59
+ create(name: string, setup: (builder: ModuleBuilder) => void): SyncModule;
60
+ createAsync(name: string, setup: (builder: AsyncModuleBuilder) => Promise<void>): AsyncModule;
61
+ };
62
+ /**
63
+ * @since 0.3.16-canary.0
64
+ */
65
+ export declare function isSyncModule(module: SyncModule | AsyncModule): module is SyncModule;
66
+ export {};
67
+ //# 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;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,MAAkC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3D;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,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;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,54 @@
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
+ /**
5
+ * Key for the module's setup callback. A symbol (not exported from the package root)
6
+ * keeps the container-only member out of consumer-facing autocomplete entirely.
7
+ *
8
+ * @since 0.5.0-canary.7
9
+ */
10
+ export const MODULE_SETUP = Symbol("di:module-setup");
11
+ // ── Static factories ──────────────────────────────────────────────────────────
12
+ /**
13
+ * @since 0.3.16-canary.0
14
+ */
15
+ export const SyncModule = {
16
+ create(name, setup) {
17
+ return {
18
+ name,
19
+ [SYNC_MODULE_BRAND]: true,
20
+ [MODULE_SETUP]: setup,
21
+ };
22
+ },
23
+ };
24
+ /**
25
+ * @since 0.3.16-canary.0
26
+ */
27
+ export const AsyncModule = {
28
+ create(name, setup) {
29
+ return {
30
+ name,
31
+ [ASYNC_MODULE_BRAND]: true,
32
+ [MODULE_SETUP]: setup,
33
+ };
34
+ },
35
+ };
36
+ // ── Module — unified API ──────────────────────────────────────────────────────
37
+ /**
38
+ * @since 0.3.16-canary.0
39
+ */
40
+ export const Module = {
41
+ create(name, setup) {
42
+ return SyncModule.create(name, setup);
43
+ },
44
+ createAsync(name, setup) {
45
+ return AsyncModule.create(name, setup);
46
+ },
47
+ };
48
+ /**
49
+ * @since 0.3.16-canary.0
50
+ */
51
+ export function isSyncModule(module) {
52
+ return module[SYNC_MODULE_BRAND];
53
+ }
54
+ //# 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;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAsCrE,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,CAAC,YAAY,CAAC,EAAE,KAAK;SACtB,CAAC;IACJ,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,CAAC,YAAY,CAAC,EAAE,KAAK;SACtB,CAAC;IACJ,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,33 @@
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;
9
+ /** Monotonic version — increments on every mutation. */
10
+ get version(): number;
11
+ /** Add or replace binding using slot-aware last-wins. Returns the displaced binding, if any. */
12
+ add(uncommittedBinding: Binding): Binding | undefined;
13
+ /** Remove all bindings for a token. Returns removed bindings. */
14
+ removeByToken(token: Token<unknown> | Constructor): Array<Binding>;
15
+ /** Remove a specific binding by ID. Returns the removed binding or undefined. */
16
+ removeById(id: BindingIdentifier): Binding | undefined;
17
+ /** Get all bindings for a token. */
18
+ getAll(token: Token<unknown> | Constructor): ReadonlyArray<Binding>;
19
+ /** Get binding by ID. */
20
+ getById(id: BindingIdentifier): Binding | undefined;
21
+ /** Check if any binding exists for token. */
22
+ has(token: Token<unknown> | Constructor): boolean;
23
+ /** All bindings in the registry. */
24
+ allBindings(): ReadonlyArray<Binding>;
25
+ /** Remove all bindings. Returns all removed. */
26
+ clear(): ReadonlyArray<Binding>;
27
+ getSimpleNamed(token: Token<unknown> | Constructor, name: string): Binding | undefined;
28
+ getSimpleTagged(token: Token<unknown> | Constructor, tagKey: string, tagValue: unknown): Binding | undefined;
29
+ getFastDefault(token: Token<unknown> | Constructor): Binding | undefined;
30
+ /** Summarize available slot strings for a token (for error messages). */
31
+ availableSlotStrings(token: Token<unknown> | Constructor): Array<string>;
32
+ }
33
+ //# 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;AAwC7E;;GAEG;AACH,qBAAa,eAAe;;IAc1B,wDAAwD;IACxD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gGAAgG;IAChG,GAAG,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CA4BpD;IAED,iEAAiE;IACjE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAYjE;IAED,iFAAiF;IACjF,UAAU,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,CA0BrD;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,CAS9B;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;CAwFF"}