@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.
Files changed (75) hide show
  1. package/README.md +437 -33
  2. package/dist/define.d.ts +5 -5
  3. package/dist/define.js +22 -2
  4. package/dist/define.js.map +1 -1
  5. package/dist/defs.d.ts +55 -21
  6. package/dist/defs.js.map +1 -1
  7. package/dist/defs.returnTag.d.ts +36 -0
  8. package/dist/defs.returnTag.js +4 -0
  9. package/dist/defs.returnTag.js.map +1 -0
  10. package/dist/errors.d.ts +60 -10
  11. package/dist/errors.js +103 -12
  12. package/dist/errors.js.map +1 -1
  13. package/dist/globals/globalMiddleware.d.ts +4 -4
  14. package/dist/globals/globalResources.d.ts +28 -10
  15. package/dist/globals/middleware/cache.middleware.d.ts +9 -9
  16. package/dist/globals/resources/queue.resource.d.ts +5 -2
  17. package/dist/index.d.ts +33 -14
  18. package/dist/index.js +2 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/models/DependencyProcessor.js +4 -4
  21. package/dist/models/DependencyProcessor.js.map +1 -1
  22. package/dist/models/EventManager.js +10 -1
  23. package/dist/models/EventManager.js.map +1 -1
  24. package/dist/models/Logger.d.ts +8 -0
  25. package/dist/models/Logger.js +24 -0
  26. package/dist/models/Logger.js.map +1 -1
  27. package/dist/models/OverrideManager.js +1 -1
  28. package/dist/models/OverrideManager.js.map +1 -1
  29. package/dist/models/ResourceInitializer.d.ts +2 -2
  30. package/dist/models/ResourceInitializer.js.map +1 -1
  31. package/dist/models/Store.d.ts +2 -2
  32. package/dist/models/Store.js +1 -1
  33. package/dist/models/Store.js.map +1 -1
  34. package/dist/models/StoreConstants.d.ts +6 -3
  35. package/dist/models/StoreRegistry.d.ts +2 -2
  36. package/dist/models/StoreRegistry.js +1 -1
  37. package/dist/models/StoreRegistry.js.map +1 -1
  38. package/dist/models/StoreTypes.d.ts +1 -1
  39. package/dist/models/StoreValidator.js +5 -5
  40. package/dist/models/StoreValidator.js.map +1 -1
  41. package/dist/models/TaskRunner.js +10 -0
  42. package/dist/models/TaskRunner.js.map +1 -1
  43. package/dist/run.d.ts +3 -3
  44. package/dist/run.js +1 -1
  45. package/dist/run.js.map +1 -1
  46. package/dist/t1.d.ts +1 -0
  47. package/dist/t1.js +13 -0
  48. package/dist/t1.js.map +1 -0
  49. package/dist/testing.d.ts +1 -1
  50. package/package.json +2 -2
  51. package/src/__tests__/errors.test.ts +92 -11
  52. package/src/__tests__/models/EventManager.test.ts +0 -1
  53. package/src/__tests__/models/Logger.test.ts +82 -5
  54. package/src/__tests__/recursion/c.resource.ts +1 -1
  55. package/src/__tests__/run.overrides.test.ts +3 -3
  56. package/src/__tests__/typesafety.test.ts +112 -9
  57. package/src/__tests__/validation-edge-cases.test.ts +111 -0
  58. package/src/__tests__/validation-interface.test.ts +428 -0
  59. package/src/define.ts +47 -15
  60. package/src/defs.returnTag.ts +91 -0
  61. package/src/defs.ts +84 -27
  62. package/src/errors.ts +95 -23
  63. package/src/index.ts +1 -0
  64. package/src/models/DependencyProcessor.ts +9 -5
  65. package/src/models/EventManager.ts +12 -3
  66. package/src/models/Logger.ts +28 -0
  67. package/src/models/OverrideManager.ts +2 -7
  68. package/src/models/ResourceInitializer.ts +8 -3
  69. package/src/models/Store.ts +3 -3
  70. package/src/models/StoreRegistry.ts +2 -2
  71. package/src/models/StoreTypes.ts +1 -1
  72. package/src/models/StoreValidator.ts +6 -6
  73. package/src/models/TaskRunner.ts +10 -1
  74. package/src/run.ts +8 -5
  75. package/src/testing.ts +1 -1
@@ -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 { Errors } from "./errors";
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<{ value: V; dispose: () => Promise<void> }> {
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 Errors.circularDependencies(circularDependencies.cycles);
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],