@veloxts/core 0.3.3 → 0.3.4
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/README.md +697 -16
- package/dist/app.d.ts +67 -10
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +79 -12
- package/dist/app.js.map +1 -1
- package/dist/di/container.d.ts +406 -0
- package/dist/di/container.d.ts.map +1 -0
- package/dist/di/container.js +693 -0
- package/dist/di/container.js.map +1 -0
- package/dist/di/decorators.d.ts +221 -0
- package/dist/di/decorators.d.ts.map +1 -0
- package/dist/di/decorators.js +297 -0
- package/dist/di/decorators.js.map +1 -0
- package/dist/di/index.d.ts +65 -0
- package/dist/di/index.d.ts.map +1 -0
- package/dist/di/index.js +73 -0
- package/dist/di/index.js.map +1 -0
- package/dist/di/providers.d.ts +357 -0
- package/dist/di/providers.d.ts.map +1 -0
- package/dist/di/providers.js +380 -0
- package/dist/di/providers.js.map +1 -0
- package/dist/di/scope.d.ts +209 -0
- package/dist/di/scope.d.ts.map +1 -0
- package/dist/di/scope.js +262 -0
- package/dist/di/scope.js.map +1 -0
- package/dist/di/tokens.d.ts +227 -0
- package/dist/di/tokens.d.ts.map +1 -0
- package/dist/di/tokens.js +192 -0
- package/dist/di/tokens.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -5
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decorators for dependency injection
|
|
3
|
+
*
|
|
4
|
+
* VeloxTS uses TypeScript decorators with reflect-metadata for automatic
|
|
5
|
+
* constructor injection. These decorators provide metadata that the
|
|
6
|
+
* container uses to resolve dependencies.
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: Requires `experimentalDecorators` and `emitDecoratorMetadata`
|
|
9
|
+
* in tsconfig.json, and `import 'reflect-metadata'` at your app's entry point.
|
|
10
|
+
*
|
|
11
|
+
* @module di/decorators
|
|
12
|
+
*/
|
|
13
|
+
import 'reflect-metadata';
|
|
14
|
+
import { Scope } from './scope.js';
|
|
15
|
+
import type { InjectionToken } from './tokens.js';
|
|
16
|
+
/**
|
|
17
|
+
* Metadata key for storing whether a class is injectable
|
|
18
|
+
*/
|
|
19
|
+
export declare const INJECTABLE_METADATA_KEY: unique symbol;
|
|
20
|
+
/**
|
|
21
|
+
* Metadata key for storing the scope of an injectable class
|
|
22
|
+
*/
|
|
23
|
+
export declare const SCOPE_METADATA_KEY: unique symbol;
|
|
24
|
+
/**
|
|
25
|
+
* Metadata key for storing parameter injection tokens
|
|
26
|
+
*/
|
|
27
|
+
export declare const INJECT_METADATA_KEY: unique symbol;
|
|
28
|
+
/**
|
|
29
|
+
* Metadata key for storing optional parameter flags
|
|
30
|
+
*/
|
|
31
|
+
export declare const OPTIONAL_METADATA_KEY: unique symbol;
|
|
32
|
+
/**
|
|
33
|
+
* Built-in key used by TypeScript's emitDecoratorMetadata
|
|
34
|
+
*/
|
|
35
|
+
export declare const DESIGN_PARAMTYPES_KEY = "design:paramtypes";
|
|
36
|
+
/**
|
|
37
|
+
* Options for the @Injectable decorator
|
|
38
|
+
*/
|
|
39
|
+
export interface InjectableOptions {
|
|
40
|
+
/**
|
|
41
|
+
* The lifecycle scope for this service
|
|
42
|
+
* @default Scope.SINGLETON
|
|
43
|
+
*/
|
|
44
|
+
scope?: Scope;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Marks a class as injectable
|
|
48
|
+
*
|
|
49
|
+
* Classes decorated with @Injectable can be:
|
|
50
|
+
* - Automatically instantiated by the container
|
|
51
|
+
* - Have their constructor dependencies resolved automatically
|
|
52
|
+
* - Registered with a specific lifecycle scope
|
|
53
|
+
*
|
|
54
|
+
* @param options - Injectable configuration options
|
|
55
|
+
* @returns Class decorator
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Basic usage with default singleton scope
|
|
60
|
+
* @Injectable()
|
|
61
|
+
* class UserService {
|
|
62
|
+
* constructor(private db: DatabaseClient) {}
|
|
63
|
+
* }
|
|
64
|
+
*
|
|
65
|
+
* // With request scope
|
|
66
|
+
* @Injectable({ scope: Scope.REQUEST })
|
|
67
|
+
* class UserContext {
|
|
68
|
+
* constructor(private request: FastifyRequest) {}
|
|
69
|
+
* }
|
|
70
|
+
*
|
|
71
|
+
* // With transient scope
|
|
72
|
+
* @Injectable({ scope: Scope.TRANSIENT })
|
|
73
|
+
* class RequestIdGenerator {
|
|
74
|
+
* readonly id = crypto.randomUUID();
|
|
75
|
+
* }
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function Injectable(options?: InjectableOptions): ClassDecorator;
|
|
79
|
+
/**
|
|
80
|
+
* Explicitly specifies the injection token for a constructor parameter
|
|
81
|
+
*
|
|
82
|
+
* Use this decorator when:
|
|
83
|
+
* - Injecting by a string or symbol token instead of class
|
|
84
|
+
* - Injecting an interface (TypeScript interfaces are erased at runtime)
|
|
85
|
+
* - The automatic type resolution doesn't work correctly
|
|
86
|
+
*
|
|
87
|
+
* @param token - The injection token to use
|
|
88
|
+
* @returns Parameter decorator
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const DATABASE = createStringToken<DatabaseClient>('DATABASE');
|
|
93
|
+
* const LOGGER = createSymbolToken<Logger>('LOGGER');
|
|
94
|
+
*
|
|
95
|
+
* @Injectable()
|
|
96
|
+
* class UserService {
|
|
97
|
+
* constructor(
|
|
98
|
+
* @Inject(DATABASE) private db: DatabaseClient,
|
|
99
|
+
* @Inject(LOGGER) private logger: Logger,
|
|
100
|
+
* private config: ConfigService, // Auto-injected by class token
|
|
101
|
+
* ) {}
|
|
102
|
+
* }
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export declare function Inject(token: InjectionToken): ParameterDecorator;
|
|
106
|
+
/**
|
|
107
|
+
* Marks a constructor parameter as optional
|
|
108
|
+
*
|
|
109
|
+
* When a dependency is marked as optional and cannot be resolved,
|
|
110
|
+
* `undefined` is injected instead of throwing an error.
|
|
111
|
+
*
|
|
112
|
+
* @returns Parameter decorator
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* @Injectable()
|
|
117
|
+
* class NotificationService {
|
|
118
|
+
* constructor(
|
|
119
|
+
* @Optional() private emailService?: EmailService,
|
|
120
|
+
* @Optional() @Inject(SMS_SERVICE) private smsService?: SmsService,
|
|
121
|
+
* ) {}
|
|
122
|
+
*
|
|
123
|
+
* notify(message: string) {
|
|
124
|
+
* // Gracefully handle missing services
|
|
125
|
+
* this.emailService?.send(message);
|
|
126
|
+
* this.smsService?.send(message);
|
|
127
|
+
* }
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare function Optional(): ParameterDecorator;
|
|
132
|
+
/**
|
|
133
|
+
* Checks if a class is marked as injectable
|
|
134
|
+
*
|
|
135
|
+
* @param target - The class to check
|
|
136
|
+
* @returns true if the class has the @Injectable decorator
|
|
137
|
+
*/
|
|
138
|
+
export declare function isInjectable(target: Function): boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Gets the scope of an injectable class
|
|
141
|
+
*
|
|
142
|
+
* @param target - The class to check
|
|
143
|
+
* @returns The configured scope or SINGLETON if not specified
|
|
144
|
+
*/
|
|
145
|
+
export declare function getInjectableScope(target: Function): Scope;
|
|
146
|
+
/**
|
|
147
|
+
* Gets the explicit injection tokens for a class's constructor parameters
|
|
148
|
+
*
|
|
149
|
+
* @param target - The class to get tokens for
|
|
150
|
+
* @returns A map of parameter index to injection token
|
|
151
|
+
*/
|
|
152
|
+
export declare function getExplicitInjectTokens(target: Function): Map<number, InjectionToken>;
|
|
153
|
+
/**
|
|
154
|
+
* Gets the set of optional parameter indices for a class's constructor
|
|
155
|
+
*
|
|
156
|
+
* @param target - The class to check
|
|
157
|
+
* @returns A set of parameter indices marked as optional
|
|
158
|
+
*/
|
|
159
|
+
export declare function getOptionalParams(target: Function): Set<number>;
|
|
160
|
+
/**
|
|
161
|
+
* Gets the design-time parameter types from TypeScript metadata
|
|
162
|
+
*
|
|
163
|
+
* Requires `emitDecoratorMetadata: true` in tsconfig.json
|
|
164
|
+
*
|
|
165
|
+
* @param target - The class to get parameter types for
|
|
166
|
+
* @returns Array of constructor parameter types, or undefined if not available
|
|
167
|
+
*/
|
|
168
|
+
export declare function getDesignParamTypes(target: Function): Function[] | undefined;
|
|
169
|
+
/**
|
|
170
|
+
* Gets all injection tokens for a class's constructor parameters
|
|
171
|
+
*
|
|
172
|
+
* Combines explicit @Inject tokens with design-time types from TypeScript.
|
|
173
|
+
* Explicit tokens take precedence over inferred types.
|
|
174
|
+
*
|
|
175
|
+
* @param target - The class to get tokens for
|
|
176
|
+
* @returns Array of injection tokens for each constructor parameter
|
|
177
|
+
*/
|
|
178
|
+
export declare function getConstructorTokens(target: Function): InjectionToken[];
|
|
179
|
+
/**
|
|
180
|
+
* Creates injectable metadata without using decorators
|
|
181
|
+
*
|
|
182
|
+
* Useful for environments where decorators are not supported,
|
|
183
|
+
* or for programmatic registration of third-party classes.
|
|
184
|
+
*
|
|
185
|
+
* @param target - The class to make injectable
|
|
186
|
+
* @param options - Injectable options
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* // Make a third-party class injectable
|
|
191
|
+
* import { ThirdPartyService } from 'third-party-lib';
|
|
192
|
+
*
|
|
193
|
+
* makeInjectable(ThirdPartyService, { scope: Scope.SINGLETON });
|
|
194
|
+
*
|
|
195
|
+
* // Then register with explicit dependencies
|
|
196
|
+
* container.register({
|
|
197
|
+
* provide: ThirdPartyService,
|
|
198
|
+
* useClass: ThirdPartyService,
|
|
199
|
+
* inject: [ConfigService]
|
|
200
|
+
* });
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
export declare function makeInjectable(target: Function, options?: InjectableOptions): void;
|
|
204
|
+
/**
|
|
205
|
+
* Sets explicit inject tokens for a class's constructor parameters
|
|
206
|
+
*
|
|
207
|
+
* Useful for programmatically setting dependency tokens without decorators.
|
|
208
|
+
*
|
|
209
|
+
* @param target - The class to set tokens for
|
|
210
|
+
* @param tokens - Array of tokens matching constructor parameter positions
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```typescript
|
|
214
|
+
* import { ThirdPartyService } from 'third-party-lib';
|
|
215
|
+
*
|
|
216
|
+
* // ThirdPartyService constructor: (config: Config, db: Database)
|
|
217
|
+
* setInjectTokens(ThirdPartyService, [ConfigService, DATABASE]);
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
export declare function setInjectTokens(target: Function, tokens: InjectionToken[]): void;
|
|
221
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAA6B,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAwB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAyB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,qBAAqB,eAA2B,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAMzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,cAAc,CAW1E;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,CAiBhE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,QAAQ,IAAI,kBAAkB,CAiB7C;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAG1D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAErF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAE/D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,SAAS,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,cAAc,EAAE,CAwBvE;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI,CAGtF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAMhF"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decorators for dependency injection
|
|
3
|
+
*
|
|
4
|
+
* VeloxTS uses TypeScript decorators with reflect-metadata for automatic
|
|
5
|
+
* constructor injection. These decorators provide metadata that the
|
|
6
|
+
* container uses to resolve dependencies.
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: Requires `experimentalDecorators` and `emitDecoratorMetadata`
|
|
9
|
+
* in tsconfig.json, and `import 'reflect-metadata'` at your app's entry point.
|
|
10
|
+
*
|
|
11
|
+
* @module di/decorators
|
|
12
|
+
*/
|
|
13
|
+
import 'reflect-metadata';
|
|
14
|
+
import { Scope } from './scope.js';
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Metadata Keys
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Metadata key for storing whether a class is injectable
|
|
20
|
+
*/
|
|
21
|
+
export const INJECTABLE_METADATA_KEY = Symbol('velox:injectable');
|
|
22
|
+
/**
|
|
23
|
+
* Metadata key for storing the scope of an injectable class
|
|
24
|
+
*/
|
|
25
|
+
export const SCOPE_METADATA_KEY = Symbol('velox:scope');
|
|
26
|
+
/**
|
|
27
|
+
* Metadata key for storing parameter injection tokens
|
|
28
|
+
*/
|
|
29
|
+
export const INJECT_METADATA_KEY = Symbol('velox:inject');
|
|
30
|
+
/**
|
|
31
|
+
* Metadata key for storing optional parameter flags
|
|
32
|
+
*/
|
|
33
|
+
export const OPTIONAL_METADATA_KEY = Symbol('velox:optional');
|
|
34
|
+
/**
|
|
35
|
+
* Built-in key used by TypeScript's emitDecoratorMetadata
|
|
36
|
+
*/
|
|
37
|
+
export const DESIGN_PARAMTYPES_KEY = 'design:paramtypes';
|
|
38
|
+
/**
|
|
39
|
+
* Marks a class as injectable
|
|
40
|
+
*
|
|
41
|
+
* Classes decorated with @Injectable can be:
|
|
42
|
+
* - Automatically instantiated by the container
|
|
43
|
+
* - Have their constructor dependencies resolved automatically
|
|
44
|
+
* - Registered with a specific lifecycle scope
|
|
45
|
+
*
|
|
46
|
+
* @param options - Injectable configuration options
|
|
47
|
+
* @returns Class decorator
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* // Basic usage with default singleton scope
|
|
52
|
+
* @Injectable()
|
|
53
|
+
* class UserService {
|
|
54
|
+
* constructor(private db: DatabaseClient) {}
|
|
55
|
+
* }
|
|
56
|
+
*
|
|
57
|
+
* // With request scope
|
|
58
|
+
* @Injectable({ scope: Scope.REQUEST })
|
|
59
|
+
* class UserContext {
|
|
60
|
+
* constructor(private request: FastifyRequest) {}
|
|
61
|
+
* }
|
|
62
|
+
*
|
|
63
|
+
* // With transient scope
|
|
64
|
+
* @Injectable({ scope: Scope.TRANSIENT })
|
|
65
|
+
* class RequestIdGenerator {
|
|
66
|
+
* readonly id = crypto.randomUUID();
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export function Injectable(options = {}) {
|
|
71
|
+
// biome-ignore lint/complexity/noBannedTypes: ClassDecorator requires Function type per TypeScript lib.es5.d.ts
|
|
72
|
+
return function injectableDecorator(target) {
|
|
73
|
+
// Mark the class as injectable
|
|
74
|
+
Reflect.defineMetadata(INJECTABLE_METADATA_KEY, true, target);
|
|
75
|
+
// Store the scope (default to SINGLETON)
|
|
76
|
+
Reflect.defineMetadata(SCOPE_METADATA_KEY, options.scope ?? Scope.SINGLETON, target);
|
|
77
|
+
return target;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Inject Decorator
|
|
82
|
+
// ============================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Explicitly specifies the injection token for a constructor parameter
|
|
85
|
+
*
|
|
86
|
+
* Use this decorator when:
|
|
87
|
+
* - Injecting by a string or symbol token instead of class
|
|
88
|
+
* - Injecting an interface (TypeScript interfaces are erased at runtime)
|
|
89
|
+
* - The automatic type resolution doesn't work correctly
|
|
90
|
+
*
|
|
91
|
+
* @param token - The injection token to use
|
|
92
|
+
* @returns Parameter decorator
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const DATABASE = createStringToken<DatabaseClient>('DATABASE');
|
|
97
|
+
* const LOGGER = createSymbolToken<Logger>('LOGGER');
|
|
98
|
+
*
|
|
99
|
+
* @Injectable()
|
|
100
|
+
* class UserService {
|
|
101
|
+
* constructor(
|
|
102
|
+
* @Inject(DATABASE) private db: DatabaseClient,
|
|
103
|
+
* @Inject(LOGGER) private logger: Logger,
|
|
104
|
+
* private config: ConfigService, // Auto-injected by class token
|
|
105
|
+
* ) {}
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export function Inject(token) {
|
|
110
|
+
return function injectDecorator(
|
|
111
|
+
// biome-ignore lint/complexity/noBannedTypes: ParameterDecorator requires Object type per TypeScript lib.es5.d.ts
|
|
112
|
+
target, _propertyKey, parameterIndex) {
|
|
113
|
+
// Get existing inject metadata or create new array
|
|
114
|
+
const existingTokens = Reflect.getMetadata(INJECT_METADATA_KEY, target) ?? new Map();
|
|
115
|
+
// Store the token for this parameter index
|
|
116
|
+
existingTokens.set(parameterIndex, token);
|
|
117
|
+
// Save the metadata
|
|
118
|
+
Reflect.defineMetadata(INJECT_METADATA_KEY, existingTokens, target);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// ============================================================================
|
|
122
|
+
// Optional Decorator
|
|
123
|
+
// ============================================================================
|
|
124
|
+
/**
|
|
125
|
+
* Marks a constructor parameter as optional
|
|
126
|
+
*
|
|
127
|
+
* When a dependency is marked as optional and cannot be resolved,
|
|
128
|
+
* `undefined` is injected instead of throwing an error.
|
|
129
|
+
*
|
|
130
|
+
* @returns Parameter decorator
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* @Injectable()
|
|
135
|
+
* class NotificationService {
|
|
136
|
+
* constructor(
|
|
137
|
+
* @Optional() private emailService?: EmailService,
|
|
138
|
+
* @Optional() @Inject(SMS_SERVICE) private smsService?: SmsService,
|
|
139
|
+
* ) {}
|
|
140
|
+
*
|
|
141
|
+
* notify(message: string) {
|
|
142
|
+
* // Gracefully handle missing services
|
|
143
|
+
* this.emailService?.send(message);
|
|
144
|
+
* this.smsService?.send(message);
|
|
145
|
+
* }
|
|
146
|
+
* }
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
export function Optional() {
|
|
150
|
+
return function optionalDecorator(
|
|
151
|
+
// biome-ignore lint/complexity/noBannedTypes: ParameterDecorator requires Object type per TypeScript lib.es5.d.ts
|
|
152
|
+
target, _propertyKey, parameterIndex) {
|
|
153
|
+
// Get existing optional flags or create new set
|
|
154
|
+
const optionalParams = Reflect.getMetadata(OPTIONAL_METADATA_KEY, target) ?? new Set();
|
|
155
|
+
// Mark this parameter as optional
|
|
156
|
+
optionalParams.add(parameterIndex);
|
|
157
|
+
// Save the metadata
|
|
158
|
+
Reflect.defineMetadata(OPTIONAL_METADATA_KEY, optionalParams, target);
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// Metadata Readers
|
|
163
|
+
// ============================================================================
|
|
164
|
+
/**
|
|
165
|
+
* Checks if a class is marked as injectable
|
|
166
|
+
*
|
|
167
|
+
* @param target - The class to check
|
|
168
|
+
* @returns true if the class has the @Injectable decorator
|
|
169
|
+
*/
|
|
170
|
+
export function isInjectable(target) {
|
|
171
|
+
return Reflect.getMetadata(INJECTABLE_METADATA_KEY, target) === true;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Gets the scope of an injectable class
|
|
175
|
+
*
|
|
176
|
+
* @param target - The class to check
|
|
177
|
+
* @returns The configured scope or SINGLETON if not specified
|
|
178
|
+
*/
|
|
179
|
+
export function getInjectableScope(target) {
|
|
180
|
+
const scope = Reflect.getMetadata(SCOPE_METADATA_KEY, target);
|
|
181
|
+
return scope ?? Scope.SINGLETON;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Gets the explicit injection tokens for a class's constructor parameters
|
|
185
|
+
*
|
|
186
|
+
* @param target - The class to get tokens for
|
|
187
|
+
* @returns A map of parameter index to injection token
|
|
188
|
+
*/
|
|
189
|
+
export function getExplicitInjectTokens(target) {
|
|
190
|
+
return Reflect.getMetadata(INJECT_METADATA_KEY, target) ?? new Map();
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Gets the set of optional parameter indices for a class's constructor
|
|
194
|
+
*
|
|
195
|
+
* @param target - The class to check
|
|
196
|
+
* @returns A set of parameter indices marked as optional
|
|
197
|
+
*/
|
|
198
|
+
export function getOptionalParams(target) {
|
|
199
|
+
return Reflect.getMetadata(OPTIONAL_METADATA_KEY, target) ?? new Set();
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Gets the design-time parameter types from TypeScript metadata
|
|
203
|
+
*
|
|
204
|
+
* Requires `emitDecoratorMetadata: true` in tsconfig.json
|
|
205
|
+
*
|
|
206
|
+
* @param target - The class to get parameter types for
|
|
207
|
+
* @returns Array of constructor parameter types, or undefined if not available
|
|
208
|
+
*/
|
|
209
|
+
export function getDesignParamTypes(target) {
|
|
210
|
+
return Reflect.getMetadata(DESIGN_PARAMTYPES_KEY, target);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Gets all injection tokens for a class's constructor parameters
|
|
214
|
+
*
|
|
215
|
+
* Combines explicit @Inject tokens with design-time types from TypeScript.
|
|
216
|
+
* Explicit tokens take precedence over inferred types.
|
|
217
|
+
*
|
|
218
|
+
* @param target - The class to get tokens for
|
|
219
|
+
* @returns Array of injection tokens for each constructor parameter
|
|
220
|
+
*/
|
|
221
|
+
export function getConstructorTokens(target) {
|
|
222
|
+
// Get design-time types from TypeScript's metadata emission
|
|
223
|
+
const designTypes = getDesignParamTypes(target) ?? [];
|
|
224
|
+
// Get explicit @Inject tokens
|
|
225
|
+
const explicitTokens = getExplicitInjectTokens(target);
|
|
226
|
+
// Merge: explicit tokens override design types
|
|
227
|
+
const tokens = [];
|
|
228
|
+
for (let i = 0; i < designTypes.length; i++) {
|
|
229
|
+
const explicitToken = explicitTokens.get(i);
|
|
230
|
+
if (explicitToken !== undefined) {
|
|
231
|
+
// Use explicit @Inject token
|
|
232
|
+
tokens.push(explicitToken);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
// Use design-time type
|
|
236
|
+
// Note: If the type is Object, it usually means the type wasn't resolved
|
|
237
|
+
// (e.g., it was an interface). This will be caught at resolution time.
|
|
238
|
+
tokens.push(designTypes[i]);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return tokens;
|
|
242
|
+
}
|
|
243
|
+
// ============================================================================
|
|
244
|
+
// Decorator Utilities
|
|
245
|
+
// ============================================================================
|
|
246
|
+
/**
|
|
247
|
+
* Creates injectable metadata without using decorators
|
|
248
|
+
*
|
|
249
|
+
* Useful for environments where decorators are not supported,
|
|
250
|
+
* or for programmatic registration of third-party classes.
|
|
251
|
+
*
|
|
252
|
+
* @param target - The class to make injectable
|
|
253
|
+
* @param options - Injectable options
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```typescript
|
|
257
|
+
* // Make a third-party class injectable
|
|
258
|
+
* import { ThirdPartyService } from 'third-party-lib';
|
|
259
|
+
*
|
|
260
|
+
* makeInjectable(ThirdPartyService, { scope: Scope.SINGLETON });
|
|
261
|
+
*
|
|
262
|
+
* // Then register with explicit dependencies
|
|
263
|
+
* container.register({
|
|
264
|
+
* provide: ThirdPartyService,
|
|
265
|
+
* useClass: ThirdPartyService,
|
|
266
|
+
* inject: [ConfigService]
|
|
267
|
+
* });
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export function makeInjectable(target, options = {}) {
|
|
271
|
+
Reflect.defineMetadata(INJECTABLE_METADATA_KEY, true, target);
|
|
272
|
+
Reflect.defineMetadata(SCOPE_METADATA_KEY, options.scope ?? Scope.SINGLETON, target);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Sets explicit inject tokens for a class's constructor parameters
|
|
276
|
+
*
|
|
277
|
+
* Useful for programmatically setting dependency tokens without decorators.
|
|
278
|
+
*
|
|
279
|
+
* @param target - The class to set tokens for
|
|
280
|
+
* @param tokens - Array of tokens matching constructor parameter positions
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* ```typescript
|
|
284
|
+
* import { ThirdPartyService } from 'third-party-lib';
|
|
285
|
+
*
|
|
286
|
+
* // ThirdPartyService constructor: (config: Config, db: Database)
|
|
287
|
+
* setInjectTokens(ThirdPartyService, [ConfigService, DATABASE]);
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
export function setInjectTokens(target, tokens) {
|
|
291
|
+
const tokenMap = new Map();
|
|
292
|
+
tokens.forEach((token, index) => {
|
|
293
|
+
tokenMap.set(index, token);
|
|
294
|
+
});
|
|
295
|
+
Reflect.defineMetadata(INJECT_METADATA_KEY, tokenMap, target);
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Injection Module
|
|
3
|
+
*
|
|
4
|
+
* VeloxTS provides a powerful, type-safe dependency injection container
|
|
5
|
+
* inspired by Angular and NestJS, designed for the VeloxTS framework.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Class, factory, value, and alias providers
|
|
9
|
+
* - Singleton, transient, and request-scoped lifecycles
|
|
10
|
+
* - Automatic constructor injection via decorators
|
|
11
|
+
* - Circular dependency detection
|
|
12
|
+
* - Fastify integration for request-scoped services
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import {
|
|
17
|
+
* Container,
|
|
18
|
+
* Injectable,
|
|
19
|
+
* Inject,
|
|
20
|
+
* Scope,
|
|
21
|
+
* token
|
|
22
|
+
* } from '@veloxts/core';
|
|
23
|
+
*
|
|
24
|
+
* // Create tokens for interfaces
|
|
25
|
+
* const DATABASE = token<DatabaseClient>('DATABASE');
|
|
26
|
+
* const LOGGER = token.symbol<Logger>('LOGGER');
|
|
27
|
+
*
|
|
28
|
+
* // Define injectable services
|
|
29
|
+
* @Injectable({ scope: Scope.REQUEST })
|
|
30
|
+
* class UserService {
|
|
31
|
+
* constructor(
|
|
32
|
+
* @Inject(DATABASE) private db: DatabaseClient,
|
|
33
|
+
* private config: ConfigService,
|
|
34
|
+
* ) {}
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* // Register providers
|
|
38
|
+
* const container = new Container();
|
|
39
|
+
* container.register({
|
|
40
|
+
* provide: DATABASE,
|
|
41
|
+
* useFactory: () => createDatabaseClient(),
|
|
42
|
+
* scope: Scope.SINGLETON
|
|
43
|
+
* });
|
|
44
|
+
* container.register({
|
|
45
|
+
* provide: UserService,
|
|
46
|
+
* useClass: UserService,
|
|
47
|
+
* scope: Scope.REQUEST
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* // Resolve services
|
|
51
|
+
* const userService = container.resolve(UserService, { request });
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @module di
|
|
55
|
+
*/
|
|
56
|
+
export type { ContainerOptions, ResolutionContext } from './container.js';
|
|
57
|
+
export { Container, container, createContainer } from './container.js';
|
|
58
|
+
export type { InjectableOptions } from './decorators.js';
|
|
59
|
+
export { getConstructorTokens, getExplicitInjectTokens, getInjectableScope, getOptionalParams, INJECT_METADATA_KEY, INJECTABLE_METADATA_KEY, Inject, Injectable, isInjectable, makeInjectable, OPTIONAL_METADATA_KEY, Optional, SCOPE_METADATA_KEY, setInjectTokens, } from './decorators.js';
|
|
60
|
+
export type { ClassProvider, ExistingProvider, FactoryProvider, Provider, ValueProvider, } from './providers.js';
|
|
61
|
+
export { singleton, scoped, transient, value, factory, asClass, asExisting, asFactory, asValue, isClassProvider, isExistingProvider, isFactoryProvider, isValueProvider, validateProvider, } from './providers.js';
|
|
62
|
+
export { Scope, ScopeManager } from './scope.js';
|
|
63
|
+
export type { AbstractClass, ClassConstructor, InjectionToken, StringToken, SymbolToken, TokenType, } from './tokens.js';
|
|
64
|
+
export { token, createStringToken, createSymbolToken, getTokenName, isClassToken, isStringToken, isSymbolToken, validateToken, } from './tokens.js';
|
|
65
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,MAAM,EACN,UAAU,EACV,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAEP,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,EAEP,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,EAEL,iBAAiB,EACjB,iBAAiB,EAEjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC"}
|