@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,4 +1,4 @@
1
- import { DependencyMapType, DependencyValuesType, IResource } from "../defs";
1
+ import { DependencyMapType, IResource, ResourceDependencyValuesType } from "../defs";
2
2
  import { EventManager } from "./EventManager";
3
3
  import { Store } from "./Store";
4
4
  import { Logger } from "./Logger";
@@ -7,13 +7,14 @@ export declare class ResourceInitializer {
7
7
  protected readonly eventManager: EventManager;
8
8
  protected readonly logger: Logger;
9
9
  constructor(store: Store, eventManager: EventManager, logger: Logger);
10
+ private readonly middlewareManager;
10
11
  /**
11
12
  * 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.
12
13
  * This function can throw only if any of the event listeners or run function throws
13
14
  */
14
- initializeResource<TConfig = null, TValue extends Promise<any> = Promise<any>, TDeps extends DependencyMapType = {}, TContext = any>(resource: IResource<TConfig, TValue, TDeps>, config: TConfig, dependencies: DependencyValuesType<TDeps>): Promise<{
15
+ initializeResource<TConfig = null, TValue extends Promise<any> = Promise<any>, TDeps extends DependencyMapType = {}, TContext = any>(resource: IResource<TConfig, TValue, TDeps>, config: TConfig, dependencies: ResourceDependencyValuesType<TDeps>): Promise<{
15
16
  value: TValue;
16
17
  context: TContext;
17
18
  }>;
18
- initWithMiddleware<C, V extends Promise<any>, D extends DependencyMapType, TContext>(resource: IResource<C, V, D, TContext>, config: C, dependencies: DependencyValuesType<D>, context: TContext): Promise<V | undefined>;
19
+ initWithMiddleware<C, V extends Promise<any>, D extends DependencyMapType, TContext>(resource: IResource<C, V, D, TContext>, config: C, dependencies: ResourceDependencyValuesType<D>, context: TContext): Promise<V | undefined>;
19
20
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ResourceInitializer = void 0;
4
- const globalEvents_1 = require("../globals/globalEvents");
4
+ const MiddlewareManager_1 = require("./MiddlewareManager");
5
5
  class ResourceInitializer {
6
6
  store;
7
7
  eventManager;
@@ -10,84 +10,28 @@ class ResourceInitializer {
10
10
  this.store = store;
11
11
  this.eventManager = eventManager;
12
12
  this.logger = logger;
13
+ this.middlewareManager = new MiddlewareManager_1.MiddlewareManager(this.store, this.eventManager, this.logger);
13
14
  }
15
+ middlewareManager;
14
16
  /**
15
17
  * 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.
16
18
  * This function can throw only if any of the event listeners or run function throws
17
19
  */
18
20
  async initializeResource(resource, config, dependencies) {
19
21
  const context = resource.context?.();
20
- await this.eventManager.emit(globalEvents_1.globalEvents.resources.beforeInit, {
21
- config,
22
- resource,
23
- }, resource.id);
24
- await this.eventManager.emit(resource.events.beforeInit, { config }, resource.id);
25
- let error, value;
26
- try {
27
- if (resource.init) {
28
- value = await this.initWithMiddleware(resource, config, dependencies, context);
29
- }
30
- await this.eventManager.emit(resource.events.afterInit, {
31
- config,
32
- value: value,
33
- }, resource.id);
34
- await this.eventManager.emit(globalEvents_1.globalEvents.resources.afterInit, {
35
- config,
36
- resource,
37
- value: value,
38
- }, resource.id);
39
- this.logger.debug(`Resource ${resource.id.toString()} initialized`, {
40
- source: resource.id,
41
- });
42
- return { value: value, context };
22
+ let value;
23
+ // Create a no-op init function if it doesn't exist
24
+ if (!resource.init) {
25
+ resource.init = (async () => undefined);
43
26
  }
44
- catch (e) {
45
- error = e;
46
- let isSuppressed = false;
47
- function suppress() {
48
- isSuppressed = true;
49
- }
50
- // If you want to rewthrow the error, this should be done inside the onError event.
51
- await this.eventManager.emit(resource.events.onError, {
52
- error: error,
53
- suppress,
54
- }, resource.id);
55
- await this.eventManager.emit(globalEvents_1.globalEvents.resources.onError, {
56
- error: error,
57
- resource,
58
- suppress,
59
- }, resource.id);
60
- if (!isSuppressed)
61
- throw e;
62
- return { value: undefined, context: {} };
27
+ if (resource.init) {
28
+ value = await this.initWithMiddleware(resource, config, dependencies, context);
63
29
  }
30
+ return { value: value, context };
64
31
  }
32
+ // Lifecycle emissions removed
65
33
  async initWithMiddleware(resource, config, dependencies, context) {
66
- let next = async (config) => {
67
- if (resource.init) {
68
- return resource.init.call(null, config, dependencies, context);
69
- }
70
- };
71
- const existingMiddlewares = resource.middleware;
72
- const createdMiddlewares = [
73
- ...this.store.getEverywhereMiddlewareForResources(existingMiddlewares.map((x) => x.id)),
74
- ...existingMiddlewares,
75
- ];
76
- for (let i = createdMiddlewares.length - 1; i >= 0; i--) {
77
- const middleware = createdMiddlewares[i];
78
- const storeMiddleware = this.store.middlewares.get(middleware.id); // we know it exists because at this stage all sanity checks have been done.
79
- const nextFunction = next;
80
- next = async (config) => {
81
- return storeMiddleware.middleware.run({
82
- resource: {
83
- definition: resource,
84
- config,
85
- },
86
- next: nextFunction,
87
- }, storeMiddleware.computedDependencies, middleware.config);
88
- };
89
- }
90
- return next(config);
34
+ return this.middlewareManager.runResourceInit(resource, config, dependencies, context);
91
35
  }
92
36
  }
93
37
  exports.ResourceInitializer = ResourceInitializer;
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceInitializer.js","sourceRoot":"","sources":["../../src/models/ResourceInitializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResourceInitializer.js","sourceRoot":"","sources":["../../src/models/ResourceInitializer.ts"],"names":[],"mappings":";;;AASA,2DAAwD;AAExD,MAAa,mBAAmB;IAET;IACA;IACA;IAHrB,YACqB,KAAY,EACZ,YAA0B,EAC1B,MAAc;QAFd,UAAK,GAAL,KAAK,CAAO;QACZ,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QAEjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,qCAAiB,CAC5C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAEgB,iBAAiB,CAAoB;IAEtD;;;OAGG;IACI,KAAK,CAAC,kBAAkB,CAM7B,QAA2C,EAC3C,MAAe,EACf,YAAiD;QAEjD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAErC,IAAI,KAAyB,CAAC;QAC9B,mDAAmD;QACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAQ,CAAC;QACjD,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACnC,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,OAAO,CACR,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED,8BAA8B;IAEvB,KAAK,CAAC,kBAAkB,CAM7B,QAAsC,EACtC,MAAS,EACT,YAA6C,EAC7C,OAAiB;QAEjB,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAC3C,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,OAAO,CACR,CAAC;IACJ,CAAC;CACF;AArED,kDAqEC"}
@@ -0,0 +1,35 @@
1
+ import { DependencyMapType, IEvent, ITask } from "../defs";
2
+ import { IResource } from "../defs";
3
+ import { EventManager } from "./EventManager";
4
+ import { Logger } from "./Logger";
5
+ import { Store } from "./Store";
6
+ import { TaskRunner } from "./TaskRunner";
7
+ export declare class RunResult<V> {
8
+ readonly value: V;
9
+ readonly logger: Logger;
10
+ readonly store: Store;
11
+ private readonly eventManager;
12
+ private readonly taskRunner;
13
+ private readonly disposeFn;
14
+ constructor(value: V, logger: Logger, store: Store, eventManager: EventManager, taskRunner: TaskRunner, disposeFn: () => Promise<void>);
15
+ /**
16
+ * Run a task within the context of the run result.
17
+ * @param task - The task to run.
18
+ * @param args - The arguments to pass to the task.
19
+ * @returns The result of the task.
20
+ */
21
+ runTask: <I = undefined, O extends Promise<any> = any, D extends DependencyMapType = any>(task: ITask<I, O, D> | string, ...args: I extends undefined | void ? [] : [I]) => Promise<O | undefined>;
22
+ /**
23
+ * Emit an event within the context of the run result.
24
+ * @param event - The event to emit.
25
+ * @param payload - The payload to emit.
26
+ */
27
+ emitEvent: <P>(event: IEvent<P> | string, payload?: P extends undefined | void ? undefined : P) => Promise<void>;
28
+ /**
29
+ * Get the value of a resource from the run result.
30
+ * @param resource - The resource to get the value of.
31
+ * @returns The value of the resource.
32
+ */
33
+ getResourceValue: <Output extends Promise<any>>(resource: string | IResource<any, Output, any, any, any>) => Output extends Promise<infer U> ? U : Output;
34
+ dispose: () => Promise<void>;
35
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RunResult = void 0;
4
+ const errors_1 = require("../errors");
5
+ class RunResult {
6
+ value;
7
+ logger;
8
+ store;
9
+ eventManager;
10
+ taskRunner;
11
+ disposeFn;
12
+ constructor(value, logger, store, eventManager, taskRunner, disposeFn) {
13
+ this.value = value;
14
+ this.logger = logger;
15
+ this.store = store;
16
+ this.eventManager = eventManager;
17
+ this.taskRunner = taskRunner;
18
+ this.disposeFn = disposeFn;
19
+ }
20
+ /**
21
+ * Run a task within the context of the run result.
22
+ * @param task - The task to run.
23
+ * @param args - The arguments to pass to the task.
24
+ * @returns The result of the task.
25
+ */
26
+ runTask = (task, ...args) => {
27
+ if (typeof task === "string") {
28
+ const taskId = task;
29
+ if (!this.store.tasks.has(taskId)) {
30
+ throw new errors_1.RuntimeError(`Task "${taskId}" not found.`);
31
+ }
32
+ task = this.store.tasks.get(taskId).task;
33
+ }
34
+ return this.taskRunner.run(task, ...args);
35
+ };
36
+ /**
37
+ * Emit an event within the context of the run result.
38
+ * @param event - The event to emit.
39
+ * @param payload - The payload to emit.
40
+ */
41
+ emitEvent = (event, payload) => {
42
+ if (typeof event === "string") {
43
+ const eventId = event;
44
+ if (!this.store.events.has(eventId)) {
45
+ throw new errors_1.RuntimeError(`Event "${eventId}" not found.`);
46
+ }
47
+ event = this.store.events.get(eventId).event;
48
+ }
49
+ return this.eventManager.emit(event, payload, "outside");
50
+ };
51
+ /**
52
+ * Get the value of a resource from the run result.
53
+ * @param resource - The resource to get the value of.
54
+ * @returns The value of the resource.
55
+ */
56
+ getResourceValue = (resource) => {
57
+ const resourceId = typeof resource === "string" ? resource : resource.id;
58
+ if (!this.store.resources.has(resourceId)) {
59
+ throw new errors_1.ResourceNotFoundError(resourceId);
60
+ }
61
+ return this.store.resources.get(resourceId).value;
62
+ };
63
+ dispose = () => {
64
+ return this.disposeFn();
65
+ };
66
+ }
67
+ exports.RunResult = RunResult;
68
+ //# sourceMappingURL=RunResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunResult.js","sourceRoot":"","sources":["../../src/models/RunResult.ts"],"names":[],"mappings":";;;AAEA,sCAAgE;AAOhE,MAAa,SAAS;IAEF;IACA;IACA;IACC;IACA;IACA;IANnB,YACkB,KAAQ,EACR,MAAc,EACd,KAAY,EACX,YAA0B,EAC1B,UAAsB,EACtB,SAA8B;QAL/B,UAAK,GAAL,KAAK,CAAG;QACR,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAO;QACX,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAqB;IAC9C,CAAC;IAEJ;;;;;OAKG;IACI,OAAO,GAAG,CAKf,IAA6B,EAC7B,GAAG,IAA2C,EAC9C,EAAE;QACF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,qBAAY,CAAC,SAAS,MAAM,cAAc,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF;;;;OAIG;IACI,SAAS,GAAG,CACjB,KAAyB,EACzB,OAAoD,EACpD,EAAE;QACF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,qBAAY,CAAC,UAAU,OAAO,cAAc,CAAC,CAAC;YAC1D,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF;;;;OAIG;IACI,gBAAgB,GAAG,CACxB,QAAwD,EACV,EAAE;QAChD,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,8BAAqB,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,KAAK,CAAC;IACrD,CAAC,CAAC;IAEK,OAAO,GAAG,GAAG,EAAE;QACpB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC,CAAC;CACH;AAzED,8BAyEC"}
@@ -1,9 +1,11 @@
1
- import { IResource, RegisterableItems, IMiddleware, ITag } from "../defs";
2
- import { IDependentNode } from "../tools/findCircularDependencies";
1
+ import { IResource, ITask, RegisterableItems, ITaskMiddleware, IResourceMiddleware, ITag } from "../defs";
3
2
  import { EventManager } from "./EventManager";
4
3
  import { Logger } from "./Logger";
5
- import { ResourceStoreElementType, TaskStoreElementType, MiddlewareStoreElementType, EventStoreElementType } from "./StoreTypes";
6
- export { ResourceStoreElementType, TaskStoreElementType, MiddlewareStoreElementType, EventStoreElementType, };
4
+ import { ResourceStoreElementType, TaskStoreElementType, TaskMiddlewareStoreElementType, ResourceMiddlewareStoreElementType, EventStoreElementType } from "../types/storeTypes";
5
+ import { TaskRunner } from "./TaskRunner";
6
+ import { OnUnhandledError } from "./UnhandledError";
7
+ import { MiddlewareManager } from "./MiddlewareManager";
8
+ export { ResourceStoreElementType, TaskStoreElementType, EventStoreElementType, };
7
9
  /**
8
10
  * Store class which is used to store all the resources, tasks, middleware and events.
9
11
  */
@@ -11,33 +13,44 @@ export declare class Store {
11
13
  #private;
12
14
  protected readonly eventManager: EventManager;
13
15
  protected readonly logger: Logger;
16
+ readonly onUnhandledError: OnUnhandledError;
14
17
  root: ResourceStoreElementType;
15
18
  private registry;
16
19
  private overrideManager;
17
20
  private validator;
18
- constructor(eventManager: EventManager, logger: Logger);
19
- get tasks(): Map<string | symbol, TaskStoreElementType>;
20
- get resources(): Map<string | symbol, ResourceStoreElementType>;
21
- get events(): Map<string | symbol, EventStoreElementType>;
22
- get middlewares(): Map<string | symbol, MiddlewareStoreElementType>;
23
- get overrides(): Map<string | symbol, import("../defs").IResourceWithConfig<any, Promise<any>, any> | IResource<void, Promise<any>, any, any, any> | import("../defs").ITask<any, any, {}, undefined, any> | IMiddleware<any, any>>;
21
+ private taskRunner?;
22
+ private middlewareManager;
23
+ constructor(eventManager: EventManager, logger: Logger, onUnhandledError: OnUnhandledError);
24
+ get tasks(): Map<string, TaskStoreElementType>;
25
+ get hooks(): Map<string, import("../defs").HookStoreElementType>;
26
+ get resources(): Map<string, ResourceStoreElementType>;
27
+ get events(): Map<string, EventStoreElementType>;
28
+ get taskMiddlewares(): Map<string, TaskMiddlewareStoreElementType>;
29
+ get resourceMiddlewares(): Map<string, ResourceMiddlewareStoreElementType>;
30
+ get tags(): Map<string, ITag<void, void, void>>;
31
+ get overrides(): Map<string, IResourceMiddleware<any, void, void, any> | ITask<any, any, {}, any, import("../defs").TagType[], import("../defs").TaskMiddlewareAttachmentType[]> | IResource<void, Promise<any>, any, any, any, import("../defs").TagType[], import("../defs").ResourceMiddlewareAttachmentType[]> | ITaskMiddleware<any, void, void, any> | import("../defs").IResourceWithConfig<any, Promise<any>, any, any, any, import("../defs").TagType[], IResourceMiddleware<any, void, void, any>[]> | import("../defs").IHook<{}, any, any>>;
24
32
  get overrideRequests(): Set<{
25
- source: string | symbol;
33
+ source: string;
26
34
  override: RegisterableItems;
27
35
  }>;
36
+ getMiddlewareManager(): MiddlewareManager;
28
37
  get isLocked(): boolean;
29
38
  lock(): void;
30
39
  checkLock(): void;
31
40
  private registerGlobalComponents;
41
+ setTaskRunner(taskRunner: TaskRunner): void;
32
42
  private setupRootResource;
43
+ validateDependencyGraph(): void;
33
44
  initializeStore(root: IResource<any, any, any, any, any>, config: any): void;
34
45
  dispose(): Promise<void>;
35
46
  processOverrides(): void;
36
- getEverywhereMiddlewareForTasks(excludingIds: Array<string | symbol>): IMiddleware[];
37
- getEverywhereMiddlewareForResources(excludingIds: Array<string | symbol>): IMiddleware[];
38
47
  storeGenericItem<C>(item: RegisterableItems): void;
39
- storeEventsForAllTasks(): void;
40
- getTasksWithTag(tag: string | ITag): TaskStoreElementType[] | import("../defs").ITask<any, any, any, any, any>[];
41
- getResourcesWithTag(tag: string | ITag): ResourceStoreElementType[] | IResource<any, any, {}, any, any>[];
42
- getDependentNodes(): IDependentNode[];
48
+ storeEventsForAllTRM(): void;
49
+ /**
50
+ * Returns all tasks with the given tag.
51
+ * @param tag - The tag to filter by.
52
+ * @returns The tasks with the given tag.
53
+ */
54
+ getTasksWithTag(tag: string | ITag): ITask<any, any, any, any, import("../defs").TagType[], import("../defs").TaskMiddlewareAttachmentType[]>[];
55
+ getResourcesWithTag(tag: string | ITag): IResource<any, any, {}, any, any, import("../defs").TagType[], import("../defs").ResourceMiddlewareAttachmentType[]>[];
43
56
  }
@@ -1,42 +1,62 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Store = void 0;
4
+ const findCircularDependencies_1 = require("./utils/findCircularDependencies");
4
5
  const globalEvents_1 = require("../globals/globalEvents");
5
6
  const errors_1 = require("../errors");
6
7
  const StoreRegistry_1 = require("./StoreRegistry");
7
8
  const OverrideManager_1 = require("./OverrideManager");
8
- const StoreConstants_1 = require("./StoreConstants");
9
+ const globalResources_1 = require("../globals/globalResources");
10
+ const requireContext_middleware_1 = require("../globals/middleware/requireContext.middleware");
11
+ const retry_middleware_1 = require("../globals/middleware/retry.middleware");
12
+ const timeout_middleware_1 = require("../globals/middleware/timeout.middleware");
13
+ const globalTags_1 = require("../globals/globalTags");
14
+ const MiddlewareManager_1 = require("./MiddlewareManager");
9
15
  /**
10
16
  * Store class which is used to store all the resources, tasks, middleware and events.
11
17
  */
12
18
  class Store {
13
19
  eventManager;
14
20
  logger;
21
+ onUnhandledError;
15
22
  root;
16
23
  registry;
17
24
  overrideManager;
18
25
  validator;
26
+ taskRunner;
27
+ middlewareManager;
19
28
  #isLocked = false;
20
29
  #isInitialized = false;
21
- constructor(eventManager, logger) {
30
+ constructor(eventManager, logger, onUnhandledError) {
22
31
  this.eventManager = eventManager;
23
32
  this.logger = logger;
24
- this.registry = new StoreRegistry_1.StoreRegistry();
33
+ this.onUnhandledError = onUnhandledError;
34
+ this.registry = new StoreRegistry_1.StoreRegistry(this);
25
35
  this.validator = this.registry.getValidator();
26
36
  this.overrideManager = new OverrideManager_1.OverrideManager(this.registry);
37
+ this.middlewareManager = new MiddlewareManager_1.MiddlewareManager(this, eventManager, logger);
27
38
  }
28
39
  // Delegate properties to registry
29
40
  get tasks() {
30
41
  return this.registry.tasks;
31
42
  }
43
+ get hooks() {
44
+ return this.registry.hooks;
45
+ }
32
46
  get resources() {
33
47
  return this.registry.resources;
34
48
  }
35
49
  get events() {
36
50
  return this.registry.events;
37
51
  }
38
- get middlewares() {
39
- return this.registry.middlewares;
52
+ get taskMiddlewares() {
53
+ return this.registry.taskMiddlewares;
54
+ }
55
+ get resourceMiddlewares() {
56
+ return this.registry.resourceMiddlewares;
57
+ }
58
+ get tags() {
59
+ return this.registry.tags;
40
60
  }
41
61
  get overrides() {
42
62
  return this.overrideManager.overrides;
@@ -44,12 +64,16 @@ class Store {
44
64
  get overrideRequests() {
45
65
  return this.overrideManager.overrideRequests;
46
66
  }
67
+ // Expose the shared MiddlewareManager instance so other components (like TaskRunner)
68
+ // can compose runners using the same interceptor configuration.
69
+ getMiddlewareManager() {
70
+ return this.middlewareManager;
71
+ }
47
72
  get isLocked() {
48
73
  return this.#isLocked;
49
74
  }
50
75
  lock() {
51
76
  this.#isLocked = true;
52
- this.eventManager.lock();
53
77
  }
54
78
  checkLock() {
55
79
  if (this.#isLocked) {
@@ -57,23 +81,57 @@ class Store {
57
81
  }
58
82
  }
59
83
  registerGlobalComponents() {
60
- // Register built-in resources
61
- const builtInResources = (0, StoreConstants_1.getBuiltInResources)(this.eventManager, this);
62
- builtInResources.forEach((resource) => {
84
+ const builtInResourcesMap = new Map();
85
+ builtInResourcesMap.set(globalResources_1.globalResources.store, this);
86
+ builtInResourcesMap.set(globalResources_1.globalResources.eventManager, this.eventManager);
87
+ builtInResourcesMap.set(globalResources_1.globalResources.logger, this.logger);
88
+ builtInResourcesMap.set(globalResources_1.globalResources.taskRunner, this.taskRunner);
89
+ builtInResourcesMap.set(globalResources_1.globalResources.middlewareManager, this.middlewareManager);
90
+ this.registry.storeGenericItem(globalResources_1.globalResources.queue);
91
+ for (const [resource, value] of builtInResourcesMap.entries()) {
63
92
  this.registry.storeGenericItem(resource);
93
+ const entry = this.resources.get(resource.id);
94
+ if (entry) {
95
+ entry.value = value;
96
+ entry.isInitialized = true;
97
+ }
98
+ }
99
+ // Register global tags
100
+ Object.values(globalTags_1.globalTags).forEach((tag) => {
101
+ this.registry.storeTag(tag);
64
102
  });
65
103
  // Register global events
66
104
  globalEvents_1.globalEventsArray.forEach((event) => {
67
105
  this.registry.storeEvent(event);
68
106
  });
69
107
  // Register built-in middlewares
70
- const builtInMiddlewares = (0, StoreConstants_1.getBuiltInMiddlewares)();
71
- builtInMiddlewares.forEach((middleware) => {
72
- this.registry.middlewares.set(middleware.id, {
73
- middleware,
108
+ // Built-in middlewares currently target tasks only; adjust as needed per kind
109
+ const builtInTaskMiddlewares = [
110
+ requireContext_middleware_1.requireContextTaskMiddleware,
111
+ retry_middleware_1.retryTaskMiddleware,
112
+ timeout_middleware_1.timeoutTaskMiddleware,
113
+ ];
114
+ builtInTaskMiddlewares.forEach((middleware) => {
115
+ this.registry.taskMiddlewares.set(middleware.id, {
116
+ middleware: middleware,
74
117
  computedDependencies: {},
118
+ isInitialized: false,
75
119
  });
76
120
  });
121
+ const builtInResourceMiddlewares = [
122
+ retry_middleware_1.retryResourceMiddleware,
123
+ timeout_middleware_1.timeoutResourceMiddleware,
124
+ ];
125
+ builtInResourceMiddlewares.forEach((middleware) => {
126
+ this.registry.resourceMiddlewares.set(middleware.id, {
127
+ middleware: middleware,
128
+ computedDependencies: {},
129
+ isInitialized: false,
130
+ });
131
+ });
132
+ }
133
+ setTaskRunner(taskRunner) {
134
+ this.taskRunner = taskRunner;
77
135
  }
78
136
  setupRootResource(root, config) {
79
137
  root.dependencies =
@@ -91,6 +149,14 @@ class Store {
91
149
  this.registry.computeRegistrationDeeply(root, config);
92
150
  this.registry.resources.set(root.id, this.root);
93
151
  }
152
+ validateDependencyGraph() {
153
+ // We verify that there isn't any circular dependencies before we begin computing the dependencies
154
+ const dependentNodes = this.registry.getDependentNodes();
155
+ const circularDependencies = (0, findCircularDependencies_1.findCircularDependencies)(dependentNodes);
156
+ if (circularDependencies.cycles.length > 0) {
157
+ throw new errors_1.CircularDependenciesError(circularDependencies.cycles);
158
+ }
159
+ }
94
160
  initializeStore(root, config) {
95
161
  if (this.#isInitialized) {
96
162
  throw new errors_1.StoreAlreadyInitializedError();
@@ -105,7 +171,7 @@ class Store {
105
171
  }
106
172
  async dispose() {
107
173
  for (const resource of this.resources.values()) {
108
- if (resource.resource.dispose) {
174
+ if (resource.isInitialized && resource.resource.dispose) {
109
175
  await resource.resource.dispose(resource.value, resource.config, resource.computedDependencies, resource.context);
110
176
  }
111
177
  }
@@ -113,27 +179,23 @@ class Store {
113
179
  processOverrides() {
114
180
  this.overrideManager.processOverrides();
115
181
  }
116
- getEverywhereMiddlewareForTasks(excludingIds) {
117
- return this.registry.getEverywhereMiddlewareForTasks(excludingIds);
118
- }
119
- getEverywhereMiddlewareForResources(excludingIds) {
120
- return this.registry.getEverywhereMiddlewareForResources(excludingIds);
121
- }
122
182
  storeGenericItem(item) {
123
183
  return this.registry.storeGenericItem(item);
124
184
  }
125
- storeEventsForAllTasks() {
126
- this.registry.storeEventsForAllTasks();
185
+ storeEventsForAllTRM() {
186
+ this.registry.storeEventsForAllTRM();
127
187
  }
188
+ /**
189
+ * Returns all tasks with the given tag.
190
+ * @param tag - The tag to filter by.
191
+ * @returns The tasks with the given tag.
192
+ */
128
193
  getTasksWithTag(tag) {
129
194
  return this.registry.getTasksWithTag(tag);
130
195
  }
131
196
  getResourcesWithTag(tag) {
132
197
  return this.registry.getResourcesWithTag(tag);
133
198
  }
134
- getDependentNodes() {
135
- return this.registry.getDependentNodes();
136
- }
137
199
  }
138
200
  exports.Store = Store;
139
201
  //# sourceMappingURL=Store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Store.js","sourceRoot":"","sources":["../../src/models/Store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Store.js","sourceRoot":"","sources":["../../src/models/Store.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,42 @@
1
- import { IResource, ITask, IResourceWithConfig, RegisterableItems, IMiddleware, IEvent, ITag } from "../defs";
2
- import { TaskStoreElementType, MiddlewareStoreElementType, ResourceStoreElementType, EventStoreElementType } from "./StoreTypes";
1
+ import { IResource, ITask, IResourceWithConfig, RegisterableItems, ITaskMiddleware, IResourceMiddleware, IEvent, ITag, IHook } from "../defs";
2
+ import { IDependentNode } from "./utils/findCircularDependencies";
3
+ import { TaskStoreElementType, TaskMiddlewareStoreElementType, ResourceMiddlewareStoreElementType, ResourceStoreElementType, EventStoreElementType, HookStoreElementType } from "../defs";
3
4
  import { StoreValidator } from "./StoreValidator";
5
+ import { Store } from "./Store";
6
+ type StoringMode = "normal" | "override";
4
7
  export declare class StoreRegistry {
5
- tasks: Map<string | symbol, TaskStoreElementType>;
6
- resources: Map<string | symbol, ResourceStoreElementType>;
7
- events: Map<string | symbol, EventStoreElementType>;
8
- middlewares: Map<string | symbol, MiddlewareStoreElementType>;
8
+ protected readonly store: Store;
9
+ tasks: Map<string, TaskStoreElementType>;
10
+ resources: Map<string, ResourceStoreElementType>;
11
+ events: Map<string, EventStoreElementType>;
12
+ taskMiddlewares: Map<string, TaskMiddlewareStoreElementType>;
13
+ resourceMiddlewares: Map<string, ResourceMiddlewareStoreElementType>;
14
+ hooks: Map<string, HookStoreElementType>;
15
+ tags: Map<string, ITag>;
9
16
  private validator;
10
- constructor();
17
+ constructor(store: Store);
11
18
  getValidator(): StoreValidator;
12
19
  storeGenericItem<C>(item: RegisterableItems): void;
13
- storeMiddleware<C>(item: IMiddleware<any>, check?: boolean): void;
20
+ storeTag(item: ITag<any, any>): void;
21
+ storeHook<C>(item: IHook<any, any>, overrideMode?: StoringMode): void;
22
+ storeTaskMiddleware<C>(item: ITaskMiddleware<any>, storingMode?: StoringMode): void;
23
+ storeResourceMiddleware<C>(item: IResourceMiddleware<any>, overrideMode?: StoringMode): void;
14
24
  storeEvent<C>(item: IEvent<void>): void;
15
- storeResourceWithConfig<C>(item: IResourceWithConfig<any, any, any>, check?: boolean): IResource<any, any, any, any, any>;
25
+ storeResourceWithConfig<C>(item: IResourceWithConfig<any, any, any>, storingMode?: StoringMode): IResource<any, any, any, any, any, import("../defs").TagType[], IResourceMiddleware<any, void, void, any>[]>;
16
26
  computeRegistrationDeeply<C>(element: IResource<C>, config?: C): void;
17
- storeResource<C>(item: IResource<any, any, any>, check?: boolean): IResource<any, any, any, any, any>;
18
- storeTask<C>(item: ITask<any, any, {}>, check?: boolean): void;
19
- storeEventsForAllTasks(): void;
20
- getEverywhereMiddlewareForTasks(excludingIds: Array<string | symbol>): IMiddleware[];
21
- getEverywhereMiddlewareForResources(excludingIds: Array<string | symbol>): IMiddleware[];
22
- private prepareResource;
23
- private middlewareAsMap;
24
- getDependentNodes(): any[];
25
- getTasksWithTag(tag: string | ITag): TaskStoreElementType[] | ITask<any, any, any, any, any>[];
26
- getResourcesWithTag(tag: string | ITag): ResourceStoreElementType[] | IResource<any, any, {}, any, any>[];
27
+ storeResource<C>(item: IResource<any, any, any>, overrideMode?: StoringMode): IResource<any, any, any, any, any, import("../defs").TagType[], import("../defs").ResourceMiddlewareAttachmentType[]>;
28
+ storeTask<C>(item: ITask<any, any, {}>, storingMode?: StoringMode): void;
29
+ /**
30
+ * TRM = tasks, resources and middlewares
31
+ */
32
+ storeEventsForAllTRM(): void;
33
+ getDependentNodes(): IDependentNode[];
34
+ private setupBlankNodes;
35
+ getTasksWithTag(tag: string | ITag): ITask<any, any, any, any, import("../defs").TagType[], import("../defs").TaskMiddlewareAttachmentType[]>[];
36
+ getResourcesWithTag(tag: string | ITag): IResource<any, any, {}, any, any, import("../defs").TagType[], import("../defs").ResourceMiddlewareAttachmentType[]>[];
37
+ /**
38
+ * Used to fetch the value cloned, and if we're dealing with an override, we need to extend the previous value.
39
+ */
40
+ private getFreshValue;
27
41
  }
42
+ export {};