@bluelibs/runner 4.5.0-alpha → 4.5.0-alpha.2

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 (228) hide show
  1. package/dist/index.cjs +4265 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.mts +1734 -0
  4. package/dist/index.d.ts +1696 -45
  5. package/dist/index.mjs +4233 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +11 -14
  8. package/dist/context.d.ts +0 -29
  9. package/dist/context.js +0 -52
  10. package/dist/context.js.map +0 -1
  11. package/dist/define.d.ts +0 -9
  12. package/dist/define.js +0 -32
  13. package/dist/define.js.map +0 -1
  14. package/dist/definers/defineEvent.d.ts +0 -2
  15. package/dist/definers/defineEvent.js +0 -23
  16. package/dist/definers/defineEvent.js.map +0 -1
  17. package/dist/definers/defineHook.d.ts +0 -6
  18. package/dist/definers/defineHook.js +0 -24
  19. package/dist/definers/defineHook.js.map +0 -1
  20. package/dist/definers/defineOverride.d.ts +0 -14
  21. package/dist/definers/defineOverride.js +0 -13
  22. package/dist/definers/defineOverride.js.map +0 -1
  23. package/dist/definers/defineResource.d.ts +0 -2
  24. package/dist/definers/defineResource.js +0 -69
  25. package/dist/definers/defineResource.js.map +0 -1
  26. package/dist/definers/defineResourceMiddleware.d.ts +0 -2
  27. package/dist/definers/defineResourceMiddleware.js +0 -42
  28. package/dist/definers/defineResourceMiddleware.js.map +0 -1
  29. package/dist/definers/defineTag.d.ts +0 -12
  30. package/dist/definers/defineTag.js +0 -107
  31. package/dist/definers/defineTag.js.map +0 -1
  32. package/dist/definers/defineTask.d.ts +0 -15
  33. package/dist/definers/defineTask.js +0 -42
  34. package/dist/definers/defineTask.js.map +0 -1
  35. package/dist/definers/defineTaskMiddleware.d.ts +0 -2
  36. package/dist/definers/defineTaskMiddleware.js +0 -42
  37. package/dist/definers/defineTaskMiddleware.js.map +0 -1
  38. package/dist/definers/tools.d.ts +0 -45
  39. package/dist/definers/tools.js +0 -75
  40. package/dist/definers/tools.js.map +0 -1
  41. package/dist/defs.d.ts +0 -29
  42. package/dist/defs.js +0 -45
  43. package/dist/defs.js.map +0 -1
  44. package/dist/errors.d.ts +0 -96
  45. package/dist/errors.js +0 -178
  46. package/dist/errors.js.map +0 -1
  47. package/dist/globals/globalEvents.d.ts +0 -17
  48. package/dist/globals/globalEvents.js +0 -33
  49. package/dist/globals/globalEvents.js.map +0 -1
  50. package/dist/globals/globalMiddleware.d.ts +0 -31
  51. package/dist/globals/globalMiddleware.js +0 -25
  52. package/dist/globals/globalMiddleware.js.map +0 -1
  53. package/dist/globals/globalResources.d.ts +0 -30
  54. package/dist/globals/globalResources.js +0 -55
  55. package/dist/globals/globalResources.js.map +0 -1
  56. package/dist/globals/globalTags.d.ts +0 -9
  57. package/dist/globals/globalTags.js +0 -23
  58. package/dist/globals/globalTags.js.map +0 -1
  59. package/dist/globals/middleware/cache.middleware.d.ts +0 -27
  60. package/dist/globals/middleware/cache.middleware.js +0 -73
  61. package/dist/globals/middleware/cache.middleware.js.map +0 -1
  62. package/dist/globals/middleware/requireContext.middleware.d.ts +0 -6
  63. package/dist/globals/middleware/requireContext.middleware.js +0 -16
  64. package/dist/globals/middleware/requireContext.middleware.js.map +0 -1
  65. package/dist/globals/middleware/retry.middleware.d.ts +0 -21
  66. package/dist/globals/middleware/retry.middleware.js +0 -61
  67. package/dist/globals/middleware/retry.middleware.js.map +0 -1
  68. package/dist/globals/middleware/timeout.middleware.d.ts +0 -9
  69. package/dist/globals/middleware/timeout.middleware.js +0 -61
  70. package/dist/globals/middleware/timeout.middleware.js.map +0 -1
  71. package/dist/globals/resources/debug/debug.resource.d.ts +0 -7
  72. package/dist/globals/resources/debug/debug.resource.js +0 -29
  73. package/dist/globals/resources/debug/debug.resource.js.map +0 -1
  74. package/dist/globals/resources/debug/debug.tag.d.ts +0 -2
  75. package/dist/globals/resources/debug/debug.tag.js +0 -12
  76. package/dist/globals/resources/debug/debug.tag.js.map +0 -1
  77. package/dist/globals/resources/debug/debugConfig.resource.d.ts +0 -22
  78. package/dist/globals/resources/debug/debugConfig.resource.js +0 -20
  79. package/dist/globals/resources/debug/debugConfig.resource.js.map +0 -1
  80. package/dist/globals/resources/debug/executionTracker.middleware.d.ts +0 -50
  81. package/dist/globals/resources/debug/executionTracker.middleware.js +0 -78
  82. package/dist/globals/resources/debug/executionTracker.middleware.js.map +0 -1
  83. package/dist/globals/resources/debug/globalEvent.hook.d.ts +0 -27
  84. package/dist/globals/resources/debug/globalEvent.hook.js +0 -38
  85. package/dist/globals/resources/debug/globalEvent.hook.js.map +0 -1
  86. package/dist/globals/resources/debug/hook.hook.d.ts +0 -30
  87. package/dist/globals/resources/debug/hook.hook.js +0 -48
  88. package/dist/globals/resources/debug/hook.hook.js.map +0 -1
  89. package/dist/globals/resources/debug/index.d.ts +0 -6
  90. package/dist/globals/resources/debug/index.js +0 -23
  91. package/dist/globals/resources/debug/index.js.map +0 -1
  92. package/dist/globals/resources/debug/middleware.hook.d.ts +0 -30
  93. package/dist/globals/resources/debug/middleware.hook.js +0 -75
  94. package/dist/globals/resources/debug/middleware.hook.js.map +0 -1
  95. package/dist/globals/resources/debug/types.d.ts +0 -25
  96. package/dist/globals/resources/debug/types.js +0 -65
  97. package/dist/globals/resources/debug/types.js.map +0 -1
  98. package/dist/globals/resources/debug/utils.d.ts +0 -2
  99. package/dist/globals/resources/debug/utils.js +0 -13
  100. package/dist/globals/resources/debug/utils.js.map +0 -1
  101. package/dist/globals/resources/queue.resource.d.ts +0 -10
  102. package/dist/globals/resources/queue.resource.js +0 -31
  103. package/dist/globals/resources/queue.resource.js.map +0 -1
  104. package/dist/globals/types.d.ts +0 -1
  105. package/dist/globals/types.js +0 -18
  106. package/dist/globals/types.js.map +0 -1
  107. package/dist/index.js +0 -48
  108. package/dist/index.js.map +0 -1
  109. package/dist/models/DependencyProcessor.d.ts +0 -48
  110. package/dist/models/DependencyProcessor.js +0 -276
  111. package/dist/models/DependencyProcessor.js.map +0 -1
  112. package/dist/models/EventManager.d.ts +0 -153
  113. package/dist/models/EventManager.js +0 -421
  114. package/dist/models/EventManager.js.map +0 -1
  115. package/dist/models/LogPrinter.d.ts +0 -55
  116. package/dist/models/LogPrinter.js +0 -202
  117. package/dist/models/LogPrinter.js.map +0 -1
  118. package/dist/models/Logger.d.ts +0 -85
  119. package/dist/models/Logger.js +0 -194
  120. package/dist/models/Logger.js.map +0 -1
  121. package/dist/models/MiddlewareManager.d.ts +0 -86
  122. package/dist/models/MiddlewareManager.js +0 -391
  123. package/dist/models/MiddlewareManager.js.map +0 -1
  124. package/dist/models/OverrideManager.d.ts +0 -13
  125. package/dist/models/OverrideManager.js +0 -84
  126. package/dist/models/OverrideManager.js.map +0 -1
  127. package/dist/models/Queue.d.ts +0 -25
  128. package/dist/models/Queue.js +0 -56
  129. package/dist/models/Queue.js.map +0 -1
  130. package/dist/models/ResourceInitializer.d.ts +0 -20
  131. package/dist/models/ResourceInitializer.js +0 -34
  132. package/dist/models/ResourceInitializer.js.map +0 -1
  133. package/dist/models/RunResult.d.ts +0 -35
  134. package/dist/models/RunResult.js +0 -62
  135. package/dist/models/RunResult.js.map +0 -1
  136. package/dist/models/Semaphore.d.ts +0 -61
  137. package/dist/models/Semaphore.js +0 -164
  138. package/dist/models/Semaphore.js.map +0 -1
  139. package/dist/models/Store.d.ts +0 -56
  140. package/dist/models/Store.js +0 -209
  141. package/dist/models/Store.js.map +0 -1
  142. package/dist/models/StoreRegistry.d.ts +0 -43
  143. package/dist/models/StoreRegistry.js +0 -375
  144. package/dist/models/StoreRegistry.js.map +0 -1
  145. package/dist/models/StoreValidator.d.ts +0 -8
  146. package/dist/models/StoreValidator.js +0 -73
  147. package/dist/models/StoreValidator.js.map +0 -1
  148. package/dist/models/TaskRunner.d.ts +0 -27
  149. package/dist/models/TaskRunner.js +0 -53
  150. package/dist/models/TaskRunner.js.map +0 -1
  151. package/dist/models/UnhandledError.d.ts +0 -11
  152. package/dist/models/UnhandledError.js +0 -32
  153. package/dist/models/UnhandledError.js.map +0 -1
  154. package/dist/models/index.d.ts +0 -11
  155. package/dist/models/index.js +0 -28
  156. package/dist/models/index.js.map +0 -1
  157. package/dist/models/utils/findCircularDependencies.d.ts +0 -16
  158. package/dist/models/utils/findCircularDependencies.js +0 -45
  159. package/dist/models/utils/findCircularDependencies.js.map +0 -1
  160. package/dist/models/utils/safeStringify.d.ts +0 -3
  161. package/dist/models/utils/safeStringify.js +0 -45
  162. package/dist/models/utils/safeStringify.js.map +0 -1
  163. package/dist/platform/browser.d.ts +0 -15
  164. package/dist/platform/browser.js +0 -98
  165. package/dist/platform/browser.js.map +0 -1
  166. package/dist/platform/index.d.ts +0 -8
  167. package/dist/platform/index.js +0 -47
  168. package/dist/platform/index.js.map +0 -1
  169. package/dist/platform/node.d.ts +0 -11
  170. package/dist/platform/node.js +0 -45
  171. package/dist/platform/node.js.map +0 -1
  172. package/dist/platform/types.d.ts +0 -28
  173. package/dist/platform/types.js +0 -19
  174. package/dist/platform/types.js.map +0 -1
  175. package/dist/platform/universal.d.ts +0 -16
  176. package/dist/platform/universal.js +0 -57
  177. package/dist/platform/universal.js.map +0 -1
  178. package/dist/processHooks.d.ts +0 -2
  179. package/dist/processHooks.js +0 -79
  180. package/dist/processHooks.js.map +0 -1
  181. package/dist/run.d.ts +0 -14
  182. package/dist/run.js +0 -126
  183. package/dist/run.js.map +0 -1
  184. package/dist/testing.d.ts +0 -25
  185. package/dist/testing.js +0 -42
  186. package/dist/testing.js.map +0 -1
  187. package/dist/tools/getCallerFile.d.ts +0 -1
  188. package/dist/tools/getCallerFile.js +0 -30
  189. package/dist/tools/getCallerFile.js.map +0 -1
  190. package/dist/types/contracts.d.ts +0 -55
  191. package/dist/types/contracts.js +0 -4
  192. package/dist/types/contracts.js.map +0 -1
  193. package/dist/types/event.d.ts +0 -74
  194. package/dist/types/event.js +0 -17
  195. package/dist/types/event.js.map +0 -1
  196. package/dist/types/hook.d.ts +0 -23
  197. package/dist/types/hook.js +0 -4
  198. package/dist/types/hook.js.map +0 -1
  199. package/dist/types/meta.d.ts +0 -18
  200. package/dist/types/meta.js +0 -7
  201. package/dist/types/meta.js.map +0 -1
  202. package/dist/types/resource.d.ts +0 -84
  203. package/dist/types/resource.js +0 -4
  204. package/dist/types/resource.js.map +0 -1
  205. package/dist/types/resourceMiddleware.d.ts +0 -47
  206. package/dist/types/resourceMiddleware.js +0 -4
  207. package/dist/types/resourceMiddleware.js.map +0 -1
  208. package/dist/types/runner.d.ts +0 -55
  209. package/dist/types/runner.js +0 -3
  210. package/dist/types/runner.js.map +0 -1
  211. package/dist/types/storeTypes.d.ts +0 -40
  212. package/dist/types/storeTypes.js +0 -3
  213. package/dist/types/storeTypes.js.map +0 -1
  214. package/dist/types/symbols.d.ts +0 -30
  215. package/dist/types/symbols.js +0 -40
  216. package/dist/types/symbols.js.map +0 -1
  217. package/dist/types/tag.d.ts +0 -46
  218. package/dist/types/tag.js +0 -4
  219. package/dist/types/tag.js.map +0 -1
  220. package/dist/types/task.d.ts +0 -44
  221. package/dist/types/task.js +0 -4
  222. package/dist/types/task.js.map +0 -1
  223. package/dist/types/taskMiddleware.d.ts +0 -48
  224. package/dist/types/taskMiddleware.js +0 -4
  225. package/dist/types/taskMiddleware.js.map +0 -1
  226. package/dist/types/utilities.d.ts +0 -110
  227. package/dist/types/utilities.js +0 -19
  228. package/dist/types/utilities.js.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCASkB;AAkBF,qFA1Bd,mBAAU,OA0BQ;AACA,yFA1BlB,uBAAc,OA0BY;AACX,sFA1Bf,oBAAW,OA0BS;AACI,+FA1BxB,6BAAoB,OA0BkB;AACV,mGA1B5B,iCAAwB,OA0BsB;AACjC,oFA1Bb,kBAAS,OA0BO;AACE,yFA1BlB,uBAAc,OA0BY;AACZ,qFA1Bd,mBAAU,OA0BQ;AAxBpB,uCAA0C;AA0BxC,8FA1BO,uBAAa,OA0BP;AAzBf,yDAAsD;AACtD,+DAA4D;AAC5D,iEAA+D;AAC/D,qDAAkD;AAClD,+BAA4B;AAoB1B,oFApBO,SAAG,OAoBP;AAnBL,uCAA+C;AAqB7C,mGArBO,4BAAkB,OAqBP;AAnBpB,MAAM,OAAO,GAAG;IACd,MAAM,EAAE,2BAAY;IACpB,SAAS,EAAE,iCAAe;IAC1B,UAAU,EAAE,oCAAiB;IAC7B,IAAI,EAAE,uBAAU;CACjB,CAAC;AAEO,0BAAO;AAehB,wCAAsC;AACtC,2CAAyB;AACzB,kDAAgC;AAChC,qCAAmC"}
@@ -1,48 +0,0 @@
1
- import { DependencyMapType, DependencyValuesType, ITask, IResource, IEvent } from "../defs";
2
- import { Store } from "./Store";
3
- import { ResourceStoreElementType } from "../types/storeTypes";
4
- import { EventManager } from "./EventManager";
5
- import { ResourceInitializer } from "./ResourceInitializer";
6
- import { TaskRunner } from "./TaskRunner";
7
- import { Logger } from "./Logger";
8
- /**
9
- * This class is responsible of setting up dependencies with their respective computedValues.
10
- * Note that all elements must have been previously registered otherwise errors will be thrown
11
- * when trying to depend on something not in the store.
12
- */
13
- export declare class DependencyProcessor {
14
- protected readonly store: Store;
15
- protected readonly eventManager: EventManager;
16
- protected readonly taskRunner: TaskRunner;
17
- protected readonly resourceInitializer: ResourceInitializer;
18
- protected readonly logger: Logger;
19
- constructor(store: Store, eventManager: EventManager, taskRunner: TaskRunner, logger: Logger);
20
- /**
21
- * This function is going to go through all the resources, tasks and middleware to compute their required dependencies.
22
- */
23
- computeAllDependencies(): Promise<void>;
24
- private computeTaskDependencies;
25
- initializeUninitializedResources(): Promise<void>;
26
- /**
27
- * Processes dependencies and hooks
28
- * @param resource
29
- */
30
- protected processResourceDependencies<TD extends DependencyMapType>(resource: ResourceStoreElementType<any, any, TD>): Promise<void>;
31
- private wrapResourceDependencies;
32
- private makeTaskWithIntercept;
33
- initializeRoot(): Promise<void>;
34
- /**
35
- * Processes all hooks, should run before emission of any event.
36
- */
37
- attachListeners(): void;
38
- extractDependencies<T extends DependencyMapType>(map: T, source: string): Promise<DependencyValuesType<T>>;
39
- extractDependency(object: any, source: string): Promise<any>;
40
- /**
41
- * Converts the event into a running functions with real inputs
42
- * @param object
43
- * @returns
44
- */
45
- extractEventDependency(object: IEvent<any>, source: string): (input: any) => Promise<void>;
46
- extractTaskDependency(object: ITask<any, any, {}>): Promise<(input: unknown) => Promise<any>>;
47
- extractResourceDependency(object: IResource<any, any, any>): Promise<any>;
48
- }
@@ -1,276 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DependencyProcessor = void 0;
4
- const utils = require("../define");
5
- const ResourceInitializer_1 = require("./ResourceInitializer");
6
- const errors_1 = require("../errors");
7
- const Logger_1 = require("./Logger");
8
- /**
9
- * This class is responsible of setting up dependencies with their respective computedValues.
10
- * Note that all elements must have been previously registered otherwise errors will be thrown
11
- * when trying to depend on something not in the store.
12
- */
13
- class DependencyProcessor {
14
- constructor(store, eventManager, taskRunner, logger) {
15
- this.store = store;
16
- this.eventManager = eventManager;
17
- this.taskRunner = taskRunner;
18
- this.logger = logger.with({ source: "dependencyProcessor" });
19
- this.resourceInitializer = new ResourceInitializer_1.ResourceInitializer(store, eventManager, logger);
20
- }
21
- /**
22
- * This function is going to go through all the resources, tasks and middleware to compute their required dependencies.
23
- */
24
- async computeAllDependencies() {
25
- for (const middleware of this.store.resourceMiddlewares.values()) {
26
- const computedDependencies = await this.extractDependencies(middleware.middleware.dependencies, middleware.middleware.id);
27
- middleware.computedDependencies = computedDependencies;
28
- middleware.isInitialized = true;
29
- }
30
- for (const middleware of this.store.taskMiddlewares.values()) {
31
- const computedDependencies = await this.extractDependencies(middleware.middleware.dependencies, middleware.middleware.id);
32
- middleware.computedDependencies = computedDependencies;
33
- middleware.isInitialized = true;
34
- }
35
- for (const resource of this.store.resources.values()) {
36
- await this.processResourceDependencies(resource);
37
- }
38
- for (const task of this.store.tasks.values()) {
39
- await this.computeTaskDependencies(task);
40
- }
41
- // Compute hook dependencies (hooks cannot be dependencies themselves)
42
- for (const hookStoreElement of this.store.hooks.values()) {
43
- const hook = hookStoreElement.hook;
44
- const deps = hook.dependencies;
45
- hookStoreElement.computedDependencies = await this.extractDependencies(deps, hook.id);
46
- }
47
- // leftovers that were registered but not depended upon, except root
48
- // they should still be initialized as they might extend other
49
- await this.initializeUninitializedResources();
50
- }
51
- async computeTaskDependencies(task) {
52
- const deps = task.task.dependencies;
53
- task.computedDependencies = await this.extractDependencies(deps, task.task.id);
54
- // Mark task as initialized so subsequent injections don't recompute using
55
- // a potentially lazy dependencies() function and lose computed values.
56
- task.isInitialized = true;
57
- }
58
- // Most likely these are resources that no-one has dependencies towards
59
- // We need to ensure they work too!
60
- async initializeUninitializedResources() {
61
- for (const resource of this.store.resources.values()) {
62
- if (resource.isInitialized === false &&
63
- // The root is the last one to be initialized and is done in a separate process.
64
- resource.resource.id !== this.store.root.resource.id) {
65
- await this.processResourceDependencies(resource);
66
- const { value, context } = await this.resourceInitializer.initializeResource(resource.resource, resource.config, resource.computedDependencies);
67
- resource.context = context;
68
- resource.value = value;
69
- resource.isInitialized = true;
70
- }
71
- }
72
- }
73
- /**
74
- * Processes dependencies and hooks
75
- * @param resource
76
- */
77
- async processResourceDependencies(resource) {
78
- const deps = (resource.resource.dependencies || {});
79
- const extracted = await this.extractDependencies(deps, resource.resource.id);
80
- resource.computedDependencies = this.wrapResourceDependencies(deps, extracted);
81
- // resource.isInitialized = true;
82
- }
83
- wrapResourceDependencies(deps, extracted) {
84
- const wrapped = {};
85
- for (const key of Object.keys(deps)) {
86
- const original = deps[key];
87
- const value = extracted[key];
88
- // Handle optional wrappers
89
- if (utils.isOptional(original)) {
90
- const inner = original.inner;
91
- if (utils.isTask(inner)) {
92
- wrapped[key] = value
93
- ? this.makeTaskWithIntercept(inner)
94
- : undefined;
95
- }
96
- else {
97
- wrapped[key] = value;
98
- }
99
- continue;
100
- }
101
- if (utils.isTask(original)) {
102
- wrapped[key] = this.makeTaskWithIntercept(original);
103
- }
104
- else {
105
- wrapped[key] = value;
106
- }
107
- }
108
- return wrapped;
109
- }
110
- makeTaskWithIntercept(original) {
111
- const taskId = original.id;
112
- const fn = (input) => {
113
- const storeTask = this.store.tasks.get(taskId);
114
- const effective = storeTask.task;
115
- return this.taskRunner.run(effective, input);
116
- };
117
- return Object.assign(fn, {
118
- intercept: (middleware) => {
119
- this.store.checkLock();
120
- const storeTask = this.store.tasks.get(taskId);
121
- if (!storeTask.interceptors)
122
- storeTask.interceptors = [];
123
- storeTask.interceptors.push(middleware);
124
- },
125
- });
126
- }
127
- async initializeRoot() {
128
- const rootResource = this.store.root;
129
- const { value, context } = await this.resourceInitializer.initializeResource(rootResource.resource, rootResource.config,
130
- // They are already computed
131
- rootResource.computedDependencies);
132
- rootResource.context = context;
133
- rootResource.value = value;
134
- rootResource.isInitialized = true;
135
- }
136
- /**
137
- * Processes all hooks, should run before emission of any event.
138
- */
139
- attachListeners() {
140
- // Attach listeners for dedicated hooks map
141
- for (const hookStoreElement of this.store.hooks.values()) {
142
- const hook = hookStoreElement.hook;
143
- if (hook.on) {
144
- const eventDefinition = hook.on;
145
- const handler = async (receivedEvent) => {
146
- if (receivedEvent.source === hook.id) {
147
- return;
148
- }
149
- return this.eventManager.executeHookWithInterceptors(hook, receivedEvent, hookStoreElement.computedDependencies);
150
- };
151
- const order = hook.order ?? 0;
152
- if (eventDefinition === "*") {
153
- this.eventManager.addGlobalListener(handler, { order });
154
- }
155
- else if (Array.isArray(eventDefinition)) {
156
- for (const ed of eventDefinition) {
157
- if (this.store.events.get(ed.id) === undefined) {
158
- throw new errors_1.EventNotFoundError(ed.id);
159
- }
160
- }
161
- this.eventManager.addListener(eventDefinition, handler, {
162
- order,
163
- });
164
- }
165
- else {
166
- if (this.store.events.get(eventDefinition.id) === undefined) {
167
- throw new errors_1.EventNotFoundError(eventDefinition.id);
168
- }
169
- this.eventManager.addListener(eventDefinition, handler, {
170
- order,
171
- });
172
- }
173
- }
174
- }
175
- }
176
- async extractDependencies(map, source) {
177
- const object = {};
178
- for (const key in map) {
179
- try {
180
- object[key] = await this.extractDependency(map[key], source);
181
- // Special handling, a little bit of magic and memory sacrifice for the sake of observability.
182
- // Maybe later we can allow this to be opt-in to save 'memory' in the case of large tasks?
183
- if (object[key] instanceof Logger_1.Logger) {
184
- object[key] = object[key].with({ source });
185
- }
186
- }
187
- catch (e) {
188
- const errorMessage = String(e);
189
- this.logger.error(`Failed to extract dependency from source: ${source} -> ${key} with error: ${errorMessage}`);
190
- throw e;
191
- }
192
- }
193
- this.logger.trace(`Finished computing dependencies for source: ${source}`);
194
- return object;
195
- }
196
- async extractDependency(object, source) {
197
- this.logger.trace(`Extracting dependency -> ${source} -> ${object?.id}`);
198
- if (utils.isOptional(object)) {
199
- const inner = object.inner;
200
- if (utils.isResource(inner)) {
201
- const exists = this.store.resources.get(inner.id) !== undefined;
202
- return exists ? this.extractResourceDependency(inner) : undefined;
203
- }
204
- else if (utils.isTask(inner)) {
205
- const exists = this.store.tasks.get(inner.id) !== undefined;
206
- return exists ? this.extractTaskDependency(inner) : undefined;
207
- }
208
- else if (utils.isEvent(inner)) {
209
- const exists = this.store.events.get(inner.id) !== undefined;
210
- return exists ? this.extractEventDependency(inner, source) : undefined;
211
- }
212
- throw new errors_1.UnknownItemTypeError(inner);
213
- }
214
- if (utils.isResource(object)) {
215
- return this.extractResourceDependency(object);
216
- }
217
- else if (utils.isTask(object)) {
218
- return this.extractTaskDependency(object);
219
- }
220
- else if (utils.isEvent(object)) {
221
- return this.extractEventDependency(object, source);
222
- }
223
- else {
224
- throw new errors_1.UnknownItemTypeError(object);
225
- }
226
- }
227
- /**
228
- * Converts the event into a running functions with real inputs
229
- * @param object
230
- * @returns
231
- */
232
- extractEventDependency(object, source) {
233
- return async (input) => {
234
- return this.eventManager.emit(object, input, source);
235
- };
236
- }
237
- async extractTaskDependency(object) {
238
- const storeTask = this.store.tasks.get(object.id);
239
- if (storeTask === undefined) {
240
- throw new errors_1.DependencyNotFoundError(`Task ${object.id}`);
241
- }
242
- if (!storeTask.isInitialized) {
243
- // it's sanitised
244
- const dependencies = object.dependencies;
245
- storeTask.computedDependencies = await this.extractDependencies(dependencies, storeTask.task.id);
246
- storeTask.isInitialized = true;
247
- }
248
- return (input) => {
249
- return this.taskRunner.run(storeTask.task, input);
250
- };
251
- }
252
- async extractResourceDependency(object) {
253
- // check if it exists in the store with the value
254
- const storeResource = this.store.resources.get(object.id);
255
- if (storeResource === undefined) {
256
- throw new errors_1.DependencyNotFoundError(`Resource ${object.id}`);
257
- }
258
- const { resource, config } = storeResource;
259
- if (!storeResource.isInitialized) {
260
- // check if it has an initialisation function that provides the value
261
- if (resource.init) {
262
- const depMap = (resource.dependencies || {});
263
- const raw = await this.extractDependencies(depMap, resource.id);
264
- const wrapped = this.wrapResourceDependencies(depMap, raw);
265
- const { value, context } = await this.resourceInitializer.initializeResource(resource, config, wrapped);
266
- storeResource.context = context;
267
- storeResource.value = value;
268
- }
269
- // we need to initialize the resource
270
- storeResource.isInitialized = true;
271
- }
272
- return storeResource.value;
273
- }
274
- }
275
- exports.DependencyProcessor = DependencyProcessor;
276
- //# sourceMappingURL=DependencyProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DependencyProcessor.js","sourceRoot":"","sources":["../../src/models/DependencyProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,153 +0,0 @@
1
- import { DependencyValuesType, EventHandlerType, IEvent, IEventEmission } from "../defs";
2
- import { IHook } from "../types/hook";
3
- /**
4
- * Options for configuring event listeners
5
- */
6
- export interface IEventHandlerOptions<T = any> {
7
- order?: number;
8
- filter?: (event: IEventEmission<T>) => boolean;
9
- /**
10
- * Represents the listener ID. Use this to avoid a listener calling himself.
11
- */
12
- id?: string;
13
- }
14
- /**
15
- * Interceptor for event emissions
16
- */
17
- export type EventEmissionInterceptor = (next: (event: IEventEmission<any>) => Promise<void>, event: IEventEmission<any>) => Promise<void>;
18
- /**
19
- * Interceptor for hook execution
20
- */
21
- export type HookExecutionInterceptor = (next: (hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>, hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>;
22
- /**
23
- * EventManager handles event emission, listener registration, and event processing.
24
- * It supports both specific event listeners and global listeners that handle all events.
25
- * Listeners are processed in order based on their priority.
26
- */
27
- export declare class EventManager {
28
- #private;
29
- private listeners;
30
- private globalListeners;
31
- private cachedMergedListeners;
32
- private globalListenersCacheValid;
33
- private emissionInterceptors;
34
- private hookInterceptors;
35
- private readonly emissionStack;
36
- private readonly currentHookIdContext;
37
- private readonly runtimeCycleDetection;
38
- constructor(options?: {
39
- runtimeCycleDetection?: boolean;
40
- });
41
- /**
42
- * Gets the current lock status of the EventManager
43
- */
44
- get isLocked(): boolean;
45
- /**
46
- * Locks the EventManager, preventing any further modifications to listeners
47
- */
48
- lock(): void;
49
- /**
50
- * Emits an event to all registered listeners for that event type.
51
- * Listeners are processed in order of priority and can stop event propagation.
52
- *
53
- * @param eventDefinition - The event definition to emit
54
- * @param data - The event payload data
55
- * @param source - The source identifier of the event emitter
56
- */
57
- emit<TInput>(eventDefinition: IEvent<TInput>, data: TInput, source: string): Promise<void>;
58
- /**
59
- * Registers an event listener for specific event(s).
60
- * Listeners are ordered by priority and executed in ascending order.
61
- *
62
- * @param event - The event definition(s) to listen for
63
- * @param handler - The callback function to handle the event
64
- * @param options - Configuration options for the listener
65
- */
66
- addListener<T>(event: IEvent<T> | Array<IEvent<T>>, handler: EventHandlerType<T>, options?: IEventHandlerOptions<T>): void;
67
- /**
68
- * Registers a global event listener that handles all events.
69
- * Global listeners are mixed with specific listeners and ordered by priority.
70
- *
71
- * @param handler - The callback function to handle events
72
- * @param options - Configuration options for the listener
73
- */
74
- addGlobalListener(handler: EventHandlerType, options?: IEventHandlerOptions): void;
75
- /**
76
- * Checks if there are any listeners registered for the given event
77
- *
78
- * @param eventDefinition - The event definition to check
79
- * @returns true if listeners exist, false otherwise
80
- */
81
- hasListeners<T>(eventDefinition: IEvent<T>): boolean;
82
- /**
83
- * Adds an interceptor for all event emissions
84
- * Interceptors are executed in the order they are added, with the ability to
85
- * modify, log, or prevent event emissions
86
- *
87
- * @param interceptor - The interceptor function to add
88
- */
89
- intercept(interceptor: EventEmissionInterceptor): void;
90
- /**
91
- * Adds an interceptor for hook execution
92
- * Interceptors are executed in the order they are added, with the ability to
93
- * modify, log, or prevent hook execution
94
- *
95
- * @param interceptor - The interceptor function to add
96
- */
97
- interceptHook(interceptor: HookExecutionInterceptor): void;
98
- /**
99
- * Executes a hook with all registered hook interceptors applied
100
- * This method should be used by TaskRunner when executing hooks
101
- *
102
- * @param hook - The hook to execute
103
- * @param event - The event that triggered the hook
104
- * @param computedDependencies - The computed dependencies for the hook
105
- * @returns Promise resolving to the hook execution result
106
- */
107
- executeHookWithInterceptors(hook: IHook<any, any>, event: IEventEmission<any>, computedDependencies: DependencyValuesType<any>): Promise<any>;
108
- /**
109
- * Throws an error if the EventManager is locked
110
- */
111
- private checkLock;
112
- /**
113
- * Merges two sorted arrays of listeners while maintaining order.
114
- * Used to combine event-specific listeners with global listeners.
115
- *
116
- * @param a - First array of listeners
117
- * @param b - Second array of listeners
118
- * @returns Merged and sorted array of listeners
119
- */
120
- private mergeSortedListeners;
121
- /**
122
- * Inserts a new listener into a sorted array using binary search.
123
- * Maintains order based on listener priority.
124
- *
125
- * @param listeners - Array to insert into
126
- * @param newListener - Listener to insert
127
- */
128
- private insertListener;
129
- /**
130
- * Returns true if the given emission carries the tag that marks
131
- * it as excluded from global ("*") listeners.
132
- *
133
- * @param event - The event emission to check
134
- * @returns true if event should exclude global listeners
135
- */
136
- private isExcludedFromGlobal;
137
- /**
138
- * Retrieves cached merged listeners for an event, or creates them if not cached.
139
- * Combines event-specific listeners with global listeners and sorts them by priority.
140
- *
141
- * @param eventId - The event ID to get listeners for
142
- * @returns Array of merged listeners sorted by priority
143
- */
144
- private getCachedMergedListeners;
145
- /**
146
- * Invalidates the cached merged listeners.
147
- * If eventId is provided, only invalidates cache for that specific event.
148
- * Otherwise, invalidates the global cache.
149
- *
150
- * @param eventId - Optional specific event ID to invalidate
151
- */
152
- private invalidateCache;
153
- }