@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.
Files changed (157) hide show
  1. package/dist/config/constants/config.constant.d.ts +5 -0
  2. package/dist/config/constants/config.constant.d.ts.map +1 -0
  3. package/dist/config/constants/config.constant.js +5 -0
  4. package/dist/config/constants/config.constant.js.map +1 -0
  5. package/dist/config/constants/index.d.ts +2 -0
  6. package/dist/config/constants/index.d.ts.map +1 -0
  7. package/dist/config/constants/index.js +2 -0
  8. package/dist/config/constants/index.js.map +1 -0
  9. package/dist/config/index.d.ts +3 -0
  10. package/dist/config/index.d.ts.map +1 -0
  11. package/dist/config/index.js +3 -0
  12. package/dist/config/index.js.map +1 -0
  13. package/dist/config/services/config.service.d.ts +18 -0
  14. package/dist/config/services/config.service.d.ts.map +1 -0
  15. package/dist/config/services/config.service.js +33 -0
  16. package/dist/config/services/config.service.js.map +1 -0
  17. package/dist/config/services/index.d.ts +2 -0
  18. package/dist/config/services/index.d.ts.map +1 -0
  19. package/dist/config/services/index.js +2 -0
  20. package/dist/config/services/index.js.map +1 -0
  21. package/dist/config/utils/env.util.d.ts +4 -0
  22. package/dist/config/utils/env.util.d.ts.map +1 -0
  23. package/dist/config/utils/env.util.js +35 -0
  24. package/dist/config/utils/env.util.js.map +1 -0
  25. package/dist/config/utils/index.d.ts +2 -0
  26. package/dist/config/utils/index.d.ts.map +1 -0
  27. package/dist/config/utils/index.js +2 -0
  28. package/dist/config/utils/index.js.map +1 -0
  29. package/dist/di/constants/di.constant.d.ts +21 -0
  30. package/dist/di/constants/di.constant.d.ts.map +1 -0
  31. package/dist/di/constants/di.constant.js +21 -0
  32. package/dist/di/constants/di.constant.js.map +1 -0
  33. package/dist/di/constants/index.d.ts +2 -0
  34. package/dist/di/constants/index.d.ts.map +1 -0
  35. package/dist/di/constants/index.js +2 -0
  36. package/dist/di/constants/index.js.map +1 -0
  37. package/dist/di/decorators/index.d.ts +2 -0
  38. package/dist/di/decorators/index.d.ts.map +1 -0
  39. package/dist/di/decorators/index.js +2 -0
  40. package/dist/di/decorators/index.js.map +1 -0
  41. package/dist/di/decorators/injectable.decorator.d.ts +39 -0
  42. package/dist/di/decorators/injectable.decorator.d.ts.map +1 -0
  43. package/dist/di/decorators/injectable.decorator.js +82 -0
  44. package/dist/di/decorators/injectable.decorator.js.map +1 -0
  45. package/dist/di/index.d.ts +5 -0
  46. package/dist/di/index.d.ts.map +1 -0
  47. package/dist/di/index.js +5 -0
  48. package/dist/di/index.js.map +1 -0
  49. package/dist/di/services/container.service.d.ts +52 -0
  50. package/dist/di/services/container.service.d.ts.map +1 -0
  51. package/dist/di/services/container.service.js +188 -0
  52. package/dist/di/services/container.service.js.map +1 -0
  53. package/dist/di/services/index.d.ts +2 -0
  54. package/dist/di/services/index.d.ts.map +1 -0
  55. package/dist/di/services/index.js +2 -0
  56. package/dist/di/services/index.js.map +1 -0
  57. package/dist/di/types/di.type.d.ts +85 -0
  58. package/dist/di/types/di.type.d.ts.map +1 -0
  59. package/dist/di/types/di.type.js +2 -0
  60. package/dist/di/types/di.type.js.map +1 -0
  61. package/dist/di/types/index.d.ts +2 -0
  62. package/dist/di/types/index.d.ts.map +1 -0
  63. package/dist/di/types/index.js +2 -0
  64. package/dist/di/types/index.js.map +1 -0
  65. package/dist/index.d.ts +6 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +6 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/launcher/constants/core.constant.d.ts +5 -0
  70. package/dist/launcher/constants/core.constant.d.ts.map +1 -0
  71. package/dist/launcher/constants/core.constant.js +5 -0
  72. package/dist/launcher/constants/core.constant.js.map +1 -0
  73. package/dist/launcher/constants/index.d.ts +2 -0
  74. package/dist/launcher/constants/index.d.ts.map +1 -0
  75. package/dist/launcher/constants/index.js +2 -0
  76. package/dist/launcher/constants/index.js.map +1 -0
  77. package/dist/launcher/constants/task.constant.d.ts +3 -0
  78. package/dist/launcher/constants/task.constant.d.ts.map +1 -0
  79. package/dist/launcher/constants/task.constant.js +3 -0
  80. package/dist/launcher/constants/task.constant.js.map +1 -0
  81. package/dist/launcher/index.d.ts +4 -0
  82. package/dist/launcher/index.d.ts.map +1 -0
  83. package/dist/launcher/index.js +4 -0
  84. package/dist/launcher/index.js.map +1 -0
  85. package/dist/launcher/services/index.d.ts +3 -0
  86. package/dist/launcher/services/index.d.ts.map +1 -0
  87. package/dist/launcher/services/index.js +3 -0
  88. package/dist/launcher/services/index.js.map +1 -0
  89. package/dist/launcher/services/launcher.service.d.ts +33 -0
  90. package/dist/launcher/services/launcher.service.d.ts.map +1 -0
  91. package/dist/launcher/services/launcher.service.js +95 -0
  92. package/dist/launcher/services/launcher.service.js.map +1 -0
  93. package/dist/launcher/services/shell.service.d.ts +24 -0
  94. package/dist/launcher/services/shell.service.d.ts.map +1 -0
  95. package/dist/launcher/services/shell.service.js +34 -0
  96. package/dist/launcher/services/shell.service.js.map +1 -0
  97. package/dist/launcher/types/extensions.type.d.ts +16 -0
  98. package/dist/launcher/types/extensions.type.d.ts.map +1 -0
  99. package/dist/launcher/types/extensions.type.js +2 -0
  100. package/dist/launcher/types/extensions.type.js.map +1 -0
  101. package/dist/launcher/types/index.d.ts +2 -0
  102. package/dist/launcher/types/index.d.ts.map +1 -0
  103. package/dist/launcher/types/index.js +2 -0
  104. package/dist/launcher/types/index.js.map +1 -0
  105. package/dist/launcher/types/module.type.d.ts +29 -0
  106. package/dist/launcher/types/module.type.d.ts.map +1 -0
  107. package/dist/launcher/types/module.type.js +2 -0
  108. package/dist/launcher/types/module.type.js.map +1 -0
  109. package/dist/metadata/constants/index.d.ts +2 -0
  110. package/dist/metadata/constants/index.d.ts.map +1 -0
  111. package/dist/metadata/constants/index.js +2 -0
  112. package/dist/metadata/constants/index.js.map +1 -0
  113. package/dist/metadata/constants/metadata.constant.d.ts +2 -0
  114. package/dist/metadata/constants/metadata.constant.d.ts.map +1 -0
  115. package/dist/metadata/constants/metadata.constant.js +2 -0
  116. package/dist/metadata/constants/metadata.constant.js.map +1 -0
  117. package/dist/metadata/index.d.ts +4 -0
  118. package/dist/metadata/index.d.ts.map +1 -0
  119. package/dist/metadata/index.js +4 -0
  120. package/dist/metadata/index.js.map +1 -0
  121. package/dist/metadata/services/index.d.ts +2 -0
  122. package/dist/metadata/services/index.d.ts.map +1 -0
  123. package/dist/metadata/services/index.js +2 -0
  124. package/dist/metadata/services/index.js.map +1 -0
  125. package/dist/metadata/services/metadata.service.d.ts +44 -0
  126. package/dist/metadata/services/metadata.service.d.ts.map +1 -0
  127. package/dist/metadata/services/metadata.service.js +95 -0
  128. package/dist/metadata/services/metadata.service.js.map +1 -0
  129. package/dist/metadata/types/index.d.ts +2 -0
  130. package/dist/metadata/types/index.d.ts.map +1 -0
  131. package/dist/metadata/types/index.js +2 -0
  132. package/dist/metadata/types/index.js.map +1 -0
  133. package/dist/metadata/types/metadata.type.d.ts +3 -0
  134. package/dist/metadata/types/metadata.type.d.ts.map +1 -0
  135. package/dist/metadata/types/metadata.type.js +2 -0
  136. package/dist/metadata/types/metadata.type.js.map +1 -0
  137. package/dist/task/index.d.ts +3 -0
  138. package/dist/task/index.d.ts.map +1 -0
  139. package/dist/task/index.js +3 -0
  140. package/dist/task/index.js.map +1 -0
  141. package/dist/task/services/index.d.ts +2 -0
  142. package/dist/task/services/index.d.ts.map +1 -0
  143. package/dist/task/services/index.js +2 -0
  144. package/dist/task/services/index.js.map +1 -0
  145. package/dist/task/services/task.service.d.ts +25 -0
  146. package/dist/task/services/task.service.d.ts.map +1 -0
  147. package/dist/task/services/task.service.js +58 -0
  148. package/dist/task/services/task.service.js.map +1 -0
  149. package/dist/task/types/index.d.ts +2 -0
  150. package/dist/task/types/index.d.ts.map +1 -0
  151. package/dist/task/types/index.js +2 -0
  152. package/dist/task/types/index.js.map +1 -0
  153. package/dist/task/types/task.type.d.ts +9 -0
  154. package/dist/task/types/task.type.d.ts.map +1 -0
  155. package/dist/task/types/task.type.js +2 -0
  156. package/dist/task/types/task.type.js.map +1 -0
  157. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=extensions.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.type.js","sourceRoot":"","sources":["../../../src/launcher/types/extensions.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./module.type";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from "./module.type";
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=module.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.type.js","sourceRoot":"","sources":["../../../src/launcher/types/module.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./metadata.constant";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from "./metadata.constant";
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export declare const EVENT_METADATA_CHANGED = "event.metadata.changed";
2
+ //# sourceMappingURL=metadata.constant.d.ts.map
@@ -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,2 @@
1
+ export const EVENT_METADATA_CHANGED = "event.metadata.changed";
2
+ //# sourceMappingURL=metadata.constant.js.map
@@ -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,4 @@
1
+ export * from "./constants";
2
+ export * from "./services";
3
+ export * from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export * from "./constants";
2
+ export * from "./services";
3
+ export * from "./types";
4
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export * from "./metadata.service";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from "./metadata.service";
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export * from "./metadata.type";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from "./metadata.type";
2
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ export type MetadataListener = (data: MetadataListenerResponse) => void;
2
+ export type MetadataListenerResponse = Record<string, unknown>;
3
+ //# sourceMappingURL=metadata.type.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=metadata.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.type.js","sourceRoot":"","sources":["../../../src/metadata/types/metadata.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from "./services";
2
+ export * from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export * from "./services";
2
+ export * from "./types";
3
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export * from "./task.service";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from "./task.service";
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export * from "./task.type";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from "./task.type";
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=task.type.js.map
@@ -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
+ }