@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.
- package/CHANGELOG.md +17 -0
- package/README.md +28 -0
- package/coverage/block-navigation.js +1 -1
- package/coverage/clover.xml +1463 -3174
- package/coverage/coverage-final.json +56 -54
- package/coverage/index.html +179 -104
- package/coverage/sorter.js +21 -7
- package/coverage/src/{request-context-manager.mts.html → __tests__/gc/gc-test-utils.mts.html} +192 -231
- package/coverage/{lib → src/__tests__/gc}/index.html +25 -40
- package/coverage/src/container/abstract-container.mts.html +1066 -0
- package/coverage/src/container/container.mts.html +958 -0
- package/coverage/src/container/index.html +161 -0
- package/coverage/src/{testing → container}/index.mts.html +12 -9
- package/coverage/src/container/scoped-container.mts.html +907 -0
- package/coverage/src/decorators/factory.decorator.mts.html +68 -53
- package/coverage/src/decorators/index.html +34 -34
- package/coverage/src/decorators/index.mts.html +10 -10
- package/coverage/src/decorators/injectable.decorator.mts.html +144 -60
- package/coverage/src/enums/index.html +21 -21
- package/coverage/src/enums/index.mts.html +12 -12
- package/coverage/src/enums/injectable-scope.enum.mts.html +11 -8
- package/coverage/src/enums/injectable-type.enum.mts.html +10 -7
- package/coverage/src/errors/di-error.mts.html +380 -71
- package/coverage/src/errors/index.html +22 -127
- package/coverage/src/errors/index.mts.html +9 -33
- package/coverage/src/event-emitter.mts.html +35 -107
- package/coverage/src/index.html +14 -254
- package/coverage/src/index.mts.html +23 -50
- package/coverage/src/interfaces/container.interface.mts.html +370 -0
- package/coverage/src/interfaces/factory.interface.mts.html +12 -12
- package/coverage/src/interfaces/index.html +45 -30
- package/coverage/src/interfaces/index.mts.html +16 -13
- package/coverage/src/interfaces/on-service-destroy.interface.mts.html +1 -1
- package/coverage/src/interfaces/on-service-init.interface.mts.html +1 -1
- package/coverage/src/internal/context/async-local-storage.browser.mts.html +142 -0
- package/coverage/src/internal/context/async-local-storage.mts.html +292 -0
- package/coverage/src/{factory-context.mts.html → internal/context/async-local-storage.types.mts.html} +17 -17
- package/coverage/src/internal/context/factory-context.mts.html +142 -0
- package/coverage/src/internal/context/index.html +221 -0
- package/coverage/src/internal/context/index.mts.html +100 -0
- package/coverage/src/{service-locator-instance-holder.mts.html → internal/context/resolution-context.mts.html} +114 -78
- package/coverage/src/internal/context/service-initialization-context.mts.html +214 -0
- package/coverage/src/internal/context/sync-local-storage.mts.html +244 -0
- package/coverage/src/internal/core/index.html +206 -0
- package/coverage/src/internal/core/index.mts.html +103 -0
- package/coverage/src/internal/core/instance-resolver.mts.html +2533 -0
- package/coverage/src/{request-context-holder.mts.html → internal/core/name-resolver.mts.html} +245 -260
- package/coverage/src/{container.mts.html → internal/core/scope-tracker.mts.html} +352 -310
- package/coverage/src/{service-instantiator.mts.html → internal/core/service-initializer.mts.html} +254 -176
- package/coverage/src/internal/core/service-invalidator.mts.html +955 -0
- package/coverage/src/internal/core/token-resolver.mts.html +451 -0
- package/coverage/src/internal/holder/holder-storage.interface.mts.html +451 -0
- package/coverage/src/internal/holder/index.html +161 -0
- package/coverage/src/internal/holder/index.mts.html +94 -0
- package/coverage/src/internal/holder/instance-holder.mts.html +406 -0
- package/coverage/src/{service-locator.mts.html → internal/holder/unified-storage.mts.html} +376 -379
- package/coverage/{lib/testing → src/internal}/index.html +26 -11
- package/coverage/src/internal/index.mts.html +100 -0
- package/coverage/src/internal/lifecycle/circular-detector.mts.html +364 -0
- package/coverage/src/internal/lifecycle/index.html +146 -0
- package/coverage/src/internal/lifecycle/index.mts.html +91 -0
- package/coverage/src/{service-locator-event-bus.mts.html → internal/lifecycle/lifecycle-event-bus.mts.html} +104 -80
- package/coverage/src/internal/stub-factory-class.mts.html +133 -0
- package/coverage/src/symbols/index.html +14 -14
- package/coverage/src/symbols/index.mts.html +9 -9
- package/coverage/src/symbols/injectable-token.mts.html +9 -3
- package/coverage/src/testing/index.html +32 -32
- package/coverage/src/testing/test-container.mts.html +1576 -139
- package/coverage/src/testing/unit-test-container.mts.html +1888 -0
- package/coverage/src/token/index.html +146 -0
- package/coverage/{lib/testing/index.d.mts.html → src/token/index.mts.html} +11 -11
- package/coverage/src/{injection-token.mts.html → token/injection-token.mts.html} +225 -111
- package/coverage/src/{base-instance-holder-manager.mts.html → token/registry.mts.html} +188 -269
- package/coverage/src/{injector.mts.html → utils/default-injectors.mts.html} +31 -31
- package/coverage/src/utils/get-injectable-token.mts.html +19 -22
- package/coverage/src/utils/get-injectors.mts.html +684 -177
- package/coverage/src/utils/index.html +36 -36
- package/coverage/src/utils/index.mts.html +18 -12
- package/coverage/src/utils/types.mts.html +26 -11
- package/docs/examples/basic-usage.mts +1 -1
- package/docs/examples/factory-pattern.mts +3 -3
- package/docs/examples/request-scope-example.mts +1 -1
- package/docs/examples/service-lifecycle.mts +1 -1
- package/lib/browser/internal/core/instance-resolver.d.mts.map +1 -1
- package/lib/browser/internal/core/instance-resolver.mjs.map +1 -1
- package/lib/browser/utils/get-injectors.mjs +9 -12
- package/lib/browser/utils/get-injectors.mjs.map +1 -1
- package/lib/{container-D-0Ho3qL.d.cts → container-D3j3KuD9.d.mts} +5 -289
- package/lib/container-D3j3KuD9.d.mts.map +1 -0
- package/lib/{container-8-z89TyQ.mjs → container-qgHMgGNG.mjs} +12 -239
- package/lib/container-qgHMgGNG.mjs.map +1 -0
- package/lib/{container-CNiqesCL.d.mts → container-r1KP4F-n.d.cts} +5 -289
- package/lib/container-r1KP4F-n.d.cts.map +1 -0
- package/lib/{container-CaY2fDuk.cjs → container-ycYJgTq7.cjs} +50 -331
- package/lib/container-ycYJgTq7.cjs.map +1 -0
- package/lib/factory.decorator-D4mem6YQ.cjs +21 -0
- package/lib/factory.decorator-D4mem6YQ.cjs.map +1 -0
- package/lib/factory.decorator-_IPWcwQn.mjs +16 -0
- package/lib/factory.decorator-_IPWcwQn.mjs.map +1 -0
- package/lib/index.cjs +14 -24
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +3 -52
- package/lib/index.d.cts.map +1 -1
- package/lib/index.d.mts +3 -52
- package/lib/index.d.mts.map +1 -1
- package/lib/index.mjs +3 -13
- package/lib/index.mjs.map +1 -1
- package/lib/injectable.decorator-BNfWpjr_.d.cts +56 -0
- package/lib/injectable.decorator-BNfWpjr_.d.cts.map +1 -0
- package/lib/injectable.decorator-Bc05hRQU.d.mts +56 -0
- package/lib/injectable.decorator-Bc05hRQU.d.mts.map +1 -0
- package/lib/injectable.decorator-CyPrBzBN.mjs +227 -0
- package/lib/injectable.decorator-CyPrBzBN.mjs.map +1 -0
- package/lib/injectable.decorator-DbpiDrg-.cjs +281 -0
- package/lib/injectable.decorator-DbpiDrg-.cjs.map +1 -0
- package/lib/legacy-compat/index.cjs +114 -0
- package/lib/legacy-compat/index.cjs.map +1 -0
- package/lib/legacy-compat/index.d.cts +63 -0
- package/lib/legacy-compat/index.d.cts.map +1 -0
- package/lib/legacy-compat/index.d.mts +63 -0
- package/lib/legacy-compat/index.d.mts.map +1 -0
- package/lib/legacy-compat/index.mjs +111 -0
- package/lib/legacy-compat/index.mjs.map +1 -0
- package/lib/registry-DKbKWFvJ.d.cts +290 -0
- package/lib/registry-DKbKWFvJ.d.cts.map +1 -0
- package/lib/registry-n8JhJoxm.d.mts +290 -0
- package/lib/registry-n8JhJoxm.d.mts.map +1 -0
- package/lib/testing/index.cjs +23 -22
- package/lib/testing/index.cjs.map +1 -1
- package/lib/testing/index.d.cts +2 -1
- package/lib/testing/index.d.cts.map +1 -1
- package/lib/testing/index.d.mts +2 -1
- package/lib/testing/index.d.mts.map +1 -1
- package/lib/testing/index.mjs +2 -1
- package/lib/testing/index.mjs.map +1 -1
- package/package.json +11 -1
- package/project.json +8 -0
- package/src/__tests__/gc/basic-container.spec.mts +358 -0
- package/src/__tests__/gc/circular-dependencies.spec.mts +501 -0
- package/src/__tests__/gc/gc-test-utils.mts +136 -0
- package/src/__tests__/gc/memory-pressure.spec.mts +542 -0
- package/src/__tests__/gc/scoped-container.spec.mts +444 -0
- package/src/__tests__/gc/transient-services.spec.mts +326 -0
- package/src/__tests__/get-injectors.spec.mts +166 -0
- package/src/__tests__/scope-upgrade.spec.mts +0 -18
- package/src/internal/core/instance-resolver.mts +0 -1
- package/src/legacy-compat/context-compat.mts +95 -0
- package/src/legacy-compat/factory.decorator.mts +37 -0
- package/src/legacy-compat/index.mts +16 -0
- package/src/legacy-compat/injectable.decorator.mts +41 -0
- package/src/utils/get-injectors.mts +36 -32
- package/tsdown.config.mts +1 -1
- package/vitest.config.mts +3 -7
- package/coverage/docs/examples/basic-usage.mts.html +0 -376
- package/coverage/docs/examples/factory-pattern.mts.html +0 -1039
- package/coverage/docs/examples/index.html +0 -176
- package/coverage/docs/examples/injection-tokens.mts.html +0 -760
- package/coverage/docs/examples/request-scope-example.mts.html +0 -847
- package/coverage/docs/examples/service-lifecycle.mts.html +0 -1162
- package/coverage/lib/_tsup-dts-rollup.d.mts.html +0 -3445
- package/coverage/lib/index.d.mts.html +0 -313
- package/coverage/src/errors/errors.enum.mts.html +0 -118
- package/coverage/src/errors/factory-not-found.mts.html +0 -118
- package/coverage/src/errors/factory-token-not-resolved.mts.html +0 -118
- package/coverage/src/errors/instance-destroying.mts.html +0 -118
- package/coverage/src/errors/instance-expired.mts.html +0 -118
- package/coverage/src/errors/instance-not-found.mts.html +0 -118
- package/coverage/src/errors/unknown-error.mts.html +0 -118
- package/coverage/src/instance-resolver.mts.html +0 -1762
- package/coverage/src/registry.mts.html +0 -247
- package/coverage/src/service-invalidator.mts.html +0 -1372
- package/coverage/src/service-locator-manager.mts.html +0 -340
- package/coverage/src/token-processor.mts.html +0 -607
- package/coverage/src/utils/defer.mts.html +0 -118
- package/lib/container-8-z89TyQ.mjs.map +0 -1
- package/lib/container-CNiqesCL.d.mts.map +0 -1
- package/lib/container-CaY2fDuk.cjs.map +0 -1
- 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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"}
|