@bluelibs/runner 3.2.0 → 3.3.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 (62) hide show
  1. package/README.md +482 -34
  2. package/dist/cli/extract-docs.d.ts +2 -0
  3. package/dist/cli/extract-docs.js +88 -0
  4. package/dist/cli/extract-docs.js.map +1 -0
  5. package/dist/define.d.ts +21 -1
  6. package/dist/define.js +71 -0
  7. package/dist/define.js.map +1 -1
  8. package/dist/defs.d.ts +163 -4
  9. package/dist/defs.js +30 -0
  10. package/dist/defs.js.map +1 -1
  11. package/dist/docs/introspect.d.ts +7 -0
  12. package/dist/docs/introspect.js +199 -0
  13. package/dist/docs/introspect.js.map +1 -0
  14. package/dist/docs/markdown.d.ts +2 -0
  15. package/dist/docs/markdown.js +148 -0
  16. package/dist/docs/markdown.js.map +1 -0
  17. package/dist/docs/model.d.ts +62 -0
  18. package/dist/docs/model.js +33 -0
  19. package/dist/docs/model.js.map +1 -0
  20. package/dist/express/docsRouter.d.ts +12 -0
  21. package/dist/express/docsRouter.js +54 -0
  22. package/dist/express/docsRouter.js.map +1 -0
  23. package/dist/globals/globalMiddleware.d.ts +1 -0
  24. package/dist/globals/globalMiddleware.js +2 -0
  25. package/dist/globals/globalMiddleware.js.map +1 -1
  26. package/dist/globals/middleware/timeout.middleware.d.ts +8 -0
  27. package/dist/globals/middleware/timeout.middleware.js +35 -0
  28. package/dist/globals/middleware/timeout.middleware.js.map +1 -0
  29. package/dist/index.d.ts +4 -2
  30. package/dist/index.js +5 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/models/DependencyProcessor.js +2 -2
  33. package/dist/models/DependencyProcessor.js.map +1 -1
  34. package/dist/models/Store.d.ts +1 -1
  35. package/dist/models/StoreConstants.d.ts +1 -1
  36. package/dist/models/StoreConstants.js +2 -1
  37. package/dist/models/StoreConstants.js.map +1 -1
  38. package/dist/models/TaskRunner.d.ts +2 -3
  39. package/dist/models/TaskRunner.js +1 -2
  40. package/dist/models/TaskRunner.js.map +1 -1
  41. package/dist/testing.d.ts +24 -0
  42. package/dist/testing.js +41 -0
  43. package/dist/testing.js.map +1 -0
  44. package/package.json +4 -4
  45. package/src/__tests__/benchmark/task-benchmark.test.ts +132 -0
  46. package/src/__tests__/createTestResource.test.ts +139 -0
  47. package/src/__tests__/globals/timeout.middleware.test.ts +88 -0
  48. package/src/__tests__/models/Semaphore.test.ts +1 -1
  49. package/src/__tests__/override.test.ts +104 -0
  50. package/src/__tests__/run.overrides.test.ts +50 -21
  51. package/src/__tests__/run.test.ts +19 -0
  52. package/src/__tests__/tags.test.ts +396 -0
  53. package/src/__tests__/typesafety.test.ts +109 -1
  54. package/src/define.ts +97 -0
  55. package/src/defs.ts +168 -8
  56. package/src/globals/globalMiddleware.ts +2 -0
  57. package/src/globals/middleware/timeout.middleware.ts +46 -0
  58. package/src/index.ts +6 -0
  59. package/src/models/DependencyProcessor.ts +2 -10
  60. package/src/models/StoreConstants.ts +2 -1
  61. package/src/models/TaskRunner.ts +1 -3
  62. package/src/testing.ts +66 -0
@@ -139,11 +139,7 @@ export class DependencyProcessor {
139
139
  return;
140
140
  }
141
141
 
142
- return this.taskRunner.run(
143
- task.task,
144
- receivedEvent,
145
- task.computedDependencies
146
- );
142
+ return this.taskRunner.run(task.task, receivedEvent);
147
143
  };
148
144
 
149
145
  if (eventDefinition === "*") {
@@ -217,11 +213,7 @@ export class DependencyProcessor {
217
213
  }
218
214
 
219
215
  return (input: any) => {
220
- return this.taskRunner.run(
221
- storeTask.task,
222
- input,
223
- storeTask.computedDependencies
224
- );
216
+ return this.taskRunner.run(storeTask.task, input);
225
217
  };
226
218
  }
227
219
 
@@ -1,6 +1,7 @@
1
1
  import { globalResources } from "../globals/globalResources";
2
2
  import { requireContextMiddleware } from "../globals/middleware/requireContext.middleware";
3
3
  import { retryMiddleware } from "../globals/middleware/retry.middleware";
4
+ import { timeoutMiddleware } from "../globals/middleware/timeout.middleware";
4
5
  import { EventManager } from "./EventManager";
5
6
  import { Store } from "./Store";
6
7
 
@@ -13,5 +14,5 @@ export function getBuiltInResources(eventManager: EventManager, store: Store) {
13
14
  }
14
15
 
15
16
  export function getBuiltInMiddlewares() {
16
- return [requireContextMiddleware, retryMiddleware];
17
+ return [requireContextMiddleware, retryMiddleware, timeoutMiddleware];
17
18
  }
@@ -23,7 +23,6 @@ export class TaskRunner {
23
23
  * This function can throw only if any of the event listeners or run function throws
24
24
  * @param task the task to be run
25
25
  * @param input the input to be passed to the task
26
- * @param taskDependencies optional dependencies to be passed to the task, if not provided, the dependencies will be the ones already computed from the store.
27
26
  */
28
27
  public async run<
29
28
  TInput,
@@ -31,8 +30,7 @@ export class TaskRunner {
31
30
  TDeps extends DependencyMapType
32
31
  >(
33
32
  task: ITask<TInput, TOutput, TDeps>,
34
- input: TInput,
35
- taskDependencies?: DependencyValuesType<TDeps>
33
+ input: TInput
36
34
  ): Promise<TOutput | undefined> {
37
35
  let runner = this.runnerStore.get(task.id);
38
36
  if (!runner) {
package/src/testing.ts ADDED
@@ -0,0 +1,66 @@
1
+ import { defineResource } from "./define";
2
+ import { globalResources } from "./globals/globalResources";
3
+ import {
4
+ IResource,
5
+ IResourceWithConfig,
6
+ IMiddleware,
7
+ ITask,
8
+ RegisterableItems,
9
+ IEvent,
10
+ IEventEmission,
11
+ DependencyMapType,
12
+ DependencyValuesType,
13
+ } from "./defs";
14
+ import { EventManager, Logger, Store, TaskRunner } from "./models";
15
+
16
+ let testResourceCounter = 0;
17
+
18
+ /**
19
+ * Helper to create a minimal test harness resource that wraps a root app (or any registerable)
20
+ * and exposes convenient testing utilities while running the full ecosystem
21
+ * (registration, overrides, middleware, events) without modifying the core API.
22
+ */
23
+ export function createTestResource(
24
+ root: RegisterableItems,
25
+ options?: {
26
+ overrides?: Array<IResource | ITask | IMiddleware | IResourceWithConfig>;
27
+ }
28
+ ): IResource<void, ReturnType<typeof buildTestFacade>> {
29
+ return defineResource({
30
+ id: `tests.createTestResource.${++testResourceCounter}`,
31
+ register: [root],
32
+ overrides: options?.overrides || [],
33
+ dependencies: {
34
+ taskRunner: globalResources.taskRunner,
35
+ store: globalResources.store,
36
+ logger: globalResources.logger,
37
+ eventManager: globalResources.eventManager,
38
+ },
39
+ async init(_, deps) {
40
+ return buildTestFacade(deps);
41
+ },
42
+ });
43
+ }
44
+
45
+ function buildTestFacade(deps: {
46
+ taskRunner: TaskRunner;
47
+ store: Store;
48
+ logger: Logger;
49
+ eventManager: EventManager;
50
+ }) {
51
+ return {
52
+ // Run a task within the fully initialized ecosystem
53
+ runTask: <I, O extends Promise<any>, D extends DependencyMapType>(
54
+ task: ITask<I, O, D>,
55
+ input: I
56
+ ): Promise<Awaited<O> | undefined> =>
57
+ deps.taskRunner.run(task, input) as any,
58
+ // Access a resource value by id (string or symbol)
59
+ getResource: (id: string | symbol) => deps.store.resources.get(id)?.value,
60
+ // Expose internals when needed in tests (not recommended for app usage)
61
+ taskRunner: deps.taskRunner,
62
+ store: deps.store,
63
+ logger: deps.logger,
64
+ eventManager: deps.eventManager,
65
+ };
66
+ }