composed-di 0.2.8 → 0.2.9-ts4
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/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/serviceFactory.d.ts +6 -6
- package/dist/serviceFactory.d.ts.map +1 -1
- package/dist/serviceFactory.js +1 -1
- package/dist/serviceFactory.js.map +1 -1
- package/dist/serviceKey.d.ts +1 -1
- package/dist/serviceKey.d.ts.map +1 -1
- package/dist/serviceKey.js +1 -1
- package/dist/serviceKey.js.map +1 -1
- package/dist/serviceModule.d.ts +5 -5
- package/dist/serviceModule.d.ts.map +1 -1
- package/dist/serviceModule.js +1 -1
- package/dist/serviceModule.js.map +1 -1
- package/dist/{ServiceScope.d.ts → serviceScope.d.ts} +1 -1
- package/dist/serviceScope.d.ts.map +1 -0
- package/dist/{ServiceScope.js → serviceScope.js} +1 -1
- package/dist/serviceScope.js.map +1 -0
- package/dist/utils.d.ts +1 -1
- package/package.json +3 -2
- package/src/index.ts +5 -5
- package/src/{ServiceFactory.ts → serviceFactory.ts} +83 -83
- package/src/{ServiceModule.ts → serviceModule.ts} +123 -123
- package/src/{ServiceScope.ts → serviceScope.ts} +7 -7
- package/src/utils.ts +152 -152
- package/dist/ServiceScope.d.ts.map +0 -1
- package/dist/ServiceScope.js.map +0 -1
- package/dist/main.d.ts +0 -2
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -15
- package/dist/main.js.map +0 -1
- package/dist/plugin/index.d.ts +0 -66
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js +0 -397
- package/dist/plugin/index.js.map +0 -1
- package/dist/serviceProvider.d.ts +0 -5
- package/dist/serviceProvider.d.ts.map +0 -1
- package/dist/serviceProvider.js +0 -3
- package/dist/serviceProvider.js.map +0 -1
- package/dist/test-from.d.ts +0 -2
- package/dist/test-from.d.ts.map +0 -1
- package/dist/test-from.js +0 -68
- package/dist/test-from.js.map +0 -1
- /package/src/{ServiceKey.ts → serviceKey.ts} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
1
|
+
export * from './serviceKey';
|
|
2
|
+
export * from './serviceModule';
|
|
3
|
+
export * from './serviceFactory';
|
|
4
|
+
export * from './serviceScope';
|
|
5
5
|
export * from './utils';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,9 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./serviceKey"), exports);
|
|
18
|
+
__exportStar(require("./serviceModule"), exports);
|
|
19
|
+
__exportStar(require("./serviceFactory"), exports);
|
|
20
|
+
__exportStar(require("./serviceScope"), exports);
|
|
21
21
|
__exportStar(require("./utils"), exports);
|
|
22
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,mDAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,mDAAiC;AACjC,iDAA+B;AAC/B,0CAAwB"}
|
package/dist/serviceFactory.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ServiceKey } from './
|
|
2
|
-
import { ServiceScope } from './
|
|
1
|
+
import { ServiceKey } from './serviceKey';
|
|
2
|
+
import { ServiceScope } from './serviceScope';
|
|
3
3
|
type ServiceType<T> = T extends ServiceKey<infer U> ? U : never;
|
|
4
4
|
type DependencyTypes<T extends readonly ServiceKey<unknown>[]> = {
|
|
5
5
|
[K in keyof T]: ServiceType<T[K]>;
|
|
6
6
|
};
|
|
7
|
-
export declare abstract class ServiceFactory<
|
|
7
|
+
export declare abstract class ServiceFactory<T, D extends readonly ServiceKey<unknown>[] = []> {
|
|
8
8
|
abstract provides: ServiceKey<T>;
|
|
9
9
|
abstract dependsOn: D;
|
|
10
10
|
abstract scope?: ServiceScope;
|
|
@@ -14,7 +14,7 @@ export declare abstract class ServiceFactory<const T, const D extends readonly S
|
|
|
14
14
|
* Creates a singleton service factory that ensures a single instance of the provided service is initialized
|
|
15
15
|
* and used throughout the scope lifecycle.
|
|
16
16
|
*/
|
|
17
|
-
static singleton<
|
|
17
|
+
static singleton<T, D extends readonly ServiceKey<unknown>[] = []>({ scope, provides, dependsOn, initialize, dispose, }: {
|
|
18
18
|
scope?: ServiceScope;
|
|
19
19
|
provides: ServiceKey<T>;
|
|
20
20
|
dependsOn?: D;
|
|
@@ -25,11 +25,11 @@ export declare abstract class ServiceFactory<const T, const D extends readonly S
|
|
|
25
25
|
* Creates a one-shot service factory that initializes a new instance of the provided service
|
|
26
26
|
* every time it is requested.
|
|
27
27
|
*/
|
|
28
|
-
static oneShot<
|
|
28
|
+
static oneShot<T, D extends readonly ServiceKey<unknown>[] = []>({ provides, dependsOn, initialize, }: {
|
|
29
29
|
provides: ServiceKey<T>;
|
|
30
30
|
dependsOn: D;
|
|
31
31
|
initialize: (...dependencies: DependencyTypes<D>) => T | Promise<T>;
|
|
32
32
|
}): ServiceFactory<T, D>;
|
|
33
33
|
}
|
|
34
34
|
export {};
|
|
35
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=serviceFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"serviceFactory.d.ts","sourceRoot":"","sources":["../src/serviceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAGhE,KAAK,eAAe,CAAC,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI;KAC9D,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF,8BAAsB,cAAc,CAClC,CAAC,EACD,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE;IAE7C,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAE9B;;;OAGG;IACH,MAAM,CAAC,SAAS,CACd,CAAC,EACD,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAC7C,EACA,KAAK,EACL,QAAQ,EACR,SAA8B,EAC9B,UAAU,EACV,OAAkB,GACnB,EAAE;QACD,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,UAAU,EAAE,CAAC,GAAG,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC;KACjC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAuBxB;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAC/D,QAAQ,EACR,SAAS,EACT,UAAU,GACX,EAAE;QACD,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,SAAS,EAAE,CAAC,CAAC;QACb,UAAU,EAAE,CAAC,GAAG,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KACrE,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;CAOzB"}
|
package/dist/serviceFactory.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"serviceFactory.js","sourceRoot":"","sources":["../src/serviceFactory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWA,MAAsB,cAAc;IAUlC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAGd,EACA,KAAK,EACL,QAAQ,EACR,SAAS,GAAG,EAAkB,EAC9B,UAAU,EACV,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,GAOnB;QACC,IAAI,QAAuB,CAAC;QAE5B,OAAO;YACL,KAAK;YACL,QAAQ;YACR,SAAS;YACH,UAAU,CAAC,GAAG,YAAgC;;oBAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,YAAY,CAAC,CAAC;oBAC/C,CAAC;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC;aAAA;YACD,OAAO;gBACL,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAClB,QAAQ,GAAG,SAAS,CAAC;gBACvB,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAmD,EAC/D,QAAQ,EACR,SAAS,EACT,UAAU,GAKX;QACC,OAAO;YACL,QAAQ;YACR,SAAS;YACT,UAAU;SACX,CAAC;IACJ,CAAC;CACF;AAvED,wCAuEC"}
|
package/dist/serviceKey.d.ts
CHANGED
package/dist/serviceKey.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"serviceKey.d.ts","sourceRoot":"","sources":["../src/serviceKey.ts"],"names":[],"mappings":"AACA,qBAAa,UAAU,CAAC,CAAC;aAGK,IAAI,EAAE,MAAM;IAFxC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM;CAGzC"}
|
package/dist/serviceKey.js
CHANGED
package/dist/serviceKey.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"serviceKey.js","sourceRoot":"","sources":["../src/serviceKey.ts"],"names":[],"mappings":";;;AAAA,aAAa;AACb,MAAa,UAAU;IAGrB,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAND,gCAMC"}
|
package/dist/serviceModule.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ServiceKey } from './
|
|
2
|
-
import { ServiceFactory } from './
|
|
3
|
-
import { ServiceScope } from './
|
|
4
|
-
type GenericFactory = ServiceFactory<
|
|
1
|
+
import { ServiceKey } from './serviceKey';
|
|
2
|
+
import { ServiceFactory } from './serviceFactory';
|
|
3
|
+
import { ServiceScope } from './serviceScope';
|
|
4
|
+
type GenericFactory = ServiceFactory<any, readonly ServiceKey<any>[]>;
|
|
5
5
|
export declare class ServiceModule {
|
|
6
6
|
readonly factories: GenericFactory[];
|
|
7
7
|
private constructor();
|
|
@@ -30,4 +30,4 @@ export declare class ServiceModule {
|
|
|
30
30
|
static from(entries: (ServiceModule | GenericFactory)[]): ServiceModule;
|
|
31
31
|
}
|
|
32
32
|
export {};
|
|
33
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=serviceModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"serviceModule.d.ts","sourceRoot":"","sources":["../src/serviceModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,KAAK,cAAc,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAGtE,qBAAa,aAAa;IACJ,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE;IAAxD,OAAO;IAOM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqBnD;;;;;;;;;OASG;IACI,OAAO,CAAC,KAAK,CAAC,EAAE,YAAY;IAQnC;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,GAAG,cAAc,CAAC,EAAE,GAAG,aAAa;CAcxE"}
|
package/dist/serviceModule.js
CHANGED
|
@@ -100,4 +100,4 @@ function isSuitable(key, factory) {
|
|
|
100
100
|
var _a;
|
|
101
101
|
return ((_a = factory === null || factory === void 0 ? void 0 : factory.provides) === null || _a === void 0 ? void 0 : _a.symbol) === (key === null || key === void 0 ? void 0 : key.symbol);
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=
|
|
103
|
+
//# sourceMappingURL=serviceModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"serviceModule.js","sourceRoot":"","sources":["../src/serviceModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceScope.d.ts","sourceRoot":"","sources":["../src/serviceScope.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IAGX,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM;CAGlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceScope.js","sourceRoot":"","sources":["../src/serviceScope.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IAGvB,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAND,oCAMC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ServiceModule } from './
|
|
1
|
+
import { ServiceModule } from './serviceModule';
|
|
2
2
|
export interface DotGraphOptions {
|
|
3
3
|
/** Graph direction: 'TB' (top-bottom), 'LR' (left-right), 'BT' (bottom-top), 'RL' (right-left) */
|
|
4
4
|
direction?: 'TB' | 'LR' | 'BT' | 'RL';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "composed-di",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.9-ts4",
|
|
5
5
|
"author": "Juan Herrera juanhr454@gmail.com",
|
|
6
6
|
"type": "commonjs",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -29,12 +29,13 @@
|
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
31
|
"build": "tsc --build",
|
|
32
|
+
"clean": "tsc --build --clean",
|
|
32
33
|
"prepublishOnly": "npm run build"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@tsconfig/recommended": "^1.0.10",
|
|
36
37
|
"@types/node": "24.0.10",
|
|
37
38
|
"prettier": "^3.3.1",
|
|
38
|
-
"typescript": "
|
|
39
|
+
"typescript": "4.9.3"
|
|
39
40
|
}
|
|
40
41
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './utils'
|
|
1
|
+
export * from './serviceKey';
|
|
2
|
+
export * from './serviceModule';
|
|
3
|
+
export * from './serviceFactory';
|
|
4
|
+
export * from './serviceScope';
|
|
5
|
+
export * from './utils';
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import { ServiceKey } from './
|
|
2
|
-
import { ServiceScope } from './
|
|
3
|
-
|
|
4
|
-
// Helper types to extract the type from ServiceKey
|
|
5
|
-
type ServiceType<T> = T extends ServiceKey<infer U> ? U : never;
|
|
6
|
-
|
|
7
|
-
// Helper types to convert an array/tuple of ServiceKey to tuple of their types
|
|
8
|
-
type DependencyTypes<T extends readonly ServiceKey<unknown>[]> = {
|
|
9
|
-
[K in keyof T]: ServiceType<T[K]>;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export abstract class ServiceFactory<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
> {
|
|
16
|
-
abstract provides: ServiceKey<T>;
|
|
17
|
-
abstract dependsOn: D;
|
|
18
|
-
abstract scope?: ServiceScope;
|
|
19
|
-
abstract initialize: (...dependencies: DependencyTypes<D>) => T | Promise<T>;
|
|
20
|
-
abstract dispose?: () => void;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Creates a singleton service factory that ensures a single instance of the provided service is initialized
|
|
24
|
-
* and used throughout the scope lifecycle.
|
|
25
|
-
*/
|
|
26
|
-
static singleton<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
>({
|
|
30
|
-
scope,
|
|
31
|
-
provides,
|
|
32
|
-
dependsOn = [] as unknown as D,
|
|
33
|
-
initialize,
|
|
34
|
-
dispose = () => {},
|
|
35
|
-
}: {
|
|
36
|
-
scope?: ServiceScope;
|
|
37
|
-
provides: ServiceKey<T>;
|
|
38
|
-
dependsOn?: D;
|
|
39
|
-
initialize: (...dependencies: DependencyTypes<D>) => T | Promise<T>;
|
|
40
|
-
dispose?: (instance: T) => void;
|
|
41
|
-
}): ServiceFactory<T, D> {
|
|
42
|
-
let instance: T | undefined;
|
|
43
|
-
|
|
44
|
-
return {
|
|
45
|
-
scope,
|
|
46
|
-
provides,
|
|
47
|
-
dependsOn,
|
|
48
|
-
async initialize(...dependencies: DependencyTypes<D>): Promise<T> {
|
|
49
|
-
if (instance === undefined) {
|
|
50
|
-
instance = await initialize(...dependencies);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return instance;
|
|
54
|
-
},
|
|
55
|
-
dispose(): void {
|
|
56
|
-
if (instance !== undefined) {
|
|
57
|
-
dispose(instance);
|
|
58
|
-
instance = undefined;
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Creates a one-shot service factory that initializes a new instance of the provided service
|
|
66
|
-
* every time it is requested.
|
|
67
|
-
*/
|
|
68
|
-
static oneShot<
|
|
69
|
-
provides,
|
|
70
|
-
dependsOn,
|
|
71
|
-
initialize,
|
|
72
|
-
}: {
|
|
73
|
-
provides: ServiceKey<T>;
|
|
74
|
-
dependsOn: D;
|
|
75
|
-
initialize: (...dependencies: DependencyTypes<D>) => T | Promise<T>;
|
|
76
|
-
}): ServiceFactory<T, D> {
|
|
77
|
-
return {
|
|
78
|
-
provides,
|
|
79
|
-
dependsOn,
|
|
80
|
-
initialize,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
}
|
|
1
|
+
import { ServiceKey } from './serviceKey';
|
|
2
|
+
import { ServiceScope } from './serviceScope';
|
|
3
|
+
|
|
4
|
+
// Helper types to extract the type from ServiceKey
|
|
5
|
+
type ServiceType<T> = T extends ServiceKey<infer U> ? U : never;
|
|
6
|
+
|
|
7
|
+
// Helper types to convert an array/tuple of ServiceKey to tuple of their types
|
|
8
|
+
type DependencyTypes<T extends readonly ServiceKey<unknown>[]> = {
|
|
9
|
+
[K in keyof T]: ServiceType<T[K]>;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export abstract class ServiceFactory<
|
|
13
|
+
T,
|
|
14
|
+
D extends readonly ServiceKey<unknown>[] = [],
|
|
15
|
+
> {
|
|
16
|
+
abstract provides: ServiceKey<T>;
|
|
17
|
+
abstract dependsOn: D;
|
|
18
|
+
abstract scope?: ServiceScope;
|
|
19
|
+
abstract initialize: (...dependencies: DependencyTypes<D>) => T | Promise<T>;
|
|
20
|
+
abstract dispose?: () => void;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Creates a singleton service factory that ensures a single instance of the provided service is initialized
|
|
24
|
+
* and used throughout the scope lifecycle.
|
|
25
|
+
*/
|
|
26
|
+
static singleton<
|
|
27
|
+
T,
|
|
28
|
+
D extends readonly ServiceKey<unknown>[] = [],
|
|
29
|
+
>({
|
|
30
|
+
scope,
|
|
31
|
+
provides,
|
|
32
|
+
dependsOn = [] as unknown as D,
|
|
33
|
+
initialize,
|
|
34
|
+
dispose = () => {},
|
|
35
|
+
}: {
|
|
36
|
+
scope?: ServiceScope;
|
|
37
|
+
provides: ServiceKey<T>;
|
|
38
|
+
dependsOn?: D;
|
|
39
|
+
initialize: (...dependencies: DependencyTypes<D>) => T | Promise<T>;
|
|
40
|
+
dispose?: (instance: T) => void;
|
|
41
|
+
}): ServiceFactory<T, D> {
|
|
42
|
+
let instance: T | undefined;
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
scope,
|
|
46
|
+
provides,
|
|
47
|
+
dependsOn,
|
|
48
|
+
async initialize(...dependencies: DependencyTypes<D>): Promise<T> {
|
|
49
|
+
if (instance === undefined) {
|
|
50
|
+
instance = await initialize(...dependencies);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return instance;
|
|
54
|
+
},
|
|
55
|
+
dispose(): void {
|
|
56
|
+
if (instance !== undefined) {
|
|
57
|
+
dispose(instance);
|
|
58
|
+
instance = undefined;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Creates a one-shot service factory that initializes a new instance of the provided service
|
|
66
|
+
* every time it is requested.
|
|
67
|
+
*/
|
|
68
|
+
static oneShot<T, D extends readonly ServiceKey<unknown>[] = []>({
|
|
69
|
+
provides,
|
|
70
|
+
dependsOn,
|
|
71
|
+
initialize,
|
|
72
|
+
}: {
|
|
73
|
+
provides: ServiceKey<T>;
|
|
74
|
+
dependsOn: D;
|
|
75
|
+
initialize: (...dependencies: DependencyTypes<D>) => T | Promise<T>;
|
|
76
|
+
}): ServiceFactory<T, D> {
|
|
77
|
+
return {
|
|
78
|
+
provides,
|
|
79
|
+
dependsOn,
|
|
80
|
+
initialize,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|