@zudojs/container 0.0.1

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 (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/containerCore/containerCore.core.d.ts +52 -0
  5. package/dist/containerCore/containerCore.core.d.ts.map +1 -0
  6. package/dist/containerCore/containerCore.core.js +150 -0
  7. package/dist/containerCore/containerCore.core.js.map +1 -0
  8. package/dist/containerCore/containerCore.scope.d.ts +58 -0
  9. package/dist/containerCore/containerCore.scope.d.ts.map +1 -0
  10. package/dist/containerCore/containerCore.scope.js +100 -0
  11. package/dist/containerCore/containerCore.scope.js.map +1 -0
  12. package/dist/containerCore/containerCore.type.d.ts +40 -0
  13. package/dist/containerCore/containerCore.type.d.ts.map +1 -0
  14. package/dist/containerCore/containerCore.type.js +5 -0
  15. package/dist/containerCore/containerCore.type.js.map +1 -0
  16. package/dist/containerCore/index.d.ts +9 -0
  17. package/dist/containerCore/index.d.ts.map +1 -0
  18. package/dist/containerCore/index.js +9 -0
  19. package/dist/containerCore/index.js.map +1 -0
  20. package/dist/containerLifecycle/containerLifecycle.core.d.ts +56 -0
  21. package/dist/containerLifecycle/containerLifecycle.core.d.ts.map +1 -0
  22. package/dist/containerLifecycle/containerLifecycle.core.js +145 -0
  23. package/dist/containerLifecycle/containerLifecycle.core.js.map +1 -0
  24. package/dist/containerLifecycle/index.d.ts +7 -0
  25. package/dist/containerLifecycle/index.d.ts.map +1 -0
  26. package/dist/containerLifecycle/index.js +7 -0
  27. package/dist/containerLifecycle/index.js.map +1 -0
  28. package/dist/containerOptions/containerOptions.type.d.ts +54 -0
  29. package/dist/containerOptions/containerOptions.type.d.ts.map +1 -0
  30. package/dist/containerOptions/containerOptions.type.js +73 -0
  31. package/dist/containerOptions/containerOptions.type.js.map +1 -0
  32. package/dist/containerOptions/index.d.ts +7 -0
  33. package/dist/containerOptions/index.d.ts.map +1 -0
  34. package/dist/containerOptions/index.js +7 -0
  35. package/dist/containerOptions/index.js.map +1 -0
  36. package/dist/containerProvider/containerProvider.core.d.ts +59 -0
  37. package/dist/containerProvider/containerProvider.core.d.ts.map +1 -0
  38. package/dist/containerProvider/containerProvider.core.js +61 -0
  39. package/dist/containerProvider/containerProvider.core.js.map +1 -0
  40. package/dist/containerProvider/index.d.ts +7 -0
  41. package/dist/containerProvider/index.d.ts.map +1 -0
  42. package/dist/containerProvider/index.js +7 -0
  43. package/dist/containerProvider/index.js.map +1 -0
  44. package/dist/containerRegistration/containerRegistration.core.d.ts +54 -0
  45. package/dist/containerRegistration/containerRegistration.core.d.ts.map +1 -0
  46. package/dist/containerRegistration/containerRegistration.core.js +135 -0
  47. package/dist/containerRegistration/containerRegistration.core.js.map +1 -0
  48. package/dist/containerRegistration/index.d.ts +7 -0
  49. package/dist/containerRegistration/index.d.ts.map +1 -0
  50. package/dist/containerRegistration/index.js +7 -0
  51. package/dist/containerRegistration/index.js.map +1 -0
  52. package/dist/containerRegistry/containerRegistry.core.d.ts +36 -0
  53. package/dist/containerRegistry/containerRegistry.core.d.ts.map +1 -0
  54. package/dist/containerRegistry/containerRegistry.core.js +153 -0
  55. package/dist/containerRegistry/containerRegistry.core.js.map +1 -0
  56. package/dist/containerRegistry/containerRegistry.error.d.ts +12 -0
  57. package/dist/containerRegistry/containerRegistry.error.d.ts.map +1 -0
  58. package/dist/containerRegistry/containerRegistry.error.js +22 -0
  59. package/dist/containerRegistry/containerRegistry.error.js.map +1 -0
  60. package/dist/containerRegistry/containerRegistry.type.d.ts +43 -0
  61. package/dist/containerRegistry/containerRegistry.type.d.ts.map +1 -0
  62. package/dist/containerRegistry/containerRegistry.type.js +14 -0
  63. package/dist/containerRegistry/containerRegistry.type.js.map +1 -0
  64. package/dist/containerRegistry/index.d.ts +9 -0
  65. package/dist/containerRegistry/index.d.ts.map +1 -0
  66. package/dist/containerRegistry/index.js +9 -0
  67. package/dist/containerRegistry/index.js.map +1 -0
  68. package/dist/containerResolution/containerResolution.core.d.ts +26 -0
  69. package/dist/containerResolution/containerResolution.core.d.ts.map +1 -0
  70. package/dist/containerResolution/containerResolution.core.js +125 -0
  71. package/dist/containerResolution/containerResolution.core.js.map +1 -0
  72. package/dist/containerResolution/containerResolution.error.d.ts +8 -0
  73. package/dist/containerResolution/containerResolution.error.d.ts.map +1 -0
  74. package/dist/containerResolution/containerResolution.error.js +8 -0
  75. package/dist/containerResolution/containerResolution.error.js.map +1 -0
  76. package/dist/containerResolution/containerResolution.type.d.ts +38 -0
  77. package/dist/containerResolution/containerResolution.type.d.ts.map +1 -0
  78. package/dist/containerResolution/containerResolution.type.js +5 -0
  79. package/dist/containerResolution/containerResolution.type.js.map +1 -0
  80. package/dist/containerResolution/index.d.ts +8 -0
  81. package/dist/containerResolution/index.d.ts.map +1 -0
  82. package/dist/containerResolution/index.js +8 -0
  83. package/dist/containerResolution/index.js.map +1 -0
  84. package/dist/containerScope/containerScope.type.d.ts +17 -0
  85. package/dist/containerScope/containerScope.type.d.ts.map +1 -0
  86. package/dist/containerScope/containerScope.type.js +43 -0
  87. package/dist/containerScope/containerScope.type.js.map +1 -0
  88. package/dist/containerScope/index.d.ts +7 -0
  89. package/dist/containerScope/index.d.ts.map +1 -0
  90. package/dist/containerScope/index.js +7 -0
  91. package/dist/containerScope/index.js.map +1 -0
  92. package/dist/containerToken/containerToken.type.d.ts +23 -0
  93. package/dist/containerToken/containerToken.type.d.ts.map +1 -0
  94. package/dist/containerToken/containerToken.type.js +45 -0
  95. package/dist/containerToken/containerToken.type.js.map +1 -0
  96. package/dist/containerToken/index.d.ts +7 -0
  97. package/dist/containerToken/index.d.ts.map +1 -0
  98. package/dist/containerToken/index.js +7 -0
  99. package/dist/containerToken/index.js.map +1 -0
  100. package/dist/index.d.ts +15 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +15 -0
  103. package/dist/index.js.map +1 -0
  104. package/package.json +47 -0
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Configuration options for the Zudojs dependency injection container.
3
+ */
4
+ import type { ContainerLifecycleOptions } from "../containerLifecycle/containerLifecycle.core.js";
5
+ import type { ContainerRegistryOptions } from "../containerRegistry/containerRegistry.type.js";
6
+ import type { ResolutionOptions } from "../containerResolution/containerResolution.type.js";
7
+ export declare enum ContainerLogLevel {
8
+ NONE = "none",
9
+ ERROR = "error",
10
+ WARN = "warn",
11
+ INFO = "info",
12
+ DEBUG = "debug",
13
+ TRACE = "trace"
14
+ }
15
+ export declare const DEFAULT_CONTAINER_LOG_LEVEL: ContainerLogLevel;
16
+ export interface ContainerResolutionOptions extends ResolutionOptions {
17
+ readonly autoRegisterClasses?: boolean;
18
+ readonly detectCircularDependencies?: boolean;
19
+ readonly maxResolutionDepth?: number;
20
+ }
21
+ export interface ContainerOptions {
22
+ readonly name?: string;
23
+ readonly registry?: ContainerRegistryOptions;
24
+ readonly lifecycle?: ContainerLifecycleOptions;
25
+ readonly resolution?: ContainerResolutionOptions;
26
+ readonly logLevel?: ContainerLogLevel;
27
+ readonly autoDispose?: boolean;
28
+ readonly allowScopes?: boolean;
29
+ readonly freezeRegistrations?: boolean;
30
+ readonly metadata?: Readonly<Record<string, unknown>>;
31
+ }
32
+ export interface ResolvedContainerOptions {
33
+ readonly name: string;
34
+ readonly registry: ContainerRegistryOptions;
35
+ readonly lifecycle: ContainerLifecycleOptions;
36
+ readonly resolution: ContainerResolutionOptions;
37
+ readonly logLevel: ContainerLogLevel;
38
+ readonly autoDispose: boolean;
39
+ readonly allowScopes: boolean;
40
+ readonly freezeRegistrations: boolean;
41
+ readonly metadata: Readonly<Record<string, unknown>>;
42
+ }
43
+ export declare const DEFAULT_CONTAINER_NAME = "zudojs-container";
44
+ export declare const DEFAULT_AUTO_DISPOSE = true;
45
+ export declare const DEFAULT_ALLOW_SCOPES = true;
46
+ export declare const DEFAULT_FREEZE_REGISTRATIONS = false;
47
+ export declare const DEFAULT_RESOLUTION_OPTIONS: Required<Pick<ContainerResolutionOptions, "autoRegisterClasses" | "detectCircularDependencies" | "maxResolutionDepth">>;
48
+ export declare function resolveContainerOptions(options?: ContainerOptions): ResolvedContainerOptions;
49
+ export declare function validateResolutionOptions(options: ContainerResolutionOptions): void;
50
+ export declare function isContainerLogLevel(value: unknown): value is ContainerLogLevel;
51
+ export declare function allowsContainerScopes(options: ResolvedContainerOptions): boolean;
52
+ export declare function shouldAutoDisposeContainer(options: ResolvedContainerOptions): boolean;
53
+ export declare function canModifyRegistrations(options: ResolvedContainerOptions): boolean;
54
+ //# sourceMappingURL=containerOptions.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerOptions.type.d.ts","sourceRoot":"","sources":["../../src/containerOptions/containerOptions.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAClG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAE5F,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,2BAA2B,EAAE,iBAClB,CAAC;AAEzB,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAC/C,IAAI,CACF,0BAA0B,EAC1B,qBAAqB,GAAG,4BAA4B,GAAG,oBAAoB,CAC5E,CAKF,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,gBAAqB,GAC7B,wBAAwB,CA6B1B;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,IAAI,CAUN;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,iBAAiB,CAS5B;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAET;AACD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAET;AACD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAET"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Configuration options for the Zudojs dependency injection container.
3
+ */
4
+ export var ContainerLogLevel;
5
+ (function (ContainerLogLevel) {
6
+ ContainerLogLevel["NONE"] = "none";
7
+ ContainerLogLevel["ERROR"] = "error";
8
+ ContainerLogLevel["WARN"] = "warn";
9
+ ContainerLogLevel["INFO"] = "info";
10
+ ContainerLogLevel["DEBUG"] = "debug";
11
+ ContainerLogLevel["TRACE"] = "trace";
12
+ })(ContainerLogLevel || (ContainerLogLevel = {}));
13
+ export const DEFAULT_CONTAINER_LOG_LEVEL = ContainerLogLevel.WARN;
14
+ export const DEFAULT_CONTAINER_NAME = "zudojs-container";
15
+ export const DEFAULT_AUTO_DISPOSE = true;
16
+ export const DEFAULT_ALLOW_SCOPES = true;
17
+ export const DEFAULT_FREEZE_REGISTRATIONS = false;
18
+ export const DEFAULT_RESOLUTION_OPTIONS = {
19
+ autoRegisterClasses: true,
20
+ detectCircularDependencies: true,
21
+ maxResolutionDepth: 100,
22
+ };
23
+ export function resolveContainerOptions(options = {}) {
24
+ const resolution = {
25
+ ...options.resolution,
26
+ autoRegisterClasses: options.resolution?.autoRegisterClasses ??
27
+ DEFAULT_RESOLUTION_OPTIONS.autoRegisterClasses,
28
+ detectCircularDependencies: options.resolution?.detectCircularDependencies ??
29
+ DEFAULT_RESOLUTION_OPTIONS.detectCircularDependencies,
30
+ maxResolutionDepth: options.resolution?.maxResolutionDepth ??
31
+ DEFAULT_RESOLUTION_OPTIONS.maxResolutionDepth,
32
+ };
33
+ validateResolutionOptions(resolution);
34
+ const metadata = options.metadata
35
+ ? Object.freeze({ ...options.metadata })
36
+ : Object.freeze({});
37
+ return Object.freeze({
38
+ name: options.name ?? DEFAULT_CONTAINER_NAME,
39
+ registry: Object.freeze({ ...(options.registry ?? {}) }),
40
+ lifecycle: Object.freeze({ ...(options.lifecycle ?? {}) }),
41
+ resolution: Object.freeze({ ...resolution }),
42
+ logLevel: options.logLevel ?? DEFAULT_CONTAINER_LOG_LEVEL,
43
+ autoDispose: options.autoDispose ?? DEFAULT_AUTO_DISPOSE,
44
+ allowScopes: options.allowScopes ?? DEFAULT_ALLOW_SCOPES,
45
+ freezeRegistrations: options.freezeRegistrations ?? DEFAULT_FREEZE_REGISTRATIONS,
46
+ metadata,
47
+ });
48
+ }
49
+ export function validateResolutionOptions(options) {
50
+ if (options.maxResolutionDepth !== undefined &&
51
+ (!Number.isInteger(options.maxResolutionDepth) ||
52
+ options.maxResolutionDepth <= 0)) {
53
+ throw new RangeError("Container maxResolutionDepth must be a positive integer.");
54
+ }
55
+ }
56
+ export function isContainerLogLevel(value) {
57
+ return (value === ContainerLogLevel.NONE ||
58
+ value === ContainerLogLevel.ERROR ||
59
+ value === ContainerLogLevel.WARN ||
60
+ value === ContainerLogLevel.INFO ||
61
+ value === ContainerLogLevel.DEBUG ||
62
+ value === ContainerLogLevel.TRACE);
63
+ }
64
+ export function allowsContainerScopes(options) {
65
+ return options.allowScopes;
66
+ }
67
+ export function shouldAutoDisposeContainer(options) {
68
+ return options.autoDispose;
69
+ }
70
+ export function canModifyRegistrations(options) {
71
+ return !options.freezeRegistrations;
72
+ }
73
+ //# sourceMappingURL=containerOptions.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerOptions.type.js","sourceRoot":"","sources":["../../src/containerOptions/containerOptions.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/container/containerOptions
3
+ *
4
+ * Container configuration options and types.
5
+ */
6
+ export * from "./containerOptions.type.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/containerOptions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/container/containerOptions
3
+ *
4
+ * Container configuration options and types.
5
+ */
6
+ export * from "./containerOptions.type.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/containerOptions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Dependency injection provider definitions for Zudojs.
3
+ * Providers describe how a dependency should be created or retrieved.
4
+ */
5
+ import type { Constructor, InjectionToken, Token } from "../containerToken/containerToken.type.js";
6
+ export type ProviderToken<T = unknown> = Token<T> | InjectionToken<T>;
7
+ export interface ClassProvider<T> {
8
+ readonly useClass: Constructor<T>;
9
+ }
10
+ export interface FactoryProvider<T> {
11
+ readonly useFactory: (...dependencies: unknown[]) => T;
12
+ readonly inject?: readonly ProviderToken[];
13
+ }
14
+ export interface ValueProvider<T> {
15
+ readonly useValue: T;
16
+ }
17
+ export interface ExistingProvider<T> {
18
+ readonly useExisting: ProviderToken<T>;
19
+ }
20
+ export type Provider<T = unknown> = ClassProvider<T> | FactoryProvider<T> | ValueProvider<T> | ExistingProvider<T>;
21
+ export interface TokenProvider<T = unknown> {
22
+ readonly provide: ProviderToken<T>;
23
+ readonly provider: Provider<T>;
24
+ }
25
+ export interface ClassRegistration<T = unknown> {
26
+ readonly provide: ProviderToken<T>;
27
+ readonly useClass: Constructor<T>;
28
+ }
29
+ export interface FactoryRegistration<T = unknown> {
30
+ readonly provide: ProviderToken<T>;
31
+ readonly useFactory: (...dependencies: unknown[]) => T;
32
+ readonly inject?: readonly ProviderToken[];
33
+ }
34
+ export interface ValueRegistration<T = unknown> {
35
+ readonly provide: ProviderToken<T>;
36
+ readonly useValue: T;
37
+ }
38
+ export interface ExistingRegistration<T = unknown> {
39
+ readonly provide: ProviderToken<T>;
40
+ readonly useExisting: ProviderToken<T>;
41
+ }
42
+ export type ContainerProvider<T = unknown> = Provider<T> | TokenProvider<T> | ClassRegistration<T> | FactoryRegistration<T> | ValueRegistration<T> | ExistingRegistration<T>;
43
+ export declare function isClassProvider<T = unknown>(provider: Provider<T>): provider is ClassProvider<T>;
44
+ export declare function isFactoryProvider<T = unknown>(provider: Provider<T>): provider is FactoryProvider<T>;
45
+ export declare function isValueProvider<T = unknown>(provider: Provider<T>): provider is ValueProvider<T>;
46
+ export declare function isExistingProvider<T = unknown>(provider: Provider<T>): provider is ExistingProvider<T>;
47
+ export declare function isTokenProvider<T = unknown>(provider: ContainerProvider<T>): provider is TokenProvider<T>;
48
+ export declare function hasInjectedDependencies<T = unknown>(provider: Provider<T>): provider is FactoryProvider<T>;
49
+ export declare function classProvider<T>(useClass: Constructor<T>): ClassProvider<T>;
50
+ export declare function factoryProvider<T>(useFactory: (...dependencies: unknown[]) => T, inject?: readonly ProviderToken[]): FactoryProvider<T>;
51
+ export declare function valueProvider<T>(useValue: T): ValueProvider<T>;
52
+ export declare function existingProvider<T>(useExisting: ProviderToken<T>): ExistingProvider<T>;
53
+ export declare function provideClass<T>(provide: ProviderToken<T>, useClass: Constructor<T>): ClassRegistration<T>;
54
+ export declare function provideFactory<T>(provide: ProviderToken<T>, useFactory: (...dependencies: unknown[]) => T, inject?: readonly ProviderToken[]): FactoryRegistration<T>;
55
+ export declare function provideValue<T>(provide: ProviderToken<T>, useValue: T): ValueRegistration<T>;
56
+ export declare function provideExisting<T>(provide: ProviderToken<T>, useExisting: ProviderToken<T>): ExistingRegistration<T>;
57
+ export declare function getProviderToken<T>(provider: ContainerProvider<T>): ProviderToken<T> | undefined;
58
+ export declare function normalizeProvider<T>(provider: ContainerProvider<T>): Provider<T>;
59
+ //# sourceMappingURL=containerProvider.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerProvider.core.d.ts","sourceRoot":"","sources":["../../src/containerProvider/containerProvider.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Dependency injection provider definitions for Zudojs.
3
+ * Providers describe how a dependency should be created or retrieved.
4
+ */
5
+ export function isClassProvider(provider) {
6
+ return "useClass" in provider && typeof provider.useClass === "function";
7
+ }
8
+ export function isFactoryProvider(provider) {
9
+ return "useFactory" in provider && typeof provider.useFactory === "function";
10
+ }
11
+ export function isValueProvider(provider) {
12
+ return "useValue" in provider;
13
+ }
14
+ export function isExistingProvider(provider) {
15
+ return "useExisting" in provider;
16
+ }
17
+ export function isTokenProvider(provider) {
18
+ return "provide" in provider && "provider" in provider;
19
+ }
20
+ export function hasInjectedDependencies(provider) {
21
+ return isFactoryProvider(provider) && Array.isArray(provider.inject);
22
+ }
23
+ export function classProvider(useClass) {
24
+ return Object.freeze({ useClass });
25
+ }
26
+ export function factoryProvider(useFactory, inject = []) {
27
+ return Object.freeze({ useFactory, inject: Object.freeze([...inject]) });
28
+ }
29
+ export function valueProvider(useValue) {
30
+ return Object.freeze({ useValue });
31
+ }
32
+ export function existingProvider(useExisting) {
33
+ return Object.freeze({ useExisting });
34
+ }
35
+ export function provideClass(provide, useClass) {
36
+ return Object.freeze({ provide, useClass });
37
+ }
38
+ export function provideFactory(provide, useFactory, inject = []) {
39
+ return Object.freeze({
40
+ provide,
41
+ useFactory,
42
+ inject: Object.freeze([...inject]),
43
+ });
44
+ }
45
+ export function provideValue(provide, useValue) {
46
+ return Object.freeze({ provide, useValue });
47
+ }
48
+ export function provideExisting(provide, useExisting) {
49
+ return Object.freeze({ provide, useExisting });
50
+ }
51
+ export function getProviderToken(provider) {
52
+ if (isTokenProvider(provider))
53
+ return provider.provide;
54
+ return undefined;
55
+ }
56
+ export function normalizeProvider(provider) {
57
+ if (isTokenProvider(provider))
58
+ return provider.provider;
59
+ return provider;
60
+ }
61
+ //# sourceMappingURL=containerProvider.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerProvider.core.js","sourceRoot":"","sources":["../../src/containerProvider/containerProvider.core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4DH,MAAM,UAAU,eAAe,CAC7B,QAAqB;IAErB,OAAO,UAAU,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,CAAC;AAC3E,CAAC;AACD,MAAM,UAAU,iBAAiB,CAC/B,QAAqB;IAErB,OAAO,YAAY,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC;AAC/E,CAAC;AACD,MAAM,UAAU,eAAe,CAC7B,QAAqB;IAErB,OAAO,UAAU,IAAI,QAAQ,CAAC;AAChC,CAAC;AACD,MAAM,UAAU,kBAAkB,CAChC,QAAqB;IAErB,OAAO,aAAa,IAAI,QAAQ,CAAC;AACnC,CAAC;AACD,MAAM,UAAU,eAAe,CAC7B,QAA8B;IAE9B,OAAO,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,uBAAuB,CACrC,QAAqB;IAErB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,QAAwB;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,UAAU,eAAe,CAC7B,UAA6C,EAC7C,MAAM,GAA6B,EAAE;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AACD,MAAM,UAAU,aAAa,CAAI,QAAW;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,UAAU,gBAAgB,CAC9B,WAA6B;IAE7B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAAyB,EACzB,QAAwB;IAExB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9C,CAAC;AACD,MAAM,UAAU,cAAc,CAC5B,OAAyB,EACzB,UAA6C,EAC7C,MAAM,GAA6B,EAAE;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO;QACP,UAAU;QACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,YAAY,CAC1B,OAAyB,EACzB,QAAW;IAEX,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9C,CAAC;AACD,MAAM,UAAU,eAAe,CAC7B,OAAyB,EACzB,WAA6B;IAE7B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAA8B;IAE9B,IAAI,eAAe,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAA8B;IAE9B,IAAI,eAAe,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;IACxD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/container/containerProvider
3
+ *
4
+ * Dependency provider implementations and factories.
5
+ */
6
+ export * from "./containerProvider.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/containerProvider/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/container/containerProvider
3
+ *
4
+ * Dependency provider implementations and factories.
5
+ */
6
+ export * from "./containerProvider.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/containerProvider/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Dependency registration definitions for Zudojs.
3
+ * A registration is the container's normalized description of a dependency.
4
+ */
5
+ import { ContainerScope } from "../containerScope/containerScope.type.js";
6
+ import type { ContainerProvider, ProviderToken } from "../containerProvider/containerProvider.core.js";
7
+ import type { InjectionToken, Token } from "../containerToken/containerToken.type.js";
8
+ export type RegistrationToken<T = unknown> = Token<T> | InjectionToken<T>;
9
+ export interface RegistrationMetadata {
10
+ readonly name?: string;
11
+ readonly description?: string;
12
+ readonly module?: string;
13
+ readonly exported?: boolean;
14
+ readonly metadata?: Readonly<Record<string, unknown>>;
15
+ }
16
+ export interface ContainerRegistration<T = unknown> {
17
+ readonly token: RegistrationToken<T>;
18
+ readonly provider: ContainerProvider<T>;
19
+ readonly scope: ContainerScope;
20
+ readonly metadata: RegistrationMetadata;
21
+ readonly initialized: boolean;
22
+ readonly createdAt: Date;
23
+ }
24
+ export interface CreateRegistrationOptions extends RegistrationMetadata {
25
+ readonly scope?: ContainerScope;
26
+ }
27
+ export interface MutableRegistrationState<T = unknown> {
28
+ readonly token: RegistrationToken<T>;
29
+ readonly provider: ContainerProvider<T>;
30
+ scope: ContainerScope;
31
+ metadata: RegistrationMetadata;
32
+ initialized: boolean;
33
+ createdAt: Date;
34
+ }
35
+ export declare function createRegistration<T>(token: RegistrationToken<T>, provider: ContainerProvider<T>, options?: CreateRegistrationOptions): ContainerRegistration<T>;
36
+ export declare function createMutableRegistrationState<T>(registration: ContainerRegistration<T>): MutableRegistrationState<T>;
37
+ export declare function freezeRegistration<T>(state: MutableRegistrationState<T>): ContainerRegistration<T>;
38
+ export declare function markRegistrationInitialized<T>(registration: ContainerRegistration<T>): ContainerRegistration<T>;
39
+ export declare function getRegistrationToken<T>(registration: ContainerRegistration<T>): Token<T>;
40
+ export declare function getRegistrationProviderToken<T>(registration: ContainerRegistration<T>): ProviderToken<T> | undefined;
41
+ export declare function isSingletonRegistration<T>(registration: ContainerRegistration<T>): boolean;
42
+ export declare function isScopedRegistration<T>(registration: ContainerRegistration<T>): boolean;
43
+ export declare function isTransientRegistration<T>(registration: ContainerRegistration<T>): boolean;
44
+ export declare function shouldCacheRegistration<T>(registration: ContainerRegistration<T>): boolean;
45
+ export declare function describeRegistration<T>(registration: ContainerRegistration<T>): string;
46
+ export declare function withRegistrationScope<T>(registration: ContainerRegistration<T>, scope: ContainerScope): ContainerRegistration<T>;
47
+ export declare function withRegistrationMetadata<T>(registration: ContainerRegistration<T>, metadata: RegistrationMetadata): ContainerRegistration<T>;
48
+ export declare function assertValidRegistrationToken<T>(token: RegistrationToken<T>): void;
49
+ export declare function assertValidProvider<T>(provider: ContainerProvider<T>): void;
50
+ export declare function defineRegistration<T>(token: RegistrationToken<T>, provider: ContainerProvider<T>, options?: CreateRegistrationOptions): ContainerRegistration<T>;
51
+ export declare const DEFAULT_REGISTRATION_SCOPE: ContainerScope;
52
+ export type RegistrationMap = ReadonlyMap<Token<unknown>, ContainerRegistration<unknown>>;
53
+ export declare function createRegistrationMap(registrations: readonly ContainerRegistration[]): RegistrationMap;
54
+ //# sourceMappingURL=containerRegistration.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistration.core.d.ts","sourceRoot":"","sources":["../../src/containerRegistration/containerRegistration.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Dependency registration definitions for Zudojs.
3
+ * A registration is the container's normalized description of a dependency.
4
+ */
5
+ import { ContainerScope, DEFAULT_CONTAINER_SCOPE, resolveContainerScope, } from "../containerScope/containerScope.type.js";
6
+ import { getProviderToken, normalizeProvider, } from "../containerProvider/containerProvider.core.js";
7
+ import { describeToken, unwrapToken, } from "../containerToken/containerToken.type.js";
8
+ export function createRegistration(token, provider, options = {}) {
9
+ const normalizedToken = unwrapToken(token);
10
+ const normalizedProvider = normalizeProvider(provider);
11
+ const registration = {
12
+ token: normalizedToken,
13
+ provider: normalizedProvider,
14
+ scope: resolveContainerScope(options.scope),
15
+ metadata: createRegistrationMetadata(options, normalizedToken),
16
+ initialized: false,
17
+ createdAt: new Date(),
18
+ };
19
+ return Object.freeze({
20
+ ...registration,
21
+ metadata: Object.freeze({
22
+ ...registration.metadata,
23
+ metadata: registration.metadata.metadata
24
+ ? Object.freeze({ ...registration.metadata.metadata })
25
+ : undefined,
26
+ }),
27
+ });
28
+ }
29
+ function createRegistrationMetadata(options, token) {
30
+ return {
31
+ name: options.name ?? describeToken(token),
32
+ description: options.description,
33
+ module: options.module,
34
+ exported: options.exported,
35
+ metadata: options.metadata
36
+ ? Object.freeze({ ...options.metadata })
37
+ : undefined,
38
+ };
39
+ }
40
+ export function createMutableRegistrationState(registration) {
41
+ return {
42
+ token: registration.token,
43
+ provider: registration.provider,
44
+ scope: registration.scope,
45
+ metadata: registration.metadata,
46
+ initialized: registration.initialized,
47
+ createdAt: registration.createdAt,
48
+ };
49
+ }
50
+ export function freezeRegistration(state) {
51
+ return Object.freeze({
52
+ token: state.token,
53
+ provider: state.provider,
54
+ scope: state.scope,
55
+ metadata: Object.freeze({
56
+ ...state.metadata,
57
+ metadata: state.metadata.metadata
58
+ ? Object.freeze({ ...state.metadata.metadata })
59
+ : undefined,
60
+ }),
61
+ initialized: state.initialized,
62
+ createdAt: state.createdAt,
63
+ });
64
+ }
65
+ export function markRegistrationInitialized(registration) {
66
+ return Object.freeze({ ...registration, initialized: true });
67
+ }
68
+ export function getRegistrationToken(registration) {
69
+ return unwrapToken(registration.token);
70
+ }
71
+ export function getRegistrationProviderToken(registration) {
72
+ return getProviderToken(registration.provider);
73
+ }
74
+ export function isSingletonRegistration(registration) {
75
+ return registration.scope === ContainerScope.SINGLETON;
76
+ }
77
+ export function isScopedRegistration(registration) {
78
+ return registration.scope === ContainerScope.SCOPED;
79
+ }
80
+ export function isTransientRegistration(registration) {
81
+ return registration.scope === ContainerScope.TRANSIENT;
82
+ }
83
+ export function shouldCacheRegistration(registration) {
84
+ return (registration.scope === ContainerScope.SINGLETON ||
85
+ registration.scope === ContainerScope.SCOPED);
86
+ }
87
+ export function describeRegistration(registration) {
88
+ const name = registration.metadata.name ?? describeToken(registration.token);
89
+ return `${name} [${registration.scope}]`;
90
+ }
91
+ export function withRegistrationScope(registration, scope) {
92
+ return Object.freeze({
93
+ ...registration,
94
+ scope: resolveContainerScope(scope),
95
+ });
96
+ }
97
+ export function withRegistrationMetadata(registration, metadata) {
98
+ return Object.freeze({
99
+ ...registration,
100
+ metadata: Object.freeze({
101
+ ...registration.metadata,
102
+ ...metadata,
103
+ metadata: {
104
+ ...(registration.metadata.metadata ?? {}),
105
+ ...(metadata.metadata ?? {}),
106
+ },
107
+ }),
108
+ });
109
+ }
110
+ export function assertValidRegistrationToken(token) {
111
+ const normalized = unwrapToken(token);
112
+ if (typeof normalized !== "string" &&
113
+ typeof normalized !== "symbol" &&
114
+ typeof normalized !== "function") {
115
+ throw new TypeError("Container registration requires a valid token.");
116
+ }
117
+ }
118
+ export function assertValidProvider(provider) {
119
+ if (provider === null || typeof provider !== "object") {
120
+ throw new TypeError("Container registration requires a valid provider.");
121
+ }
122
+ }
123
+ export function defineRegistration(token, provider, options = {}) {
124
+ assertValidRegistrationToken(token);
125
+ assertValidProvider(provider);
126
+ return createRegistration(token, provider, options);
127
+ }
128
+ export const DEFAULT_REGISTRATION_SCOPE = DEFAULT_CONTAINER_SCOPE;
129
+ export function createRegistrationMap(registrations) {
130
+ const map = new Map();
131
+ for (const reg of registrations)
132
+ map.set(unwrapToken(reg.token), reg);
133
+ return map;
134
+ }
135
+ //# sourceMappingURL=containerRegistration.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistration.core.js","sourceRoot":"","sources":["../../src/containerRegistration/containerRegistration.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/container/containerRegistration
3
+ *
4
+ * Service registration and token binding.
5
+ */
6
+ export * from "./containerRegistration.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/containerRegistration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/container/containerRegistration
3
+ *
4
+ * Service registration and token binding.
5
+ */
6
+ export * from "./containerRegistration.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/containerRegistration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Container registration registry.
3
+ */
4
+ import type { ContainerProvider } from "../containerProvider/containerProvider.core.js";
5
+ import type { ContainerScope } from "../containerScope/containerScope.type.js";
6
+ import type { ContainerRegistration, CreateRegistrationOptions, RegistrationMetadata, RegistrationToken } from "../containerRegistration/containerRegistration.core.js";
7
+ import type { Token } from "../containerToken/containerToken.type.js";
8
+ import type { ContainerRegistryOptions, RegistryListener } from "./containerRegistry.type.js";
9
+ export declare class ContainerRegistry {
10
+ private readonly registrations;
11
+ private readonly listeners;
12
+ private readonly allowDuplicates;
13
+ constructor(options?: ContainerRegistryOptions);
14
+ register<T>(token: RegistrationToken<T>, provider: ContainerProvider<T>, options?: CreateRegistrationOptions): ContainerRegistration<T>;
15
+ registerRegistration<T>(registration: ContainerRegistration<T>): ContainerRegistration<T>;
16
+ replace<T>(token: RegistrationToken<T>, provider: ContainerProvider<T>, options?: CreateRegistrationOptions): ContainerRegistration<T>;
17
+ get<T>(token: RegistrationToken<T>): ContainerRegistration<T> | undefined;
18
+ getOrThrow<T>(token: RegistrationToken<T>): ContainerRegistration<T>;
19
+ has<T>(token: RegistrationToken<T>): boolean;
20
+ remove<T>(token: RegistrationToken<T>): boolean;
21
+ removeOrThrow<T>(token: RegistrationToken<T>): void;
22
+ get size(): number;
23
+ getAll(): readonly ContainerRegistration[];
24
+ getTokens(): readonly Token<unknown>[];
25
+ getByModule(module: string): readonly ContainerRegistration[];
26
+ getByScope(scope: ContainerScope): readonly ContainerRegistration[];
27
+ find(predicate: (r: ContainerRegistration) => boolean): readonly ContainerRegistration[];
28
+ getMetadata<T>(token: RegistrationToken<T>): RegistrationMetadata | undefined;
29
+ clear(): void;
30
+ subscribe(listener: RegistryListener): () => void;
31
+ clearListeners(): void;
32
+ private emit;
33
+ snapshot(): readonly ContainerRegistration[];
34
+ restore(regs: readonly ContainerRegistration[]): void;
35
+ }
36
+ //# sourceMappingURL=containerRegistry.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerRegistry.core.d.ts","sourceRoot":"","sources":["../../src/containerRegistry/containerRegistry.core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAExF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,wDAAwD,CAAC;AAOhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AAItE,OAAO,KAAK,EACV,wBAAwB,EAExB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAUrC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG1B;IACJ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAE1C,YAAY,OAAO,GAAE,wBAA6B,EAEjD;IAED,QAAQ,CAAC,CAAC,EACR,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3B,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,OAAO,GAAE,yBAA8B,GACtC,qBAAqB,CAAC,CAAC,CAAC,CAe1B;IAED,oBAAoB,CAAC,CAAC,EACpB,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACrC,qBAAqB,CAAC,CAAC,CAAC,CAc1B;IAED,OAAO,CAAC,CAAC,EACP,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3B,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,OAAO,GAAE,yBAA8B,GACtC,qBAAqB,CAAC,CAAC,CAAC,CAe1B;IAED,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,SAAS,CAGxE;IAED,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAOnE;IAED,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAE3C;IAED,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAa9C;IAED,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAKlD;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,IAAI,SAAS,qBAAqB,EAAE,CAEzC;IAED,SAAS,IAAI,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAErC;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,qBAAqB,EAAE,CAI5D;IAED,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,qBAAqB,EAAE,CAElE;IAED,IAAI,CACF,SAAS,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,OAAO,GAC/C,SAAS,qBAAqB,EAAE,CAElC;IAED,WAAW,CAAC,CAAC,EACX,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC1B,oBAAoB,GAAG,SAAS,CAElC;IAED,KAAK,IAAI,IAAI,CAQZ;IAED,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAKhD;IAED,cAAc,IAAI,IAAI,CAErB;IAED,OAAO,CAAC,IAAI;IAUZ,QAAQ,IAAI,SAAS,qBAAqB,EAAE,CAE3C;IAED,OAAO,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,GAAG,IAAI,CAOpD;CACF"}