@bluelibs/runner 3.4.2 → 4.0.1

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 (375) hide show
  1. package/AI.md +621 -0
  2. package/README.md +1024 -577
  3. package/dist/context.d.ts +4 -8
  4. package/dist/context.js +5 -12
  5. package/dist/context.js.map +1 -1
  6. package/dist/define.d.ts +9 -113
  7. package/dist/define.js +29 -358
  8. package/dist/define.js.map +1 -1
  9. package/dist/definers/defineEvent.d.ts +2 -0
  10. package/dist/definers/defineEvent.js +23 -0
  11. package/dist/definers/defineEvent.js.map +1 -0
  12. package/dist/definers/defineHook.d.ts +6 -0
  13. package/dist/definers/defineHook.js +24 -0
  14. package/dist/definers/defineHook.js.map +1 -0
  15. package/dist/definers/defineOverride.d.ts +14 -0
  16. package/dist/definers/defineOverride.js +13 -0
  17. package/dist/definers/defineOverride.js.map +1 -0
  18. package/dist/definers/defineResource.d.ts +2 -0
  19. package/dist/definers/defineResource.js +69 -0
  20. package/dist/definers/defineResource.js.map +1 -0
  21. package/dist/definers/defineResourceMiddleware.d.ts +2 -0
  22. package/dist/definers/defineResourceMiddleware.js +42 -0
  23. package/dist/definers/defineResourceMiddleware.js.map +1 -0
  24. package/dist/definers/defineTag.d.ts +12 -0
  25. package/dist/definers/defineTag.js +106 -0
  26. package/dist/definers/defineTag.js.map +1 -0
  27. package/dist/definers/defineTask.d.ts +15 -0
  28. package/dist/definers/defineTask.js +42 -0
  29. package/dist/definers/defineTask.js.map +1 -0
  30. package/dist/definers/defineTaskMiddleware.d.ts +2 -0
  31. package/dist/definers/defineTaskMiddleware.js +42 -0
  32. package/dist/definers/defineTaskMiddleware.js.map +1 -0
  33. package/dist/definers/tools.d.ts +45 -0
  34. package/dist/definers/tools.js +75 -0
  35. package/dist/definers/tools.js.map +1 -0
  36. package/dist/defs.d.ts +16 -424
  37. package/dist/defs.js +26 -38
  38. package/dist/defs.js.map +1 -1
  39. package/dist/errors.d.ts +23 -8
  40. package/dist/errors.js +50 -10
  41. package/dist/errors.js.map +1 -1
  42. package/dist/globals/globalEvents.d.ts +15 -39
  43. package/dist/globals/globalEvents.js +20 -81
  44. package/dist/globals/globalEvents.js.map +1 -1
  45. package/dist/globals/globalMiddleware.d.ts +24 -17
  46. package/dist/globals/globalMiddleware.js +12 -4
  47. package/dist/globals/globalMiddleware.js.map +1 -1
  48. package/dist/globals/globalResources.d.ts +13 -28
  49. package/dist/globals/globalResources.js +15 -7
  50. package/dist/globals/globalResources.js.map +1 -1
  51. package/dist/globals/globalTags.d.ts +9 -0
  52. package/dist/globals/globalTags.js +23 -0
  53. package/dist/globals/globalTags.js.map +1 -0
  54. package/dist/globals/middleware/cache.middleware.d.ts +10 -17
  55. package/dist/globals/middleware/cache.middleware.js +4 -16
  56. package/dist/globals/middleware/cache.middleware.js.map +1 -1
  57. package/dist/globals/middleware/requireContext.middleware.d.ts +1 -1
  58. package/dist/globals/middleware/requireContext.middleware.js +5 -14
  59. package/dist/globals/middleware/requireContext.middleware.js.map +1 -1
  60. package/dist/globals/middleware/retry.middleware.d.ts +2 -1
  61. package/dist/globals/middleware/retry.middleware.js +32 -5
  62. package/dist/globals/middleware/retry.middleware.js.map +1 -1
  63. package/dist/globals/middleware/timeout.middleware.d.ts +2 -1
  64. package/dist/globals/middleware/timeout.middleware.js +31 -5
  65. package/dist/globals/middleware/timeout.middleware.js.map +1 -1
  66. package/dist/globals/resources/debug/debug.resource.d.ts +7 -0
  67. package/dist/globals/resources/debug/debug.resource.js +29 -0
  68. package/dist/globals/resources/debug/debug.resource.js.map +1 -0
  69. package/dist/globals/resources/debug/debug.tag.d.ts +2 -0
  70. package/dist/globals/resources/debug/debug.tag.js +12 -0
  71. package/dist/globals/resources/debug/debug.tag.js.map +1 -0
  72. package/dist/globals/resources/debug/debugConfig.resource.d.ts +22 -0
  73. package/dist/globals/resources/debug/debugConfig.resource.js +20 -0
  74. package/dist/globals/resources/debug/debugConfig.resource.js.map +1 -0
  75. package/dist/globals/resources/debug/executionTracker.middleware.d.ts +50 -0
  76. package/dist/globals/resources/debug/executionTracker.middleware.js +87 -0
  77. package/dist/globals/resources/debug/executionTracker.middleware.js.map +1 -0
  78. package/dist/globals/resources/debug/globalEvent.hook.d.ts +27 -0
  79. package/dist/globals/resources/debug/globalEvent.hook.js +38 -0
  80. package/dist/globals/resources/debug/globalEvent.hook.js.map +1 -0
  81. package/dist/globals/resources/debug/hook.hook.d.ts +25 -0
  82. package/dist/globals/resources/debug/hook.hook.js +42 -0
  83. package/dist/globals/resources/debug/hook.hook.js.map +1 -0
  84. package/dist/globals/resources/debug/index.d.ts +6 -0
  85. package/dist/{types → globals/resources/debug}/index.js +6 -11
  86. package/dist/globals/resources/debug/index.js.map +1 -0
  87. package/dist/globals/resources/debug/middleware.hook.d.ts +25 -0
  88. package/dist/globals/resources/debug/middleware.hook.js +71 -0
  89. package/dist/globals/resources/debug/middleware.hook.js.map +1 -0
  90. package/dist/globals/resources/debug/types.d.ts +25 -0
  91. package/dist/globals/resources/debug/types.js +65 -0
  92. package/dist/globals/resources/debug/types.js.map +1 -0
  93. package/dist/globals/resources/debug/utils.d.ts +2 -0
  94. package/dist/globals/resources/debug/utils.js +9 -0
  95. package/dist/globals/resources/debug/utils.js.map +1 -0
  96. package/dist/globals/resources/queue.resource.d.ts +3 -3
  97. package/dist/globals/resources/queue.resource.js.map +1 -1
  98. package/dist/globals/types.d.ts +1 -0
  99. package/dist/{task.types.js → globals/types.js} +2 -7
  100. package/dist/globals/types.js.map +1 -0
  101. package/dist/index.d.ts +58 -85
  102. package/dist/index.js +23 -10
  103. package/dist/index.js.map +1 -1
  104. package/dist/models/DependencyProcessor.d.ts +8 -6
  105. package/dist/models/DependencyProcessor.js +116 -33
  106. package/dist/models/DependencyProcessor.js.map +1 -1
  107. package/dist/models/EventManager.d.ts +127 -7
  108. package/dist/models/EventManager.js +251 -78
  109. package/dist/models/EventManager.js.map +1 -1
  110. package/dist/models/LogPrinter.d.ts +55 -0
  111. package/dist/models/LogPrinter.js +196 -0
  112. package/dist/models/LogPrinter.js.map +1 -0
  113. package/dist/models/Logger.d.ts +47 -27
  114. package/dist/models/Logger.js +133 -155
  115. package/dist/models/Logger.js.map +1 -1
  116. package/dist/models/MiddlewareManager.d.ts +86 -0
  117. package/dist/models/MiddlewareManager.js +409 -0
  118. package/dist/models/MiddlewareManager.js.map +1 -0
  119. package/dist/models/OverrideManager.d.ts +3 -3
  120. package/dist/models/OverrideManager.js +22 -7
  121. package/dist/models/OverrideManager.js.map +1 -1
  122. package/dist/models/ResourceInitializer.d.ts +4 -3
  123. package/dist/models/ResourceInitializer.js +12 -68
  124. package/dist/models/ResourceInitializer.js.map +1 -1
  125. package/dist/models/RunResult.d.ts +35 -0
  126. package/dist/models/RunResult.js +68 -0
  127. package/dist/models/RunResult.js.map +1 -0
  128. package/dist/models/Store.d.ts +30 -17
  129. package/dist/models/Store.js +87 -25
  130. package/dist/models/Store.js.map +1 -1
  131. package/dist/models/StoreRegistry.d.ts +34 -19
  132. package/dist/models/StoreRegistry.js +248 -100
  133. package/dist/models/StoreRegistry.js.map +1 -1
  134. package/dist/models/StoreValidator.d.ts +5 -7
  135. package/dist/models/StoreValidator.js +50 -17
  136. package/dist/models/StoreValidator.js.map +1 -1
  137. package/dist/models/TaskRunner.d.ts +3 -2
  138. package/dist/models/TaskRunner.js +6 -103
  139. package/dist/models/TaskRunner.js.map +1 -1
  140. package/dist/models/UnhandledError.d.ts +11 -0
  141. package/dist/models/UnhandledError.js +30 -0
  142. package/dist/models/UnhandledError.js.map +1 -0
  143. package/dist/models/index.d.ts +3 -0
  144. package/dist/models/index.js +3 -0
  145. package/dist/models/index.js.map +1 -1
  146. package/dist/{tools → models/utils}/findCircularDependencies.js +8 -16
  147. package/dist/models/utils/findCircularDependencies.js.map +1 -0
  148. package/dist/models/utils/safeStringify.d.ts +3 -0
  149. package/dist/models/utils/safeStringify.js +45 -0
  150. package/dist/models/utils/safeStringify.js.map +1 -0
  151. package/dist/processHooks.d.ts +2 -0
  152. package/dist/processHooks.js +70 -0
  153. package/dist/processHooks.js.map +1 -0
  154. package/dist/run.d.ts +14 -27
  155. package/dist/run.js +100 -36
  156. package/dist/run.js.map +1 -1
  157. package/dist/testing.d.ts +5 -4
  158. package/dist/testing.js +3 -2
  159. package/dist/testing.js.map +1 -1
  160. package/dist/tools/getCallerFile.d.ts +0 -8
  161. package/dist/tools/getCallerFile.js +0 -51
  162. package/dist/tools/getCallerFile.js.map +1 -1
  163. package/dist/types/contracts.d.ts +55 -0
  164. package/dist/types/contracts.js +4 -0
  165. package/dist/types/contracts.js.map +1 -0
  166. package/dist/types/event.d.ts +26 -7
  167. package/dist/types/event.js +1 -1
  168. package/dist/types/event.js.map +1 -1
  169. package/dist/types/hook.d.ts +21 -0
  170. package/dist/{models/StoreTypes.js → types/hook.js} +2 -1
  171. package/dist/types/hook.js.map +1 -0
  172. package/dist/types/meta.d.ts +6 -1
  173. package/dist/types/meta.js +4 -2
  174. package/dist/types/meta.js.map +1 -1
  175. package/dist/types/resource.d.ts +40 -52
  176. package/dist/types/resource.js +1 -0
  177. package/dist/types/resource.js.map +1 -1
  178. package/dist/types/resourceMiddleware.d.ts +47 -0
  179. package/dist/{middleware.types.js → types/resourceMiddleware.js} +1 -1
  180. package/dist/types/resourceMiddleware.js.map +1 -0
  181. package/dist/types/runner.d.ts +37 -0
  182. package/dist/types/{base.js → runner.js} +1 -1
  183. package/dist/types/runner.js.map +1 -0
  184. package/dist/types/storeTypes.d.ts +40 -0
  185. package/dist/types/{metadata.js → storeTypes.js} +1 -1
  186. package/dist/types/storeTypes.js.map +1 -0
  187. package/dist/types/symbols.d.ts +10 -21
  188. package/dist/types/symbols.js +17 -22
  189. package/dist/types/symbols.js.map +1 -1
  190. package/dist/types/tag.d.ts +46 -0
  191. package/dist/{resource.types.js → types/tag.js} +2 -1
  192. package/dist/types/tag.js.map +1 -0
  193. package/dist/types/task.d.ts +28 -52
  194. package/dist/types/task.js +1 -0
  195. package/dist/types/task.js.map +1 -1
  196. package/dist/types/taskMiddleware.d.ts +48 -0
  197. package/dist/{event.types.js → types/taskMiddleware.js} +1 -1
  198. package/dist/types/taskMiddleware.js.map +1 -0
  199. package/dist/types/utilities.d.ts +105 -6
  200. package/dist/types/utilities.js +16 -2
  201. package/dist/types/utilities.js.map +1 -1
  202. package/package.json +14 -5
  203. package/dist/cli/extract-docs.d.ts +0 -2
  204. package/dist/cli/extract-docs.js +0 -88
  205. package/dist/cli/extract-docs.js.map +0 -1
  206. package/dist/common.types.d.ts +0 -20
  207. package/dist/common.types.js +0 -4
  208. package/dist/common.types.js.map +0 -1
  209. package/dist/defs/core.d.ts +0 -144
  210. package/dist/defs/core.js +0 -6
  211. package/dist/defs/core.js.map +0 -1
  212. package/dist/defs/symbols.d.ts +0 -42
  213. package/dist/defs/symbols.js +0 -45
  214. package/dist/defs/symbols.js.map +0 -1
  215. package/dist/defs/tags.d.ts +0 -70
  216. package/dist/defs/tags.js +0 -6
  217. package/dist/defs/tags.js.map +0 -1
  218. package/dist/defs.returnTag.d.ts +0 -36
  219. package/dist/defs.returnTag.js +0 -4
  220. package/dist/defs.returnTag.js.map +0 -1
  221. package/dist/docs/introspect.d.ts +0 -7
  222. package/dist/docs/introspect.js +0 -199
  223. package/dist/docs/introspect.js.map +0 -1
  224. package/dist/docs/markdown.d.ts +0 -2
  225. package/dist/docs/markdown.js +0 -148
  226. package/dist/docs/markdown.js.map +0 -1
  227. package/dist/docs/model.d.ts +0 -62
  228. package/dist/docs/model.js +0 -33
  229. package/dist/docs/model.js.map +0 -1
  230. package/dist/event.types.d.ts +0 -18
  231. package/dist/event.types.js.map +0 -1
  232. package/dist/examples/express-mongo/index.d.ts +0 -0
  233. package/dist/examples/express-mongo/index.js +0 -3
  234. package/dist/examples/express-mongo/index.js.map +0 -1
  235. package/dist/examples/registrator-example.d.ts +0 -122
  236. package/dist/examples/registrator-example.js +0 -147
  237. package/dist/examples/registrator-example.js.map +0 -1
  238. package/dist/express/docsRouter.d.ts +0 -12
  239. package/dist/express/docsRouter.js +0 -54
  240. package/dist/express/docsRouter.js.map +0 -1
  241. package/dist/globalEvents.d.ts +0 -40
  242. package/dist/globalEvents.js +0 -94
  243. package/dist/globalEvents.js.map +0 -1
  244. package/dist/globalResources.d.ts +0 -10
  245. package/dist/globalResources.js +0 -43
  246. package/dist/globalResources.js.map +0 -1
  247. package/dist/middleware.types.d.ts +0 -40
  248. package/dist/middleware.types.js.map +0 -1
  249. package/dist/models/StoreConstants.d.ts +0 -14
  250. package/dist/models/StoreConstants.js +0 -19
  251. package/dist/models/StoreConstants.js.map +0 -1
  252. package/dist/models/StoreTypes.d.ts +0 -21
  253. package/dist/models/StoreTypes.js.map +0 -1
  254. package/dist/models/VarStore.d.ts +0 -17
  255. package/dist/models/VarStore.js +0 -60
  256. package/dist/models/VarStore.js.map +0 -1
  257. package/dist/resource.types.d.ts +0 -31
  258. package/dist/resource.types.js.map +0 -1
  259. package/dist/symbols.d.ts +0 -24
  260. package/dist/symbols.js +0 -29
  261. package/dist/symbols.js.map +0 -1
  262. package/dist/t1.d.ts +0 -1
  263. package/dist/t1.js +0 -13
  264. package/dist/t1.js.map +0 -1
  265. package/dist/task.types.d.ts +0 -55
  266. package/dist/task.types.js.map +0 -1
  267. package/dist/tools/findCircularDependencies.js.map +0 -1
  268. package/dist/tools/registratorId.d.ts +0 -4
  269. package/dist/tools/registratorId.js +0 -40
  270. package/dist/tools/registratorId.js.map +0 -1
  271. package/dist/tools/simpleHash.d.ts +0 -9
  272. package/dist/tools/simpleHash.js +0 -34
  273. package/dist/tools/simpleHash.js.map +0 -1
  274. package/dist/types/base-interfaces.d.ts +0 -18
  275. package/dist/types/base-interfaces.js +0 -6
  276. package/dist/types/base-interfaces.js.map +0 -1
  277. package/dist/types/base.d.ts +0 -13
  278. package/dist/types/base.js.map +0 -1
  279. package/dist/types/dependencies.d.ts +0 -51
  280. package/dist/types/dependencies.js +0 -3
  281. package/dist/types/dependencies.js.map +0 -1
  282. package/dist/types/dependency-core.d.ts +0 -14
  283. package/dist/types/dependency-core.js +0 -5
  284. package/dist/types/dependency-core.js.map +0 -1
  285. package/dist/types/events.d.ts +0 -52
  286. package/dist/types/events.js +0 -6
  287. package/dist/types/events.js.map +0 -1
  288. package/dist/types/hooks.d.ts +0 -16
  289. package/dist/types/hooks.js +0 -5
  290. package/dist/types/hooks.js.map +0 -1
  291. package/dist/types/index.d.ts +0 -8
  292. package/dist/types/index.js.map +0 -1
  293. package/dist/types/metadata.d.ts +0 -75
  294. package/dist/types/metadata.js.map +0 -1
  295. package/dist/types/middleware.d.ts +0 -63
  296. package/dist/types/middleware.js +0 -3
  297. package/dist/types/middleware.js.map +0 -1
  298. package/dist/types/registerable.d.ts +0 -10
  299. package/dist/types/registerable.js +0 -5
  300. package/dist/types/registerable.js.map +0 -1
  301. package/dist/types/resources.d.ts +0 -44
  302. package/dist/types/resources.js +0 -5
  303. package/dist/types/resources.js.map +0 -1
  304. package/dist/types/tasks.d.ts +0 -41
  305. package/dist/types/tasks.js +0 -5
  306. package/dist/types/tasks.js.map +0 -1
  307. package/src/__tests__/benchmark/benchmark.test.ts +0 -148
  308. package/src/__tests__/benchmark/task-benchmark.test.ts +0 -132
  309. package/src/__tests__/context.test.ts +0 -91
  310. package/src/__tests__/createTestResource.test.ts +0 -139
  311. package/src/__tests__/errors.test.ts +0 -341
  312. package/src/__tests__/globalEvents.test.ts +0 -542
  313. package/src/__tests__/globals/cache.middleware.test.ts +0 -772
  314. package/src/__tests__/globals/queue.resource.test.ts +0 -141
  315. package/src/__tests__/globals/requireContext.middleware.test.ts +0 -98
  316. package/src/__tests__/globals/retry.middleware.test.ts +0 -157
  317. package/src/__tests__/globals/timeout.middleware.test.ts +0 -88
  318. package/src/__tests__/index.helper.test.ts +0 -55
  319. package/src/__tests__/models/EventManager.test.ts +0 -585
  320. package/src/__tests__/models/Logger.test.ts +0 -519
  321. package/src/__tests__/models/Queue.test.ts +0 -189
  322. package/src/__tests__/models/ResourceInitializer.test.ts +0 -148
  323. package/src/__tests__/models/Semaphore.test.ts +0 -713
  324. package/src/__tests__/models/Store.test.ts +0 -227
  325. package/src/__tests__/models/TaskRunner.test.ts +0 -221
  326. package/src/__tests__/override.test.ts +0 -104
  327. package/src/__tests__/recursion/README.md +0 -3
  328. package/src/__tests__/recursion/a.resource.ts +0 -25
  329. package/src/__tests__/recursion/b.resource.ts +0 -33
  330. package/src/__tests__/recursion/c.resource.ts +0 -18
  331. package/src/__tests__/run.anonymous.test.ts +0 -706
  332. package/src/__tests__/run.dynamic-register-and-dependencies.test.ts +0 -1185
  333. package/src/__tests__/run.middleware.test.ts +0 -549
  334. package/src/__tests__/run.overrides.test.ts +0 -424
  335. package/src/__tests__/run.test.ts +0 -1040
  336. package/src/__tests__/setOutput.test.ts +0 -244
  337. package/src/__tests__/tags.test.ts +0 -396
  338. package/src/__tests__/tools/findCircularDependencies.test.ts +0 -217
  339. package/src/__tests__/tools/getCallerFile.test.ts +0 -179
  340. package/src/__tests__/typesafety.test.ts +0 -423
  341. package/src/__tests__/validation-edge-cases.test.ts +0 -111
  342. package/src/__tests__/validation-interface.test.ts +0 -428
  343. package/src/context.ts +0 -86
  344. package/src/define.ts +0 -480
  345. package/src/defs.returnTag.ts +0 -91
  346. package/src/defs.ts +0 -596
  347. package/src/errors.ts +0 -105
  348. package/src/globals/globalEvents.ts +0 -125
  349. package/src/globals/globalMiddleware.ts +0 -16
  350. package/src/globals/globalResources.ts +0 -53
  351. package/src/globals/middleware/cache.middleware.ts +0 -115
  352. package/src/globals/middleware/requireContext.middleware.ts +0 -36
  353. package/src/globals/middleware/retry.middleware.ts +0 -56
  354. package/src/globals/middleware/timeout.middleware.ts +0 -46
  355. package/src/globals/resources/queue.resource.ts +0 -34
  356. package/src/index.ts +0 -39
  357. package/src/models/DependencyProcessor.ts +0 -257
  358. package/src/models/EventManager.ts +0 -210
  359. package/src/models/Logger.ts +0 -282
  360. package/src/models/OverrideManager.ts +0 -79
  361. package/src/models/Queue.ts +0 -66
  362. package/src/models/ResourceInitializer.ts +0 -165
  363. package/src/models/Semaphore.ts +0 -208
  364. package/src/models/Store.ts +0 -193
  365. package/src/models/StoreConstants.ts +0 -18
  366. package/src/models/StoreRegistry.ts +0 -253
  367. package/src/models/StoreTypes.ts +0 -47
  368. package/src/models/StoreValidator.ts +0 -43
  369. package/src/models/TaskRunner.ts +0 -203
  370. package/src/models/index.ts +0 -8
  371. package/src/run.ts +0 -116
  372. package/src/testing.ts +0 -66
  373. package/src/tools/findCircularDependencies.ts +0 -69
  374. package/src/tools/getCallerFile.ts +0 -96
  375. /package/dist/{tools → models/utils}/findCircularDependencies.d.ts +0 -0
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TaskRunner = void 0;
4
- const globalEvents_1 = require("../globals/globalEvents");
5
- const errors_1 = require("../errors");
6
4
  class TaskRunner {
7
5
  store;
8
6
  eventManager;
@@ -12,7 +10,11 @@ class TaskRunner {
12
10
  this.store = store;
13
11
  this.eventManager = eventManager;
14
12
  this.logger = logger;
13
+ // Use the same MiddlewareManager instance from the Store so that
14
+ // any interceptors registered via resources (like debug) affect task runs.
15
+ this.middlewareManager = this.store.getMiddlewareManager();
15
16
  }
17
+ middlewareManager;
16
18
  /**
17
19
  * Begins the execution of an task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
18
20
  * This function can throw only if any of the event listeners or run function throws
@@ -25,68 +27,7 @@ class TaskRunner {
25
27
  runner = this.createRunnerWithMiddleware(task);
26
28
  this.runnerStore.set(task.id, runner);
27
29
  }
28
- const isGlobalEventListener = task.on === "*";
29
- if (!isGlobalEventListener) {
30
- await this.eventManager.emit(task.events.beforeRun, { input }, task.id);
31
- }
32
- if (!isGlobalEventListener &&
33
- task.on !== globalEvents_1.globalEvents.tasks.beforeRun &&
34
- task.on !== globalEvents_1.globalEvents.tasks.afterRun) {
35
- await this.eventManager.emit(globalEvents_1.globalEvents.tasks.beforeRun, {
36
- task,
37
- input,
38
- }, task.id);
39
- }
40
- let error;
41
- try {
42
- // craft the next function starting from the first next function
43
- const result = {
44
- output: await runner(input),
45
- };
46
- const setOutput = (newOutput) => {
47
- result.output = newOutput;
48
- };
49
- // If it's a global event listener, we stop emitting so we don't get into an infinite loop.
50
- if (!isGlobalEventListener) {
51
- await this.eventManager.emit(task.events.afterRun, {
52
- input,
53
- get output() {
54
- return result.output;
55
- },
56
- setOutput,
57
- }, task.id);
58
- }
59
- if (!isGlobalEventListener &&
60
- task.on !== globalEvents_1.globalEvents.tasks.beforeRun &&
61
- task.on !== globalEvents_1.globalEvents.tasks.afterRun) {
62
- // If it's a lifecycle listener we prevent from emitting further events.
63
- await this.eventManager.emit(globalEvents_1.globalEvents.tasks.afterRun, {
64
- task,
65
- input,
66
- get output() {
67
- return result.output;
68
- },
69
- setOutput,
70
- }, task.id);
71
- }
72
- return result.output;
73
- }
74
- catch (e) {
75
- let isSuppressed = false;
76
- function suppress() {
77
- isSuppressed = true;
78
- }
79
- error = e;
80
- // If you want to rewthrow the error, this should be done inside the onError event.
81
- await this.eventManager.emit(task.events.onError, { error, suppress }, task.id);
82
- await this.eventManager.emit(globalEvents_1.globalEvents.tasks.onError, {
83
- task,
84
- error,
85
- suppress,
86
- }, task.id);
87
- if (!isSuppressed)
88
- throw e;
89
- }
30
+ return await runner(input);
90
31
  }
91
32
  /**
92
33
  * Creates the function with the chain of middleware.
@@ -96,45 +37,7 @@ class TaskRunner {
96
37
  * @returns
97
38
  */
98
39
  createRunnerWithMiddleware(task) {
99
- const storeTask = this.store.tasks.get(task.id);
100
- // this is the final next()
101
- let next = async (input) => {
102
- // Validate input with schema if provided
103
- if (task.inputSchema) {
104
- try {
105
- input = task.inputSchema.parse(input);
106
- }
107
- catch (error) {
108
- throw new errors_1.ValidationError("Task input", task.id, error instanceof Error ? error : new Error(String(error)));
109
- }
110
- }
111
- return task.run.call(null, input, storeTask?.computedDependencies);
112
- };
113
- const existingMiddlewares = task.middleware;
114
- const createdMiddlewares = [
115
- ...this.store.getEverywhereMiddlewareForTasks(existingMiddlewares.map((x) => x.id)),
116
- ...existingMiddlewares,
117
- ];
118
- if (createdMiddlewares.length === 0) {
119
- return next;
120
- }
121
- // we need to run the middleware in reverse order
122
- // so we can chain the next function
123
- for (let i = createdMiddlewares.length - 1; i >= 0; i--) {
124
- const middleware = createdMiddlewares[i];
125
- const storeMiddleware = this.store.middlewares.get(middleware.id); // we know it exists because at this stage all sanity checks have been done.
126
- const nextFunction = next;
127
- next = async (input) => {
128
- return storeMiddleware.middleware.run({
129
- task: {
130
- definition: task,
131
- input,
132
- },
133
- next: nextFunction,
134
- }, storeMiddleware.computedDependencies, middleware.config);
135
- };
136
- }
137
- return next;
40
+ return this.middlewareManager.composeTaskRunner(task);
138
41
  }
139
42
  }
140
43
  exports.TaskRunner = TaskRunner;
@@ -1 +1 @@
1
- {"version":3,"file":"TaskRunner.js","sourceRoot":"","sources":["../../src/models/TaskRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskRunner.js","sourceRoot":"","sources":["../../src/models/TaskRunner.ts"],"names":[],"mappings":";;;AAQA,MAAa,UAAU;IAOA;IACA;IACA;IARF,WAAW,GAAG,IAAI,GAAG,EAGrC,CAAC;IAEJ,YACqB,KAAY,EACZ,YAA0B,EAC1B,MAAc;QAFd,UAAK,GAAL,KAAK,CAAO;QACZ,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QAEjC,iEAAiE;QACjE,2EAA2E;QAC3E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC7D,CAAC;IAEgB,iBAAiB,CAAoB;IAEtD;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CAKd,IAAmC,EACnC,KAAc;QAEd,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAyB,IAAI,CAAC,CAAC;YAEvE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACO,0BAA0B,CAIlC,IAAmC;QACnC,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;CACF;AAxDD,gCAwDC"}
@@ -0,0 +1,11 @@
1
+ import { Logger } from "./Logger";
2
+ export type UnhandledErrorKind = "process" | "task" | "middleware" | "resourceInit" | "hook" | "run";
3
+ export interface OnUnhandledErrorInfo {
4
+ error: unknown;
5
+ kind?: UnhandledErrorKind;
6
+ source?: string;
7
+ }
8
+ export type OnUnhandledError = (info: OnUnhandledErrorInfo) => void | Promise<void>;
9
+ export declare function createDefaultUnhandledError(logger: Logger): OnUnhandledError;
10
+ export declare function bindProcessErrorHandler(handler: OnUnhandledError): (error: unknown, source: "uncaughtException" | "unhandledRejection") => void | Promise<void>;
11
+ export declare function safeReportUnhandledError(handler: OnUnhandledError, info: OnUnhandledErrorInfo): Promise<void>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDefaultUnhandledError = createDefaultUnhandledError;
4
+ exports.bindProcessErrorHandler = bindProcessErrorHandler;
5
+ exports.safeReportUnhandledError = safeReportUnhandledError;
6
+ function createDefaultUnhandledError(logger) {
7
+ return async ({ error, kind, source }) => {
8
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
9
+ await logger.error(`${normalizedError.toString()}`, {
10
+ source,
11
+ error: normalizedError,
12
+ data: kind ? { kind } : undefined,
13
+ });
14
+ };
15
+ }
16
+ function bindProcessErrorHandler(handler) {
17
+ return async (error, source) => {
18
+ try {
19
+ await handler({ error, kind: "process", source });
20
+ }
21
+ catch { }
22
+ };
23
+ }
24
+ async function safeReportUnhandledError(handler, info) {
25
+ try {
26
+ await handler(info);
27
+ }
28
+ catch { }
29
+ }
30
+ //# sourceMappingURL=UnhandledError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnhandledError.js","sourceRoot":"","sources":["../../src/models/UnhandledError.ts"],"names":[],"mappings":";;AAoBA,kEAUC;AAED,0DAWC;AAED,4DAOC;AAhCD,SAAgB,2BAA2B,CAAC,MAAc;IACxD,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAwB,EAAE,EAAE;QAC7D,MAAM,eAAe,GACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,EAAE;YAClD,MAAM;YACN,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;SAClC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CACrC,OAAyB;IAKzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,OAAyB,EACzB,IAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC"}
@@ -4,5 +4,8 @@ export * from "./Logger";
4
4
  export * from "./Store";
5
5
  export * from "./TaskRunner";
6
6
  export * from "./ResourceInitializer";
7
+ export * from "./MiddlewareManager";
7
8
  export * from "./Semaphore";
8
9
  export * from "./Queue";
10
+ export * from "./UnhandledError";
11
+ export * from "./RunResult";
@@ -20,6 +20,9 @@ __exportStar(require("./Logger"), exports);
20
20
  __exportStar(require("./Store"), exports);
21
21
  __exportStar(require("./TaskRunner"), exports);
22
22
  __exportStar(require("./ResourceInitializer"), exports);
23
+ __exportStar(require("./MiddlewareManager"), exports);
23
24
  __exportStar(require("./Semaphore"), exports);
24
25
  __exportStar(require("./Queue"), exports);
26
+ __exportStar(require("./UnhandledError"), exports);
27
+ __exportStar(require("./RunResult"), exports);
25
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,iDAA+B;AAC/B,2CAAyB;AACzB,0CAAwB;AACxB,+CAA6B;AAC7B,wDAAsC;AACtC,8CAA4B;AAC5B,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,iDAA+B;AAC/B,2CAAyB;AACzB,0CAAwB;AACxB,+CAA6B;AAC7B,wDAAsC;AACtC,sDAAoC;AACpC,8CAA4B;AAC5B,0CAAwB;AACxB,mDAAiC;AACjC,8CAA4B"}
@@ -21,23 +21,15 @@ function findCircularDependencies(nodes) {
21
21
  visited.add(node.id);
22
22
  stack.add(node.id);
23
23
  path.push(node.id);
24
- if (node.dependencies && typeof node.dependencies === "object") {
25
- for (const [depKey, dependentNode] of Object.entries(node.dependencies)) {
26
- if (!dependentNode) {
27
- result.missingDependencies.push({
28
- nodeId: node.id,
29
- dependencyId: depKey,
30
- });
31
- continue;
32
- }
33
- dfs(dependentNode);
24
+ for (const [depKey, dependentNode] of Object.entries(node.dependencies)) {
25
+ if (!dependentNode) {
26
+ result.missingDependencies.push({
27
+ nodeId: node.id,
28
+ dependencyId: depKey,
29
+ });
30
+ continue;
34
31
  }
35
- }
36
- else {
37
- result.missingDependencies.push({
38
- nodeId: node.id,
39
- dependencyId: "unknown",
40
- });
32
+ dfs(dependentNode);
41
33
  }
42
34
  stack.delete(node.id);
43
35
  path.pop();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findCircularDependencies.js","sourceRoot":"","sources":["../../../src/models/utils/findCircularDependencies.ts"],"names":[],"mappings":";;AAaA,4DAgDC;AAhDD,SAAgB,wBAAwB,CACtC,KAAuB;IAEvB,MAAM,MAAM,GAAmC;QAC7C,MAAM,EAAE,EAAE;QACV,mBAAmB,EAAE,EAAE;KACxB,CAAC;IACF,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,MAAM,KAAK,GAAgB,IAAI,GAAG,EAAE,CAAC;IACrC,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,SAAS,GAAG,CAAC,IAAoB;QAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO;QAEjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnB,KAAK,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAC9B,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,YAAY,EAAE,MAAM;iBACrB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,GAAG,CAAC,aAAa,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,0BAA0B;IAC9E,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function safeStringify(value: unknown, space?: number, options?: {
2
+ maxDepth?: number;
3
+ }): string;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.safeStringify = safeStringify;
4
+ function safeStringify(value, space, options) {
5
+ const seen = new WeakSet();
6
+ const holderDepth = new WeakMap();
7
+ const maxDepth = typeof options?.maxDepth === "number" ? options.maxDepth : Infinity;
8
+ const replacer = function (_key, val) {
9
+ // Normalize functions to a readable placeholder
10
+ if (typeof val === "function") {
11
+ return "function()";
12
+ }
13
+ // Normalize BigInt safely
14
+ if (typeof val === "bigint") {
15
+ return val.toString();
16
+ }
17
+ // Compute the depth of the current value based on its holder (this)
18
+ const holderObject = Object(this);
19
+ const parentDepth = holderDepth.get(holderObject) || 0;
20
+ const currentDepth = parentDepth + 1;
21
+ if (typeof val === "object" && val !== null) {
22
+ if (seen.has(val))
23
+ return "[Circular]";
24
+ // Apply depth limiting beyond the configured depth
25
+ if (currentDepth > maxDepth) {
26
+ return Array.isArray(val) ? "[Array]" : "[Object]";
27
+ }
28
+ seen.add(val);
29
+ holderDepth.set(val, currentDepth);
30
+ }
31
+ return val;
32
+ };
33
+ try {
34
+ return JSON.stringify(value, replacer, space);
35
+ }
36
+ catch {
37
+ try {
38
+ return String(value);
39
+ }
40
+ catch {
41
+ return "[Unserializable]";
42
+ }
43
+ }
44
+ }
45
+ //# sourceMappingURL=safeStringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeStringify.js","sourceRoot":"","sources":["../../../src/models/utils/safeStringify.ts"],"names":[],"mappings":";;AAAA,sCAkDC;AAlDD,SAAgB,aAAa,CAC3B,KAAc,EACd,KAAc,EACd,OAA+B;IAE/B,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,OAAO,EAAkB,CAAC;IAElD,MAAM,QAAQ,GACZ,OAAO,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAQ,CAAC,QAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAExE,MAAM,QAAQ,GAAG,UAAqB,IAAY,EAAE,GAAQ;QAC1D,gDAAgD;QAChD,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,0BAA0B;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QAED,oEAAoE;QACpE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,YAAsB,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,CAAC;QAErC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;YAEvC,mDAAmD;YACnD,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAgD,CAAC;IAEjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,kBAAkB,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function registerProcessLevelSafetyNets(handler: (error: unknown, source: "uncaughtException" | "unhandledRejection") => void | Promise<void>): () => void;
2
+ export declare function registerShutdownHook(disposeOnce: () => Promise<void>): () => void;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerProcessLevelSafetyNets = registerProcessLevelSafetyNets;
4
+ exports.registerShutdownHook = registerShutdownHook;
5
+ // Global registry of active error handlers for process-level safety nets
6
+ const activeErrorHandlers = new Set();
7
+ let processSafetyNetsInstalled = false;
8
+ function installGlobalProcessSafetyNetsOnce() {
9
+ if (processSafetyNetsInstalled)
10
+ return;
11
+ processSafetyNetsInstalled = true;
12
+ const onUncaughtException = async (err) => {
13
+ for (const handler of activeErrorHandlers) {
14
+ try {
15
+ await handler(err, "uncaughtException");
16
+ }
17
+ catch (_) { }
18
+ }
19
+ };
20
+ const onUnhandledRejection = async (reason) => {
21
+ for (const handler of activeErrorHandlers) {
22
+ try {
23
+ await handler(reason, "unhandledRejection");
24
+ }
25
+ catch (_) { }
26
+ }
27
+ };
28
+ process.on("uncaughtException", onUncaughtException);
29
+ process.on("unhandledRejection", onUnhandledRejection);
30
+ }
31
+ function registerProcessLevelSafetyNets(handler) {
32
+ installGlobalProcessSafetyNetsOnce();
33
+ activeErrorHandlers.add(handler);
34
+ return () => {
35
+ activeErrorHandlers.delete(handler);
36
+ };
37
+ }
38
+ // Global shutdown registry: one listener per signal, dispatching to active disposers
39
+ const activeDisposers = new Set();
40
+ let shutdownHooksInstalled = false;
41
+ function installGlobalShutdownHooksOnce() {
42
+ if (shutdownHooksInstalled)
43
+ return;
44
+ shutdownHooksInstalled = true;
45
+ const handler = async (signal) => {
46
+ try {
47
+ const disposers = Array.from(activeDisposers);
48
+ for (const d of disposers) {
49
+ try {
50
+ await d();
51
+ }
52
+ catch { }
53
+ activeDisposers.delete(d);
54
+ }
55
+ }
56
+ finally {
57
+ process.exit(0);
58
+ }
59
+ };
60
+ process.on("SIGINT", handler);
61
+ process.on("SIGTERM", handler);
62
+ }
63
+ function registerShutdownHook(disposeOnce) {
64
+ installGlobalShutdownHooksOnce();
65
+ activeDisposers.add(disposeOnce);
66
+ return () => {
67
+ activeDisposers.delete(disposeOnce);
68
+ };
69
+ }
70
+ //# sourceMappingURL=processHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processHooks.js","sourceRoot":"","sources":["../src/processHooks.ts"],"names":[],"mappings":";;AAgCA,wEAWC;AA0BD,oDAMC;AAzED,yEAAyE;AACzE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAKhC,CAAC;AACJ,IAAI,0BAA0B,GAAG,KAAK,CAAC;AAEvC,SAAS,kCAAkC;IACzC,IAAI,0BAA0B;QAAE,OAAO;IACvC,0BAA0B,GAAG,IAAI,CAAC;IAClC,MAAM,mBAAmB,GAAG,KAAK,EAAE,GAAQ,EAAE,EAAE;QAC7C,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,oBAAoB,GAAG,KAAK,EAAE,MAAW,EAAE,EAAE;QACjD,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,mBAA0B,CAAC,CAAC;IAC5D,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,oBAA2B,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,8BAA8B,CAC5C,OAGyB;IAEzB,kCAAkC,EAAE,CAAC;IACrC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,GAAG,EAAE;QACV,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuB,CAAC;AACvD,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,SAAS,8BAA8B;IACrC,IAAI,sBAAsB;QAAE,OAAO;IACnC,sBAAsB,GAAG,IAAI,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,EAAE,MAAsB,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,CAAC,EAAE,CAAC;gBACZ,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACV,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAgC;IACnE,8BAA8B,EAAE,CAAC;IACjC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjC,OAAO,GAAG,EAAE;QACV,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
package/dist/run.d.ts CHANGED
@@ -1,27 +1,14 @@
1
- import { DependencyMapType, ITaskDefinition, IResourceDefinition, IEventDefinition, IMiddlewareDefinition, DependencyValuesType, IResource } from "./defs";
2
- export type ResourcesStoreElementType<C = any, V extends Promise<any> = any, D extends DependencyMapType = {}> = {
3
- resource: IResourceDefinition<C, V, D>;
4
- computedDependencies?: DependencyValuesType<D>;
5
- config: C;
6
- value: V;
7
- };
8
- export type TasksStoreElementType<Input = any, Output extends Promise<any> = any, D extends DependencyMapType = {}> = {
9
- task: ITaskDefinition<Input, Output, D>;
10
- computedDependencies?: DependencyValuesType<D>;
11
- };
12
- export type MiddlewareStoreElementType = {
13
- middleware: IMiddlewareDefinition;
14
- };
15
- export type EventStoreElementType = {
16
- event: IEventDefinition;
17
- };
18
- export type RunnerState = {
19
- tasks: Record<string, TasksStoreElementType>;
20
- resources: Record<string, ResourcesStoreElementType>;
21
- events: Record<string, EventStoreElementType>;
22
- middleware: Record<string, MiddlewareStoreElementType>;
23
- };
24
- export declare function run<C, V>(resource: IResource<C, V extends Promise<any> ? V : Promise<any>>, config?: C): Promise<{
25
- value: V extends Promise<infer U> ? U : V;
26
- dispose: () => Promise<void>;
27
- }>;
1
+ import { IResource, IResourceWithConfig } from "./defs";
2
+ import { RunResult } from "./models/RunResult";
3
+ import { RunOptions } from "./types/runner";
4
+ /**
5
+ * This is the central function that kicks off you runner. You can run as many resources as you want in a single process, they will run in complete isolation.
6
+ *
7
+ * @param resourceOrResourceWithConfig - The resource or resource with config to run.
8
+ * @param options - The options for the run.
9
+ * @returns A promise that resolves to the result of the run.
10
+ */
11
+ export declare function run<C, V extends Promise<any>>(resourceOrResourceWithConfig: IResourceWithConfig<C, V> | IResource<void, V, any, any> | IResource<{
12
+ [K in any]?: any;
13
+ }, V, any, any>, // For optional config
14
+ options?: RunOptions): Promise<RunResult<V extends Promise<infer U> ? U : V>>;
package/dist/run.js CHANGED
@@ -6,47 +6,111 @@ const DependencyProcessor_1 = require("./models/DependencyProcessor");
6
6
  const EventManager_1 = require("./models/EventManager");
7
7
  const globalEvents_1 = require("./globals/globalEvents");
8
8
  const Store_1 = require("./models/Store");
9
- const findCircularDependencies_1 = require("./tools/findCircularDependencies");
10
- const errors_1 = require("./errors");
11
- const globalResources_1 = require("./globals/globalResources");
12
9
  const Logger_1 = require("./models/Logger");
13
- async function run(resource, config) {
10
+ const define_1 = require("./define");
11
+ const debug_1 = require("./globals/resources/debug");
12
+ const processHooks_1 = require("./processHooks");
13
+ const UnhandledError_1 = require("./models/UnhandledError");
14
+ const RunResult_1 = require("./models/RunResult");
15
+ /**
16
+ * This is the central function that kicks off you runner. You can run as many resources as you want in a single process, they will run in complete isolation.
17
+ *
18
+ * @param resourceOrResourceWithConfig - The resource or resource with config to run.
19
+ * @param options - The options for the run.
20
+ * @returns A promise that resolves to the result of the run.
21
+ */
22
+ async function run(resourceOrResourceWithConfig, // For optional config
23
+ options) {
24
+ const { debug = undefined, logs = {}, errorBoundary = true, shutdownHooks = true, onUnhandledError: onUnhandledErrorOpt, } = options || {};
25
+ const { printThreshold = process.env.NODE_ENV === "test" ? null : "info", printStrategy = "pretty", bufferLogs = false, } = logs;
14
26
  const eventManager = new EventManager_1.EventManager();
27
+ let { resource, config } = extractResourceAndConfig(resourceOrResourceWithConfig);
15
28
  // ensure for logger, that it can be used only after: computeAllDependencies() has executed
16
- const logger = new Logger_1.Logger(eventManager);
17
- const store = new Store_1.Store(eventManager, logger);
29
+ const logger = new Logger_1.Logger({
30
+ printThreshold,
31
+ printStrategy,
32
+ bufferLogs,
33
+ });
34
+ const onUnhandledError = onUnhandledErrorOpt || (0, UnhandledError_1.createDefaultUnhandledError)(logger);
35
+ const store = new Store_1.Store(eventManager, logger, onUnhandledError);
18
36
  const taskRunner = new TaskRunner_1.TaskRunner(store, eventManager, logger);
19
- const processor = new DependencyProcessor_1.DependencyProcessor(store, eventManager, taskRunner, logger);
20
- // In the registration phase we register deeply all the resources, tasks, middleware and events
21
- store.initializeStore(resource, config);
22
- store.storeGenericItem(globalResources_1.globalResources.logger.with(logger));
23
- store.storeGenericItem(globalResources_1.globalResources.taskRunner.with(taskRunner));
24
- // We verify that there isn't any circular dependencies before we begin computing the dependencies
25
- const dependentNodes = store.getDependentNodes();
26
- const circularDependencies = (0, findCircularDependencies_1.findCircularDependencies)(dependentNodes);
27
- if (circularDependencies.cycles.length > 0) {
28
- throw new errors_1.CircularDependenciesError(circularDependencies.cycles);
37
+ store.setTaskRunner(taskRunner);
38
+ // Register this run's event manager for global process error safety nets
39
+ let unhookProcessSafetyNets;
40
+ if (errorBoundary) {
41
+ unhookProcessSafetyNets = (0, processHooks_1.registerProcessLevelSafetyNets)((0, UnhandledError_1.bindProcessErrorHandler)(onUnhandledError));
29
42
  }
30
- // the overrides that were registered now will override the other registered resources
31
- await store.processOverrides();
32
- // a form of hooking, we create the events for all tasks and store them so they can be referenced
33
- await store.storeEventsForAllTasks();
34
- await processor.attachListeners();
35
- await processor.computeAllDependencies();
36
- // After this stage, logger print policy could have been set.
37
- await logger.debug("All elements have been initalized..");
38
- // Now we can safely compute dependencies without being afraid of an infinite loop.
39
- // The hooking part is done here.
40
- await eventManager.emit(globalEvents_1.globalEvents.beforeInit, null, resource.id);
41
- // Now we can initialise the root resource
42
- await processor.initializeRoot();
43
- await eventManager.emit(globalEvents_1.globalEvents.afterInit, null, resource.id);
44
- await logger.debug("System initialized and operational.");
45
- // disallow manipulation or attaching more
46
- store.lock();
47
- return {
48
- value: store.root.value,
49
- dispose: () => store.dispose(),
43
+ const processor = new DependencyProcessor_1.DependencyProcessor(store, eventManager, taskRunner, logger);
44
+ // We may install shutdown hooks; capture unhook function to remove them on dispose
45
+ let unhookShutdown;
46
+ // Helper dispose that always unhooks process listeners first
47
+ const disposeAll = async () => {
48
+ try {
49
+ if (unhookProcessSafetyNets) {
50
+ unhookProcessSafetyNets();
51
+ unhookProcessSafetyNets = undefined;
52
+ }
53
+ if (unhookShutdown) {
54
+ unhookShutdown();
55
+ unhookShutdown = undefined;
56
+ }
57
+ }
58
+ finally {
59
+ await store.dispose();
60
+ }
50
61
  };
62
+ try {
63
+ if (debug) {
64
+ store.storeGenericItem(debug_1.debugResource.with(debug));
65
+ }
66
+ // In the registration phase we register deeply all the resources, tasks, middleware and events
67
+ store.initializeStore(resource, config);
68
+ // the overrides that were registered now will override the other registered resources
69
+ await store.processOverrides();
70
+ store.validateDependencyGraph();
71
+ // a form of hooking, we create the events for all tasks and store them so they can be referenced
72
+ await store.storeEventsForAllTRM();
73
+ await logger.debug("Events stored. Attaching listeners...");
74
+ await processor.attachListeners();
75
+ await logger.debug("Listeners attached. Computing dependencies...");
76
+ await processor.computeAllDependencies();
77
+ // After this stage, logger print policy could have been set.
78
+ await logger.debug("Dependencies computed. Proceeding with initialization...");
79
+ // Now we can safely compute dependencies without being afraid of an infinite loop.
80
+ // The hooking part is done here.
81
+ // Now we can initialise the root resource
82
+ await processor.initializeRoot();
83
+ // disallow manipulation or attaching more
84
+ store.lock();
85
+ eventManager.lock();
86
+ await logger.lock();
87
+ await eventManager.emit(globalEvents_1.globalEvents.ready, {
88
+ root: store.root.resource,
89
+ }, "system");
90
+ await logger.info("Runner online. Awaiting tasks and events.");
91
+ if (shutdownHooks) {
92
+ unhookShutdown = (0, processHooks_1.registerShutdownHook)(() => store.dispose());
93
+ }
94
+ return new RunResult_1.RunResult(store.root.value, logger, store, eventManager, taskRunner, disposeAll);
95
+ }
96
+ catch (err) {
97
+ // Rollback initialized resources
98
+ await disposeAll();
99
+ throw err;
100
+ }
101
+ }
102
+ // process hooks moved to processHooks.ts for clarity
103
+ function extractResourceAndConfig(resourceOrResourceWithConfig) {
104
+ let resource;
105
+ let config;
106
+ if ((0, define_1.isResourceWithConfig)(resourceOrResourceWithConfig)) {
107
+ resource = resourceOrResourceWithConfig.resource;
108
+ config = resourceOrResourceWithConfig.config;
109
+ }
110
+ else {
111
+ resource = resourceOrResourceWithConfig;
112
+ config = undefined;
113
+ }
114
+ return { resource, config };
51
115
  }
52
116
  //# sourceMappingURL=run.js.map
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;AAsDA,kBA6DC;AAnHD,oDAAiD;AAUjD,sEAAmE;AACnE,wDAAqD;AACrD,yDAAsD;AACtD,0CAAuC;AACvC,+EAA4E;AAC5E,qCAAqD;AACrD,+DAA4D;AAC5D,4CAAyC;AAqClC,KAAK,UAAU,GAAG,CACvB,QAAiE,EACjE,MAAU;IAKV,MAAM,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;IAExC,2FAA2F;IAC3F,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,YAAY,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,yCAAmB,CACvC,KAAK,EACL,YAAY,EACZ,UAAU,EACV,MAAM,CACP,CAAC;IAEF,+FAA+F;IAC/F,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,gBAAgB,CAAC,iCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,KAAK,CAAC,gBAAgB,CAAC,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpE,kGAAkG;IAClG,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjD,MAAM,oBAAoB,GAAG,IAAA,mDAAwB,EAAC,cAAc,CAAC,CAAC;IACtE,IAAI,oBAAoB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,kCAAyB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,sFAAsF;IACtF,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAE/B,iGAAiG;IACjG,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;IACrC,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;IAClC,MAAM,SAAS,CAAC,sBAAsB,EAAE,CAAC;IAEzC,6DAA6D;IAC7D,MAAM,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAE1D,mFAAmF;IACnF,iCAAiC;IACjC,MAAM,YAAY,CAAC,IAAI,CAAC,2BAAY,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpE,0CAA0C;IAC1C,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;IAEjC,MAAM,YAAY,CAAC,IAAI,CAAC,2BAAY,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,CAAC;IAEb,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;QACvB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;KAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}