@brianmcd/di 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +320 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/container-builder.d.ts +76 -0
- package/dist/cjs/lib/container-builder.d.ts.map +1 -0
- package/dist/cjs/lib/container-builder.js +283 -0
- package/dist/cjs/lib/container-builder.js.map +1 -0
- package/dist/cjs/lib/container.d.ts +52 -0
- package/dist/cjs/lib/container.d.ts.map +1 -0
- package/dist/cjs/lib/container.js +113 -0
- package/dist/cjs/lib/container.js.map +1 -0
- package/dist/cjs/lib/scoped-container.d.ts +36 -0
- package/dist/cjs/lib/scoped-container.d.ts.map +1 -0
- package/dist/cjs/lib/scoped-container.js +119 -0
- package/dist/cjs/lib/scoped-container.js.map +1 -0
- package/dist/cjs/lib/types/factory-provider.d.ts +18 -0
- package/dist/cjs/lib/types/factory-provider.d.ts.map +1 -0
- package/dist/cjs/lib/types/factory-provider.js +3 -0
- package/dist/cjs/lib/types/factory-provider.js.map +1 -0
- package/dist/cjs/lib/types/injectable-class.d.ts +11 -0
- package/dist/cjs/lib/types/injectable-class.d.ts.map +1 -0
- package/dist/cjs/lib/types/injectable-class.js +3 -0
- package/dist/cjs/lib/types/injectable-class.js.map +1 -0
- package/dist/cjs/lib/types/lifecycle.d.ts +13 -0
- package/dist/cjs/lib/types/lifecycle.d.ts.map +1 -0
- package/dist/cjs/lib/types/lifecycle.js +3 -0
- package/dist/cjs/lib/types/lifecycle.js.map +1 -0
- package/dist/cjs/lib/types/options.d.ts +5 -0
- package/dist/cjs/lib/types/options.d.ts.map +1 -0
- package/dist/cjs/lib/types/options.js +3 -0
- package/dist/cjs/lib/types/options.js.map +1 -0
- package/dist/cjs/lib/types/resolvers.d.ts +15 -0
- package/dist/cjs/lib/types/resolvers.d.ts.map +1 -0
- package/dist/cjs/lib/types/resolvers.js +3 -0
- package/dist/cjs/lib/types/resolvers.js.map +1 -0
- package/dist/cjs/lib/types/scope.d.ts +6 -0
- package/dist/cjs/lib/types/scope.d.ts.map +1 -0
- package/dist/cjs/lib/types/scope.js +8 -0
- package/dist/cjs/lib/types/scope.js.map +1 -0
- package/dist/cjs/lib/types/tokens.d.ts +13 -0
- package/dist/cjs/lib/types/tokens.d.ts.map +1 -0
- package/dist/cjs/lib/types/tokens.js +3 -0
- package/dist/cjs/lib/types/tokens.js.map +1 -0
- package/dist/cjs/lib/utils/create-token.d.ts +10 -0
- package/dist/cjs/lib/utils/create-token.d.ts.map +1 -0
- package/dist/cjs/lib/utils/create-token.js +14 -0
- package/dist/cjs/lib/utils/create-token.js.map +1 -0
- package/dist/cjs/lib/utils/define-factory.d.ts +28 -0
- package/dist/cjs/lib/utils/define-factory.d.ts.map +1 -0
- package/dist/cjs/lib/utils/define-factory.js +31 -0
- package/dist/cjs/lib/utils/define-factory.js.map +1 -0
- package/dist/cjs/lib/utils/has-on-destroy.d.ts +6 -0
- package/dist/cjs/lib/utils/has-on-destroy.d.ts.map +1 -0
- package/dist/cjs/lib/utils/has-on-destroy.js +10 -0
- package/dist/cjs/lib/utils/has-on-destroy.js.map +1 -0
- package/dist/cjs/lib/utils/has-on-init.d.ts +6 -0
- package/dist/cjs/lib/utils/has-on-init.d.ts.map +1 -0
- package/dist/cjs/lib/utils/has-on-init.js +10 -0
- package/dist/cjs/lib/utils/has-on-init.js.map +1 -0
- package/dist/cjs/lib/utils/token-to-string.d.ts +6 -0
- package/dist/cjs/lib/utils/token-to-string.d.ts.map +1 -0
- package/dist/cjs/lib/utils/token-to-string.js +13 -0
- package/dist/cjs/lib/utils/token-to-string.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/container-builder.d.ts +76 -0
- package/dist/esm/lib/container-builder.d.ts.map +1 -0
- package/dist/esm/lib/container-builder.js +279 -0
- package/dist/esm/lib/container-builder.js.map +1 -0
- package/dist/esm/lib/container.d.ts +52 -0
- package/dist/esm/lib/container.d.ts.map +1 -0
- package/dist/esm/lib/container.js +109 -0
- package/dist/esm/lib/container.js.map +1 -0
- package/dist/esm/lib/scoped-container.d.ts +36 -0
- package/dist/esm/lib/scoped-container.d.ts.map +1 -0
- package/dist/esm/lib/scoped-container.js +115 -0
- package/dist/esm/lib/scoped-container.js.map +1 -0
- package/dist/esm/lib/types/factory-provider.d.ts +18 -0
- package/dist/esm/lib/types/factory-provider.d.ts.map +1 -0
- package/dist/esm/lib/types/factory-provider.js +2 -0
- package/dist/esm/lib/types/factory-provider.js.map +1 -0
- package/dist/esm/lib/types/injectable-class.d.ts +11 -0
- package/dist/esm/lib/types/injectable-class.d.ts.map +1 -0
- package/dist/esm/lib/types/injectable-class.js +2 -0
- package/dist/esm/lib/types/injectable-class.js.map +1 -0
- package/dist/esm/lib/types/lifecycle.d.ts +13 -0
- package/dist/esm/lib/types/lifecycle.d.ts.map +1 -0
- package/dist/esm/lib/types/lifecycle.js +2 -0
- package/dist/esm/lib/types/lifecycle.js.map +1 -0
- package/dist/esm/lib/types/options.d.ts +5 -0
- package/dist/esm/lib/types/options.d.ts.map +1 -0
- package/dist/esm/lib/types/options.js +2 -0
- package/dist/esm/lib/types/options.js.map +1 -0
- package/dist/esm/lib/types/resolvers.d.ts +15 -0
- package/dist/esm/lib/types/resolvers.d.ts.map +1 -0
- package/dist/esm/lib/types/resolvers.js +2 -0
- package/dist/esm/lib/types/resolvers.js.map +1 -0
- package/dist/esm/lib/types/scope.d.ts +6 -0
- package/dist/esm/lib/types/scope.d.ts.map +1 -0
- package/dist/esm/lib/types/scope.js +5 -0
- package/dist/esm/lib/types/scope.js.map +1 -0
- package/dist/esm/lib/types/tokens.d.ts +13 -0
- package/dist/esm/lib/types/tokens.d.ts.map +1 -0
- package/dist/esm/lib/types/tokens.js +2 -0
- package/dist/esm/lib/types/tokens.js.map +1 -0
- package/dist/esm/lib/utils/create-token.d.ts +10 -0
- package/dist/esm/lib/utils/create-token.d.ts.map +1 -0
- package/dist/esm/lib/utils/create-token.js +11 -0
- package/dist/esm/lib/utils/create-token.js.map +1 -0
- package/dist/esm/lib/utils/define-factory.d.ts +28 -0
- package/dist/esm/lib/utils/define-factory.d.ts.map +1 -0
- package/dist/esm/lib/utils/define-factory.js +28 -0
- package/dist/esm/lib/utils/define-factory.js.map +1 -0
- package/dist/esm/lib/utils/has-on-destroy.d.ts +6 -0
- package/dist/esm/lib/utils/has-on-destroy.d.ts.map +1 -0
- package/dist/esm/lib/utils/has-on-destroy.js +7 -0
- package/dist/esm/lib/utils/has-on-destroy.js.map +1 -0
- package/dist/esm/lib/utils/has-on-init.d.ts +6 -0
- package/dist/esm/lib/utils/has-on-init.d.ts.map +1 -0
- package/dist/esm/lib/utils/has-on-init.js +7 -0
- package/dist/esm/lib/utils/has-on-init.js.map +1 -0
- package/dist/esm/lib/utils/token-to-string.d.ts +6 -0
- package/dist/esm/lib/utils/token-to-string.d.ts.map +1 -0
- package/dist/esm/lib/utils/token-to-string.js +10 -0
- package/dist/esm/lib/utils/token-to-string.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-provider.js","sourceRoot":"","sources":["../../../../src/lib/types/factory-provider.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ResolveDeps } from './resolvers.js';
|
|
2
|
+
import { Token } from './tokens.js';
|
|
3
|
+
/**
|
|
4
|
+
* Interface for classes with static deps property.
|
|
5
|
+
* Enforces that the constructor parameters must match the types resolved from deps.
|
|
6
|
+
*/
|
|
7
|
+
export interface InjectableClass<T = unknown, Deps extends readonly Token<any>[] = readonly Token<any>[]> {
|
|
8
|
+
deps: Deps;
|
|
9
|
+
new (...args: ResolveDeps<Deps>): T;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=injectable-class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectable-class.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/injectable-class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,eAAe,CAC9B,CAAC,GAAG,OAAO,EACX,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE;IAE1D,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,GAAG,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectable-class.js","sourceRoot":"","sources":["../../../../src/lib/types/injectable-class.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for services that need initialization after all dependencies are resolved
|
|
3
|
+
*/
|
|
4
|
+
export interface OnInit {
|
|
5
|
+
onInit(): Promise<void> | void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Interface for services that need cleanup on container destruction
|
|
9
|
+
*/
|
|
10
|
+
export interface OnDestroy {
|
|
11
|
+
onDestroy(): Promise<void> | void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../src/lib/types/lifecycle.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/lib/types/options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TypedToken, Token } from './tokens.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract the resolved type from a service token.
|
|
4
|
+
* - For TypedToken<T> → returns T
|
|
5
|
+
* - For class constructor → returns the instance type
|
|
6
|
+
*/
|
|
7
|
+
export type ResolveToken<T> = T extends TypedToken<infer U> ? U : T extends new (...args: any[]) => infer U ? U : never;
|
|
8
|
+
/**
|
|
9
|
+
* Extract types from a deps array as a tuple.
|
|
10
|
+
* Maps each token to its resolved type.
|
|
11
|
+
*/
|
|
12
|
+
export type ResolveDeps<T extends readonly Token<any>[]> = {
|
|
13
|
+
[K in keyof T]: ResolveToken<T[K]>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IACxB,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5F;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../../src/lib/types/resolvers.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/scope.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK;;;CAGR,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../../src/lib/types/scope.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Service token types - can be a class constructor or a typed symbol
|
|
4
|
+
*/
|
|
5
|
+
export type Token<T> = TypedToken<T> | (new (...args: any[]) => T);
|
|
6
|
+
/**
|
|
7
|
+
* A branded symbol type that carries type information at the type level.
|
|
8
|
+
* Use createToken<T>() to create typed tokens for non-class dependencies.
|
|
9
|
+
*/
|
|
10
|
+
export type TypedToken<T> = symbol & {
|
|
11
|
+
readonly __type?: T;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,GAAG;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/lib/types/tokens.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TypedToken } from '../types/tokens.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create a typed token for non-class dependencies (like database connections).
|
|
4
|
+
* The type parameter T specifies what type the token resolves to.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* export const DATABASE = createToken<Database>('DATABASE');
|
|
8
|
+
*/
|
|
9
|
+
export declare function createToken<T>(name: string): TypedToken<T>;
|
|
10
|
+
//# sourceMappingURL=create-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-token.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/create-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAE1D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a typed token for non-class dependencies (like database connections).
|
|
3
|
+
* The type parameter T specifies what type the token resolves to.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* export const DATABASE = createToken<Database>('DATABASE');
|
|
7
|
+
*/
|
|
8
|
+
export function createToken(name) {
|
|
9
|
+
return Symbol.for(name);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=create-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-token.js","sourceRoot":"","sources":["../../../../src/lib/utils/create-token.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,IAAY;IACzC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAkB,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { FactoryProvider } from '../types/factory-provider.js';
|
|
2
|
+
import type { Token } from '../types/tokens.js';
|
|
3
|
+
/**
|
|
4
|
+
* Helper to define factories with type inference.
|
|
5
|
+
*
|
|
6
|
+
* This function is an identity function that returns the config object unchanged.
|
|
7
|
+
* Its purpose is to provide automatic type inference for the generic parameters,
|
|
8
|
+
* so you don't have to manually specify them when creating a FactoryProvider.
|
|
9
|
+
*
|
|
10
|
+
* Without defineFactory:
|
|
11
|
+
* const factory: FactoryProvider<DbType, readonly [typeof CONFIG]> = { ... };
|
|
12
|
+
*
|
|
13
|
+
* With defineFactory:
|
|
14
|
+
* const factory = defineFactory({ ... }); // Types inferred from provide and deps
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const dbFactory = defineFactory({
|
|
18
|
+
* provide: DATABASE,
|
|
19
|
+
* deps: [DB_CONTAINER_OPTIONS] as const,
|
|
20
|
+
* factory: (options) => new Database(options.connectionString),
|
|
21
|
+
* onDestroy: {
|
|
22
|
+
* deps: [DATABASE] as const,
|
|
23
|
+
* handler: async (db) => await db.destroy()
|
|
24
|
+
* }
|
|
25
|
+
* });
|
|
26
|
+
*/
|
|
27
|
+
export declare function defineFactory<T, Deps extends readonly Token<any>[], DestroyDeps extends readonly Token<any>[] = readonly []>(config: FactoryProvider<T, Deps, DestroyDeps>): FactoryProvider<T, Deps, DestroyDeps>;
|
|
28
|
+
//# sourceMappingURL=define-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-factory.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/define-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EACD,IAAI,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAClC,WAAW,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EACvD,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAEtF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper to define factories with type inference.
|
|
3
|
+
*
|
|
4
|
+
* This function is an identity function that returns the config object unchanged.
|
|
5
|
+
* Its purpose is to provide automatic type inference for the generic parameters,
|
|
6
|
+
* so you don't have to manually specify them when creating a FactoryProvider.
|
|
7
|
+
*
|
|
8
|
+
* Without defineFactory:
|
|
9
|
+
* const factory: FactoryProvider<DbType, readonly [typeof CONFIG]> = { ... };
|
|
10
|
+
*
|
|
11
|
+
* With defineFactory:
|
|
12
|
+
* const factory = defineFactory({ ... }); // Types inferred from provide and deps
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const dbFactory = defineFactory({
|
|
16
|
+
* provide: DATABASE,
|
|
17
|
+
* deps: [DB_CONTAINER_OPTIONS] as const,
|
|
18
|
+
* factory: (options) => new Database(options.connectionString),
|
|
19
|
+
* onDestroy: {
|
|
20
|
+
* deps: [DATABASE] as const,
|
|
21
|
+
* handler: async (db) => await db.destroy()
|
|
22
|
+
* }
|
|
23
|
+
* });
|
|
24
|
+
*/
|
|
25
|
+
export function defineFactory(config) {
|
|
26
|
+
return config;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=define-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-factory.js","sourceRoot":"","sources":["../../../../src/lib/utils/define-factory.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,aAAa,CAI3B,MAA6C;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-on-destroy.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/has-on-destroy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,SAAS,CAErE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-on-destroy.js","sourceRoot":"","sources":["../../../../src/lib/utils/has-on-destroy.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAiB;IAC5C,OAAO,OAAQ,QAAsB,CAAC,SAAS,KAAK,UAAU,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-on-init.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/has-on-init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,MAAM,CAE/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-on-init.js","sourceRoot":"","sources":["../../../../src/lib/utils/has-on-init.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAiB;IACzC,OAAO,OAAQ,QAAmB,CAAC,MAAM,KAAK,UAAU,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-to-string.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/token-to-string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAK3D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a service token to a string for error messages
|
|
3
|
+
*/
|
|
4
|
+
export function tokenToString(token) {
|
|
5
|
+
if (typeof token === 'symbol') {
|
|
6
|
+
return token.description ?? token.toString();
|
|
7
|
+
}
|
|
8
|
+
return token.name;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=token-to-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-to-string.js","sourceRoot":"","sources":["../../../../src/lib/utils/token-to-string.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAqB;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@brianmcd/di",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Lightweight, decorator-free, type-safe dependency injection container for TypeScript",
|
|
5
|
+
"author": "Brian McDaniel",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/brianmcd/di.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/brianmcd/di/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/brianmcd/di#readme",
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"sideEffects": false,
|
|
19
|
+
"keywords": [
|
|
20
|
+
"dependency-injection",
|
|
21
|
+
"di"
|
|
22
|
+
],
|
|
23
|
+
"type": "module",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./dist/esm/index.d.ts",
|
|
28
|
+
"default": "./dist/esm/index.js"
|
|
29
|
+
},
|
|
30
|
+
"require": {
|
|
31
|
+
"types": "./dist/cjs/index.d.ts",
|
|
32
|
+
"default": "./dist/cjs/index.js"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"main": "./dist/cjs/index.js",
|
|
37
|
+
"module": "./dist/esm/index.js",
|
|
38
|
+
"types": "./dist/esm/index.d.ts",
|
|
39
|
+
"files": [
|
|
40
|
+
"dist",
|
|
41
|
+
"README.md",
|
|
42
|
+
"LICENSE"
|
|
43
|
+
],
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18.0.0"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"tslib": "^2.6.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@eslint/js": "^9.29.0",
|
|
52
|
+
"@types/node": "^22.0.0",
|
|
53
|
+
"@vitest/coverage-v8": "^3.2.0",
|
|
54
|
+
"eslint": "^9.29.0",
|
|
55
|
+
"prettier": "^3.0.0",
|
|
56
|
+
"typescript": "^5.8.0",
|
|
57
|
+
"typescript-eslint": "^8.35.0",
|
|
58
|
+
"vitest": "^3.2.0"
|
|
59
|
+
},
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "pnpm run build:esm && pnpm run build:cjs && pnpm run build:cjs-package",
|
|
62
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
63
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
64
|
+
"build:cjs-package": "echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json",
|
|
65
|
+
"clean": "rm -rf dist",
|
|
66
|
+
"lint": "eslint src",
|
|
67
|
+
"lint:fix": "eslint src --fix",
|
|
68
|
+
"format": "prettier --write src",
|
|
69
|
+
"format:check": "prettier --check src",
|
|
70
|
+
"typecheck": "tsc --noEmit",
|
|
71
|
+
"test": "vitest run",
|
|
72
|
+
"test:watch": "vitest",
|
|
73
|
+
"test:coverage": "vitest run --coverage"
|
|
74
|
+
}
|
|
75
|
+
}
|