@bluelibs/runner 2.2.3 → 3.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 (204) hide show
  1. package/README.md +1315 -942
  2. package/dist/common.types.d.ts +20 -0
  3. package/dist/common.types.js +4 -0
  4. package/dist/common.types.js.map +1 -0
  5. package/dist/context.d.ts +34 -0
  6. package/dist/context.js +58 -0
  7. package/dist/context.js.map +1 -0
  8. package/dist/define.d.ts +22 -3
  9. package/dist/define.js +52 -8
  10. package/dist/define.js.map +1 -1
  11. package/dist/defs.d.ts +52 -31
  12. package/dist/defs.js +10 -2
  13. package/dist/defs.js.map +1 -1
  14. package/dist/errors.js +1 -1
  15. package/dist/errors.js.map +1 -1
  16. package/dist/event.types.d.ts +18 -0
  17. package/dist/event.types.js +4 -0
  18. package/dist/event.types.js.map +1 -0
  19. package/dist/examples/registrator-example.d.ts +122 -0
  20. package/dist/examples/registrator-example.js +147 -0
  21. package/dist/examples/registrator-example.js.map +1 -0
  22. package/dist/globals/globalEvents.d.ts +41 -0
  23. package/dist/globals/globalEvents.js +94 -0
  24. package/dist/globals/globalEvents.js.map +1 -0
  25. package/dist/globals/globalMiddleware.d.ts +23 -0
  26. package/dist/globals/globalMiddleware.js +15 -0
  27. package/dist/globals/globalMiddleware.js.map +1 -0
  28. package/dist/globals/globalResources.d.ts +27 -0
  29. package/dist/globals/globalResources.js +47 -0
  30. package/dist/globals/globalResources.js.map +1 -0
  31. package/dist/globals/middleware/cache.middleware.d.ts +34 -0
  32. package/dist/globals/middleware/cache.middleware.js +85 -0
  33. package/dist/globals/middleware/cache.middleware.js.map +1 -0
  34. package/dist/globals/middleware/requireContext.middleware.d.ts +6 -0
  35. package/dist/globals/middleware/requireContext.middleware.js +25 -0
  36. package/dist/globals/middleware/requireContext.middleware.js.map +1 -0
  37. package/dist/globals/middleware/retry.middleware.d.ts +20 -0
  38. package/dist/globals/middleware/retry.middleware.js +34 -0
  39. package/dist/globals/middleware/retry.middleware.js.map +1 -0
  40. package/dist/globals/resources/queue.resource.d.ts +7 -0
  41. package/dist/globals/resources/queue.resource.js +31 -0
  42. package/dist/globals/resources/queue.resource.js.map +1 -0
  43. package/dist/index.d.ts +45 -9
  44. package/dist/index.js +14 -9
  45. package/dist/index.js.map +1 -1
  46. package/dist/middleware.types.d.ts +40 -0
  47. package/dist/middleware.types.js +4 -0
  48. package/dist/middleware.types.js.map +1 -0
  49. package/dist/models/DependencyProcessor.d.ts +2 -1
  50. package/dist/models/DependencyProcessor.js +11 -13
  51. package/dist/models/DependencyProcessor.js.map +1 -1
  52. package/dist/models/EventManager.d.ts +5 -0
  53. package/dist/models/EventManager.js +44 -2
  54. package/dist/models/EventManager.js.map +1 -1
  55. package/dist/models/Logger.d.ts +30 -12
  56. package/dist/models/Logger.js +130 -42
  57. package/dist/models/Logger.js.map +1 -1
  58. package/dist/models/OverrideManager.d.ts +13 -0
  59. package/dist/models/OverrideManager.js +70 -0
  60. package/dist/models/OverrideManager.js.map +1 -0
  61. package/dist/models/Queue.d.ts +25 -0
  62. package/dist/models/Queue.js +54 -0
  63. package/dist/models/Queue.js.map +1 -0
  64. package/dist/models/ResourceInitializer.d.ts +5 -2
  65. package/dist/models/ResourceInitializer.js +20 -14
  66. package/dist/models/ResourceInitializer.js.map +1 -1
  67. package/dist/models/Semaphore.d.ts +61 -0
  68. package/dist/models/Semaphore.js +166 -0
  69. package/dist/models/Semaphore.js.map +1 -0
  70. package/dist/models/Store.d.ts +17 -72
  71. package/dist/models/Store.js +71 -269
  72. package/dist/models/Store.js.map +1 -1
  73. package/dist/models/StoreConstants.d.ts +11 -0
  74. package/dist/models/StoreConstants.js +18 -0
  75. package/dist/models/StoreConstants.js.map +1 -0
  76. package/dist/models/StoreRegistry.d.ts +25 -0
  77. package/dist/models/StoreRegistry.js +171 -0
  78. package/dist/models/StoreRegistry.js.map +1 -0
  79. package/dist/models/StoreTypes.d.ts +21 -0
  80. package/dist/models/StoreTypes.js +3 -0
  81. package/dist/models/StoreTypes.js.map +1 -0
  82. package/dist/models/StoreValidator.d.ts +10 -0
  83. package/dist/models/StoreValidator.js +41 -0
  84. package/dist/models/StoreValidator.js.map +1 -0
  85. package/dist/models/TaskRunner.js +39 -24
  86. package/dist/models/TaskRunner.js.map +1 -1
  87. package/dist/models/VarStore.d.ts +17 -0
  88. package/dist/models/VarStore.js +60 -0
  89. package/dist/models/VarStore.js.map +1 -0
  90. package/dist/models/index.d.ts +3 -0
  91. package/dist/models/index.js +3 -0
  92. package/dist/models/index.js.map +1 -1
  93. package/dist/resource.types.d.ts +31 -0
  94. package/dist/resource.types.js +3 -0
  95. package/dist/resource.types.js.map +1 -0
  96. package/dist/run.d.ts +4 -1
  97. package/dist/run.js +6 -3
  98. package/dist/run.js.map +1 -1
  99. package/dist/symbols.d.ts +24 -0
  100. package/dist/symbols.js +29 -0
  101. package/dist/symbols.js.map +1 -0
  102. package/dist/task.types.d.ts +55 -0
  103. package/dist/task.types.js +23 -0
  104. package/dist/task.types.js.map +1 -0
  105. package/dist/tools/registratorId.d.ts +4 -0
  106. package/dist/tools/registratorId.js +40 -0
  107. package/dist/tools/registratorId.js.map +1 -0
  108. package/dist/tools/simpleHash.d.ts +9 -0
  109. package/dist/tools/simpleHash.js +34 -0
  110. package/dist/tools/simpleHash.js.map +1 -0
  111. package/dist/types/base-interfaces.d.ts +18 -0
  112. package/dist/types/base-interfaces.js +6 -0
  113. package/dist/types/base-interfaces.js.map +1 -0
  114. package/dist/types/base.d.ts +13 -0
  115. package/dist/types/base.js +3 -0
  116. package/dist/types/base.js.map +1 -0
  117. package/dist/types/dependencies.d.ts +22 -0
  118. package/dist/types/dependencies.js +3 -0
  119. package/dist/types/dependencies.js.map +1 -0
  120. package/dist/types/dependency-core.d.ts +14 -0
  121. package/dist/types/dependency-core.js +5 -0
  122. package/dist/types/dependency-core.js.map +1 -0
  123. package/dist/types/events.d.ts +52 -0
  124. package/dist/types/events.js +6 -0
  125. package/dist/types/events.js.map +1 -0
  126. package/dist/types/hooks.d.ts +16 -0
  127. package/dist/types/hooks.js +5 -0
  128. package/dist/types/hooks.js.map +1 -0
  129. package/dist/types/index.d.ts +14 -0
  130. package/dist/types/index.js +27 -0
  131. package/dist/types/index.js.map +1 -0
  132. package/dist/types/meta.d.ts +13 -0
  133. package/dist/types/meta.js +5 -0
  134. package/dist/types/meta.js.map +1 -0
  135. package/dist/types/middleware.d.ts +38 -0
  136. package/dist/types/middleware.js +6 -0
  137. package/dist/types/middleware.js.map +1 -0
  138. package/dist/types/registerable.d.ts +10 -0
  139. package/dist/types/registerable.js +5 -0
  140. package/dist/types/registerable.js.map +1 -0
  141. package/dist/types/resources.d.ts +44 -0
  142. package/dist/types/resources.js +5 -0
  143. package/dist/types/resources.js.map +1 -0
  144. package/dist/types/symbols.d.ts +24 -0
  145. package/dist/types/symbols.js +30 -0
  146. package/dist/types/symbols.js.map +1 -0
  147. package/dist/types/tasks.d.ts +41 -0
  148. package/dist/types/tasks.js +5 -0
  149. package/dist/types/tasks.js.map +1 -0
  150. package/dist/types/utilities.d.ts +7 -0
  151. package/dist/types/utilities.js +5 -0
  152. package/dist/types/utilities.js.map +1 -0
  153. package/package.json +10 -6
  154. package/src/__tests__/benchmark/benchmark.test.ts +1 -1
  155. package/src/__tests__/context.test.ts +91 -0
  156. package/src/__tests__/errors.test.ts +8 -5
  157. package/src/__tests__/globalEvents.test.ts +1 -1
  158. package/src/__tests__/globals/cache.middleware.test.ts +772 -0
  159. package/src/__tests__/globals/queue.resource.test.ts +141 -0
  160. package/src/__tests__/globals/requireContext.middleware.test.ts +98 -0
  161. package/src/__tests__/globals/retry.middleware.test.ts +157 -0
  162. package/src/__tests__/index.helper.test.ts +55 -0
  163. package/src/__tests__/models/EventManager.test.ts +144 -0
  164. package/src/__tests__/models/Logger.test.ts +291 -34
  165. package/src/__tests__/models/Queue.test.ts +189 -0
  166. package/src/__tests__/models/ResourceInitializer.test.ts +8 -6
  167. package/src/__tests__/models/Semaphore.test.ts +713 -0
  168. package/src/__tests__/models/Store.test.ts +40 -0
  169. package/src/__tests__/models/TaskRunner.test.ts +86 -5
  170. package/src/__tests__/run.middleware.test.ts +166 -12
  171. package/src/__tests__/run.overrides.test.ts +13 -10
  172. package/src/__tests__/run.test.ts +363 -12
  173. package/src/__tests__/setOutput.test.ts +244 -0
  174. package/src/__tests__/tools/getCallerFile.test.ts +9 -9
  175. package/src/__tests__/typesafety.test.ts +54 -39
  176. package/src/context.ts +86 -0
  177. package/src/define.ts +84 -14
  178. package/src/defs.ts +91 -41
  179. package/src/errors.ts +3 -1
  180. package/src/{globalEvents.ts → globals/globalEvents.ts} +13 -12
  181. package/src/globals/globalMiddleware.ts +14 -0
  182. package/src/{globalResources.ts → globals/globalResources.ts} +14 -10
  183. package/src/globals/middleware/cache.middleware.ts +115 -0
  184. package/src/globals/middleware/requireContext.middleware.ts +36 -0
  185. package/src/globals/middleware/retry.middleware.ts +56 -0
  186. package/src/globals/resources/queue.resource.ts +34 -0
  187. package/src/index.ts +9 -5
  188. package/src/models/DependencyProcessor.ts +36 -40
  189. package/src/models/EventManager.ts +45 -5
  190. package/src/models/Logger.ts +170 -48
  191. package/src/models/OverrideManager.ts +84 -0
  192. package/src/models/Queue.ts +66 -0
  193. package/src/models/ResourceInitializer.ts +38 -20
  194. package/src/models/Semaphore.ts +208 -0
  195. package/src/models/Store.ts +94 -342
  196. package/src/models/StoreConstants.ts +17 -0
  197. package/src/models/StoreRegistry.ts +217 -0
  198. package/src/models/StoreTypes.ts +46 -0
  199. package/src/models/StoreValidator.ts +38 -0
  200. package/src/models/TaskRunner.ts +53 -40
  201. package/src/models/index.ts +3 -0
  202. package/src/run.ts +7 -4
  203. package/src/__tests__/index.ts +0 -15
  204. package/src/examples/express-mongo/index.ts +0 -1
@@ -0,0 +1,122 @@
1
+ export declare const userPackage: import("../defs").IRegistrator<(import("../defs").IEventDefinition<{
2
+ userId: string;
3
+ email: string;
4
+ }> | import("../defs").IResource<void, {
5
+ createUser: (email: string) => Promise<{
6
+ id: string;
7
+ email: string;
8
+ }>;
9
+ getUser: (id: string) => Promise<{
10
+ id: string;
11
+ email: string;
12
+ }>;
13
+ }, {}> | import("../defs").ITask<string, Promise<{
14
+ id: string;
15
+ email: string;
16
+ }>, {
17
+ userService: import("../defs").IResource<void, {
18
+ createUser: (email: string) => Promise<{
19
+ id: string;
20
+ email: string;
21
+ }>;
22
+ getUser: (id: string) => Promise<{
23
+ id: string;
24
+ email: string;
25
+ }>;
26
+ }, {}>;
27
+ userCreatedEvent: import("../defs").IEventDefinition<{
28
+ userId: string;
29
+ email: string;
30
+ }>;
31
+ }, undefined>)[]> & import("../defs").IResource<void, {
32
+ items: ({
33
+ createUser: (email: string) => Promise<{
34
+ id: string;
35
+ email: string;
36
+ }>;
37
+ getUser: (id: string) => Promise<{
38
+ id: string;
39
+ email: string;
40
+ }>;
41
+ } | ((args_0: string) => Promise<{
42
+ id: string;
43
+ email: string;
44
+ }>) | ((input: {
45
+ userId: string;
46
+ email: string;
47
+ }) => Promise<void>))[];
48
+ }, any>;
49
+ export declare const loggingPackage: import("../defs").IRegistrator<(import("../defs").IEventDefinition<{
50
+ level: string;
51
+ message: string;
52
+ }> | import("../defs").IMiddleware<{
53
+ logEvent: import("../defs").IEventDefinition<{
54
+ level: string;
55
+ message: string;
56
+ }>;
57
+ }> | import("../defs").IResource<void, {
58
+ info: (message: string) => Promise<void>;
59
+ error: (message: string) => Promise<void>;
60
+ }, {
61
+ logEvent: import("../defs").IEventDefinition<{
62
+ level: string;
63
+ message: string;
64
+ }>;
65
+ }>)[]> & import("../defs").IResource<void, {
66
+ items: ({
67
+ info: (message: string) => Promise<void>;
68
+ error: (message: string) => Promise<void>;
69
+ } | ((input: {
70
+ level: string;
71
+ message: string;
72
+ }) => Promise<void>))[];
73
+ }, any>;
74
+ export declare const emailPackage: import("../defs").IRegistrator<(import("../defs").IEventDefinition<{
75
+ to: string;
76
+ subject: string;
77
+ }> | import("../defs").IResource<void, {
78
+ sendEmail: (to: string, subject: string, body: string) => Promise<{
79
+ messageId: string;
80
+ }>;
81
+ }, {
82
+ emailSentEvent: import("../defs").IEventDefinition<{
83
+ to: string;
84
+ subject: string;
85
+ }>;
86
+ }> | import("../defs").ITask<undefined, Promise<{
87
+ messageId: string;
88
+ }>, {
89
+ emailService: import("../defs").IResource<void, {
90
+ sendEmail: (to: string, subject: string, body: string) => Promise<{
91
+ messageId: string;
92
+ }>;
93
+ }, {
94
+ emailSentEvent: import("../defs").IEventDefinition<{
95
+ to: string;
96
+ subject: string;
97
+ }>;
98
+ }>;
99
+ }, import("../defs").IEventDefinition<{
100
+ userId: string;
101
+ email: string;
102
+ }>>)[]> & import("../defs").IResource<void, {
103
+ items: ({
104
+ sendEmail: (to: string, subject: string, body: string) => Promise<{
105
+ messageId: string;
106
+ }>;
107
+ } | ((input: {
108
+ to: string;
109
+ subject: string;
110
+ }) => Promise<void>))[];
111
+ }, any>;
112
+ declare function demonstrateRegistrators(): Promise<{
113
+ createUser: (args_0: string) => Promise<{
114
+ id: string;
115
+ email: string;
116
+ }>;
117
+ logger: {
118
+ info: (message: string) => Promise<void>;
119
+ error: (message: string) => Promise<void>;
120
+ };
121
+ }>;
122
+ export { demonstrateRegistrators };
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emailPackage = exports.loggingPackage = exports.userPackage = void 0;
4
+ exports.demonstrateRegistrators = demonstrateRegistrators;
5
+ const __1 = require("../");
6
+ // === USER MANAGEMENT PACKAGE ===
7
+ const userCreatedEvent = (0, __1.event)({
8
+ id: "user.events.created",
9
+ });
10
+ const userService = (0, __1.resource)({
11
+ id: "user.services.user",
12
+ init: async () => ({
13
+ createUser: async (email) => ({ id: "123", email }),
14
+ getUser: async (id) => ({ id, email: "user@example.com" }),
15
+ }),
16
+ });
17
+ const createUserTask = (0, __1.task)({
18
+ id: "user.tasks.create",
19
+ dependencies: {
20
+ userService,
21
+ userCreatedEvent,
22
+ },
23
+ run: async (email, deps) => {
24
+ const user = await deps.userService.createUser(email);
25
+ await deps.userCreatedEvent({ userId: user.id, email: user.email });
26
+ return user;
27
+ },
28
+ });
29
+ // BEFORE: Had to create a resource just for registration
30
+ const userPackageOldWay = (0, __1.resource)({
31
+ id: "user.package.old",
32
+ register: [userService, createUserTask, userCreatedEvent],
33
+ // No init logic needed, just grouping items together
34
+ });
35
+ // AFTER: Much cleaner with registrator
36
+ exports.userPackage = (0, __1.registrator)([
37
+ userService,
38
+ createUserTask,
39
+ userCreatedEvent,
40
+ ]);
41
+ // === LOGGING PACKAGE ===
42
+ const logEvent = (0, __1.event)({
43
+ id: "logging.events.log",
44
+ });
45
+ const logMiddleware = (0, __1.middleware)({
46
+ id: "logging.middleware.taskLogger",
47
+ dependencies: { logEvent },
48
+ run: async (data, deps) => {
49
+ await deps.logEvent({
50
+ level: "info",
51
+ message: `Task ${data.taskDefinition?.id} starting`,
52
+ });
53
+ const result = await data.next(data.input);
54
+ await deps.logEvent({
55
+ level: "info",
56
+ message: `Task ${data.taskDefinition?.id} completed`,
57
+ });
58
+ return result;
59
+ },
60
+ });
61
+ const loggerService = (0, __1.resource)({
62
+ id: "logging.services.logger",
63
+ dependencies: { logEvent },
64
+ init: async (_, deps) => {
65
+ // Listen to all log events
66
+ return {
67
+ info: (message) => deps.logEvent({ level: "info", message }),
68
+ error: (message) => deps.logEvent({ level: "error", message }),
69
+ };
70
+ },
71
+ });
72
+ exports.loggingPackage = (0, __1.registrator)([
73
+ logEvent,
74
+ logMiddleware,
75
+ loggerService,
76
+ ]);
77
+ // === EMAIL PACKAGE ===
78
+ const emailSentEvent = (0, __1.event)({
79
+ id: "email.events.sent",
80
+ });
81
+ const emailService = (0, __1.resource)({
82
+ id: "email.services.mailer",
83
+ dependencies: { emailSentEvent },
84
+ init: async (_, deps) => ({
85
+ sendEmail: async (to, subject, body) => {
86
+ console.log(`Sending email to ${to}: ${subject}`);
87
+ await deps.emailSentEvent({ to, subject });
88
+ return { messageId: "msg-123" };
89
+ },
90
+ }),
91
+ });
92
+ const sendWelcomeEmailTask = (0, __1.task)({
93
+ id: "email.tasks.sendWelcome",
94
+ dependencies: { emailService },
95
+ on: userCreatedEvent, // Listen to user creation
96
+ run: async (event, deps) => {
97
+ const { userId, email } = event.data;
98
+ return deps.emailService.sendEmail(email, "Welcome!", `Welcome user ${userId}!`);
99
+ },
100
+ });
101
+ exports.emailPackage = (0, __1.registrator)([
102
+ emailSentEvent,
103
+ emailService,
104
+ sendWelcomeEmailTask,
105
+ ]);
106
+ // === MAIN APPLICATION ===
107
+ // Core system services
108
+ const coreServices = (0, __1.registrator)([
109
+ exports.loggingPackage,
110
+ // Could add database, cache, config, etc.
111
+ ]);
112
+ // Business logic packages
113
+ const businessPackages = (0, __1.registrator)([
114
+ exports.userPackage,
115
+ exports.emailPackage,
116
+ // Could add order, payment, inventory packages, etc.
117
+ ]);
118
+ // Main application
119
+ const app = (0, __1.resource)({
120
+ id: "app",
121
+ register: [coreServices, businessPackages],
122
+ dependencies: {
123
+ createUserTask,
124
+ loggerService,
125
+ },
126
+ async init(_, deps) {
127
+ await deps.loggerService.info("Application starting...");
128
+ // Create a test user to demonstrate the system
129
+ const user = await deps.createUserTask("john@example.com");
130
+ await deps.loggerService.info(`Application ready! Created user: ${user.id}`);
131
+ return {
132
+ createUser: deps.createUserTask,
133
+ logger: deps.loggerService,
134
+ };
135
+ },
136
+ });
137
+ // === DEMONSTRATION ===
138
+ async function demonstrateRegistrators() {
139
+ console.log("=== Registrator Example ===\n");
140
+ const appInstance = await (0, __1.run)(app);
141
+ console.log("\nCreating another user...");
142
+ const newUser = await appInstance.createUser("jane@example.com");
143
+ console.log(`\nUser created: ${JSON.stringify(newUser)}`);
144
+ console.log("\nCheck the logs above to see the middleware and event system in action!");
145
+ return appInstance;
146
+ }
147
+ //# sourceMappingURL=registrator-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registrator-example.js","sourceRoot":"","sources":["../../src/examples/registrator-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { ITask, IResource } from "../defs";
2
+ import { ILog } from "../models/Logger";
3
+ export declare const globalEvents: {
4
+ beforeInit: import("../defs").IEventDefinition<any>;
5
+ afterInit: import("../defs").IEventDefinition<any>;
6
+ log: import("../defs").IEventDefinition<ILog>;
7
+ tasks: {
8
+ beforeRun: import("../defs").IEventDefinition<{
9
+ task: ITask<any, any, any>;
10
+ input: any;
11
+ }>;
12
+ afterRun: import("../defs").IEventDefinition<{
13
+ task: ITask<any, any, any>;
14
+ input: any;
15
+ output: any;
16
+ setOutput: (newOutput: any) => void;
17
+ }>;
18
+ onError: import("../defs").IEventDefinition<{
19
+ error: any;
20
+ suppress: () => void;
21
+ task: ITask<any, any, any>;
22
+ }>;
23
+ };
24
+ resources: {
25
+ beforeInit: import("../defs").IEventDefinition<{
26
+ resource: IResource<any, any, any>;
27
+ config: any;
28
+ }>;
29
+ afterInit: import("../defs").IEventDefinition<{
30
+ resource: IResource<any, any, any>;
31
+ config: any;
32
+ value: any;
33
+ }>;
34
+ onError: import("../defs").IEventDefinition<{
35
+ error: Error;
36
+ suppress: () => void;
37
+ resource: IResource<any, any, any>;
38
+ }>;
39
+ };
40
+ };
41
+ export declare const globalEventsArray: import("../defs").IEventDefinition<any>[];
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globalEventsArray = exports.globalEvents = void 0;
4
+ const define_1 = require("../define");
5
+ exports.globalEvents = {
6
+ beforeInit: (0, define_1.defineEvent)({
7
+ id: "globals.events.beforeInit",
8
+ meta: {
9
+ title: "Before Initialization",
10
+ description: "Triggered before any resource or system-wide initialization occurs.",
11
+ tags: ["system"],
12
+ },
13
+ }),
14
+ afterInit: (0, define_1.defineEvent)({
15
+ id: "globals.events.afterInit",
16
+ meta: {
17
+ title: "After Initialization",
18
+ description: "Fired after the system or resource initialization is completed.",
19
+ tags: ["system"],
20
+ },
21
+ }),
22
+ log: (0, define_1.defineEvent)({
23
+ id: "globals.events.log",
24
+ meta: {
25
+ title: "Log Event",
26
+ description: "Used to log events and messages across the system.",
27
+ tags: ["system"],
28
+ },
29
+ }),
30
+ tasks: {
31
+ beforeRun: (0, define_1.defineEvent)({
32
+ id: "globals.events.tasks.beforeRun",
33
+ meta: {
34
+ title: "Before Task Execution",
35
+ description: "Triggered before a task starts running, providing access to the input data.",
36
+ tags: ["system"],
37
+ },
38
+ }),
39
+ afterRun: (0, define_1.defineEvent)({
40
+ id: "globals.events.tasks.afterRun",
41
+ meta: {
42
+ title: "After Task Execution",
43
+ description: "Fired after a task has completed, providing both the input and output data.",
44
+ tags: ["system"],
45
+ },
46
+ }),
47
+ onError: (0, define_1.defineEvent)({
48
+ id: "globals.events.tasks.onError",
49
+ meta: {
50
+ title: "Task Error",
51
+ description: "Triggered when an error occurs during task execution. Allows error suppression.",
52
+ tags: ["system"],
53
+ },
54
+ }),
55
+ },
56
+ resources: {
57
+ beforeInit: (0, define_1.defineEvent)({
58
+ id: "globals.events.resources.beforeInit",
59
+ meta: {
60
+ title: "Before Resource Initialization",
61
+ description: "Fired before a resource is initialized, with access to the configuration.",
62
+ tags: ["system"],
63
+ },
64
+ }),
65
+ afterInit: (0, define_1.defineEvent)({
66
+ id: "globals.events.resources.afterInit",
67
+ meta: {
68
+ title: "After Resource Initialization",
69
+ description: "Fired after a resource has been initialized, providing the final value.",
70
+ tags: ["system"],
71
+ },
72
+ }),
73
+ onError: (0, define_1.defineEvent)({
74
+ id: "globals.events.resources.onError",
75
+ meta: {
76
+ title: "Resource Error",
77
+ description: "Triggered when an error occurs during resource initialization. Allows error suppression.",
78
+ tags: ["system"],
79
+ },
80
+ }),
81
+ },
82
+ };
83
+ exports.globalEventsArray = [
84
+ exports.globalEvents.log,
85
+ exports.globalEvents.beforeInit,
86
+ exports.globalEvents.afterInit,
87
+ exports.globalEvents.tasks.beforeRun,
88
+ exports.globalEvents.tasks.afterRun,
89
+ exports.globalEvents.tasks.onError,
90
+ exports.globalEvents.resources.beforeInit,
91
+ exports.globalEvents.resources.afterInit,
92
+ exports.globalEvents.resources.onError,
93
+ ];
94
+ //# sourceMappingURL=globalEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalEvents.js","sourceRoot":"","sources":["../../src/globals/globalEvents.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AAI3B,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,IAAA,oBAAW,EAAC;QACtB,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE;YACJ,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EACT,qEAAqE;YACvE,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB;KACF,CAAC;IACF,SAAS,EAAE,IAAA,oBAAW,EAAC;QACrB,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE;YACJ,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,iEAAiE;YACnE,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB;KACF,CAAC;IACF,GAAG,EAAE,IAAA,oBAAW,EAAO;QACrB,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE;YACJ,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,oDAAoD;YACjE,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB;KACF,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,IAAA,oBAAW,EAGnB;YACD,EAAE,EAAE,gCAAgC;YACpC,IAAI,EAAE;gBACJ,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EACT,6EAA6E;gBAC/E,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB;SACF,CAAC;QACF,QAAQ,EAAE,IAAA,oBAAW,EAKlB;YACD,EAAE,EAAE,+BAA+B;YACnC,IAAI,EAAE;gBACJ,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EACT,6EAA6E;gBAC/E,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB;SACF,CAAC;QACF,OAAO,EAAE,IAAA,oBAAW,EAIjB;YACD,EAAE,EAAE,8BAA8B;YAClC,IAAI,EAAE;gBACJ,KAAK,EAAE,YAAY;gBACnB,WAAW,EACT,iFAAiF;gBACnF,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB;SACF,CAAC;KACH;IACD,SAAS,EAAE;QACT,UAAU,EAAE,IAAA,oBAAW,EAGpB;YACD,EAAE,EAAE,qCAAqC;YACzC,IAAI,EAAE;gBACJ,KAAK,EAAE,gCAAgC;gBACvC,WAAW,EACT,2EAA2E;gBAC7E,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB;SACF,CAAC;QACF,SAAS,EAAE,IAAA,oBAAW,EAInB;YACD,EAAE,EAAE,oCAAoC;YACxC,IAAI,EAAE;gBACJ,KAAK,EAAE,+BAA+B;gBACtC,WAAW,EACT,yEAAyE;gBAC3E,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB;SACF,CAAC;QACF,OAAO,EAAE,IAAA,oBAAW,EAIjB;YACD,EAAE,EAAE,kCAAkC;YACtC,IAAI,EAAE;gBACJ,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EACT,0FAA0F;gBAC5F,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB;SACF,CAAC;KACH;CACF,CAAC;AAEW,QAAA,iBAAiB,GAAG;IAC/B,oBAAY,CAAC,GAAG;IAChB,oBAAY,CAAC,UAAU;IACvB,oBAAY,CAAC,SAAS;IACtB,oBAAY,CAAC,KAAK,CAAC,SAAS;IAC5B,oBAAY,CAAC,KAAK,CAAC,QAAQ;IAC3B,oBAAY,CAAC,KAAK,CAAC,OAAO;IAC1B,oBAAY,CAAC,SAAS,CAAC,UAAU;IACjC,oBAAY,CAAC,SAAS,CAAC,SAAS;IAChC,oBAAY,CAAC,SAAS,CAAC,OAAO;CAC/B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Context } from "../context";
2
+ /**
3
+ * Global middlewares
4
+ */
5
+ export declare const globalMiddlewares: {
6
+ requireContext: import("../defs").IMiddleware<{
7
+ context: Context<any>;
8
+ }, import("../defs").DependencyMapType>;
9
+ retry: import("../defs").IMiddleware<import("./middleware/retry.middleware").RetryMiddlewareConfig, import("../defs").DependencyMapType>;
10
+ cache: import("../defs").IMiddleware<any, {
11
+ cache: import("../defs").IResource<{
12
+ defaultOptions?: any;
13
+ async?: boolean;
14
+ }, {
15
+ map: Map<string, import("./middleware/cache.middleware").ICacheInstance>;
16
+ cacheFactoryTask: (...args: [] | [any]) => Promise<import("./middleware/cache.middleware").ICacheInstance>;
17
+ async: boolean | undefined;
18
+ defaultOptions: any;
19
+ }, {
20
+ cacheFactoryTask: import("../defs").ITask<any, Promise<import("./middleware/cache.middleware").ICacheInstance>, any, undefined>;
21
+ }, any>;
22
+ }>;
23
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globalMiddlewares = void 0;
4
+ const cache_middleware_1 = require("./middleware/cache.middleware");
5
+ const requireContext_middleware_1 = require("./middleware/requireContext.middleware");
6
+ const retry_middleware_1 = require("./middleware/retry.middleware");
7
+ /**
8
+ * Global middlewares
9
+ */
10
+ exports.globalMiddlewares = {
11
+ requireContext: requireContext_middleware_1.requireContextMiddleware,
12
+ retry: retry_middleware_1.retryMiddleware,
13
+ cache: cache_middleware_1.cacheMiddleware,
14
+ };
15
+ //# sourceMappingURL=globalMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalMiddleware.js","sourceRoot":"","sources":["../../src/globals/globalMiddleware.ts"],"names":[],"mappings":";;;AAEA,oEAAgE;AAChE,sFAAkF;AAClF,oEAAgE;AAEhE;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,cAAc,EAAE,oDAAwB;IACxC,KAAK,EAAE,kCAAe;IACtB,KAAK,EAAE,kCAAe;CACvB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { EventManager } from "../models/EventManager";
2
+ import { Logger } from "../models/Logger";
3
+ import { Store } from "../models/Store";
4
+ import { TaskRunner } from "../models/TaskRunner";
5
+ export declare const globalResources: {
6
+ store: import("../defs").IResource<Store, Store, {}, any>;
7
+ eventManager: import("../defs").IResource<EventManager, EventManager, {}, any>;
8
+ taskRunner: import("../defs").IResource<TaskRunner, TaskRunner, {}, any>;
9
+ logger: import("../defs").IResource<Logger, Logger, {}, any>;
10
+ cache: import("../defs").IResource<{
11
+ defaultOptions?: any;
12
+ async?: boolean;
13
+ }, {
14
+ map: Map<string, import("./middleware/cache.middleware").ICacheInstance>;
15
+ cacheFactoryTask: (...args: [] | [any]) => Promise<import("./middleware/cache.middleware").ICacheInstance>;
16
+ async: boolean | undefined;
17
+ defaultOptions: any;
18
+ }, {
19
+ cacheFactoryTask: import("../defs").ITask<any, Promise<import("./middleware/cache.middleware").ICacheInstance>, any, undefined>;
20
+ }, any>;
21
+ queue: import("../defs").IResource<void, {
22
+ map: Map<string, import("..").Queue>;
23
+ run: <T>(id: string, task: (signal: AbortSignal) => Promise<T>) => Promise<T>;
24
+ }, {}, {
25
+ map: Map<string, import("..").Queue>;
26
+ }>;
27
+ };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globalResources = void 0;
4
+ const define_1 = require("../define");
5
+ const cache_middleware_1 = require("./middleware/cache.middleware");
6
+ const queue_resource_1 = require("./resources/queue.resource");
7
+ const store = (0, define_1.defineResource)({
8
+ id: "globals.resources.store",
9
+ init: async (store) => store,
10
+ meta: {
11
+ title: "Store",
12
+ description: "A global store that can be used to store and retrieve tasks, resources, events and middleware",
13
+ tags: ["internal"],
14
+ },
15
+ });
16
+ exports.globalResources = {
17
+ store,
18
+ eventManager: (0, define_1.defineResource)({
19
+ id: "globals.resources.eventManager",
20
+ init: async (em) => em,
21
+ meta: {
22
+ title: "Event Manager",
23
+ description: "Manages all events and event listeners. This is meant to be used internally for most use-cases.",
24
+ tags: ["internal"],
25
+ },
26
+ }),
27
+ taskRunner: (0, define_1.defineResource)({
28
+ id: "globals.resources.taskRunner",
29
+ init: async (runner) => runner,
30
+ meta: {
31
+ title: "Task Runner",
32
+ description: "Manages the execution of tasks and task dependencies. This is meant to be used internally for most use-cases.",
33
+ tags: ["internal"],
34
+ },
35
+ }),
36
+ logger: (0, define_1.defineResource)({
37
+ id: "globals.resources.logger",
38
+ init: async (logger) => logger,
39
+ meta: {
40
+ title: "Logger",
41
+ description: "Logs all events and errors. This is meant to be used internally for most use-cases. Emits a globals.log event for each log.",
42
+ },
43
+ }),
44
+ cache: cache_middleware_1.cacheResource,
45
+ queue: queue_resource_1.queueResource,
46
+ };
47
+ //# sourceMappingURL=globalResources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalResources.js","sourceRoot":"","sources":["../../src/globals/globalResources.ts"],"names":[],"mappings":";;;AAAA,sCAA2C;AAK3C,oEAA8D;AAC9D,+DAA2D;AAE3D,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC;IAC3B,EAAE,EAAE,yBAAyB;IAC7B,IAAI,EAAE,KAAK,EAAE,KAAY,EAAE,EAAE,CAAC,KAAK;IACnC,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO;QACd,WAAW,EACT,+FAA+F;QACjG,IAAI,EAAE,CAAC,UAAU,CAAC;KACnB;CACF,CAAC,CAAC;AAEU,QAAA,eAAe,GAAG;IAC7B,KAAK;IACL,YAAY,EAAE,IAAA,uBAAc,EAAC;QAC3B,EAAE,EAAE,gCAAgC;QACpC,IAAI,EAAE,KAAK,EAAE,EAAgB,EAAE,EAAE,CAAC,EAAE;QACpC,IAAI,EAAE;YACJ,KAAK,EAAE,eAAe;YACtB,WAAW,EACT,iGAAiG;YACnG,IAAI,EAAE,CAAC,UAAU,CAAC;SACnB;KACF,CAAC;IACF,UAAU,EAAE,IAAA,uBAAc,EAAC;QACzB,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,KAAK,EAAE,MAAkB,EAAE,EAAE,CAAC,MAAM;QAC1C,IAAI,EAAE;YACJ,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,+GAA+G;YACjH,IAAI,EAAE,CAAC,UAAU,CAAC;SACnB;KACF,CAAC;IACF,MAAM,EAAE,IAAA,uBAAc,EAAC;QACrB,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE,CAAC,MAAM;QACtC,IAAI,EAAE;YACJ,KAAK,EAAE,QAAQ;YACf,WAAW,EACT,6HAA6H;SAChI;KACF,CAAC;IACF,KAAK,EAAE,gCAAa;IACpB,KAAK,EAAE,8BAAa;CACrB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { IResource, ITask } from "../../defs";
2
+ export interface ICacheInstance {
3
+ set(key: string, value: any): void;
4
+ get(key: string): any;
5
+ clear(): void;
6
+ }
7
+ export declare const cacheFactoryTask: ITask<any, Promise<ICacheInstance>, any, undefined>;
8
+ type CacheResourceConfig = {
9
+ defaultOptions?: any;
10
+ /**
11
+ * This specifies whether the cache handler is async or not (get, set, clear)
12
+ * This is for speed purposes.
13
+ */
14
+ async?: boolean;
15
+ };
16
+ export declare const cacheResource: IResource<CacheResourceConfig, {
17
+ map: Map<string, ICacheInstance>;
18
+ cacheFactoryTask: (...args: [] | [any]) => Promise<ICacheInstance>;
19
+ async: boolean | undefined;
20
+ defaultOptions: any;
21
+ }, {
22
+ cacheFactoryTask: ITask<any, Promise<ICacheInstance>, any, undefined>;
23
+ }, any>;
24
+ export declare const cacheMiddleware: import("../../defs").IMiddleware<any, {
25
+ cache: IResource<CacheResourceConfig, {
26
+ map: Map<string, ICacheInstance>;
27
+ cacheFactoryTask: (...args: [] | [any]) => Promise<ICacheInstance>;
28
+ async: boolean | undefined;
29
+ defaultOptions: any;
30
+ }, {
31
+ cacheFactoryTask: ITask<any, Promise<ICacheInstance>, any, undefined>;
32
+ }, any>;
33
+ }>;
34
+ export {};
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cacheMiddleware = exports.cacheResource = exports.cacheFactoryTask = void 0;
4
+ const define_1 = require("../../define");
5
+ const lru_cache_1 = require("lru-cache");
6
+ // Default cache factory task that can be overridden
7
+ exports.cacheFactoryTask = (0, define_1.defineTask)({
8
+ id: "globals.tasks.cacheFactory",
9
+ run: async (options) => {
10
+ return new lru_cache_1.LRUCache(options);
11
+ },
12
+ });
13
+ exports.cacheResource = (0, define_1.defineResource)({
14
+ id: "globals.resources.cache",
15
+ register: [exports.cacheFactoryTask],
16
+ dependencies: {
17
+ cacheFactoryTask: exports.cacheFactoryTask,
18
+ },
19
+ init: async (config, { cacheFactoryTask }) => {
20
+ return {
21
+ map: new Map(),
22
+ cacheFactoryTask,
23
+ async: config.async,
24
+ defaultOptions: {
25
+ ttl: 10 * 1000,
26
+ max: 100, // Maximum number of items in cache
27
+ ttlAutopurge: true, // Automatically purge expired items
28
+ ...config.defaultOptions,
29
+ },
30
+ };
31
+ },
32
+ dispose: async (cache) => {
33
+ for (const cacheInstance of cache.map.values()) {
34
+ await cacheInstance.clear();
35
+ }
36
+ },
37
+ });
38
+ const defaultKeyBuilder = (taskId, input) => `${taskId}-${JSON.stringify(input)}`;
39
+ exports.cacheMiddleware = (0, define_1.defineMiddleware)({
40
+ id: "globals.middleware.cache",
41
+ dependencies: { cache: exports.cacheResource },
42
+ async run({ task, resource, next }, deps, config) {
43
+ const { cache } = deps;
44
+ config = {
45
+ keyBuilder: defaultKeyBuilder,
46
+ ttl: 10 * 1000,
47
+ max: 100, // Maximum number of items in cache
48
+ ttlAutopurge: true, // Automatically purge expired items
49
+ ...config,
50
+ };
51
+ if (!task) {
52
+ throw new Error("Cache middleware can only be used in tasks");
53
+ }
54
+ const taskId = task.definition.id;
55
+ const isAsync = cache.async;
56
+ let cacheHolderForTask = cache.map.get(taskId);
57
+ if (!cacheHolderForTask) {
58
+ // Extract only LRUCache options, excluding keyBuilder
59
+ const { keyBuilder, ...lruOptions } = config;
60
+ const cacheOptions = {
61
+ ...cache.defaultOptions,
62
+ ...lruOptions,
63
+ };
64
+ // Use the factory task to create the cache instance
65
+ cacheHolderForTask = await cache.cacheFactoryTask(cacheOptions);
66
+ cache.map.set(taskId, cacheHolderForTask);
67
+ }
68
+ const key = config.keyBuilder(taskId, task.input);
69
+ const cachedValue = isAsync
70
+ ? await cacheHolderForTask.get(key)
71
+ : cacheHolderForTask.get(key);
72
+ if (cachedValue) {
73
+ return cachedValue;
74
+ }
75
+ const result = await next(task.input);
76
+ if (isAsync) {
77
+ await cacheHolderForTask.set(key, result);
78
+ }
79
+ else {
80
+ cacheHolderForTask.set(key, result);
81
+ }
82
+ return result;
83
+ },
84
+ });
85
+ //# sourceMappingURL=cache.middleware.js.map