@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.
@@ -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"}