@bluelibs/runner 3.3.2 → 3.4.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 +437 -33
- package/dist/define.d.ts +5 -5
- package/dist/define.js +22 -2
- package/dist/define.js.map +1 -1
- package/dist/defs.d.ts +55 -21
- package/dist/defs.js.map +1 -1
- package/dist/defs.returnTag.d.ts +36 -0
- package/dist/defs.returnTag.js +4 -0
- package/dist/defs.returnTag.js.map +1 -0
- package/dist/errors.d.ts +60 -10
- package/dist/errors.js +103 -12
- package/dist/errors.js.map +1 -1
- package/dist/globals/globalMiddleware.d.ts +4 -4
- package/dist/globals/globalResources.d.ts +28 -10
- package/dist/globals/middleware/cache.middleware.d.ts +9 -9
- package/dist/globals/resources/queue.resource.d.ts +5 -2
- package/dist/index.d.ts +33 -14
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/models/DependencyProcessor.js +4 -4
- package/dist/models/DependencyProcessor.js.map +1 -1
- package/dist/models/EventManager.js +10 -1
- package/dist/models/EventManager.js.map +1 -1
- package/dist/models/Logger.d.ts +8 -0
- package/dist/models/Logger.js +24 -0
- package/dist/models/Logger.js.map +1 -1
- package/dist/models/OverrideManager.js +1 -1
- package/dist/models/OverrideManager.js.map +1 -1
- package/dist/models/ResourceInitializer.d.ts +2 -2
- package/dist/models/ResourceInitializer.js.map +1 -1
- package/dist/models/Store.d.ts +2 -2
- package/dist/models/Store.js +1 -1
- package/dist/models/Store.js.map +1 -1
- package/dist/models/StoreConstants.d.ts +6 -3
- package/dist/models/StoreRegistry.d.ts +2 -2
- package/dist/models/StoreRegistry.js +1 -1
- package/dist/models/StoreRegistry.js.map +1 -1
- package/dist/models/StoreTypes.d.ts +1 -1
- package/dist/models/StoreValidator.js +5 -5
- package/dist/models/StoreValidator.js.map +1 -1
- package/dist/models/TaskRunner.js +10 -0
- package/dist/models/TaskRunner.js.map +1 -1
- package/dist/run.d.ts +3 -3
- package/dist/run.js +1 -1
- package/dist/run.js.map +1 -1
- package/dist/t1.d.ts +1 -0
- package/dist/t1.js +13 -0
- package/dist/t1.js.map +1 -0
- package/dist/testing.d.ts +1 -1
- package/package.json +2 -2
- package/src/__tests__/errors.test.ts +92 -11
- package/src/__tests__/models/EventManager.test.ts +0 -1
- package/src/__tests__/models/Logger.test.ts +82 -5
- package/src/__tests__/recursion/c.resource.ts +1 -1
- package/src/__tests__/run.overrides.test.ts +3 -3
- package/src/__tests__/typesafety.test.ts +112 -9
- package/src/__tests__/validation-edge-cases.test.ts +111 -0
- package/src/__tests__/validation-interface.test.ts +428 -0
- package/src/define.ts +47 -15
- package/src/defs.returnTag.ts +91 -0
- package/src/defs.ts +84 -27
- package/src/errors.ts +95 -23
- package/src/index.ts +1 -0
- package/src/models/DependencyProcessor.ts +9 -5
- package/src/models/EventManager.ts +12 -3
- package/src/models/Logger.ts +28 -0
- package/src/models/OverrideManager.ts +2 -7
- package/src/models/ResourceInitializer.ts +8 -3
- package/src/models/Store.ts +3 -3
- package/src/models/StoreRegistry.ts +2 -2
- package/src/models/StoreTypes.ts +1 -1
- package/src/models/StoreValidator.ts +6 -6
- package/src/models/TaskRunner.ts +10 -1
- package/src/run.ts +8 -5
- package/src/testing.ts +1 -1
package/src/models/TaskRunner.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DependencyMapType, DependencyValuesType, ITask } from "../defs";
|
|
2
|
-
import { Errors } from "../errors";
|
|
3
2
|
import { EventManager } from "./EventManager";
|
|
4
3
|
import { globalEvents } from "../globals/globalEvents";
|
|
5
4
|
import { Store } from "./Store";
|
|
6
5
|
import { MiddlewareStoreElementType } from "./StoreTypes";
|
|
7
6
|
import { Logger } from "./Logger";
|
|
7
|
+
import { ValidationError } from "../errors";
|
|
8
8
|
|
|
9
9
|
export class TaskRunner {
|
|
10
10
|
protected readonly runnerStore = new Map<
|
|
@@ -150,6 +150,15 @@ export class TaskRunner {
|
|
|
150
150
|
|
|
151
151
|
// this is the final next()
|
|
152
152
|
let next = async (input: any) => {
|
|
153
|
+
// Validate input with schema if provided
|
|
154
|
+
if (task.inputSchema) {
|
|
155
|
+
try {
|
|
156
|
+
input = task.inputSchema.parse(input);
|
|
157
|
+
} catch (error) {
|
|
158
|
+
throw new ValidationError("Task input", task.id, error instanceof Error ? error : new Error(String(error)));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
153
162
|
return task.run.call(null, input, storeTask?.computedDependencies as any);
|
|
154
163
|
};
|
|
155
164
|
|
package/src/run.ts
CHANGED
|
@@ -13,13 +13,13 @@ import { EventManager } from "./models/EventManager";
|
|
|
13
13
|
import { globalEvents } from "./globals/globalEvents";
|
|
14
14
|
import { Store } from "./models/Store";
|
|
15
15
|
import { findCircularDependencies } from "./tools/findCircularDependencies";
|
|
16
|
-
import {
|
|
16
|
+
import { CircularDependenciesError } from "./errors";
|
|
17
17
|
import { globalResources } from "./globals/globalResources";
|
|
18
18
|
import { Logger } from "./models/Logger";
|
|
19
19
|
|
|
20
20
|
export type ResourcesStoreElementType<
|
|
21
21
|
C = any,
|
|
22
|
-
V = any,
|
|
22
|
+
V extends Promise<any> = any,
|
|
23
23
|
D extends DependencyMapType = {}
|
|
24
24
|
> = {
|
|
25
25
|
resource: IResourceDefinition<C, V, D>;
|
|
@@ -53,9 +53,12 @@ export type RunnerState = {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
export async function run<C, V>(
|
|
56
|
-
resource: IResource<C, V
|
|
56
|
+
resource: IResource<C, V extends Promise<any> ? V : Promise<any>>,
|
|
57
57
|
config?: C
|
|
58
|
-
): Promise<{
|
|
58
|
+
): Promise<{
|
|
59
|
+
value: V extends Promise<infer U> ? U : V;
|
|
60
|
+
dispose: () => Promise<void>;
|
|
61
|
+
}> {
|
|
59
62
|
const eventManager = new EventManager();
|
|
60
63
|
|
|
61
64
|
// ensure for logger, that it can be used only after: computeAllDependencies() has executed
|
|
@@ -79,7 +82,7 @@ export async function run<C, V>(
|
|
|
79
82
|
const dependentNodes = store.getDependentNodes();
|
|
80
83
|
const circularDependencies = findCircularDependencies(dependentNodes);
|
|
81
84
|
if (circularDependencies.cycles.length > 0) {
|
|
82
|
-
throw
|
|
85
|
+
throw new CircularDependenciesError(circularDependencies.cycles);
|
|
83
86
|
}
|
|
84
87
|
|
|
85
88
|
// the overrides that were registered now will override the other registered resources
|
package/src/testing.ts
CHANGED
|
@@ -25,7 +25,7 @@ export function createTestResource(
|
|
|
25
25
|
options?: {
|
|
26
26
|
overrides?: Array<IResource | ITask | IMiddleware | IResourceWithConfig>;
|
|
27
27
|
}
|
|
28
|
-
): IResource<void, ReturnType<typeof buildTestFacade
|
|
28
|
+
): IResource<void, Promise<ReturnType<typeof buildTestFacade>>> {
|
|
29
29
|
return defineResource({
|
|
30
30
|
id: `tests.createTestResource.${++testResourceCounter}`,
|
|
31
31
|
register: [root],
|