@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,424 +0,0 @@
1
- import { definitions } from "..";
2
- import {
3
- defineTask,
4
- defineResource,
5
- defineEvent,
6
- defineMiddleware,
7
- defineOverride,
8
- } from "../define";
9
- import { DependencyNotFoundError } from "../errors";
10
- import { run } from "../run";
11
-
12
- describe("run.overrides", () => {
13
- // Tasks
14
- it("Should work with a simple override", async () => {
15
- const task = defineTask({
16
- id: "task",
17
- run: async () => "Task executed",
18
- });
19
-
20
- const overrideTask = defineOverride(task, {
21
- run: async () => "Task overridden",
22
- });
23
-
24
- const app = defineResource({
25
- id: "app",
26
- register: [task],
27
- dependencies: {
28
- task,
29
- },
30
- overrides: [overrideTask],
31
- async init(_, deps) {
32
- return await deps.task();
33
- },
34
- });
35
-
36
- const result = await run(app);
37
- expect(result.value).toBe("Task overridden");
38
- });
39
-
40
- it("Should work with a deep override", async () => {
41
- const task = defineTask({
42
- id: "task",
43
- run: async () => "Task executed",
44
- });
45
-
46
- const overrideTask = defineOverride(task, {
47
- run: async () => "Task overridden",
48
- });
49
-
50
- const middle = defineResource({
51
- id: "app",
52
- register: [task],
53
- overrides: [overrideTask],
54
- });
55
-
56
- const root = defineResource({
57
- id: "root",
58
- register: [middle],
59
- dependencies: { task },
60
- async init(_, deps) {
61
- return await deps.task();
62
- },
63
- });
64
-
65
- const result = await run(root);
66
- expect(result.value).toBe("Task overridden");
67
- });
68
-
69
- it("Should work with a deep override with config", async () => {
70
- const task = defineTask({
71
- id: "task",
72
- run: async () => "Task executed",
73
- });
74
-
75
- const overrideTask = defineOverride(task, {
76
- run: async () => "Task overridden",
77
- });
78
-
79
- const middle = defineResource<{ test: string }>({
80
- id: "app",
81
- register: [task],
82
- overrides: [overrideTask],
83
- });
84
-
85
- const root = defineResource({
86
- id: "root",
87
- register: [middle.with({ test: "ok" })],
88
- dependencies: { task },
89
- async init(_, deps) {
90
- return await deps.task();
91
- },
92
- });
93
-
94
- const result = await run(root);
95
- expect(result.value).toBe("Task overridden");
96
- });
97
-
98
- it("Should work with a override that has an override", async () => {
99
- const task = defineTask({
100
- id: "task",
101
- run: async () => "Task executed",
102
- });
103
-
104
- const overrideTask = defineOverride(task, {
105
- run: async () => "Task overridden",
106
- });
107
-
108
- const resource = defineResource({
109
- id: "resource",
110
- });
111
-
112
- const resourceOverride = defineOverride(resource, {
113
- overrides: [overrideTask],
114
- });
115
-
116
- const middle = defineResource({
117
- id: "app",
118
- register: [task],
119
- overrides: [resourceOverride],
120
- });
121
-
122
- const root = defineResource({
123
- id: "root",
124
- register: [middle, resource],
125
- dependencies: { task },
126
- async init(_, deps) {
127
- return await deps.task();
128
- },
129
- });
130
-
131
- const result = await run(root);
132
- expect(result.value).toBe("Task overridden");
133
- });
134
-
135
- it("Should work with a override that has an override with config", async () => {
136
- const task = defineTask({
137
- id: "task",
138
- run: async () => "Task executed",
139
- });
140
-
141
- const overrideTask = defineOverride(task, {
142
- run: async () => "Task overridden",
143
- });
144
-
145
- const resource = defineResource({
146
- id: "resource",
147
- });
148
-
149
- const resourceOverride: definitions.IResource<any> = {
150
- ...resource,
151
- overrides: [overrideTask],
152
- async init(config: { test: string }) {
153
- return "Resource init";
154
- },
155
- };
156
-
157
- const middle = defineResource({
158
- id: "app",
159
- register: [task],
160
- overrides: [resourceOverride.with({ test: "ok" })],
161
- });
162
-
163
- const root = defineResource({
164
- id: "root",
165
- register: [middle, resource],
166
- dependencies: { task },
167
- async init(_, deps) {
168
- return await deps.task();
169
- },
170
- });
171
-
172
- const result = await run(root);
173
- expect(result.value).toBe("Task overridden");
174
- });
175
-
176
- it("should work overriding a middleware", async () => {
177
- const middleware = defineMiddleware({
178
- id: "middleware",
179
- run: async ({ next }) => {
180
- return `Middleware: ${await next()}`;
181
- },
182
- });
183
-
184
- const middlewareOverride = defineOverride(middleware, {
185
- run: async ({ next }) => {
186
- return `Override: ${await next()}`;
187
- },
188
- });
189
-
190
- const task = defineTask({
191
- id: "task",
192
- middleware: [middleware],
193
- run: async () => "Task executed",
194
- });
195
-
196
- const resource = defineResource({
197
- id: "resource",
198
- register: [middleware, task],
199
- dependencies: { task },
200
- overrides: [middlewareOverride],
201
- async init(_, deps) {
202
- return deps.task();
203
- },
204
- });
205
-
206
- const result = await run(resource);
207
- expect(result.value).toBe("Override: Task executed");
208
- });
209
-
210
- it("should throw, when you try to override something unregistered", async () => {
211
- const task = defineTask({
212
- id: "task",
213
- run: async () => "Task executed",
214
- });
215
-
216
- const override = defineTask({
217
- id: "task2",
218
- run: async () => "Task overridden",
219
- });
220
-
221
- const app = defineResource({
222
- id: "app",
223
- dependencies: {
224
- task,
225
- },
226
- overrides: [override],
227
- async init(_, deps) {
228
- return await deps.task();
229
- },
230
- });
231
-
232
- await expect(run(app)).rejects.toThrowError(
233
- new DependencyNotFoundError("task2").message
234
- );
235
- });
236
-
237
- it("should throw, when you try to override something unregistered but with resources with config", async () => {
238
- const r1 = defineResource({
239
- id: "override",
240
- init: async () => "Task executed",
241
- });
242
- const r2 = defineResource({
243
- id: "override2",
244
- init: async () => "Task executed",
245
- });
246
-
247
- const app = defineResource({
248
- id: "app",
249
- dependencies: {
250
- r1,
251
- },
252
- overrides: [r2.with()],
253
- async init(_, r1) {
254
- return r1;
255
- },
256
- });
257
-
258
- await expect(run(app)).rejects.toThrowError(
259
- new DependencyNotFoundError("override2").message
260
- );
261
- });
262
-
263
- it("should have an override priority, the deeper you are, the less priority you have in the override", async () => {
264
- const task = defineTask({
265
- id: "task",
266
- run: async () => "Task executed",
267
- });
268
-
269
- const override = defineTask({
270
- id: "task2",
271
- run: async () => "Task overridden",
272
- });
273
-
274
- const override2 = defineTask({
275
- id: "task",
276
- run: async () => "Task super-overridden",
277
- });
278
-
279
- const middle = defineResource({
280
- id: "app",
281
- register: [task],
282
- overrides: [override],
283
- });
284
-
285
- const app = defineResource({
286
- id: "app",
287
- dependencies: {
288
- task,
289
- },
290
- register: [middle],
291
- overrides: [override2],
292
- async init(_, deps) {
293
- return await deps.task();
294
- },
295
- });
296
-
297
- const result = await run(app);
298
- expect(result.value).toBe("Task super-overridden");
299
- });
300
-
301
- it("should override if I have a previously registered normal resource with a resource with config", async () => {
302
- const r1 = defineResource({
303
- id: "override",
304
- init: async () => "Task executed",
305
- });
306
- const r2 = defineResource({
307
- id: "override",
308
- init: async () => "Task overriden.",
309
- });
310
-
311
- const app = defineResource({
312
- id: "app",
313
- dependencies: {
314
- r1,
315
- },
316
- register: [r1],
317
- overrides: [r2.with()],
318
- async init(_, deps) {
319
- return deps.r1;
320
- },
321
- });
322
-
323
- const result = await run(app);
324
- expect(result.value).toBe("Task overriden.");
325
- });
326
-
327
- it("should override if I have a previously registered normal resource with a resource with config", async () => {
328
- const r1 = defineResource({
329
- id: "override",
330
- init: async () => "Task executed",
331
- });
332
- const r2 = defineResource({
333
- id: "override",
334
- init: async () => "Task overriden.",
335
- });
336
-
337
- const app = defineResource({
338
- id: "app",
339
- dependencies: {
340
- r1,
341
- },
342
- register: [r1.with()],
343
- overrides: [r2.with()],
344
- async init(_, deps) {
345
- return deps.r1;
346
- },
347
- });
348
-
349
- const result = await run(app);
350
- expect(result.value).toBe("Task overriden.");
351
- });
352
-
353
- it("should override something deeply registered, with a with config", async () => {
354
- const r1 = defineResource({
355
- id: "override",
356
- init: async () => "Task executed",
357
- });
358
-
359
- const middle = defineResource({
360
- id: "app.m1",
361
- register: [r1],
362
- });
363
-
364
- const middle2 = defineResource({
365
- id: "app.m2",
366
- register: [middle],
367
- });
368
-
369
- const r2 = defineResource({
370
- id: "override",
371
- init: async () => "Task overriden.",
372
- });
373
-
374
- const app = defineResource({
375
- id: "app",
376
- dependencies: {
377
- r1,
378
- },
379
- register: [middle2],
380
- overrides: [r2.with()],
381
- async init(_, deps) {
382
- return deps.r1;
383
- },
384
- });
385
-
386
- const result = await run(app);
387
- expect(result.value).toBe("Task overriden.");
388
- });
389
-
390
- it("should choose precedence when two overrides target the same id", async () => {
391
- const baseTask = defineTask({
392
- id: "task.same",
393
- run: async () => "Original",
394
- });
395
-
396
- const middleOverride = defineOverride(baseTask, {
397
- run: async () => "Middle",
398
- });
399
-
400
- const rootOverride = defineOverride(baseTask, {
401
- run: async () => "Root",
402
- });
403
-
404
- const middle = defineResource({
405
- id: "middle",
406
- register: [baseTask],
407
- overrides: [middleOverride],
408
- });
409
-
410
- const app = defineResource({
411
- id: "app",
412
- register: [middle],
413
- dependencies: { t: baseTask },
414
- overrides: [rootOverride],
415
- async init(_, deps) {
416
- return await deps.t();
417
- },
418
- });
419
-
420
- const result = await run(app);
421
- // Since root is visited after middle, its override takes precedence.
422
- expect(result.value).toBe("Root");
423
- });
424
- });