@navios/di 0.9.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +28 -0
  3. package/coverage/block-navigation.js +1 -1
  4. package/coverage/clover.xml +1463 -3174
  5. package/coverage/coverage-final.json +56 -54
  6. package/coverage/index.html +179 -104
  7. package/coverage/sorter.js +21 -7
  8. package/coverage/src/{request-context-manager.mts.html → __tests__/gc/gc-test-utils.mts.html} +192 -231
  9. package/coverage/{lib → src/__tests__/gc}/index.html +25 -40
  10. package/coverage/src/container/abstract-container.mts.html +1066 -0
  11. package/coverage/src/container/container.mts.html +958 -0
  12. package/coverage/src/container/index.html +161 -0
  13. package/coverage/src/{testing → container}/index.mts.html +12 -9
  14. package/coverage/src/container/scoped-container.mts.html +907 -0
  15. package/coverage/src/decorators/factory.decorator.mts.html +68 -53
  16. package/coverage/src/decorators/index.html +34 -34
  17. package/coverage/src/decorators/index.mts.html +10 -10
  18. package/coverage/src/decorators/injectable.decorator.mts.html +144 -60
  19. package/coverage/src/enums/index.html +21 -21
  20. package/coverage/src/enums/index.mts.html +12 -12
  21. package/coverage/src/enums/injectable-scope.enum.mts.html +11 -8
  22. package/coverage/src/enums/injectable-type.enum.mts.html +10 -7
  23. package/coverage/src/errors/di-error.mts.html +380 -71
  24. package/coverage/src/errors/index.html +22 -127
  25. package/coverage/src/errors/index.mts.html +9 -33
  26. package/coverage/src/event-emitter.mts.html +35 -107
  27. package/coverage/src/index.html +14 -254
  28. package/coverage/src/index.mts.html +23 -50
  29. package/coverage/src/interfaces/container.interface.mts.html +370 -0
  30. package/coverage/src/interfaces/factory.interface.mts.html +12 -12
  31. package/coverage/src/interfaces/index.html +45 -30
  32. package/coverage/src/interfaces/index.mts.html +16 -13
  33. package/coverage/src/interfaces/on-service-destroy.interface.mts.html +1 -1
  34. package/coverage/src/interfaces/on-service-init.interface.mts.html +1 -1
  35. package/coverage/src/internal/context/async-local-storage.browser.mts.html +142 -0
  36. package/coverage/src/internal/context/async-local-storage.mts.html +292 -0
  37. package/coverage/src/{factory-context.mts.html → internal/context/async-local-storage.types.mts.html} +17 -17
  38. package/coverage/src/internal/context/factory-context.mts.html +142 -0
  39. package/coverage/src/internal/context/index.html +221 -0
  40. package/coverage/src/internal/context/index.mts.html +100 -0
  41. package/coverage/src/{service-locator-instance-holder.mts.html → internal/context/resolution-context.mts.html} +114 -78
  42. package/coverage/src/internal/context/service-initialization-context.mts.html +214 -0
  43. package/coverage/src/internal/context/sync-local-storage.mts.html +244 -0
  44. package/coverage/src/internal/core/index.html +206 -0
  45. package/coverage/src/internal/core/index.mts.html +103 -0
  46. package/coverage/src/internal/core/instance-resolver.mts.html +2533 -0
  47. package/coverage/src/{request-context-holder.mts.html → internal/core/name-resolver.mts.html} +245 -260
  48. package/coverage/src/{container.mts.html → internal/core/scope-tracker.mts.html} +352 -310
  49. package/coverage/src/{service-instantiator.mts.html → internal/core/service-initializer.mts.html} +254 -176
  50. package/coverage/src/internal/core/service-invalidator.mts.html +955 -0
  51. package/coverage/src/internal/core/token-resolver.mts.html +451 -0
  52. package/coverage/src/internal/holder/holder-storage.interface.mts.html +451 -0
  53. package/coverage/src/internal/holder/index.html +161 -0
  54. package/coverage/src/internal/holder/index.mts.html +94 -0
  55. package/coverage/src/internal/holder/instance-holder.mts.html +406 -0
  56. package/coverage/src/{service-locator.mts.html → internal/holder/unified-storage.mts.html} +376 -379
  57. package/coverage/{lib/testing → src/internal}/index.html +26 -11
  58. package/coverage/src/internal/index.mts.html +100 -0
  59. package/coverage/src/internal/lifecycle/circular-detector.mts.html +364 -0
  60. package/coverage/src/internal/lifecycle/index.html +146 -0
  61. package/coverage/src/internal/lifecycle/index.mts.html +91 -0
  62. package/coverage/src/{service-locator-event-bus.mts.html → internal/lifecycle/lifecycle-event-bus.mts.html} +104 -80
  63. package/coverage/src/internal/stub-factory-class.mts.html +133 -0
  64. package/coverage/src/symbols/index.html +14 -14
  65. package/coverage/src/symbols/index.mts.html +9 -9
  66. package/coverage/src/symbols/injectable-token.mts.html +9 -3
  67. package/coverage/src/testing/index.html +32 -32
  68. package/coverage/src/testing/test-container.mts.html +1576 -139
  69. package/coverage/src/testing/unit-test-container.mts.html +1888 -0
  70. package/coverage/src/token/index.html +146 -0
  71. package/coverage/{lib/testing/index.d.mts.html → src/token/index.mts.html} +11 -11
  72. package/coverage/src/{injection-token.mts.html → token/injection-token.mts.html} +225 -111
  73. package/coverage/src/{base-instance-holder-manager.mts.html → token/registry.mts.html} +188 -269
  74. package/coverage/src/{injector.mts.html → utils/default-injectors.mts.html} +31 -31
  75. package/coverage/src/utils/get-injectable-token.mts.html +19 -22
  76. package/coverage/src/utils/get-injectors.mts.html +684 -177
  77. package/coverage/src/utils/index.html +36 -36
  78. package/coverage/src/utils/index.mts.html +18 -12
  79. package/coverage/src/utils/types.mts.html +26 -11
  80. package/docs/examples/basic-usage.mts +1 -1
  81. package/docs/examples/factory-pattern.mts +3 -3
  82. package/docs/examples/request-scope-example.mts +1 -1
  83. package/docs/examples/service-lifecycle.mts +1 -1
  84. package/lib/browser/internal/core/instance-resolver.d.mts.map +1 -1
  85. package/lib/browser/internal/core/instance-resolver.mjs.map +1 -1
  86. package/lib/browser/utils/get-injectors.mjs +9 -12
  87. package/lib/browser/utils/get-injectors.mjs.map +1 -1
  88. package/lib/{container-D-0Ho3qL.d.cts → container-D3j3KuD9.d.mts} +5 -289
  89. package/lib/container-D3j3KuD9.d.mts.map +1 -0
  90. package/lib/{container-8-z89TyQ.mjs → container-qgHMgGNG.mjs} +12 -239
  91. package/lib/container-qgHMgGNG.mjs.map +1 -0
  92. package/lib/{container-CNiqesCL.d.mts → container-r1KP4F-n.d.cts} +5 -289
  93. package/lib/container-r1KP4F-n.d.cts.map +1 -0
  94. package/lib/{container-CaY2fDuk.cjs → container-ycYJgTq7.cjs} +50 -331
  95. package/lib/container-ycYJgTq7.cjs.map +1 -0
  96. package/lib/factory.decorator-D4mem6YQ.cjs +21 -0
  97. package/lib/factory.decorator-D4mem6YQ.cjs.map +1 -0
  98. package/lib/factory.decorator-_IPWcwQn.mjs +16 -0
  99. package/lib/factory.decorator-_IPWcwQn.mjs.map +1 -0
  100. package/lib/index.cjs +14 -24
  101. package/lib/index.cjs.map +1 -1
  102. package/lib/index.d.cts +3 -52
  103. package/lib/index.d.cts.map +1 -1
  104. package/lib/index.d.mts +3 -52
  105. package/lib/index.d.mts.map +1 -1
  106. package/lib/index.mjs +3 -13
  107. package/lib/index.mjs.map +1 -1
  108. package/lib/injectable.decorator-BNfWpjr_.d.cts +56 -0
  109. package/lib/injectable.decorator-BNfWpjr_.d.cts.map +1 -0
  110. package/lib/injectable.decorator-Bc05hRQU.d.mts +56 -0
  111. package/lib/injectable.decorator-Bc05hRQU.d.mts.map +1 -0
  112. package/lib/injectable.decorator-CyPrBzBN.mjs +227 -0
  113. package/lib/injectable.decorator-CyPrBzBN.mjs.map +1 -0
  114. package/lib/injectable.decorator-DbpiDrg-.cjs +281 -0
  115. package/lib/injectable.decorator-DbpiDrg-.cjs.map +1 -0
  116. package/lib/legacy-compat/index.cjs +114 -0
  117. package/lib/legacy-compat/index.cjs.map +1 -0
  118. package/lib/legacy-compat/index.d.cts +63 -0
  119. package/lib/legacy-compat/index.d.cts.map +1 -0
  120. package/lib/legacy-compat/index.d.mts +63 -0
  121. package/lib/legacy-compat/index.d.mts.map +1 -0
  122. package/lib/legacy-compat/index.mjs +111 -0
  123. package/lib/legacy-compat/index.mjs.map +1 -0
  124. package/lib/registry-DKbKWFvJ.d.cts +290 -0
  125. package/lib/registry-DKbKWFvJ.d.cts.map +1 -0
  126. package/lib/registry-n8JhJoxm.d.mts +290 -0
  127. package/lib/registry-n8JhJoxm.d.mts.map +1 -0
  128. package/lib/testing/index.cjs +23 -22
  129. package/lib/testing/index.cjs.map +1 -1
  130. package/lib/testing/index.d.cts +2 -1
  131. package/lib/testing/index.d.cts.map +1 -1
  132. package/lib/testing/index.d.mts +2 -1
  133. package/lib/testing/index.d.mts.map +1 -1
  134. package/lib/testing/index.mjs +2 -1
  135. package/lib/testing/index.mjs.map +1 -1
  136. package/package.json +11 -1
  137. package/project.json +8 -0
  138. package/src/__tests__/gc/basic-container.spec.mts +358 -0
  139. package/src/__tests__/gc/circular-dependencies.spec.mts +501 -0
  140. package/src/__tests__/gc/gc-test-utils.mts +136 -0
  141. package/src/__tests__/gc/memory-pressure.spec.mts +542 -0
  142. package/src/__tests__/gc/scoped-container.spec.mts +444 -0
  143. package/src/__tests__/gc/transient-services.spec.mts +326 -0
  144. package/src/__tests__/get-injectors.spec.mts +166 -0
  145. package/src/__tests__/scope-upgrade.spec.mts +0 -18
  146. package/src/internal/core/instance-resolver.mts +0 -1
  147. package/src/legacy-compat/context-compat.mts +95 -0
  148. package/src/legacy-compat/factory.decorator.mts +37 -0
  149. package/src/legacy-compat/index.mts +16 -0
  150. package/src/legacy-compat/injectable.decorator.mts +41 -0
  151. package/src/utils/get-injectors.mts +36 -32
  152. package/tsdown.config.mts +1 -1
  153. package/vitest.config.mts +3 -7
  154. package/coverage/docs/examples/basic-usage.mts.html +0 -376
  155. package/coverage/docs/examples/factory-pattern.mts.html +0 -1039
  156. package/coverage/docs/examples/index.html +0 -176
  157. package/coverage/docs/examples/injection-tokens.mts.html +0 -760
  158. package/coverage/docs/examples/request-scope-example.mts.html +0 -847
  159. package/coverage/docs/examples/service-lifecycle.mts.html +0 -1162
  160. package/coverage/lib/_tsup-dts-rollup.d.mts.html +0 -3445
  161. package/coverage/lib/index.d.mts.html +0 -313
  162. package/coverage/src/errors/errors.enum.mts.html +0 -118
  163. package/coverage/src/errors/factory-not-found.mts.html +0 -118
  164. package/coverage/src/errors/factory-token-not-resolved.mts.html +0 -118
  165. package/coverage/src/errors/instance-destroying.mts.html +0 -118
  166. package/coverage/src/errors/instance-expired.mts.html +0 -118
  167. package/coverage/src/errors/instance-not-found.mts.html +0 -118
  168. package/coverage/src/errors/unknown-error.mts.html +0 -118
  169. package/coverage/src/instance-resolver.mts.html +0 -1762
  170. package/coverage/src/registry.mts.html +0 -247
  171. package/coverage/src/service-invalidator.mts.html +0 -1372
  172. package/coverage/src/service-locator-manager.mts.html +0 -340
  173. package/coverage/src/token-processor.mts.html +0 -607
  174. package/coverage/src/utils/defer.mts.html +0 -118
  175. package/lib/container-8-z89TyQ.mjs.map +0 -1
  176. package/lib/container-CNiqesCL.d.mts.map +0 -1
  177. package/lib/container-CaY2fDuk.cjs.map +0 -1
  178. package/lib/container-D-0Ho3qL.d.cts.map +0 -1
@@ -0,0 +1,290 @@
1
+ import { ZodObject, ZodOptional, ZodRecord, ZodType, z } from "zod/v4";
2
+
3
+ //#region src/token/injection-token.d.mts
4
+ type ClassType = new (...args: any[]) => any;
5
+ type ClassTypeWithoutArguments = new () => any;
6
+ type ClassTypeWithArgument<Arg> = new (arg: Arg) => any;
7
+ type ClassTypeWithOptionalArgument<Arg> = new (arg?: Arg) => any;
8
+ type ClassTypeWithInstance<T> = new (...args: any[]) => T;
9
+ type ClassTypeWithInstanceAndArgument<T, Arg> = new (arg: Arg) => T;
10
+ type ClassTypeWithInstanceAndOptionalArgument<T, Arg> = new (arg?: Arg) => T;
11
+ type BaseInjectionTokenSchemaType = ZodObject | ZodRecord;
12
+ type OptionalInjectionTokenSchemaType = ZodOptional<ZodObject> | ZodOptional<ZodRecord>;
13
+ type InjectionTokenSchemaType = BaseInjectionTokenSchemaType | OptionalInjectionTokenSchemaType;
14
+ declare class InjectionToken<T, S extends InjectionTokenSchemaType | unknown = unknown, Required extends boolean = (S extends ZodOptional<ZodObject> ? false : S extends ZodOptional<ZodRecord> ? false : S extends ZodObject ? true : S extends ZodRecord ? true : false)> {
15
+ readonly name: string | symbol | ClassType;
16
+ readonly schema: ZodObject | undefined;
17
+ readonly id: string;
18
+ private formattedName;
19
+ constructor(name: string | symbol | ClassType, schema: ZodObject | undefined, customId?: string);
20
+ static create<T extends ClassType>(name: T): InjectionToken<InstanceType<T>, undefined>;
21
+ static create<T extends ClassType, Schema extends InjectionTokenSchemaType>(name: T, schema: Schema): Schema['_def']['type'] extends 'ZodOptional' ? InjectionToken<InstanceType<T>, Schema, false> : InjectionToken<InstanceType<T>, Schema, true>;
22
+ static create<T>(name: string | symbol): InjectionToken<T, undefined>;
23
+ static create<T, Schema extends InjectionTokenSchemaType>(name: string | any, schema: Schema): InjectionToken<T, Schema>;
24
+ static bound<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, value: z.input<S>): BoundInjectionToken<T, S>;
25
+ static factory<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, factory: (ctx: FactoryContext) => Promise<z.input<S>>): FactoryInjectionToken<T, S>;
26
+ static refineType<T>(token: BoundInjectionToken<any, any>): BoundInjectionToken<T, any>;
27
+ toString(): string;
28
+ }
29
+ declare class BoundInjectionToken<T, S extends InjectionTokenSchemaType> {
30
+ readonly token: InjectionToken<T, S>;
31
+ readonly value: z.input<S>;
32
+ id: string;
33
+ name: string | symbol | ClassType;
34
+ schema: InjectionTokenSchemaType;
35
+ constructor(token: InjectionToken<T, S>, value: z.input<S>);
36
+ toString(): string;
37
+ }
38
+ declare class FactoryInjectionToken<T, S extends InjectionTokenSchemaType> {
39
+ readonly token: InjectionToken<T, S>;
40
+ readonly factory: (ctx: FactoryContext) => Promise<z.input<S>>;
41
+ value?: z.input<S>;
42
+ resolved: boolean;
43
+ id: string;
44
+ name: string | symbol | ClassType;
45
+ schema: InjectionTokenSchemaType;
46
+ constructor(token: InjectionToken<T, S>, factory: (ctx: FactoryContext) => Promise<z.input<S>>);
47
+ resolve(ctx: FactoryContext): Promise<z.input<S>>;
48
+ toString(): string;
49
+ }
50
+ type AnyInjectableType = ClassType | InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>;
51
+ type InjectionTokenType = InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>;
52
+ //#endregion
53
+ //#region src/utils/types.d.mts
54
+ type Join<TElements, TSeparator extends string> = TElements extends Readonly<[infer First, ...infer Rest]> ? Rest extends ReadonlyArray<string> ? First extends string ? `${First}${Rest extends [] ? '' : TSeparator}${Join<Rest, TSeparator>}` : never : never : '';
55
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
56
+ type UnionToOvlds<U> = UnionToIntersection<U extends any ? (f: U) => void : never>;
57
+ type PopUnion<U> = UnionToOvlds<U> extends ((a: infer A) => void) ? A : never;
58
+ type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true;
59
+ type UnionToArray<T, A extends unknown[] = []> = IsUnion<T> extends true ? UnionToArray<Exclude<T, PopUnion<T>>, [PopUnion<T>, ...A]> : [T, ...A];
60
+ type InjectRequest = {
61
+ token: InjectionToken<any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any> | ClassType;
62
+ promise: Promise<any>;
63
+ readonly result: any;
64
+ readonly error: Error | null;
65
+ };
66
+ interface InjectState {
67
+ currentIndex: number;
68
+ isFrozen: boolean;
69
+ requests: InjectRequest[];
70
+ }
71
+ //#endregion
72
+ //#region src/interfaces/container.interface.d.mts
73
+ /**
74
+ * Interface for dependency injection containers.
75
+ * Both Container and ScopedContainer implement this interface,
76
+ * allowing them to be used interchangeably in factory contexts.
77
+ */
78
+ interface IContainer {
79
+ /**
80
+ * Gets an instance from the container.
81
+ */
82
+ get<T extends ClassType>(token: T): InstanceType<T> extends Factorable<infer R> ? Promise<R> : Promise<InstanceType<T>>;
83
+ get<T extends ClassTypeWithArgument<R>, R>(token: T, args: R): Promise<InstanceType<T>>;
84
+ get<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): Promise<T>;
85
+ get<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? Promise<T> : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
86
+ get<T>(token: InjectionToken<T, undefined>): Promise<T>;
87
+ get<T>(token: BoundInjectionToken<T, any>): Promise<T>;
88
+ get<T>(token: FactoryInjectionToken<T, any>): Promise<T>;
89
+ /**
90
+ * Invalidates a service and its dependencies.
91
+ */
92
+ invalidate(service: unknown): Promise<void>;
93
+ /**
94
+ * Checks if a service is registered in the container.
95
+ */
96
+ isRegistered(token: any): boolean;
97
+ /**
98
+ * Adds an instance to the container.
99
+ * Accepts class types, InjectionTokens, and BoundInjectionTokens.
100
+ * Rejects InjectionTokens with required schemas (use BoundInjectionToken instead).
101
+ *
102
+ * @param token The class type, InjectionToken, or BoundInjectionToken to register the instance for
103
+ * @param instance The instance to store
104
+ */
105
+ addInstance<T>(token: ClassType | InjectionToken<T, any> | BoundInjectionToken<T, any>, instance: T): void;
106
+ /**
107
+ * Disposes the container and cleans up all resources.
108
+ */
109
+ dispose(): Promise<void>;
110
+ /**
111
+ * Waits for all pending operations to complete.
112
+ */
113
+ ready(): Promise<void>;
114
+ /**
115
+ * @internal
116
+ * Attempts to get an instance synchronously if it already exists.
117
+ * Returns null if the instance doesn't exist or is not ready.
118
+ * Used internally by the inject system for synchronous property initialization.
119
+ */
120
+ tryGetSync<T>(token: any, args?: any): T | null;
121
+ }
122
+ //#endregion
123
+ //#region src/enums/injectable-scope.enum.d.mts
124
+ declare enum InjectableScope {
125
+ /**
126
+ * Singleton scope: The instance is created once and shared across the application.
127
+ */
128
+ Singleton = "Singleton",
129
+ /**
130
+ * Instance scope: A new instance is created for each injection.
131
+ */
132
+ Transient = "Transient",
133
+ /**
134
+ * Request scope: The instance is created once per request and shared within that request context.
135
+ */
136
+ Request = "Request",
137
+ }
138
+ //#endregion
139
+ //#region src/enums/injectable-type.enum.d.mts
140
+ declare enum InjectableType {
141
+ Class = "Class",
142
+ Factory = "Factory",
143
+ }
144
+ //#endregion
145
+ //#region src/internal/context/service-initialization-context.d.mts
146
+ /**
147
+ * Context provided to injectors during service initialization.
148
+ *
149
+ * Extends FactoryContext with additional tracking information about
150
+ * the service being initialized, its dependencies, and scope.
151
+ * Used for scope upgrade tracking and dependency management.
152
+ */
153
+ interface ServiceInitializationContext {
154
+ inject: Injectors['asyncInject'];
155
+ /**
156
+ * The container instance for dependency resolution.
157
+ * This may be either a Container or ScopedContainer.
158
+ */
159
+ container: IContainer;
160
+ addDestroyListener: (listener: () => void) => void;
161
+ getDestroyListeners: () => (() => void)[];
162
+ /**
163
+ * The name of the service being initialized.
164
+ */
165
+ serviceName: string;
166
+ /**
167
+ * Set of dependency names that this service depends on.
168
+ * Automatically populated as dependencies are resolved.
169
+ */
170
+ dependencies: Set<string>;
171
+ /**
172
+ * The scope of the service being initialized.
173
+ */
174
+ scope: InjectableScope;
175
+ /**
176
+ * Track a dependency that was resolved.
177
+ * Used for scope upgrade tracking - if a Singleton service
178
+ * resolves a Request dependency, the scope can be upgraded.
179
+ *
180
+ * @param name The name of the dependency
181
+ * @param scope The scope of the dependency
182
+ */
183
+ trackDependency(name: string, scope: InjectableScope): void;
184
+ }
185
+ //#endregion
186
+ //#region src/utils/get-injectors.d.mts
187
+ interface Injectors {
188
+ asyncInject<T extends ClassTypeWithoutArguments>(token: T): InstanceType<T> extends Factorable<infer R> ? Promise<R> : Promise<InstanceType<T>>;
189
+ asyncInject<Args, T extends ClassTypeWithArgument<Args>>(token: T, args: Args): Promise<InstanceType<T>>;
190
+ asyncInject<Schema extends InjectionTokenSchemaType, R, T extends FactorableWithArgs<R, Schema>>(token: T, args: z.input<Schema>): Promise<R>;
191
+ asyncInject<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): Promise<T>;
192
+ asyncInject<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? Promise<T> : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
193
+ asyncInject<T>(token: InjectionToken<T, undefined>): Promise<T>;
194
+ asyncInject<T>(token: BoundInjectionToken<T, any>): Promise<T>;
195
+ asyncInject<T>(token: FactoryInjectionToken<T, any>): Promise<T>;
196
+ inject<T extends ClassTypeWithoutArguments>(token: T): InstanceType<T> extends Factorable<infer R> ? R : InstanceType<T>;
197
+ inject<Args, T extends ClassTypeWithArgument<Args>>(token: T, args: Args): InstanceType<T>;
198
+ inject<Schema extends InjectionTokenSchemaType, R, T extends FactorableWithArgs<R, Schema>>(token: T, args: z.input<Schema>): R;
199
+ inject<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): T;
200
+ inject<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? T : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
201
+ inject<T>(token: InjectionToken<T, undefined>): T;
202
+ inject<T>(token: BoundInjectionToken<T, any>): T;
203
+ inject<T>(token: FactoryInjectionToken<T, any>): T;
204
+ /**
205
+ * Optional injection that returns null if the service fails to initialize
206
+ * or is not available. This is useful when you want to inject a service
207
+ * that may not be configured or may fail gracefully.
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * class MyService {
212
+ * constructor() {
213
+ * const optionalService = optional(OptionalServiceToken)
214
+ * // optionalService will be null if initialization fails
215
+ * if (optionalService) {
216
+ * optionalService.doSomething()
217
+ * }
218
+ * }
219
+ * }
220
+ * ```
221
+ */
222
+ optional<T extends ClassType>(token: T): (InstanceType<T> extends Factorable<infer R> ? R : InstanceType<T>) | null;
223
+ optional<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): T | null;
224
+ optional<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? T | null : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
225
+ optional<T>(token: InjectionToken<T, undefined>): T | null;
226
+ optional<T>(token: BoundInjectionToken<T, any>): T | null;
227
+ optional<T>(token: FactoryInjectionToken<T, any>): T | null;
228
+ wrapSyncInit(cb: () => any): (injectState?: InjectState) => [any, Promise<any>[], InjectState];
229
+ provideFactoryContext(context: ServiceInitializationContext | null): ServiceInitializationContext | null;
230
+ }
231
+ declare function getInjectors(): Injectors;
232
+ //#endregion
233
+ //#region src/internal/context/factory-context.d.mts
234
+ /**
235
+ * Context provided to factory functions during service instantiation.
236
+ *
237
+ * Provides access to dependency injection (via inject), the container,
238
+ * and lifecycle hooks for cleanup.
239
+ */
240
+ interface FactoryContext {
241
+ inject: Injectors['asyncInject'];
242
+ /**
243
+ * The container instance for dependency resolution.
244
+ * This may be either a Container or ScopedContainer.
245
+ */
246
+ container: IContainer;
247
+ addDestroyListener: (listener: () => void) => void;
248
+ }
249
+ //#endregion
250
+ //#region src/interfaces/factory.interface.d.mts
251
+ interface Factorable<T> {
252
+ create(ctx?: FactoryContext): Promise<T> | T;
253
+ }
254
+ interface FactorableWithArgs<T, A extends InjectionTokenSchemaType> {
255
+ create(ctx?: FactoryContext, ...args: [z.output<A>]): Promise<T> | T;
256
+ }
257
+ //#endregion
258
+ //#region src/token/registry.d.mts
259
+ type FactoryRecord<Instance = any, Schema = any> = {
260
+ scope: InjectableScope;
261
+ originalToken: InjectionToken<Instance, Schema>;
262
+ target: ClassType;
263
+ type: InjectableType;
264
+ priority: number;
265
+ };
266
+ declare class Registry {
267
+ private readonly parent?;
268
+ private readonly factories;
269
+ private readonly highestPriority;
270
+ constructor(parent?: Registry | undefined);
271
+ has(token: InjectionToken<any, any>): boolean;
272
+ get<Instance, Schema>(token: InjectionToken<Instance, Schema>): FactoryRecord<Instance, Schema>;
273
+ getAll<Instance, Schema>(token: InjectionToken<Instance, Schema>): FactoryRecord<Instance, Schema>[];
274
+ set<Instance, Schema>(token: InjectionToken<Instance, Schema>, scope: InjectableScope, target: ClassType, type: InjectableType, priority?: number): void;
275
+ delete(token: InjectionToken<any, any>): void;
276
+ /**
277
+ * Updates the scope of an already registered factory.
278
+ * This is useful when you need to dynamically change a service's scope
279
+ * (e.g., when a singleton controller has request-scoped dependencies).
280
+ *
281
+ * @param token The injection token to update
282
+ * @param scope The new scope to set
283
+ * @returns true if the scope was updated, false if the token was not found
284
+ */
285
+ updateScope(token: InjectionToken<any, any>, scope: InjectableScope): boolean;
286
+ }
287
+ declare const globalRegistry: Registry;
288
+ //#endregion
289
+ export { ClassTypeWithoutArguments as A, BoundInjectionToken as C, ClassTypeWithInstanceAndArgument as D, ClassTypeWithInstance as E, OptionalInjectionTokenSchemaType as F, InjectionToken as M, InjectionTokenSchemaType as N, ClassTypeWithInstanceAndOptionalArgument as O, InjectionTokenType as P, BaseInjectionTokenSchemaType as S, ClassTypeWithArgument as T, PopUnion as _, FactorableWithArgs as a, UnionToOvlds as b, getInjectors as c, InjectableScope as d, IContainer as f, Join as g, IsUnion as h, Factorable as i, FactoryInjectionToken as j, ClassTypeWithOptionalArgument as k, ServiceInitializationContext as l, InjectState as m, Registry as n, FactoryContext as o, InjectRequest as p, globalRegistry as r, Injectors as s, FactoryRecord as t, InjectableType as u, UnionToArray as v, ClassType as w, AnyInjectableType as x, UnionToIntersection as y };
290
+ //# sourceMappingURL=registry-DKbKWFvJ.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-DKbKWFvJ.d.cts","names":[],"sources":["../src/token/injection-token.mts","../src/utils/types.mts","../src/interfaces/container.interface.mts","../src/enums/injectable-scope.enum.mts","../src/enums/injectable-type.enum.mts","../src/internal/context/service-initialization-context.mts","../src/utils/get-injectors.mts","../src/internal/context/factory-context.mts","../src/interfaces/factory.interface.mts","../src/token/registry.mts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,290 @@
1
+ import { ZodObject, ZodOptional, ZodRecord, ZodType, z } from "zod/v4";
2
+
3
+ //#region src/token/injection-token.d.mts
4
+ type ClassType = new (...args: any[]) => any;
5
+ type ClassTypeWithoutArguments = new () => any;
6
+ type ClassTypeWithArgument<Arg> = new (arg: Arg) => any;
7
+ type ClassTypeWithOptionalArgument<Arg> = new (arg?: Arg) => any;
8
+ type ClassTypeWithInstance<T> = new (...args: any[]) => T;
9
+ type ClassTypeWithInstanceAndArgument<T, Arg> = new (arg: Arg) => T;
10
+ type ClassTypeWithInstanceAndOptionalArgument<T, Arg> = new (arg?: Arg) => T;
11
+ type BaseInjectionTokenSchemaType = ZodObject | ZodRecord;
12
+ type OptionalInjectionTokenSchemaType = ZodOptional<ZodObject> | ZodOptional<ZodRecord>;
13
+ type InjectionTokenSchemaType = BaseInjectionTokenSchemaType | OptionalInjectionTokenSchemaType;
14
+ declare class InjectionToken<T, S extends InjectionTokenSchemaType | unknown = unknown, Required extends boolean = (S extends ZodOptional<ZodObject> ? false : S extends ZodOptional<ZodRecord> ? false : S extends ZodObject ? true : S extends ZodRecord ? true : false)> {
15
+ readonly name: string | symbol | ClassType;
16
+ readonly schema: ZodObject | undefined;
17
+ readonly id: string;
18
+ private formattedName;
19
+ constructor(name: string | symbol | ClassType, schema: ZodObject | undefined, customId?: string);
20
+ static create<T extends ClassType>(name: T): InjectionToken<InstanceType<T>, undefined>;
21
+ static create<T extends ClassType, Schema extends InjectionTokenSchemaType>(name: T, schema: Schema): Schema['_def']['type'] extends 'ZodOptional' ? InjectionToken<InstanceType<T>, Schema, false> : InjectionToken<InstanceType<T>, Schema, true>;
22
+ static create<T>(name: string | symbol): InjectionToken<T, undefined>;
23
+ static create<T, Schema extends InjectionTokenSchemaType>(name: string | any, schema: Schema): InjectionToken<T, Schema>;
24
+ static bound<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, value: z.input<S>): BoundInjectionToken<T, S>;
25
+ static factory<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, factory: (ctx: FactoryContext) => Promise<z.input<S>>): FactoryInjectionToken<T, S>;
26
+ static refineType<T>(token: BoundInjectionToken<any, any>): BoundInjectionToken<T, any>;
27
+ toString(): string;
28
+ }
29
+ declare class BoundInjectionToken<T, S extends InjectionTokenSchemaType> {
30
+ readonly token: InjectionToken<T, S>;
31
+ readonly value: z.input<S>;
32
+ id: string;
33
+ name: string | symbol | ClassType;
34
+ schema: InjectionTokenSchemaType;
35
+ constructor(token: InjectionToken<T, S>, value: z.input<S>);
36
+ toString(): string;
37
+ }
38
+ declare class FactoryInjectionToken<T, S extends InjectionTokenSchemaType> {
39
+ readonly token: InjectionToken<T, S>;
40
+ readonly factory: (ctx: FactoryContext) => Promise<z.input<S>>;
41
+ value?: z.input<S>;
42
+ resolved: boolean;
43
+ id: string;
44
+ name: string | symbol | ClassType;
45
+ schema: InjectionTokenSchemaType;
46
+ constructor(token: InjectionToken<T, S>, factory: (ctx: FactoryContext) => Promise<z.input<S>>);
47
+ resolve(ctx: FactoryContext): Promise<z.input<S>>;
48
+ toString(): string;
49
+ }
50
+ type AnyInjectableType = ClassType | InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>;
51
+ type InjectionTokenType = InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>;
52
+ //#endregion
53
+ //#region src/utils/types.d.mts
54
+ type Join<TElements, TSeparator extends string> = TElements extends Readonly<[infer First, ...infer Rest]> ? Rest extends ReadonlyArray<string> ? First extends string ? `${First}${Rest extends [] ? '' : TSeparator}${Join<Rest, TSeparator>}` : never : never : '';
55
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
56
+ type UnionToOvlds<U> = UnionToIntersection<U extends any ? (f: U) => void : never>;
57
+ type PopUnion<U> = UnionToOvlds<U> extends ((a: infer A) => void) ? A : never;
58
+ type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true;
59
+ type UnionToArray<T, A extends unknown[] = []> = IsUnion<T> extends true ? UnionToArray<Exclude<T, PopUnion<T>>, [PopUnion<T>, ...A]> : [T, ...A];
60
+ type InjectRequest = {
61
+ token: InjectionToken<any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any> | ClassType;
62
+ promise: Promise<any>;
63
+ readonly result: any;
64
+ readonly error: Error | null;
65
+ };
66
+ interface InjectState {
67
+ currentIndex: number;
68
+ isFrozen: boolean;
69
+ requests: InjectRequest[];
70
+ }
71
+ //#endregion
72
+ //#region src/interfaces/container.interface.d.mts
73
+ /**
74
+ * Interface for dependency injection containers.
75
+ * Both Container and ScopedContainer implement this interface,
76
+ * allowing them to be used interchangeably in factory contexts.
77
+ */
78
+ interface IContainer {
79
+ /**
80
+ * Gets an instance from the container.
81
+ */
82
+ get<T extends ClassType>(token: T): InstanceType<T> extends Factorable<infer R> ? Promise<R> : Promise<InstanceType<T>>;
83
+ get<T extends ClassTypeWithArgument<R>, R>(token: T, args: R): Promise<InstanceType<T>>;
84
+ get<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): Promise<T>;
85
+ get<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? Promise<T> : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
86
+ get<T>(token: InjectionToken<T, undefined>): Promise<T>;
87
+ get<T>(token: BoundInjectionToken<T, any>): Promise<T>;
88
+ get<T>(token: FactoryInjectionToken<T, any>): Promise<T>;
89
+ /**
90
+ * Invalidates a service and its dependencies.
91
+ */
92
+ invalidate(service: unknown): Promise<void>;
93
+ /**
94
+ * Checks if a service is registered in the container.
95
+ */
96
+ isRegistered(token: any): boolean;
97
+ /**
98
+ * Adds an instance to the container.
99
+ * Accepts class types, InjectionTokens, and BoundInjectionTokens.
100
+ * Rejects InjectionTokens with required schemas (use BoundInjectionToken instead).
101
+ *
102
+ * @param token The class type, InjectionToken, or BoundInjectionToken to register the instance for
103
+ * @param instance The instance to store
104
+ */
105
+ addInstance<T>(token: ClassType | InjectionToken<T, any> | BoundInjectionToken<T, any>, instance: T): void;
106
+ /**
107
+ * Disposes the container and cleans up all resources.
108
+ */
109
+ dispose(): Promise<void>;
110
+ /**
111
+ * Waits for all pending operations to complete.
112
+ */
113
+ ready(): Promise<void>;
114
+ /**
115
+ * @internal
116
+ * Attempts to get an instance synchronously if it already exists.
117
+ * Returns null if the instance doesn't exist or is not ready.
118
+ * Used internally by the inject system for synchronous property initialization.
119
+ */
120
+ tryGetSync<T>(token: any, args?: any): T | null;
121
+ }
122
+ //#endregion
123
+ //#region src/enums/injectable-scope.enum.d.mts
124
+ declare enum InjectableScope {
125
+ /**
126
+ * Singleton scope: The instance is created once and shared across the application.
127
+ */
128
+ Singleton = "Singleton",
129
+ /**
130
+ * Instance scope: A new instance is created for each injection.
131
+ */
132
+ Transient = "Transient",
133
+ /**
134
+ * Request scope: The instance is created once per request and shared within that request context.
135
+ */
136
+ Request = "Request",
137
+ }
138
+ //#endregion
139
+ //#region src/enums/injectable-type.enum.d.mts
140
+ declare enum InjectableType {
141
+ Class = "Class",
142
+ Factory = "Factory",
143
+ }
144
+ //#endregion
145
+ //#region src/internal/context/service-initialization-context.d.mts
146
+ /**
147
+ * Context provided to injectors during service initialization.
148
+ *
149
+ * Extends FactoryContext with additional tracking information about
150
+ * the service being initialized, its dependencies, and scope.
151
+ * Used for scope upgrade tracking and dependency management.
152
+ */
153
+ interface ServiceInitializationContext {
154
+ inject: Injectors['asyncInject'];
155
+ /**
156
+ * The container instance for dependency resolution.
157
+ * This may be either a Container or ScopedContainer.
158
+ */
159
+ container: IContainer;
160
+ addDestroyListener: (listener: () => void) => void;
161
+ getDestroyListeners: () => (() => void)[];
162
+ /**
163
+ * The name of the service being initialized.
164
+ */
165
+ serviceName: string;
166
+ /**
167
+ * Set of dependency names that this service depends on.
168
+ * Automatically populated as dependencies are resolved.
169
+ */
170
+ dependencies: Set<string>;
171
+ /**
172
+ * The scope of the service being initialized.
173
+ */
174
+ scope: InjectableScope;
175
+ /**
176
+ * Track a dependency that was resolved.
177
+ * Used for scope upgrade tracking - if a Singleton service
178
+ * resolves a Request dependency, the scope can be upgraded.
179
+ *
180
+ * @param name The name of the dependency
181
+ * @param scope The scope of the dependency
182
+ */
183
+ trackDependency(name: string, scope: InjectableScope): void;
184
+ }
185
+ //#endregion
186
+ //#region src/utils/get-injectors.d.mts
187
+ interface Injectors {
188
+ asyncInject<T extends ClassTypeWithoutArguments>(token: T): InstanceType<T> extends Factorable<infer R> ? Promise<R> : Promise<InstanceType<T>>;
189
+ asyncInject<Args, T extends ClassTypeWithArgument<Args>>(token: T, args: Args): Promise<InstanceType<T>>;
190
+ asyncInject<Schema extends InjectionTokenSchemaType, R, T extends FactorableWithArgs<R, Schema>>(token: T, args: z.input<Schema>): Promise<R>;
191
+ asyncInject<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): Promise<T>;
192
+ asyncInject<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? Promise<T> : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
193
+ asyncInject<T>(token: InjectionToken<T, undefined>): Promise<T>;
194
+ asyncInject<T>(token: BoundInjectionToken<T, any>): Promise<T>;
195
+ asyncInject<T>(token: FactoryInjectionToken<T, any>): Promise<T>;
196
+ inject<T extends ClassTypeWithoutArguments>(token: T): InstanceType<T> extends Factorable<infer R> ? R : InstanceType<T>;
197
+ inject<Args, T extends ClassTypeWithArgument<Args>>(token: T, args: Args): InstanceType<T>;
198
+ inject<Schema extends InjectionTokenSchemaType, R, T extends FactorableWithArgs<R, Schema>>(token: T, args: z.input<Schema>): R;
199
+ inject<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): T;
200
+ inject<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? T : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
201
+ inject<T>(token: InjectionToken<T, undefined>): T;
202
+ inject<T>(token: BoundInjectionToken<T, any>): T;
203
+ inject<T>(token: FactoryInjectionToken<T, any>): T;
204
+ /**
205
+ * Optional injection that returns null if the service fails to initialize
206
+ * or is not available. This is useful when you want to inject a service
207
+ * that may not be configured or may fail gracefully.
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * class MyService {
212
+ * constructor() {
213
+ * const optionalService = optional(OptionalServiceToken)
214
+ * // optionalService will be null if initialization fails
215
+ * if (optionalService) {
216
+ * optionalService.doSomething()
217
+ * }
218
+ * }
219
+ * }
220
+ * ```
221
+ */
222
+ optional<T extends ClassType>(token: T): (InstanceType<T> extends Factorable<infer R> ? R : InstanceType<T>) | null;
223
+ optional<T, S extends InjectionTokenSchemaType>(token: InjectionToken<T, S>, args: z.input<S>): T | null;
224
+ optional<T, S extends InjectionTokenSchemaType, R extends boolean>(token: InjectionToken<T, S, R>): R extends false ? T | null : S extends ZodType<infer Type> ? `Error: Your token requires args: ${Join<UnionToArray<keyof Type>, ', '>}` : 'Error: Your token requires args';
225
+ optional<T>(token: InjectionToken<T, undefined>): T | null;
226
+ optional<T>(token: BoundInjectionToken<T, any>): T | null;
227
+ optional<T>(token: FactoryInjectionToken<T, any>): T | null;
228
+ wrapSyncInit(cb: () => any): (injectState?: InjectState) => [any, Promise<any>[], InjectState];
229
+ provideFactoryContext(context: ServiceInitializationContext | null): ServiceInitializationContext | null;
230
+ }
231
+ declare function getInjectors(): Injectors;
232
+ //#endregion
233
+ //#region src/internal/context/factory-context.d.mts
234
+ /**
235
+ * Context provided to factory functions during service instantiation.
236
+ *
237
+ * Provides access to dependency injection (via inject), the container,
238
+ * and lifecycle hooks for cleanup.
239
+ */
240
+ interface FactoryContext {
241
+ inject: Injectors['asyncInject'];
242
+ /**
243
+ * The container instance for dependency resolution.
244
+ * This may be either a Container or ScopedContainer.
245
+ */
246
+ container: IContainer;
247
+ addDestroyListener: (listener: () => void) => void;
248
+ }
249
+ //#endregion
250
+ //#region src/interfaces/factory.interface.d.mts
251
+ interface Factorable<T> {
252
+ create(ctx?: FactoryContext): Promise<T> | T;
253
+ }
254
+ interface FactorableWithArgs<T, A extends InjectionTokenSchemaType> {
255
+ create(ctx?: FactoryContext, ...args: [z.output<A>]): Promise<T> | T;
256
+ }
257
+ //#endregion
258
+ //#region src/token/registry.d.mts
259
+ type FactoryRecord<Instance = any, Schema = any> = {
260
+ scope: InjectableScope;
261
+ originalToken: InjectionToken<Instance, Schema>;
262
+ target: ClassType;
263
+ type: InjectableType;
264
+ priority: number;
265
+ };
266
+ declare class Registry {
267
+ private readonly parent?;
268
+ private readonly factories;
269
+ private readonly highestPriority;
270
+ constructor(parent?: Registry | undefined);
271
+ has(token: InjectionToken<any, any>): boolean;
272
+ get<Instance, Schema>(token: InjectionToken<Instance, Schema>): FactoryRecord<Instance, Schema>;
273
+ getAll<Instance, Schema>(token: InjectionToken<Instance, Schema>): FactoryRecord<Instance, Schema>[];
274
+ set<Instance, Schema>(token: InjectionToken<Instance, Schema>, scope: InjectableScope, target: ClassType, type: InjectableType, priority?: number): void;
275
+ delete(token: InjectionToken<any, any>): void;
276
+ /**
277
+ * Updates the scope of an already registered factory.
278
+ * This is useful when you need to dynamically change a service's scope
279
+ * (e.g., when a singleton controller has request-scoped dependencies).
280
+ *
281
+ * @param token The injection token to update
282
+ * @param scope The new scope to set
283
+ * @returns true if the scope was updated, false if the token was not found
284
+ */
285
+ updateScope(token: InjectionToken<any, any>, scope: InjectableScope): boolean;
286
+ }
287
+ declare const globalRegistry: Registry;
288
+ //#endregion
289
+ export { ClassTypeWithoutArguments as A, BoundInjectionToken as C, ClassTypeWithInstanceAndArgument as D, ClassTypeWithInstance as E, OptionalInjectionTokenSchemaType as F, InjectionToken as M, InjectionTokenSchemaType as N, ClassTypeWithInstanceAndOptionalArgument as O, InjectionTokenType as P, BaseInjectionTokenSchemaType as S, ClassTypeWithArgument as T, PopUnion as _, FactorableWithArgs as a, UnionToOvlds as b, getInjectors as c, InjectableScope as d, IContainer as f, Join as g, IsUnion as h, Factorable as i, FactoryInjectionToken as j, ClassTypeWithOptionalArgument as k, ServiceInitializationContext as l, InjectState as m, Registry as n, FactoryContext as o, InjectRequest as p, globalRegistry as r, Injectors as s, FactoryRecord as t, InjectableType as u, UnionToArray as v, ClassType as w, AnyInjectableType as x, UnionToIntersection as y };
290
+ //# sourceMappingURL=registry-n8JhJoxm.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-n8JhJoxm.d.mts","names":[],"sources":["../src/token/injection-token.mts","../src/utils/types.mts","../src/interfaces/container.interface.mts","../src/enums/injectable-scope.enum.mts","../src/enums/injectable-type.enum.mts","../src/internal/context/service-initialization-context.mts","../src/utils/get-injectors.mts","../src/internal/context/factory-context.mts","../src/interfaces/factory.interface.mts","../src/token/registry.mts"],"sourcesContent":[],"mappings":"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"}