@bluelibs/runner 2.2.4 → 3.1.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/README.md +1409 -935
- package/dist/common.types.d.ts +20 -0
- package/dist/common.types.js +4 -0
- package/dist/common.types.js.map +1 -0
- package/dist/context.d.ts +34 -0
- package/dist/context.js +58 -0
- package/dist/context.js.map +1 -0
- package/dist/define.d.ts +24 -5
- package/dist/define.js +89 -20
- package/dist/define.js.map +1 -1
- package/dist/defs.d.ts +109 -73
- package/dist/defs.js +12 -2
- package/dist/defs.js.map +1 -1
- package/dist/errors.d.ts +5 -5
- package/dist/errors.js +6 -5
- package/dist/errors.js.map +1 -1
- package/dist/event.types.d.ts +18 -0
- package/dist/event.types.js +4 -0
- package/dist/event.types.js.map +1 -0
- package/dist/examples/registrator-example.d.ts +122 -0
- package/dist/examples/registrator-example.js +147 -0
- package/dist/examples/registrator-example.js.map +1 -0
- package/dist/globals/globalEvents.d.ts +41 -0
- package/dist/globals/globalEvents.js +94 -0
- package/dist/globals/globalEvents.js.map +1 -0
- package/dist/globals/globalMiddleware.d.ts +23 -0
- package/dist/globals/globalMiddleware.js +15 -0
- package/dist/globals/globalMiddleware.js.map +1 -0
- package/dist/globals/globalResources.d.ts +27 -0
- package/dist/globals/globalResources.js +47 -0
- package/dist/globals/globalResources.js.map +1 -0
- package/dist/globals/middleware/cache.middleware.d.ts +34 -0
- package/dist/globals/middleware/cache.middleware.js +85 -0
- package/dist/globals/middleware/cache.middleware.js.map +1 -0
- package/dist/globals/middleware/requireContext.middleware.d.ts +6 -0
- package/dist/globals/middleware/requireContext.middleware.js +25 -0
- package/dist/globals/middleware/requireContext.middleware.js.map +1 -0
- package/dist/globals/middleware/retry.middleware.d.ts +20 -0
- package/dist/globals/middleware/retry.middleware.js +34 -0
- package/dist/globals/middleware/retry.middleware.js.map +1 -0
- package/dist/globals/resources/queue.resource.d.ts +7 -0
- package/dist/globals/resources/queue.resource.js +31 -0
- package/dist/globals/resources/queue.resource.js.map +1 -0
- package/dist/index.d.ts +54 -18
- package/dist/index.js +14 -9
- package/dist/index.js.map +1 -1
- package/dist/middleware.types.d.ts +40 -0
- package/dist/middleware.types.js +4 -0
- package/dist/middleware.types.js.map +1 -0
- package/dist/models/DependencyProcessor.d.ts +6 -5
- package/dist/models/DependencyProcessor.js +13 -15
- package/dist/models/DependencyProcessor.js.map +1 -1
- package/dist/models/EventManager.d.ts +9 -4
- package/dist/models/EventManager.js +44 -2
- package/dist/models/EventManager.js.map +1 -1
- package/dist/models/Logger.d.ts +30 -13
- package/dist/models/Logger.js +132 -54
- package/dist/models/Logger.js.map +1 -1
- package/dist/models/OverrideManager.d.ts +13 -0
- package/dist/models/OverrideManager.js +70 -0
- package/dist/models/OverrideManager.js.map +1 -0
- package/dist/models/Queue.d.ts +25 -0
- package/dist/models/Queue.js +54 -0
- package/dist/models/Queue.js.map +1 -0
- package/dist/models/ResourceInitializer.d.ts +5 -2
- package/dist/models/ResourceInitializer.js +22 -14
- package/dist/models/ResourceInitializer.js.map +1 -1
- package/dist/models/Semaphore.d.ts +61 -0
- package/dist/models/Semaphore.js +166 -0
- package/dist/models/Semaphore.js.map +1 -0
- package/dist/models/Store.d.ts +18 -73
- package/dist/models/Store.js +71 -269
- package/dist/models/Store.js.map +1 -1
- package/dist/models/StoreConstants.d.ts +11 -0
- package/dist/models/StoreConstants.js +18 -0
- package/dist/models/StoreConstants.js.map +1 -0
- package/dist/models/StoreRegistry.d.ts +25 -0
- package/dist/models/StoreRegistry.js +171 -0
- package/dist/models/StoreRegistry.js.map +1 -0
- package/dist/models/StoreTypes.d.ts +21 -0
- package/dist/models/StoreTypes.js +3 -0
- package/dist/models/StoreTypes.js.map +1 -0
- package/dist/models/StoreValidator.d.ts +10 -0
- package/dist/models/StoreValidator.js +41 -0
- package/dist/models/StoreValidator.js.map +1 -0
- package/dist/models/TaskRunner.d.ts +1 -1
- package/dist/models/TaskRunner.js +39 -24
- package/dist/models/TaskRunner.js.map +1 -1
- package/dist/models/VarStore.d.ts +17 -0
- package/dist/models/VarStore.js +60 -0
- package/dist/models/VarStore.js.map +1 -0
- package/dist/models/index.d.ts +3 -0
- package/dist/models/index.js +3 -0
- package/dist/models/index.js.map +1 -1
- package/dist/resource.types.d.ts +31 -0
- package/dist/resource.types.js +3 -0
- package/dist/resource.types.js.map +1 -0
- package/dist/run.d.ts +4 -1
- package/dist/run.js +6 -3
- package/dist/run.js.map +1 -1
- package/dist/symbols.d.ts +24 -0
- package/dist/symbols.js +29 -0
- package/dist/symbols.js.map +1 -0
- package/dist/task.types.d.ts +55 -0
- package/dist/task.types.js +23 -0
- package/dist/task.types.js.map +1 -0
- package/dist/tools/getCallerFile.d.ts +9 -1
- package/dist/tools/getCallerFile.js +41 -0
- package/dist/tools/getCallerFile.js.map +1 -1
- package/dist/tools/registratorId.d.ts +4 -0
- package/dist/tools/registratorId.js +40 -0
- package/dist/tools/registratorId.js.map +1 -0
- package/dist/tools/simpleHash.d.ts +9 -0
- package/dist/tools/simpleHash.js +34 -0
- package/dist/tools/simpleHash.js.map +1 -0
- package/dist/types/base-interfaces.d.ts +18 -0
- package/dist/types/base-interfaces.js +6 -0
- package/dist/types/base-interfaces.js.map +1 -0
- package/dist/types/base.d.ts +13 -0
- package/dist/types/base.js +3 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/dependencies.d.ts +22 -0
- package/dist/types/dependencies.js +3 -0
- package/dist/types/dependencies.js.map +1 -0
- package/dist/types/dependency-core.d.ts +14 -0
- package/dist/types/dependency-core.js +5 -0
- package/dist/types/dependency-core.js.map +1 -0
- package/dist/types/events.d.ts +52 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/hooks.d.ts +16 -0
- package/dist/types/hooks.js +5 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.js +27 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/meta.d.ts +13 -0
- package/dist/types/meta.js +5 -0
- package/dist/types/meta.js.map +1 -0
- package/dist/types/middleware.d.ts +38 -0
- package/dist/types/middleware.js +6 -0
- package/dist/types/middleware.js.map +1 -0
- package/dist/types/registerable.d.ts +10 -0
- package/dist/types/registerable.js +5 -0
- package/dist/types/registerable.js.map +1 -0
- package/dist/types/resources.d.ts +44 -0
- package/dist/types/resources.js +5 -0
- package/dist/types/resources.js.map +1 -0
- package/dist/types/symbols.d.ts +24 -0
- package/dist/types/symbols.js +30 -0
- package/dist/types/symbols.js.map +1 -0
- package/dist/types/tasks.d.ts +41 -0
- package/dist/types/tasks.js +5 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/types/utilities.d.ts +7 -0
- package/dist/types/utilities.js +5 -0
- package/dist/types/utilities.js.map +1 -0
- package/package.json +10 -6
- package/src/__tests__/benchmark/benchmark.test.ts +1 -1
- package/src/__tests__/context.test.ts +91 -0
- package/src/__tests__/errors.test.ts +8 -5
- package/src/__tests__/globalEvents.test.ts +1 -1
- package/src/__tests__/globals/cache.middleware.test.ts +772 -0
- package/src/__tests__/globals/queue.resource.test.ts +141 -0
- package/src/__tests__/globals/requireContext.middleware.test.ts +98 -0
- package/src/__tests__/globals/retry.middleware.test.ts +157 -0
- package/src/__tests__/index.helper.test.ts +55 -0
- package/src/__tests__/models/EventManager.test.ts +157 -11
- package/src/__tests__/models/Logger.test.ts +291 -34
- package/src/__tests__/models/Queue.test.ts +189 -0
- package/src/__tests__/models/ResourceInitializer.test.ts +8 -6
- package/src/__tests__/models/Semaphore.test.ts +713 -0
- package/src/__tests__/models/Store.test.ts +40 -0
- package/src/__tests__/models/TaskRunner.test.ts +86 -5
- package/src/__tests__/run.anonymous.test.ts +679 -0
- package/src/__tests__/run.middleware.test.ts +312 -12
- package/src/__tests__/run.overrides.test.ts +13 -10
- package/src/__tests__/run.test.ts +364 -13
- package/src/__tests__/setOutput.test.ts +244 -0
- package/src/__tests__/tools/getCallerFile.test.ts +124 -9
- package/src/__tests__/typesafety.test.ts +71 -41
- package/src/context.ts +86 -0
- package/src/define.ts +129 -34
- package/src/defs.ts +156 -119
- package/src/errors.ts +15 -10
- package/src/{globalEvents.ts → globals/globalEvents.ts} +13 -12
- package/src/globals/globalMiddleware.ts +14 -0
- package/src/{globalResources.ts → globals/globalResources.ts} +14 -10
- package/src/globals/middleware/cache.middleware.ts +115 -0
- package/src/globals/middleware/requireContext.middleware.ts +36 -0
- package/src/globals/middleware/retry.middleware.ts +56 -0
- package/src/globals/resources/queue.resource.ts +34 -0
- package/src/index.ts +9 -5
- package/src/models/DependencyProcessor.ts +42 -49
- package/src/models/EventManager.ts +64 -13
- package/src/models/Logger.ts +181 -64
- package/src/models/OverrideManager.ts +84 -0
- package/src/models/Queue.ts +66 -0
- package/src/models/ResourceInitializer.ts +40 -20
- package/src/models/Semaphore.ts +208 -0
- package/src/models/Store.ts +94 -342
- package/src/models/StoreConstants.ts +17 -0
- package/src/models/StoreRegistry.ts +228 -0
- package/src/models/StoreTypes.ts +46 -0
- package/src/models/StoreValidator.ts +43 -0
- package/src/models/TaskRunner.ts +54 -41
- package/src/models/index.ts +3 -0
- package/src/run.ts +7 -4
- package/src/tools/getCallerFile.ts +54 -2
- package/src/__tests__/index.ts +0 -15
- package/src/examples/express-mongo/index.ts +0 -1
|
@@ -127,4 +127,44 @@ describe("Store", () => {
|
|
|
127
127
|
/Store already initialized/i
|
|
128
128
|
);
|
|
129
129
|
});
|
|
130
|
+
|
|
131
|
+
it("should access overrides and overrideRequests getters", () => {
|
|
132
|
+
// Test the overrides getter (line 56)
|
|
133
|
+
const overrides = store.overrides;
|
|
134
|
+
expect(overrides).toBeDefined();
|
|
135
|
+
expect(overrides instanceof Map).toBe(true);
|
|
136
|
+
|
|
137
|
+
// Test the overrideRequests getter (line 57)
|
|
138
|
+
const overrideRequests = store.overrideRequests;
|
|
139
|
+
expect(overrideRequests).toBeDefined();
|
|
140
|
+
expect(overrideRequests instanceof Set).toBe(true);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it("should call processOverrides method", () => {
|
|
144
|
+
// Test processOverrides method (line 149)
|
|
145
|
+
expect(() => store.processOverrides()).not.toThrow();
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("should call getEverywhereMiddlewareForTasks method", () => {
|
|
149
|
+
// Test getEverywhereMiddlewareForTasks method (lines 152-153)
|
|
150
|
+
const result = store.getEverywhereMiddlewareForTasks([]);
|
|
151
|
+
expect(Array.isArray(result)).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it("should call getEverywhereMiddlewareForResources method", () => {
|
|
155
|
+
// Test getEverywhereMiddlewareForResources method (lines 156-157)
|
|
156
|
+
const result = store.getEverywhereMiddlewareForResources([]);
|
|
157
|
+
expect(Array.isArray(result)).toBe(true);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it("should call storeEventsForAllTasks method", () => {
|
|
161
|
+
// Test storeEventsForAllTasks method (line 165)
|
|
162
|
+
expect(() => store.storeEventsForAllTasks()).not.toThrow();
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it("should call getDependentNodes method", () => {
|
|
166
|
+
// Test getDependentNodes method (line 169)
|
|
167
|
+
const result = store.getDependentNodes();
|
|
168
|
+
expect(Array.isArray(result)).toBe(true);
|
|
169
|
+
});
|
|
130
170
|
});
|
|
@@ -4,6 +4,7 @@ import { EventManager } from "../../models/EventManager";
|
|
|
4
4
|
import { defineTask, defineResource, defineMiddleware } from "../../define";
|
|
5
5
|
import { ITask } from "../../defs";
|
|
6
6
|
import { Logger } from "../../models";
|
|
7
|
+
import { globalEvents } from "../../globals/globalEvents";
|
|
7
8
|
|
|
8
9
|
describe("TaskRunner", () => {
|
|
9
10
|
let store: Store;
|
|
@@ -42,16 +43,16 @@ describe("TaskRunner", () => {
|
|
|
42
43
|
it("should run an task with middleware", async () => {
|
|
43
44
|
const middleware1 = defineMiddleware({
|
|
44
45
|
id: "middleware1",
|
|
45
|
-
run: async ({ next,
|
|
46
|
-
const result = await next(input);
|
|
46
|
+
run: async ({ next, task }) => {
|
|
47
|
+
const result = await next(task?.input);
|
|
47
48
|
return result + 1;
|
|
48
49
|
},
|
|
49
50
|
});
|
|
50
51
|
|
|
51
52
|
const middleware2 = defineMiddleware({
|
|
52
53
|
id: "middleware2",
|
|
53
|
-
run: async ({
|
|
54
|
-
const result = await next(input);
|
|
54
|
+
run: async ({ task, next }, deps, config) => {
|
|
55
|
+
const result = await next(task?.input);
|
|
55
56
|
return result * 2;
|
|
56
57
|
},
|
|
57
58
|
});
|
|
@@ -104,8 +105,22 @@ describe("TaskRunner", () => {
|
|
|
104
105
|
expect.objectContaining({ data: { input: 5 } })
|
|
105
106
|
);
|
|
106
107
|
expect(afterRunSpy).toHaveBeenCalledWith(
|
|
107
|
-
expect.objectContaining({
|
|
108
|
+
expect.objectContaining({
|
|
109
|
+
data: expect.objectContaining({
|
|
110
|
+
input: 5,
|
|
111
|
+
output: 10,
|
|
112
|
+
setOutput: expect.any(Function),
|
|
113
|
+
}),
|
|
114
|
+
})
|
|
108
115
|
);
|
|
116
|
+
|
|
117
|
+
// Verify that the output getter actually works
|
|
118
|
+
const afterRunCall = afterRunSpy.mock.calls[0][0];
|
|
119
|
+
expect(afterRunCall.data.output).toBe(10);
|
|
120
|
+
|
|
121
|
+
// Also test the setOutput function to cover line 71
|
|
122
|
+
afterRunCall.data.setOutput(20);
|
|
123
|
+
expect(afterRunCall.data.output).toBe(20);
|
|
109
124
|
});
|
|
110
125
|
|
|
111
126
|
it("should handle errors and emit onError event", async () => {
|
|
@@ -137,4 +152,70 @@ describe("TaskRunner", () => {
|
|
|
137
152
|
})
|
|
138
153
|
);
|
|
139
154
|
});
|
|
155
|
+
|
|
156
|
+
it("should handle error suppression", async () => {
|
|
157
|
+
const error = new Error("Test error");
|
|
158
|
+
const onErrorSpy = jest.fn().mockImplementation((event) => {
|
|
159
|
+
// Call suppress to cover line 113
|
|
160
|
+
event.data.suppress();
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
const task = defineTask({
|
|
164
|
+
id: "testTask",
|
|
165
|
+
run: async () => {
|
|
166
|
+
throw error;
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
store.tasks.set(task.id, {
|
|
171
|
+
task,
|
|
172
|
+
computedDependencies: {},
|
|
173
|
+
isInitialized: false,
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
eventManager.addListener(task.events.onError, onErrorSpy);
|
|
177
|
+
|
|
178
|
+
// The error should be suppressed, so no exception should be thrown
|
|
179
|
+
const result = await taskRunner.run(task, undefined);
|
|
180
|
+
|
|
181
|
+
expect(result).toBeUndefined();
|
|
182
|
+
expect(onErrorSpy).toHaveBeenCalledWith(
|
|
183
|
+
expect.objectContaining({
|
|
184
|
+
data: expect.objectContaining({
|
|
185
|
+
error,
|
|
186
|
+
suppress: expect.any(Function),
|
|
187
|
+
}),
|
|
188
|
+
})
|
|
189
|
+
);
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
it("should handle global events and access output getter", async () => {
|
|
193
|
+
const globalAfterRunSpy = jest.fn();
|
|
194
|
+
|
|
195
|
+
const task = defineTask({
|
|
196
|
+
id: "testTask",
|
|
197
|
+
run: async (input: number) => input * 2,
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
store.tasks.set(task.id, {
|
|
201
|
+
task,
|
|
202
|
+
computedDependencies: {},
|
|
203
|
+
isInitialized: false,
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
// Listen to global afterRun event
|
|
207
|
+
eventManager.addListener(globalEvents.tasks.afterRun, globalAfterRunSpy);
|
|
208
|
+
|
|
209
|
+
await taskRunner.run(task, 5);
|
|
210
|
+
|
|
211
|
+
expect(globalAfterRunSpy).toHaveBeenCalledTimes(1);
|
|
212
|
+
|
|
213
|
+
// Access the output property to trigger the getter
|
|
214
|
+
const globalCall = globalAfterRunSpy.mock.calls[0][0];
|
|
215
|
+
expect(globalCall.data.output).toBe(10);
|
|
216
|
+
|
|
217
|
+
// Test setOutput function as well
|
|
218
|
+
globalCall.data.setOutput(25);
|
|
219
|
+
expect(globalCall.data.output).toBe(25);
|
|
220
|
+
});
|
|
140
221
|
});
|