@toijs/modular 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/constants/config.constant.d.ts +5 -0
- package/dist/config/constants/config.constant.d.ts.map +1 -0
- package/dist/config/constants/config.constant.js +5 -0
- package/dist/config/constants/config.constant.js.map +1 -0
- package/dist/config/constants/index.d.ts +2 -0
- package/dist/config/constants/index.d.ts.map +1 -0
- package/dist/config/constants/index.js +2 -0
- package/dist/config/constants/index.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/services/config.service.d.ts +18 -0
- package/dist/config/services/config.service.d.ts.map +1 -0
- package/dist/config/services/config.service.js +33 -0
- package/dist/config/services/config.service.js.map +1 -0
- package/dist/config/services/index.d.ts +2 -0
- package/dist/config/services/index.d.ts.map +1 -0
- package/dist/config/services/index.js +2 -0
- package/dist/config/services/index.js.map +1 -0
- package/dist/config/utils/env.util.d.ts +4 -0
- package/dist/config/utils/env.util.d.ts.map +1 -0
- package/dist/config/utils/env.util.js +35 -0
- package/dist/config/utils/env.util.js.map +1 -0
- package/dist/config/utils/index.d.ts +2 -0
- package/dist/config/utils/index.d.ts.map +1 -0
- package/dist/config/utils/index.js +2 -0
- package/dist/config/utils/index.js.map +1 -0
- package/dist/di/constants/di.constant.d.ts +21 -0
- package/dist/di/constants/di.constant.d.ts.map +1 -0
- package/dist/di/constants/di.constant.js +21 -0
- package/dist/di/constants/di.constant.js.map +1 -0
- package/dist/di/constants/index.d.ts +2 -0
- package/dist/di/constants/index.d.ts.map +1 -0
- package/dist/di/constants/index.js +2 -0
- package/dist/di/constants/index.js.map +1 -0
- package/dist/di/decorators/index.d.ts +2 -0
- package/dist/di/decorators/index.d.ts.map +1 -0
- package/dist/di/decorators/index.js +2 -0
- package/dist/di/decorators/index.js.map +1 -0
- package/dist/di/decorators/injectable.decorator.d.ts +39 -0
- package/dist/di/decorators/injectable.decorator.d.ts.map +1 -0
- package/dist/di/decorators/injectable.decorator.js +82 -0
- package/dist/di/decorators/injectable.decorator.js.map +1 -0
- package/dist/di/index.d.ts +5 -0
- package/dist/di/index.d.ts.map +1 -0
- package/dist/di/index.js +5 -0
- package/dist/di/index.js.map +1 -0
- package/dist/di/services/container.service.d.ts +52 -0
- package/dist/di/services/container.service.d.ts.map +1 -0
- package/dist/di/services/container.service.js +188 -0
- package/dist/di/services/container.service.js.map +1 -0
- package/dist/di/services/index.d.ts +2 -0
- package/dist/di/services/index.d.ts.map +1 -0
- package/dist/di/services/index.js +2 -0
- package/dist/di/services/index.js.map +1 -0
- package/dist/di/types/di.type.d.ts +85 -0
- package/dist/di/types/di.type.d.ts.map +1 -0
- package/dist/di/types/di.type.js +2 -0
- package/dist/di/types/di.type.js.map +1 -0
- package/dist/di/types/index.d.ts +2 -0
- package/dist/di/types/index.d.ts.map +1 -0
- package/dist/di/types/index.js +2 -0
- package/dist/di/types/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/launcher/constants/core.constant.d.ts +5 -0
- package/dist/launcher/constants/core.constant.d.ts.map +1 -0
- package/dist/launcher/constants/core.constant.js +5 -0
- package/dist/launcher/constants/core.constant.js.map +1 -0
- package/dist/launcher/constants/index.d.ts +2 -0
- package/dist/launcher/constants/index.d.ts.map +1 -0
- package/dist/launcher/constants/index.js +2 -0
- package/dist/launcher/constants/index.js.map +1 -0
- package/dist/launcher/constants/task.constant.d.ts +3 -0
- package/dist/launcher/constants/task.constant.d.ts.map +1 -0
- package/dist/launcher/constants/task.constant.js +3 -0
- package/dist/launcher/constants/task.constant.js.map +1 -0
- package/dist/launcher/index.d.ts +4 -0
- package/dist/launcher/index.d.ts.map +1 -0
- package/dist/launcher/index.js +4 -0
- package/dist/launcher/index.js.map +1 -0
- package/dist/launcher/services/index.d.ts +3 -0
- package/dist/launcher/services/index.d.ts.map +1 -0
- package/dist/launcher/services/index.js +3 -0
- package/dist/launcher/services/index.js.map +1 -0
- package/dist/launcher/services/launcher.service.d.ts +33 -0
- package/dist/launcher/services/launcher.service.d.ts.map +1 -0
- package/dist/launcher/services/launcher.service.js +95 -0
- package/dist/launcher/services/launcher.service.js.map +1 -0
- package/dist/launcher/services/shell.service.d.ts +24 -0
- package/dist/launcher/services/shell.service.d.ts.map +1 -0
- package/dist/launcher/services/shell.service.js +34 -0
- package/dist/launcher/services/shell.service.js.map +1 -0
- package/dist/launcher/types/extensions.type.d.ts +16 -0
- package/dist/launcher/types/extensions.type.d.ts.map +1 -0
- package/dist/launcher/types/extensions.type.js +2 -0
- package/dist/launcher/types/extensions.type.js.map +1 -0
- package/dist/launcher/types/index.d.ts +2 -0
- package/dist/launcher/types/index.d.ts.map +1 -0
- package/dist/launcher/types/index.js +2 -0
- package/dist/launcher/types/index.js.map +1 -0
- package/dist/launcher/types/module.type.d.ts +29 -0
- package/dist/launcher/types/module.type.d.ts.map +1 -0
- package/dist/launcher/types/module.type.js +2 -0
- package/dist/launcher/types/module.type.js.map +1 -0
- package/dist/metadata/constants/index.d.ts +2 -0
- package/dist/metadata/constants/index.d.ts.map +1 -0
- package/dist/metadata/constants/index.js +2 -0
- package/dist/metadata/constants/index.js.map +1 -0
- package/dist/metadata/constants/metadata.constant.d.ts +2 -0
- package/dist/metadata/constants/metadata.constant.d.ts.map +1 -0
- package/dist/metadata/constants/metadata.constant.js +2 -0
- package/dist/metadata/constants/metadata.constant.js.map +1 -0
- package/dist/metadata/index.d.ts +4 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +4 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/services/index.d.ts +2 -0
- package/dist/metadata/services/index.d.ts.map +1 -0
- package/dist/metadata/services/index.js +2 -0
- package/dist/metadata/services/index.js.map +1 -0
- package/dist/metadata/services/metadata.service.d.ts +44 -0
- package/dist/metadata/services/metadata.service.d.ts.map +1 -0
- package/dist/metadata/services/metadata.service.js +95 -0
- package/dist/metadata/services/metadata.service.js.map +1 -0
- package/dist/metadata/types/index.d.ts +2 -0
- package/dist/metadata/types/index.d.ts.map +1 -0
- package/dist/metadata/types/index.js +2 -0
- package/dist/metadata/types/index.js.map +1 -0
- package/dist/metadata/types/metadata.type.d.ts +3 -0
- package/dist/metadata/types/metadata.type.d.ts.map +1 -0
- package/dist/metadata/types/metadata.type.js +2 -0
- package/dist/metadata/types/metadata.type.js.map +1 -0
- package/dist/task/index.d.ts +3 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +3 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/services/index.d.ts +2 -0
- package/dist/task/services/index.d.ts.map +1 -0
- package/dist/task/services/index.js +2 -0
- package/dist/task/services/index.js.map +1 -0
- package/dist/task/services/task.service.d.ts +25 -0
- package/dist/task/services/task.service.d.ts.map +1 -0
- package/dist/task/services/task.service.js +58 -0
- package/dist/task/services/task.service.js.map +1 -0
- package/dist/task/types/index.d.ts +2 -0
- package/dist/task/types/index.d.ts.map +1 -0
- package/dist/task/types/index.js +2 -0
- package/dist/task/types/index.js.map +1 -0
- package/dist/task/types/task.type.d.ts +9 -0
- package/dist/task/types/task.type.d.ts.map +1 -0
- package/dist/task/types/task.type.js +2 -0
- package/dist/task/types/task.type.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.service.js","sourceRoot":"","sources":["../../../src/launcher/services/shell.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,KAAK;IAGa;IAA6B;IAFlD,QAAQ,CAAU;IAE1B,YAA6B,IAAU,EAAmB,QAAkB;QAA/C,SAAI,GAAJ,IAAI,CAAM;QAAmB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAEhF;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,QAAuB;QAClC,MAAM,QAAQ,GAAG,MAAM,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAwC;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Augmentation point for launcher capabilities.
|
|
3
|
+
*
|
|
4
|
+
* Packages can merge additional properties:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* declare module "@toijs/modular" {
|
|
8
|
+
* interface LauncherExtensions {
|
|
9
|
+
* db: ConnectionManager;
|
|
10
|
+
* }
|
|
11
|
+
* }
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export interface LauncherExtensions {
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=extensions.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.type.d.ts","sourceRoot":"","sources":["../../../src/launcher/types/extensions.type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.type.js","sourceRoot":"","sources":["../../../src/launcher/types/extensions.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/launcher/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/launcher/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Launcher } from "../services";
|
|
2
|
+
/**
|
|
3
|
+
* A module that can be registered and started
|
|
4
|
+
* @param name - The name of the module
|
|
5
|
+
* @param prepare - The function to prepare the module
|
|
6
|
+
* @param register - The function to register the module
|
|
7
|
+
* @param ready - The function to ready the module
|
|
8
|
+
*/
|
|
9
|
+
export type Module = {
|
|
10
|
+
name: string;
|
|
11
|
+
prepare?: () => void;
|
|
12
|
+
register?: () => void;
|
|
13
|
+
ready?: () => void;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* A factory function that creates a module
|
|
17
|
+
* @param launcher - The launcher instance
|
|
18
|
+
* @returns The module instance
|
|
19
|
+
*/
|
|
20
|
+
export type ModuleFactory = (launcher: Launcher) => Module;
|
|
21
|
+
/**
|
|
22
|
+
* The options for the start function
|
|
23
|
+
* @typedef {Object} StartOptions
|
|
24
|
+
* @param modules - The modules to start
|
|
25
|
+
*/
|
|
26
|
+
export type StartOptions = {
|
|
27
|
+
modules: ModuleFactory[];
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=module.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.type.d.ts","sourceRoot":"","sources":["../../../src/launcher/types/module.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.type.js","sourceRoot":"","sources":["../../../src/launcher/types/module.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metadata/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.constant.d.ts","sourceRoot":"","sources":["../../../src/metadata/constants/metadata.constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.constant.js","sourceRoot":"","sources":["../../../src/metadata/constants/metadata.constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metadata/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Task } from "../../task";
|
|
2
|
+
import type { MetadataListener } from "../types";
|
|
3
|
+
export declare class Metadata {
|
|
4
|
+
private readonly task;
|
|
5
|
+
private store;
|
|
6
|
+
constructor(task: Task);
|
|
7
|
+
/**
|
|
8
|
+
* Invoke a function
|
|
9
|
+
* @param name - The name of the function
|
|
10
|
+
* @param args - The arguments to pass to the function
|
|
11
|
+
* @returns The result of the function
|
|
12
|
+
*/
|
|
13
|
+
invoke(name: string, args?: unknown[]): any;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a value
|
|
16
|
+
* @param name - The name of the value
|
|
17
|
+
* @returns The value
|
|
18
|
+
*/
|
|
19
|
+
resolve(name: string): unknown;
|
|
20
|
+
/**
|
|
21
|
+
* Define a value
|
|
22
|
+
* @param name - The name of the value
|
|
23
|
+
* @param value - The value
|
|
24
|
+
* @param merge - Whether to merge the value with the existing value
|
|
25
|
+
*/
|
|
26
|
+
define(name: string, value: unknown, merge?: boolean): void;
|
|
27
|
+
/**
|
|
28
|
+
* Subscribe to all metadata changes
|
|
29
|
+
*/
|
|
30
|
+
subscribe(name: string | MetadataListener, listener?: MetadataListener): () => void;
|
|
31
|
+
/**
|
|
32
|
+
* Create a handler for a metadata listener
|
|
33
|
+
* @param listener - The listener to create a handler for
|
|
34
|
+
* @returns The handler
|
|
35
|
+
*/
|
|
36
|
+
private createHandler;
|
|
37
|
+
/**
|
|
38
|
+
* Notify all listeners
|
|
39
|
+
* @param name - The name of the value
|
|
40
|
+
* @param value - The value
|
|
41
|
+
*/
|
|
42
|
+
private notify;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=metadata.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.service.d.ts","sourceRoot":"","sources":["../../../src/metadata/services/metadata.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAA4B,MAAM,UAAU,CAAC;AAE3E,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,KAAK,CAA+B;gBAEf,IAAI,EAAE,IAAI;IAEvC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,EAAO;IAKzC;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM;IAIpB;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAE,OAAc;IAgB1D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,QAAQ,CAAC,EAAE,gBAAgB;IA+BtE;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;OAIG;IACH,OAAO,CAAC,MAAM;CAMf"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { EVENT_METADATA_CHANGED } from "../constants";
|
|
2
|
+
export class Metadata {
|
|
3
|
+
task;
|
|
4
|
+
store = {};
|
|
5
|
+
constructor(task) {
|
|
6
|
+
this.task = task;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Invoke a function
|
|
10
|
+
* @param name - The name of the function
|
|
11
|
+
* @param args - The arguments to pass to the function
|
|
12
|
+
* @returns The result of the function
|
|
13
|
+
*/
|
|
14
|
+
invoke(name, args = []) {
|
|
15
|
+
const fn = this.resolve(name) || (() => { });
|
|
16
|
+
return fn(...args);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a value
|
|
20
|
+
* @param name - The name of the value
|
|
21
|
+
* @returns The value
|
|
22
|
+
*/
|
|
23
|
+
resolve(name) {
|
|
24
|
+
return this.store[name];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Define a value
|
|
28
|
+
* @param name - The name of the value
|
|
29
|
+
* @param value - The value
|
|
30
|
+
* @param merge - Whether to merge the value with the existing value
|
|
31
|
+
*/
|
|
32
|
+
define(name, value, merge = true) {
|
|
33
|
+
if (merge) {
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
value = [...(this.store[name] || []), ...value];
|
|
36
|
+
}
|
|
37
|
+
else if (typeof value == "object") {
|
|
38
|
+
value = {
|
|
39
|
+
...(this.store[name] || {}),
|
|
40
|
+
...value,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
this.store[name] = value;
|
|
45
|
+
this.notify(name, value);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Subscribe to all metadata changes
|
|
49
|
+
*/
|
|
50
|
+
subscribe(name, listener) {
|
|
51
|
+
// Common case: subscribe to all metadata changes
|
|
52
|
+
if (typeof name === "function") {
|
|
53
|
+
const handler = this.createHandler(name);
|
|
54
|
+
this.task.subscribe(EVENT_METADATA_CHANGED, handler);
|
|
55
|
+
name(this.store);
|
|
56
|
+
return () => {
|
|
57
|
+
this.task.unsubscribe(EVENT_METADATA_CHANGED, handler);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Special case: subscribe to a specific metadata change
|
|
61
|
+
if (!listener) {
|
|
62
|
+
return () => { };
|
|
63
|
+
}
|
|
64
|
+
// Create a handler for the listener
|
|
65
|
+
const handler = this.createHandler(listener);
|
|
66
|
+
const eventName = `event.metadata.changed.${name}`;
|
|
67
|
+
this.task.subscribe(eventName, handler);
|
|
68
|
+
// First notify the listener
|
|
69
|
+
listener({ [name]: this.store[name] });
|
|
70
|
+
return () => {
|
|
71
|
+
this.task.unsubscribe(eventName, handler);
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a handler for a metadata listener
|
|
76
|
+
* @param listener - The listener to create a handler for
|
|
77
|
+
* @returns The handler
|
|
78
|
+
*/
|
|
79
|
+
createHandler(listener) {
|
|
80
|
+
return (context) => {
|
|
81
|
+
listener(context.data);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Notify all listeners
|
|
86
|
+
* @param name - The name of the value
|
|
87
|
+
* @param value - The value
|
|
88
|
+
*/
|
|
89
|
+
notify(name, value) {
|
|
90
|
+
const keyedResponse = { [name]: value };
|
|
91
|
+
void this.task.invoke(`event.metadata.changed.${name}`, keyedResponse);
|
|
92
|
+
void this.task.invoke(EVENT_METADATA_CHANGED, keyedResponse);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=metadata.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.service.js","sourceRoot":"","sources":["../../../src/metadata/services/metadata.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metadata/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.type.d.ts","sourceRoot":"","sources":["../../../src/metadata/types/metadata.type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;AACxE,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.type.js","sourceRoot":"","sources":["../../../src/metadata/types/metadata.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/task/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/task/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TaskHandler, TaskInvokeType } from "../types";
|
|
2
|
+
export declare class Task {
|
|
3
|
+
private handlers;
|
|
4
|
+
/**
|
|
5
|
+
* Subscribe to a task
|
|
6
|
+
*/
|
|
7
|
+
subscribe(name: string, fn: TaskHandler): () => void;
|
|
8
|
+
/**
|
|
9
|
+
* Unsubscribe from a task
|
|
10
|
+
*/
|
|
11
|
+
unsubscribe(name: string, fn: unknown): void;
|
|
12
|
+
/**
|
|
13
|
+
* Invoke a task sequentially
|
|
14
|
+
*/
|
|
15
|
+
private invokeSequential;
|
|
16
|
+
/**
|
|
17
|
+
* Invoke a task in parallel
|
|
18
|
+
*/
|
|
19
|
+
private invokeParallel;
|
|
20
|
+
/**
|
|
21
|
+
* Execute a task
|
|
22
|
+
*/
|
|
23
|
+
invoke(name: string, data?: unknown, type?: TaskInvokeType): Promise<unknown>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=task.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.service.d.ts","sourceRoot":"","sources":["../../../src/task/services/task.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEzE,qBAAa,IAAI;IACf,OAAO,CAAC,QAAQ,CAAqC;IAErD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW;IAYvC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IAUrC;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;YACW,cAAc;IAK5B;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc,EAAE,IAAI,GAAE,cAA6B;CAOrF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export class Task {
|
|
2
|
+
handlers = {};
|
|
3
|
+
/**
|
|
4
|
+
* Subscribe to a task
|
|
5
|
+
*/
|
|
6
|
+
subscribe(name, fn) {
|
|
7
|
+
if (!this.handlers[name]) {
|
|
8
|
+
this.handlers[name] = [];
|
|
9
|
+
}
|
|
10
|
+
this.handlers[name].push(fn);
|
|
11
|
+
return () => {
|
|
12
|
+
this.unsubscribe(name, fn);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Unsubscribe from a task
|
|
17
|
+
*/
|
|
18
|
+
unsubscribe(name, fn) {
|
|
19
|
+
const tasks = this.handlers[name];
|
|
20
|
+
if (!tasks)
|
|
21
|
+
return;
|
|
22
|
+
const index = tasks.indexOf(fn);
|
|
23
|
+
if (index > -1) {
|
|
24
|
+
tasks.splice(index, 1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Invoke a task sequentially
|
|
29
|
+
*/
|
|
30
|
+
async invokeSequential(name, data = null) {
|
|
31
|
+
const tasks = this.handlers[name] || [];
|
|
32
|
+
let rs = undefined;
|
|
33
|
+
const max = tasks.length - 1;
|
|
34
|
+
for (const [i, fn] of tasks.entries()) {
|
|
35
|
+
const nrs = await fn({ data, result: rs, index: i, end: max === i });
|
|
36
|
+
if (nrs !== undefined)
|
|
37
|
+
rs = nrs;
|
|
38
|
+
}
|
|
39
|
+
return rs;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Invoke a task in parallel
|
|
43
|
+
*/
|
|
44
|
+
async invokeParallel(name, data = null) {
|
|
45
|
+
const tasks = this.handlers[name] || [];
|
|
46
|
+
return Promise.all(tasks.map(fn => fn({ data })));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Execute a task
|
|
50
|
+
*/
|
|
51
|
+
async invoke(name, data = null, type = 'sequential') {
|
|
52
|
+
if (type === 'sequential') {
|
|
53
|
+
return this.invokeSequential(name, data);
|
|
54
|
+
}
|
|
55
|
+
return this.invokeParallel(name, data);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=task.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../../src/task/services/task.service.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,IAAI;IACP,QAAQ,GAAkC,EAAE,CAAC;IAErD;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,EAAe;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY,EAAE,EAAW;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAiB,CAAC,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACf,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,OAAgB,IAAI;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,EAAE,GAAY,SAAS,CAAC;QAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAE7B,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,EAAiB,CAAC,CAAC;YACpF,IAAI,GAAG,KAAK,SAAS;gBAAE,EAAE,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,OAAgB,IAAI;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAiB,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAgB,IAAI,EAAE,OAAuB,YAAY;QAClF,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/task/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/task/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type TaskContext = {
|
|
2
|
+
data: unknown;
|
|
3
|
+
result: unknown;
|
|
4
|
+
index: number;
|
|
5
|
+
end: boolean;
|
|
6
|
+
};
|
|
7
|
+
export type TaskHandler = (context: TaskContext) => unknown | Promise<unknown>;
|
|
8
|
+
export type TaskInvokeType = 'sequential' | 'parallel';
|
|
9
|
+
//# sourceMappingURL=task.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.type.d.ts","sourceRoot":"","sources":["../../../src/task/types/task.type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.type.js","sourceRoot":"","sources":["../../../src/task/types/task.type.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@toijs/modular",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Lamtoi modular core (launcher, metadata, config, task, router)",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^22.20.1",
|
|
20
|
+
"typescript": "~5.9.3"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc -p tsconfig.json",
|
|
24
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
25
|
+
"dev": "tsc -p tsconfig.json --watch"
|
|
26
|
+
}
|
|
27
|
+
}
|