@decaf-ts/core 0.7.58 → 0.7.60

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/README.md +1 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/identity/decorators.js +3 -3
  7. package/lib/esm/identity/decorators.js.map +1 -1
  8. package/lib/esm/index.d.ts +2 -2
  9. package/lib/esm/index.js +6 -3
  10. package/lib/esm/index.js.map +1 -1
  11. package/lib/esm/migrations/Migration.d.ts +19 -0
  12. package/lib/esm/migrations/Migration.js +73 -0
  13. package/lib/esm/migrations/Migration.js.map +1 -0
  14. package/lib/esm/migrations/MigrationService.d.ts +25 -0
  15. package/lib/esm/migrations/MigrationService.js +206 -0
  16. package/lib/esm/migrations/MigrationService.js.map +1 -0
  17. package/lib/esm/migrations/constants.d.ts +2 -0
  18. package/lib/esm/migrations/constants.js +5 -0
  19. package/lib/esm/migrations/constants.js.map +1 -0
  20. package/lib/esm/migrations/decorators.d.ts +7 -0
  21. package/lib/esm/migrations/decorators.js +49 -0
  22. package/lib/esm/migrations/decorators.js.map +1 -0
  23. package/lib/esm/migrations/index.d.ts +5 -0
  24. package/lib/esm/migrations/index.js +6 -0
  25. package/lib/esm/migrations/index.js.map +1 -0
  26. package/lib/esm/migrations/types.d.ts +23 -0
  27. package/lib/esm/migrations/types.js +2 -0
  28. package/lib/esm/migrations/types.js.map +1 -0
  29. package/lib/esm/model/SequenceModel.js +1 -1
  30. package/lib/esm/model/SequenceModel.js.map +1 -1
  31. package/lib/esm/model/construction.js +4 -3
  32. package/lib/esm/model/construction.js.map +1 -1
  33. package/lib/esm/model/decorators.d.ts +0 -1
  34. package/lib/esm/model/decorators.js +3 -8
  35. package/lib/esm/model/decorators.js.map +1 -1
  36. package/lib/esm/overrides/Metadata.d.ts +6 -1
  37. package/lib/esm/overrides/Model.d.ts +0 -1
  38. package/lib/esm/overrides/index.d.ts +0 -1
  39. package/lib/esm/overrides/index.js +0 -1
  40. package/lib/esm/overrides/index.js.map +1 -1
  41. package/lib/esm/overrides/injectables.d.ts +1 -1
  42. package/lib/esm/overrides/overrides.js +17 -9
  43. package/lib/esm/overrides/overrides.js.map +1 -1
  44. package/lib/esm/persistence/Adapter.d.ts +11 -18
  45. package/lib/esm/persistence/Adapter.js +74 -54
  46. package/lib/esm/persistence/Adapter.js.map +1 -1
  47. package/lib/esm/persistence/Context.d.ts +3 -3
  48. package/lib/esm/persistence/Context.js +2 -2
  49. package/lib/esm/persistence/Context.js.map +1 -1
  50. package/lib/esm/persistence/Dispatch.d.ts +7 -3
  51. package/lib/esm/persistence/Dispatch.js +34 -13
  52. package/lib/esm/persistence/Dispatch.js.map +1 -1
  53. package/lib/esm/persistence/ObserverHandler.js +1 -1
  54. package/lib/esm/persistence/ObserverHandler.js.map +1 -1
  55. package/lib/esm/persistence/Sequence.d.ts +9 -5
  56. package/lib/esm/persistence/Sequence.js +19 -15
  57. package/lib/esm/persistence/Sequence.js.map +1 -1
  58. package/lib/esm/persistence/constants.d.ts +11 -1
  59. package/lib/esm/persistence/constants.js +26 -3
  60. package/lib/esm/persistence/constants.js.map +1 -1
  61. package/lib/esm/persistence/decorators.d.ts +24 -0
  62. package/lib/esm/persistence/decorators.js +50 -0
  63. package/lib/esm/persistence/decorators.js.map +1 -0
  64. package/lib/esm/persistence/errors.d.ts +3 -3
  65. package/lib/esm/persistence/errors.js.map +1 -1
  66. package/lib/esm/persistence/event-filters.d.ts +20 -0
  67. package/lib/esm/persistence/event-filters.js +60 -0
  68. package/lib/esm/persistence/event-filters.js.map +1 -0
  69. package/lib/esm/persistence/index.d.ts +1 -1
  70. package/lib/esm/persistence/index.js +1 -1
  71. package/lib/esm/persistence/index.js.map +1 -1
  72. package/lib/esm/persistence/types.d.ts +9 -6
  73. package/lib/esm/query/Paginator.d.ts +4 -4
  74. package/lib/esm/query/Paginator.js +18 -8
  75. package/lib/esm/query/Paginator.js.map +1 -1
  76. package/lib/esm/query/Statement.d.ts +5 -4
  77. package/lib/esm/query/Statement.js +16 -13
  78. package/lib/esm/query/Statement.js.map +1 -1
  79. package/lib/esm/query/selectors.d.ts +4 -1
  80. package/lib/esm/ram/RamAdapter.d.ts +6 -5
  81. package/lib/esm/ram/RamAdapter.js +20 -16
  82. package/lib/esm/ram/RamAdapter.js.map +1 -1
  83. package/lib/esm/ram/RamPaginator.d.ts +1 -1
  84. package/lib/esm/ram/RamPaginator.js +7 -2
  85. package/lib/esm/ram/RamPaginator.js.map +1 -1
  86. package/lib/esm/ram/types.d.ts +2 -0
  87. package/lib/esm/repository/Repository.d.ts +10 -8
  88. package/lib/esm/repository/Repository.js +107 -76
  89. package/lib/esm/repository/Repository.js.map +1 -1
  90. package/lib/esm/repository/decorators.d.ts +1 -1
  91. package/lib/esm/repository/decorators.js +1 -1
  92. package/lib/esm/repository/decorators.js.map +1 -1
  93. package/lib/esm/repository/injectables.d.ts +2 -1
  94. package/lib/esm/repository/injectables.js.map +1 -1
  95. package/lib/esm/services/ModelService.d.ts +42 -0
  96. package/lib/esm/services/ModelService.js +236 -0
  97. package/lib/esm/services/ModelService.js.map +1 -0
  98. package/lib/esm/services/PersistenceService.d.ts +16 -0
  99. package/lib/esm/services/PersistenceService.js +34 -0
  100. package/lib/esm/services/PersistenceService.js.map +1 -0
  101. package/lib/esm/services/index.d.ts +3 -0
  102. package/lib/esm/services/index.js +4 -0
  103. package/lib/esm/services/index.js.map +1 -0
  104. package/lib/esm/services/services.d.ts +93 -0
  105. package/lib/esm/services/services.js +241 -0
  106. package/lib/esm/services/services.js.map +1 -0
  107. package/lib/esm/tasks/TaskContext.d.ts +10 -0
  108. package/lib/esm/tasks/TaskContext.js +22 -0
  109. package/lib/esm/tasks/TaskContext.js.map +1 -0
  110. package/lib/esm/tasks/TaskEngine.d.ts +64 -0
  111. package/lib/esm/tasks/TaskEngine.js +341 -0
  112. package/lib/esm/tasks/TaskEngine.js.map +1 -0
  113. package/lib/esm/tasks/TaskEventBus.d.ts +6 -0
  114. package/lib/esm/tasks/TaskEventBus.js +14 -0
  115. package/lib/esm/tasks/TaskEventBus.js.map +1 -0
  116. package/lib/esm/tasks/TaskEventRepository.d.ts +10 -0
  117. package/lib/esm/tasks/TaskEventRepository.js +35 -0
  118. package/lib/esm/tasks/TaskEventRepository.js.map +1 -0
  119. package/lib/esm/tasks/TaskHandler.d.ts +11 -0
  120. package/lib/esm/tasks/TaskHandler.js +28 -0
  121. package/lib/esm/tasks/TaskHandler.js.map +1 -0
  122. package/lib/esm/tasks/TaskHandlerRegistry.d.ts +8 -0
  123. package/lib/esm/tasks/TaskHandlerRegistry.js +32 -0
  124. package/lib/esm/tasks/TaskHandlerRegistry.js.map +1 -0
  125. package/lib/esm/tasks/TaskService.d.ts +11 -0
  126. package/lib/esm/tasks/TaskService.js +25 -0
  127. package/lib/esm/tasks/TaskService.js.map +1 -0
  128. package/lib/esm/tasks/constants.d.ts +26 -0
  129. package/lib/esm/tasks/constants.js +32 -0
  130. package/lib/esm/tasks/constants.js.map +1 -0
  131. package/lib/esm/tasks/decorators.d.ts +4 -0
  132. package/lib/esm/tasks/decorators.js +20 -0
  133. package/lib/esm/tasks/decorators.js.map +1 -0
  134. package/lib/esm/tasks/index.d.ts +3 -0
  135. package/lib/esm/tasks/index.js +4 -0
  136. package/lib/esm/tasks/index.js.map +1 -0
  137. package/lib/esm/tasks/models/TaskBackoffModel.d.ts +10 -0
  138. package/lib/esm/tasks/models/TaskBackoffModel.js +47 -0
  139. package/lib/esm/tasks/models/TaskBackoffModel.js.map +1 -0
  140. package/lib/esm/tasks/models/TaskBaseModel.d.ts +14 -0
  141. package/lib/esm/tasks/models/TaskBaseModel.js +30 -0
  142. package/lib/esm/tasks/models/TaskBaseModel.js.map +1 -0
  143. package/lib/esm/tasks/models/TaskErrorModel.d.ts +9 -0
  144. package/lib/esm/tasks/models/TaskErrorModel.js +43 -0
  145. package/lib/esm/tasks/models/TaskErrorModel.js.map +1 -0
  146. package/lib/esm/tasks/models/TaskEventModel.d.ts +11 -0
  147. package/lib/esm/tasks/models/TaskEventModel.js +60 -0
  148. package/lib/esm/tasks/models/TaskEventModel.js.map +1 -0
  149. package/lib/esm/tasks/models/TaskLogEntryModel.d.ts +9 -0
  150. package/lib/esm/tasks/models/TaskLogEntryModel.js +41 -0
  151. package/lib/esm/tasks/models/TaskLogEntryModel.js.map +1 -0
  152. package/lib/esm/tasks/models/TaskModel.d.ts +28 -0
  153. package/lib/esm/tasks/models/TaskModel.js +114 -0
  154. package/lib/esm/tasks/models/TaskModel.js.map +1 -0
  155. package/lib/esm/tasks/models/TaskStepResultModel.d.ts +10 -0
  156. package/lib/esm/tasks/models/TaskStepResultModel.js +40 -0
  157. package/lib/esm/tasks/models/TaskStepResultModel.js.map +1 -0
  158. package/lib/esm/tasks/models/TaskStepSpecModel.d.ts +7 -0
  159. package/lib/esm/tasks/models/TaskStepSpecModel.js +32 -0
  160. package/lib/esm/tasks/models/TaskStepSpecModel.js.map +1 -0
  161. package/lib/esm/tasks/models/index.d.ts +1 -0
  162. package/lib/esm/tasks/models/index.js +2 -0
  163. package/lib/esm/tasks/models/index.js.map +1 -0
  164. package/lib/esm/tasks/types.d.ts +22 -0
  165. package/lib/esm/tasks/types.js +2 -0
  166. package/lib/esm/tasks/types.js.map +1 -0
  167. package/lib/esm/tasks/utils.d.ts +5 -0
  168. package/lib/esm/tasks/utils.js +24 -0
  169. package/lib/esm/tasks/utils.js.map +1 -0
  170. package/lib/esm/utils/ContextualLoggedClass.d.ts +28 -7
  171. package/lib/esm/utils/ContextualLoggedClass.js +100 -22
  172. package/lib/esm/utils/ContextualLoggedClass.js.map +1 -1
  173. package/lib/esm/utils/decorators.d.ts +4 -4
  174. package/lib/esm/utils/decorators.js +1 -1
  175. package/lib/esm/utils/decorators.js.map +1 -1
  176. package/lib/esm/utils/index.d.ts +0 -1
  177. package/lib/esm/utils/index.js +0 -1
  178. package/lib/esm/utils/index.js.map +1 -1
  179. package/lib/esm/utils/utils.d.ts +1 -0
  180. package/lib/esm/utils/utils.js +24 -0
  181. package/lib/esm/utils/utils.js.map +1 -1
  182. package/lib/identity/decorators.cjs +2 -2
  183. package/lib/identity/decorators.js.map +1 -1
  184. package/lib/index.cjs +6 -3
  185. package/lib/index.d.ts +2 -2
  186. package/lib/index.js.map +1 -1
  187. package/lib/migrations/Migration.cjs +77 -0
  188. package/lib/migrations/Migration.d.ts +19 -0
  189. package/lib/migrations/Migration.js.map +1 -0
  190. package/lib/migrations/MigrationService.cjs +210 -0
  191. package/lib/migrations/MigrationService.d.ts +25 -0
  192. package/lib/migrations/MigrationService.js.map +1 -0
  193. package/lib/migrations/constants.cjs +8 -0
  194. package/lib/migrations/constants.d.ts +2 -0
  195. package/lib/migrations/constants.js.map +1 -0
  196. package/lib/migrations/decorators.cjs +52 -0
  197. package/lib/migrations/decorators.d.ts +7 -0
  198. package/lib/migrations/decorators.js.map +1 -0
  199. package/lib/migrations/index.cjs +22 -0
  200. package/lib/migrations/index.d.ts +5 -0
  201. package/lib/migrations/index.js.map +1 -0
  202. package/lib/migrations/types.cjs +3 -0
  203. package/lib/migrations/types.d.ts +23 -0
  204. package/lib/migrations/types.js.map +1 -0
  205. package/lib/model/SequenceModel.cjs +1 -1
  206. package/lib/model/SequenceModel.js.map +1 -1
  207. package/lib/model/construction.cjs +4 -3
  208. package/lib/model/construction.js.map +1 -1
  209. package/lib/model/decorators.cjs +2 -8
  210. package/lib/model/decorators.d.ts +0 -1
  211. package/lib/model/decorators.js.map +1 -1
  212. package/lib/overrides/Metadata.d.ts +6 -1
  213. package/lib/overrides/Model.d.ts +0 -1
  214. package/lib/overrides/index.cjs +0 -1
  215. package/lib/overrides/index.d.ts +0 -1
  216. package/lib/overrides/index.js.map +1 -1
  217. package/lib/overrides/injectables.d.ts +1 -1
  218. package/lib/overrides/overrides.cjs +17 -9
  219. package/lib/overrides/overrides.js.map +1 -1
  220. package/lib/persistence/Adapter.cjs +72 -52
  221. package/lib/persistence/Adapter.d.ts +11 -18
  222. package/lib/persistence/Adapter.js.map +1 -1
  223. package/lib/persistence/Context.cjs +2 -2
  224. package/lib/persistence/Context.d.ts +3 -3
  225. package/lib/persistence/Context.js.map +1 -1
  226. package/lib/persistence/Dispatch.cjs +34 -13
  227. package/lib/persistence/Dispatch.d.ts +7 -3
  228. package/lib/persistence/Dispatch.js.map +1 -1
  229. package/lib/persistence/ObserverHandler.cjs +1 -1
  230. package/lib/persistence/ObserverHandler.js.map +1 -1
  231. package/lib/persistence/Sequence.cjs +19 -15
  232. package/lib/persistence/Sequence.d.ts +9 -5
  233. package/lib/persistence/Sequence.js.map +1 -1
  234. package/lib/persistence/constants.cjs +26 -3
  235. package/lib/persistence/constants.d.ts +11 -1
  236. package/lib/persistence/constants.js.map +1 -1
  237. package/lib/persistence/decorators.cjs +54 -0
  238. package/lib/persistence/decorators.d.ts +24 -0
  239. package/lib/persistence/decorators.js.map +1 -0
  240. package/lib/persistence/errors.d.ts +3 -3
  241. package/lib/persistence/errors.js.map +1 -1
  242. package/lib/persistence/event-filters.cjs +71 -0
  243. package/lib/persistence/event-filters.d.ts +20 -0
  244. package/lib/persistence/event-filters.js.map +1 -0
  245. package/lib/persistence/index.cjs +1 -1
  246. package/lib/persistence/index.d.ts +1 -1
  247. package/lib/persistence/index.js.map +1 -1
  248. package/lib/persistence/types.d.ts +9 -6
  249. package/lib/query/Paginator.cjs +26 -16
  250. package/lib/query/Paginator.d.ts +4 -4
  251. package/lib/query/Paginator.js.map +1 -1
  252. package/lib/query/Statement.cjs +40 -37
  253. package/lib/query/Statement.d.ts +5 -4
  254. package/lib/query/Statement.js.map +1 -1
  255. package/lib/query/selectors.d.ts +4 -1
  256. package/lib/ram/RamAdapter.cjs +20 -16
  257. package/lib/ram/RamAdapter.d.ts +6 -5
  258. package/lib/ram/RamAdapter.js.map +1 -1
  259. package/lib/ram/RamPaginator.cjs +7 -2
  260. package/lib/ram/RamPaginator.d.ts +1 -1
  261. package/lib/ram/RamPaginator.js.map +1 -1
  262. package/lib/ram/types.d.ts +2 -0
  263. package/lib/repository/Repository.cjs +106 -75
  264. package/lib/repository/Repository.d.ts +10 -8
  265. package/lib/repository/Repository.js.map +1 -1
  266. package/lib/repository/decorators.d.ts +1 -1
  267. package/lib/repository/decorators.js.map +1 -1
  268. package/lib/repository/injectables.d.ts +2 -1
  269. package/lib/repository/injectables.js.map +1 -1
  270. package/lib/services/ModelService.cjs +240 -0
  271. package/lib/services/ModelService.d.ts +42 -0
  272. package/lib/services/ModelService.js.map +1 -0
  273. package/lib/services/PersistenceService.cjs +38 -0
  274. package/lib/services/PersistenceService.d.ts +16 -0
  275. package/lib/services/PersistenceService.js.map +1 -0
  276. package/lib/services/index.cjs +20 -0
  277. package/lib/services/index.d.ts +3 -0
  278. package/lib/services/index.js.map +1 -0
  279. package/lib/services/services.cjs +246 -0
  280. package/lib/services/services.d.ts +93 -0
  281. package/lib/services/services.js.map +1 -0
  282. package/lib/tasks/TaskContext.cjs +26 -0
  283. package/lib/tasks/TaskContext.d.ts +10 -0
  284. package/lib/tasks/TaskContext.js.map +1 -0
  285. package/lib/tasks/TaskEngine.cjs +345 -0
  286. package/lib/tasks/TaskEngine.d.ts +64 -0
  287. package/lib/tasks/TaskEngine.js.map +1 -0
  288. package/lib/tasks/TaskEventBus.cjs +18 -0
  289. package/lib/tasks/TaskEventBus.d.ts +6 -0
  290. package/lib/tasks/TaskEventBus.js.map +1 -0
  291. package/lib/tasks/TaskEventRepository.cjs +38 -0
  292. package/lib/tasks/TaskEventRepository.d.ts +10 -0
  293. package/lib/tasks/TaskEventRepository.js.map +1 -0
  294. package/lib/tasks/TaskHandler.cjs +32 -0
  295. package/lib/tasks/TaskHandler.d.ts +11 -0
  296. package/lib/tasks/TaskHandler.js.map +1 -0
  297. package/lib/tasks/TaskHandlerRegistry.cjs +36 -0
  298. package/lib/tasks/TaskHandlerRegistry.d.ts +8 -0
  299. package/lib/tasks/TaskHandlerRegistry.js.map +1 -0
  300. package/lib/tasks/TaskService.cjs +29 -0
  301. package/lib/tasks/TaskService.d.ts +11 -0
  302. package/lib/tasks/TaskService.js.map +1 -0
  303. package/lib/tasks/constants.cjs +35 -0
  304. package/lib/tasks/constants.d.ts +26 -0
  305. package/lib/tasks/constants.js.map +1 -0
  306. package/lib/tasks/decorators.cjs +23 -0
  307. package/lib/tasks/decorators.d.ts +4 -0
  308. package/lib/tasks/decorators.js.map +1 -0
  309. package/lib/tasks/index.cjs +20 -0
  310. package/lib/tasks/index.d.ts +3 -0
  311. package/lib/tasks/index.js.map +1 -0
  312. package/lib/tasks/models/TaskBackoffModel.cjs +50 -0
  313. package/lib/tasks/models/TaskBackoffModel.d.ts +10 -0
  314. package/lib/tasks/models/TaskBackoffModel.js.map +1 -0
  315. package/lib/tasks/models/TaskBaseModel.cjs +34 -0
  316. package/lib/tasks/models/TaskBaseModel.d.ts +14 -0
  317. package/lib/tasks/models/TaskBaseModel.js.map +1 -0
  318. package/lib/tasks/models/TaskErrorModel.cjs +46 -0
  319. package/lib/tasks/models/TaskErrorModel.d.ts +9 -0
  320. package/lib/tasks/models/TaskErrorModel.js.map +1 -0
  321. package/lib/tasks/models/TaskEventModel.cjs +63 -0
  322. package/lib/tasks/models/TaskEventModel.d.ts +11 -0
  323. package/lib/tasks/models/TaskEventModel.js.map +1 -0
  324. package/lib/tasks/models/TaskLogEntryModel.cjs +44 -0
  325. package/lib/tasks/models/TaskLogEntryModel.d.ts +9 -0
  326. package/lib/tasks/models/TaskLogEntryModel.js.map +1 -0
  327. package/lib/tasks/models/TaskModel.cjs +117 -0
  328. package/lib/tasks/models/TaskModel.d.ts +28 -0
  329. package/lib/tasks/models/TaskModel.js.map +1 -0
  330. package/lib/tasks/models/TaskStepResultModel.cjs +43 -0
  331. package/lib/tasks/models/TaskStepResultModel.d.ts +10 -0
  332. package/lib/tasks/models/TaskStepResultModel.js.map +1 -0
  333. package/lib/tasks/models/TaskStepSpecModel.cjs +35 -0
  334. package/lib/tasks/models/TaskStepSpecModel.d.ts +7 -0
  335. package/lib/tasks/models/TaskStepSpecModel.js.map +1 -0
  336. package/lib/tasks/models/index.cjs +18 -0
  337. package/lib/tasks/models/index.d.ts +1 -0
  338. package/lib/tasks/models/index.js.map +1 -0
  339. package/lib/tasks/types.cjs +3 -0
  340. package/lib/tasks/types.d.ts +22 -0
  341. package/lib/tasks/types.js.map +1 -0
  342. package/lib/tasks/utils.cjs +29 -0
  343. package/lib/tasks/utils.d.ts +5 -0
  344. package/lib/tasks/utils.js.map +1 -0
  345. package/lib/utils/ContextualLoggedClass.cjs +100 -21
  346. package/lib/utils/ContextualLoggedClass.d.ts +28 -7
  347. package/lib/utils/ContextualLoggedClass.js.map +1 -1
  348. package/lib/utils/decorators.cjs +2 -2
  349. package/lib/utils/decorators.d.ts +4 -4
  350. package/lib/utils/decorators.js.map +1 -1
  351. package/lib/utils/index.cjs +0 -1
  352. package/lib/utils/index.d.ts +0 -1
  353. package/lib/utils/index.js.map +1 -1
  354. package/lib/utils/utils.cjs +25 -0
  355. package/lib/utils/utils.d.ts +1 -0
  356. package/lib/utils/utils.js.map +1 -1
  357. package/package.json +12 -2
  358. package/lib/esm/overrides/decoration.d.ts +0 -1
  359. package/lib/esm/overrides/decoration.js +0 -6
  360. package/lib/esm/overrides/decoration.js.map +0 -1
  361. package/lib/esm/persistence/migrations.d.ts +0 -21
  362. package/lib/esm/persistence/migrations.js +0 -103
  363. package/lib/esm/persistence/migrations.js.map +0 -1
  364. package/lib/esm/utils/Services.d.ts +0 -83
  365. package/lib/esm/utils/Services.js +0 -392
  366. package/lib/esm/utils/Services.js.map +0 -1
  367. package/lib/overrides/decoration.cjs +0 -8
  368. package/lib/overrides/decoration.d.ts +0 -1
  369. package/lib/overrides/decoration.js.map +0 -1
  370. package/lib/persistence/migrations.cjs +0 -109
  371. package/lib/persistence/migrations.d.ts +0 -21
  372. package/lib/persistence/migrations.js.map +0 -1
  373. package/lib/utils/Services.cjs +0 -398
  374. package/lib/utils/Services.d.ts +0 -83
  375. package/lib/utils/Services.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/services/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Context } from "../persistence/index";
2
+ import { ITaskContext } from "./types";
3
+ export declare class TaskContext extends Context<ITaskContext> {
4
+ get taskId(): string;
5
+ get log(): any;
6
+ get attempt(): number;
7
+ get progress(): (data: any) => Promise<void>;
8
+ get heartbeat(): () => Promise<void>;
9
+ constructor(ctx?: Context<any>);
10
+ }
@@ -0,0 +1,22 @@
1
+ import { Context } from "./../persistence/index.js";
2
+ export class TaskContext extends Context {
3
+ get taskId() {
4
+ return this.get("taskId");
5
+ }
6
+ get log() {
7
+ return this.get("log");
8
+ }
9
+ get attempt() {
10
+ return this.get("attempt");
11
+ }
12
+ get progress() {
13
+ return this.get("progress");
14
+ }
15
+ get heartbeat() {
16
+ return this.get("heartbeat");
17
+ }
18
+ constructor(ctx) {
19
+ super(ctx);
20
+ }
21
+ }
22
+ //# sourceMappingURL=TaskContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskContext.js","sourceRoot":"","sources":["../../../src/tasks/TaskContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,kCAA6B;AAG/C,MAAM,OAAO,WAAY,SAAQ,OAAqB;IACpD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,GAAkB;QAC5B,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,64 @@
1
+ import { TaskModel } from "./models/TaskModel";
2
+ import { Repo } from "../repository/Repository";
3
+ import { TaskEventModel } from "./models/TaskEventModel";
4
+ import { TaskHandlerRegistry } from "./TaskHandlerRegistry";
5
+ import { TaskEventBus } from "./TaskEventBus";
6
+ import { TaskBackoffModel } from "./models/TaskBackoffModel";
7
+ import { Adapter, ContextOf } from "../persistence/index";
8
+ import { ContextualLoggedClass } from "../utils/ContextualLoggedClass";
9
+ export type TaskEngineConfig<A extends Adapter<any, any, any, any>> = {
10
+ adapter: A;
11
+ bus: TaskEventBus;
12
+ registry: TaskHandlerRegistry;
13
+ workerId: string;
14
+ concurrency: number;
15
+ leaseMs: number;
16
+ pollMsIdle: number;
17
+ pollMsBusy: number;
18
+ logTailMax: number;
19
+ };
20
+ export declare const DefaultTaskEngineConfig: TaskEngineConfig<any>;
21
+ export declare class TaskEngine<A extends Adapter<any, any, any, any>> extends ContextualLoggedClass<ContextOf<A>> {
22
+ private config;
23
+ private _tasks?;
24
+ private _events?;
25
+ protected get adapter(): A;
26
+ protected get registry(): TaskHandlerRegistry;
27
+ protected get bus(): TaskEventBus;
28
+ protected get tasks(): Repo<TaskModel>;
29
+ protected get events(): Repo<TaskEventModel>;
30
+ protected running: boolean;
31
+ constructor(config: TaskEngineConfig<A>);
32
+ enqueueAtomic(arg: {
33
+ id: string;
34
+ input?: any;
35
+ name?: string;
36
+ maxAttempts?: number;
37
+ backoff?: Partial<TaskBackoffModel>;
38
+ }): Promise<TaskModel>;
39
+ enqueueComposite(arg: {
40
+ id: string;
41
+ name?: string;
42
+ steps: Array<{
43
+ type: string;
44
+ input?: any;
45
+ }>;
46
+ maxAttempts?: number;
47
+ backoff?: Partial<TaskBackoffModel>;
48
+ }): Promise<TaskModel>;
49
+ getTask(id: string): Promise<TaskModel>;
50
+ cancelTask(id: string): Promise<TaskModel>;
51
+ start(): void;
52
+ stop(): void;
53
+ private loop;
54
+ private claimBatch;
55
+ private tryClaim;
56
+ private executeClaimed;
57
+ private runComposite;
58
+ private appendLog;
59
+ private emitStatus;
60
+ private emitLog;
61
+ private emitProgress;
62
+ private persistEvent;
63
+ toString(): string;
64
+ }
@@ -0,0 +1,341 @@
1
+ import { TaskModel } from "./models/TaskModel.js";
2
+ import { Repository } from "./../repository/Repository.js";
3
+ import { TaskEventModel } from "./models/TaskEventModel.js";
4
+ import { TaskHandlerRegistry } from "./TaskHandlerRegistry.js";
5
+ import { TaskEventBus } from "./TaskEventBus.js";
6
+ import { TaskBackoffModel } from "./models/TaskBackoffModel.js";
7
+ import { TaskStepSpecModel } from "./models/TaskStepSpecModel.js";
8
+ import { Condition } from "./../query/Condition.js";
9
+ import { TaskStepResultModel } from "./models/TaskStepResultModel.js";
10
+ import { TaskLogEntryModel } from "./models/TaskLogEntryModel.js";
11
+ import { BackoffStrategy, JitterStrategy, TaskEventType, TaskStatus, TaskType, } from "./constants.js";
12
+ import { LogLevel } from "@decaf-ts/logging";
13
+ import { ContextualLoggedClass } from "./../utils/ContextualLoggedClass.js";
14
+ import { InternalError } from "@decaf-ts/db-decorators";
15
+ import { computeBackoffMs, serializeError, sleep } from "./utils.js";
16
+ import { TaskContext } from "./TaskContext.js";
17
+ export const DefaultTaskEngineConfig = {
18
+ workerId: "default-worker",
19
+ concurrency: 10,
20
+ leaseMs: 60000,
21
+ pollMsIdle: 1000,
22
+ pollMsBusy: 500,
23
+ logTailMax: 100,
24
+ };
25
+ export class TaskEngine extends ContextualLoggedClass {
26
+ get adapter() {
27
+ return this.config.adapter;
28
+ }
29
+ get registry() {
30
+ return this.config.registry;
31
+ }
32
+ get bus() {
33
+ return this.config.bus;
34
+ }
35
+ get tasks() {
36
+ if (this._tasks)
37
+ return this._tasks;
38
+ this._tasks = Repository.forModel(TaskModel, this.config.adapter.alias);
39
+ return this._tasks;
40
+ }
41
+ get events() {
42
+ if (this._events)
43
+ return this._events;
44
+ this._events = Repository.forModel(TaskEventModel, this.config.adapter.alias);
45
+ return this._events;
46
+ }
47
+ constructor(config) {
48
+ super();
49
+ this.config = config;
50
+ this.running = false;
51
+ this.config = Object.assign({}, DefaultTaskEngineConfig, config, {
52
+ bus: config.bus || new TaskEventBus(),
53
+ registry: config.registry || new TaskHandlerRegistry(),
54
+ });
55
+ }
56
+ async enqueueAtomic(arg) {
57
+ const doc = new TaskModel({
58
+ id: arg.id,
59
+ type: TaskType.ATOMIC,
60
+ name: arg.name,
61
+ status: TaskStatus.PENDING,
62
+ input: arg.input,
63
+ attempt: 0,
64
+ maxAttempts: arg.maxAttempts ?? 5,
65
+ backoff: {
66
+ strategy: arg.backoff?.strategy ?? BackoffStrategy.EXPONENTIAL,
67
+ baseMs: arg.backoff?.baseMs ?? 1000,
68
+ maxMs: arg.backoff?.maxMs ?? 60_000,
69
+ jitter: arg.backoff?.jitter ?? JitterStrategy.FULL,
70
+ },
71
+ logTail: [],
72
+ });
73
+ return await this.tasks.create(doc);
74
+ }
75
+ async enqueueComposite(arg) {
76
+ const doc = new TaskModel({
77
+ id: arg.id,
78
+ type: TaskType.COMPOSITE,
79
+ name: arg.name,
80
+ status: TaskStatus.PENDING,
81
+ attempt: 0,
82
+ maxAttempts: arg.maxAttempts ?? 5,
83
+ backoff: new TaskBackoffModel({
84
+ strategy: arg.backoff?.strategy ?? BackoffStrategy.EXPONENTIAL,
85
+ baseMs: arg.backoff?.baseMs ?? 1000,
86
+ maxMs: arg.backoff?.maxMs ?? 60_000,
87
+ jitter: arg.backoff?.jitter ?? JitterStrategy.FULL,
88
+ }),
89
+ steps: arg.steps.map((s) => new TaskStepSpecModel({ type: s.type, input: s.input })),
90
+ currentStep: 0,
91
+ stepResults: [],
92
+ logTail: [],
93
+ });
94
+ return await this.tasks.create(doc);
95
+ }
96
+ async getTask(id) {
97
+ return await this.tasks.read(id);
98
+ }
99
+ async cancelTask(id) {
100
+ const t = await this.tasks.read(id);
101
+ if (t.status === TaskStatus.SUCCEEDED || t.status === TaskStatus.FAILED)
102
+ return t;
103
+ t.status = TaskStatus.CANCELED;
104
+ t.leaseOwner = undefined;
105
+ t.leaseExpiry = undefined;
106
+ const saved = await this.tasks.update(t);
107
+ await this.emitStatus(saved, TaskStatus.CANCELED);
108
+ return saved;
109
+ }
110
+ start() {
111
+ if (this.running)
112
+ return;
113
+ this.running = true;
114
+ void this.loop();
115
+ }
116
+ stop() {
117
+ this.running = false;
118
+ }
119
+ // -------------------------
120
+ // Worker loop
121
+ // -------------------------
122
+ async loop() {
123
+ while (this.running) {
124
+ const claimed = await this.claimBatch();
125
+ await Promise.allSettled(claimed.map((t) => this.executeClaimed(t)));
126
+ await sleep(claimed.length ? this.config.pollMsBusy : this.config.pollMsIdle);
127
+ }
128
+ }
129
+ async claimBatch() {
130
+ const now = new Date();
131
+ // Runnable:
132
+ // - PENDING
133
+ // - WAITING_RETRY with nextRunAt <= now
134
+ // - RUNNING with expired lease (recovery)
135
+ const condPending = Condition.attribute("status").eq(TaskStatus.PENDING);
136
+ const condRetry = Condition.attribute("status")
137
+ .eq(TaskStatus.WAITING_RETRY)
138
+ .and(Condition.attribute("nextRunAt").lte(now));
139
+ const condLeaseExpired = Condition.attribute("status")
140
+ .eq(TaskStatus.RUNNING)
141
+ .and(Condition.attribute("leaseExpiry").lte(now));
142
+ const runnable = condPending.or(condRetry).or(condLeaseExpired);
143
+ // Fetch more than concurrency because some will fail to claim due to conflicts
144
+ const candidates = await this.tasks
145
+ .select()
146
+ .where(runnable)
147
+ .limit(Math.max(this.config.concurrency * 4, 20))
148
+ .execute();
149
+ const out = [];
150
+ for (const c of candidates) {
151
+ const claimed = await this.tryClaim(c);
152
+ if (claimed)
153
+ out.push(claimed);
154
+ if (out.length >= this.config.concurrency)
155
+ break;
156
+ }
157
+ return out;
158
+ }
159
+ async tryClaim(task) {
160
+ const now = Date.now();
161
+ const claimed = new TaskModel({
162
+ ...task,
163
+ status: TaskStatus.RUNNING,
164
+ leaseOwner: this.config.workerId,
165
+ leaseExpiry: new Date(now + this.config.leaseMs),
166
+ });
167
+ try {
168
+ // optimistic update; conflict errors depend on adapter implementation
169
+ return await this.tasks.update(claimed);
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ }
175
+ // -------------------------
176
+ // Execution
177
+ // -------------------------
178
+ async executeClaimed(task) {
179
+ const taskId = task.id;
180
+ const ctx = new TaskContext().accumulate({
181
+ taskId,
182
+ attempt: task.attempt,
183
+ log: async (level, msg, meta) => {
184
+ task = await this.appendLog(task, level, msg, meta);
185
+ await this.emitLog(taskId, level, msg, meta);
186
+ },
187
+ progress: async (data) => {
188
+ await this.emitProgress(taskId, data);
189
+ },
190
+ heartbeat: async () => {
191
+ // extend lease
192
+ if (task.leaseOwner !== this.config.workerId)
193
+ return;
194
+ task.leaseExpiry = new Date(Date.now() + this.config.leaseMs);
195
+ try {
196
+ task = await this.tasks.update(task);
197
+ }
198
+ catch {
199
+ // if we lose the claim, execution should still proceed; next update will fail and be retried by recovery
200
+ }
201
+ },
202
+ });
203
+ await this.emitStatus(task, TaskStatus.RUNNING);
204
+ try {
205
+ let output;
206
+ if (task.type === TaskType.COMPOSITE) {
207
+ output = await this.runComposite(task, ctx);
208
+ }
209
+ else {
210
+ const handler = this.registry.get(task.type);
211
+ if (!handler)
212
+ throw new InternalError(`No task handler registered for type: ${task.type}`);
213
+ output = await handler.run(task.input, ctx);
214
+ }
215
+ task.status = TaskStatus.SUCCEEDED;
216
+ task.output = output;
217
+ task.error = undefined;
218
+ task.leaseOwner = undefined;
219
+ task.leaseExpiry = undefined;
220
+ task = await this.tasks.update(task);
221
+ await this.emitStatus(task, TaskStatus.SUCCEEDED);
222
+ }
223
+ catch (err) {
224
+ const nextAttempt = (task.attempt ?? 0) + 1;
225
+ const serialized = serializeError(err);
226
+ if (nextAttempt < task.maxAttempts) {
227
+ const delay = computeBackoffMs(nextAttempt, task.backoff);
228
+ const nextRunAt = new Date(Date.now() + delay);
229
+ task.attempt = nextAttempt;
230
+ task.status = TaskStatus.WAITING_RETRY;
231
+ task.nextRunAt = nextRunAt;
232
+ task.error = serialized;
233
+ task.leaseOwner = undefined;
234
+ task.leaseExpiry = undefined;
235
+ task = await this.tasks.update(task);
236
+ await this.emitStatus(task, TaskStatus.WAITING_RETRY);
237
+ await ctx.log(LogLevel.warn, `Retry scheduled`, {
238
+ nextRunAt,
239
+ delayMs: delay,
240
+ attempt: nextAttempt,
241
+ });
242
+ }
243
+ else {
244
+ task.attempt = nextAttempt;
245
+ task.status = TaskStatus.FAILED;
246
+ task.error = serialized;
247
+ task.leaseOwner = undefined;
248
+ task.leaseExpiry = undefined;
249
+ task = await this.tasks.update(task);
250
+ await this.emitStatus(task, TaskStatus.FAILED);
251
+ await ctx.log(LogLevel.error, `Task failed (max attempts reached)`, {
252
+ maxAttempts: task.maxAttempts,
253
+ });
254
+ }
255
+ }
256
+ }
257
+ async runComposite(task, ctx) {
258
+ const steps = task.steps ?? [];
259
+ let idx = task.currentStep ?? 0;
260
+ const results = task.stepResults ?? [];
261
+ while (idx < steps.length) {
262
+ const step = steps[idx];
263
+ const handler = this.registry.get(step.type);
264
+ if (!handler)
265
+ throw new Error(`No task handler registered for composite step: ${step.type}`);
266
+ await ctx.log(LogLevel.info, `Composite step ${idx + 1}/${steps.length}: ${step.type}`);
267
+ try {
268
+ const out = await handler.run(step.input, ctx);
269
+ results[idx] = new TaskStepResultModel({
270
+ status: TaskStatus.SUCCEEDED,
271
+ output: out,
272
+ });
273
+ idx += 1;
274
+ task.stepResults = results;
275
+ task.currentStep = idx;
276
+ task = await this.tasks.update(task);
277
+ await this.emitProgress(task.id, {
278
+ currentStep: idx,
279
+ totalSteps: steps.length,
280
+ });
281
+ }
282
+ catch (err) {
283
+ results[idx] = new TaskStepResultModel({
284
+ status: TaskStatus.FAILED,
285
+ error: serializeError(err),
286
+ });
287
+ task.stepResults = results;
288
+ task.currentStep = idx;
289
+ task.error = serializeError(err);
290
+ // persist failure context before throwing (retry logic happens outside)
291
+ task = await this.tasks.update(task);
292
+ throw err;
293
+ }
294
+ }
295
+ return { stepResults: results };
296
+ }
297
+ // -------------------------
298
+ // Events + log tail persistence
299
+ // -------------------------
300
+ async appendLog(task, level, msg, meta) {
301
+ const entry = new TaskLogEntryModel({
302
+ level,
303
+ msg,
304
+ meta,
305
+ });
306
+ const nextTail = [...(task.logTail ?? []), entry].slice(-this.config.logTailMax);
307
+ task.logTail = nextTail;
308
+ try {
309
+ return await this.tasks.update(task);
310
+ }
311
+ catch {
312
+ return task;
313
+ }
314
+ }
315
+ async emitStatus(task, status) {
316
+ const evt = await this.persistEvent(task.id, TaskEventType.STATUS, {
317
+ status,
318
+ });
319
+ this.bus.emit(evt);
320
+ }
321
+ async emitLog(taskId, level, msg, meta) {
322
+ const evt = await this.persistEvent(taskId, TaskEventType.LOG, {
323
+ level,
324
+ msg,
325
+ meta,
326
+ });
327
+ this.bus.emit(evt);
328
+ }
329
+ async emitProgress(taskId, data) {
330
+ const evt = await this.persistEvent(taskId, TaskEventType.PROGRESS, data);
331
+ this.bus.emit(evt);
332
+ }
333
+ async persistEvent(taskId, type, payload) {
334
+ const evt = new TaskEventModel({ taskId, type, payload });
335
+ return await this.events.create(evt);
336
+ }
337
+ toString() {
338
+ return `TaskEngine<${this.config.adapter.alias}>`;
339
+ }
340
+ }
341
+ //# sourceMappingURL=TaskEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskEngine.js","sourceRoot":"","sources":["../../../src/tasks/TaskEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { TaskEventModel } from "./models/TaskEventModel";
2
+ export declare class TaskEventBus {
3
+ protected readonly listeners: Set<(evt: TaskEventModel) => void>;
4
+ on(listener: (evt: TaskEventModel) => void): () => void;
5
+ emit(evt: TaskEventModel): void;
6
+ }
@@ -0,0 +1,14 @@
1
+ export class TaskEventBus {
2
+ constructor() {
3
+ this.listeners = new Set();
4
+ }
5
+ on(listener) {
6
+ this.listeners.add(listener);
7
+ return () => this.listeners.delete(listener);
8
+ }
9
+ emit(evt) {
10
+ for (const l of this.listeners)
11
+ l(evt);
12
+ }
13
+ }
14
+ //# sourceMappingURL=TaskEventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskEventBus.js","sourceRoot":"","sources":["../../../src/tasks/TaskEventBus.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,YAAY;IAAzB;QACqB,cAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;IAU1E,CAAC;IARC,EAAE,CAAC,QAAuC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,GAAmB;QACtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { TaskEventModel } from "./models/TaskEventModel";
2
+ import { ModelService } from "../services/ModelService";
3
+ import { Constructor } from "@decaf-ts/decoration";
4
+ import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators";
5
+ import { ContextOf, EventIds } from "../persistence/types";
6
+ import { ContextualArgs } from "../utils/ContextualLoggedClass";
7
+ export declare class TaskEventRepository extends ModelService<TaskEventModel> {
8
+ constructor();
9
+ protected onCreate(table: Constructor<TaskEventModel>, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, payload: TaskEventModel, ...args: ContextualArgs<ContextOf<this["repo"]>>): Promise<void>;
10
+ }
@@ -0,0 +1,35 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { TaskEventModel } from "./models/TaskEventModel.js";
11
+ import { service } from "./../utils/decorators.js";
12
+ import { ModelService } from "./../services/ModelService.js";
13
+ import { InternalError, } from "@decaf-ts/db-decorators";
14
+ import { Context } from "./../persistence/index.js";
15
+ import { TaskModel } from "./models/TaskModel.js";
16
+ let TaskEventRepository = class TaskEventRepository extends ModelService {
17
+ constructor() {
18
+ super(TaskEventModel);
19
+ this.observe({ refresh: this.onCreate.bind(this) }, this.repo.filters.onlyOnCreate);
20
+ }
21
+ onCreate(table, event, id, payload, ...args) {
22
+ if (payload instanceof Context) {
23
+ throw new InternalError("Task handlers require the payload to be included");
24
+ }
25
+ const { log, ctxArgs } = this.logCtx(args, this.onCreate);
26
+ log.verbose(`handling task event: ${event} for task ${payload.taskId}: issuing ${payload.classification}`);
27
+ return this.updateObservers(TaskModel, payload.classification, payload.taskId, payload, ...ctxArgs);
28
+ }
29
+ };
30
+ TaskEventRepository = __decorate([
31
+ service(TaskEventModel),
32
+ __metadata("design:paramtypes", [])
33
+ ], TaskEventRepository);
34
+ export { TaskEventRepository };
35
+ //# sourceMappingURL=TaskEventRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskEventRepository.js","sourceRoot":"","sources":["../../../src/tasks/TaskEventRepository.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,mCAAgC;AACzD,OAAO,EAAE,OAAO,EAAE,iCAA4B;AAC9C,OAAO,EAAE,YAAY,EAAE,sCAAiC;AAExD,OAAO,EAEL,aAAa,GAEd,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,kCAA6B;AAC/C,OAAO,EAAE,SAAS,EAAE,8BAA2B;AAGxC,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,YAA4B;IACnE;QACE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,CACV,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAC/B,CAAC;IACJ,CAAC;IAES,QAAQ,CAChB,KAAkC,EAClC,KAAqD,EACrD,EAAY,EACZ,OAAuB,EACvB,GAAG,IAA6C;QAEhD,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,aAAa,CACrB,kDAAkD,CACnD,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,GAAG,CAAC,OAAO,CACT,wBAAwB,KAAK,aAAa,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,cAAc,EAAE,CAC9F,CAAC;QACF,OAAO,IAAI,CAAC,eAAe,CACzB,SAAS,EACT,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,EACd,OAAO,EACP,GAAG,OAAO,CACX,CAAC;IACJ,CAAC;CACF,CAAA;AAjCY,mBAAmB;IAD/B,OAAO,CAAC,cAAc,CAAC;;GACX,mBAAmB,CAiC/B"}
@@ -0,0 +1,11 @@
1
+ import { ITaskHandler } from "./types";
2
+ import { AbsContextual, MaybeContextualArg } from "../utils/ContextualLoggedClass";
3
+ import { TaskContext } from "./TaskContext";
4
+ export declare abstract class TaskHandler<I, O> extends AbsContextual<TaskContext> implements ITaskHandler<I, O> {
5
+ private _type?;
6
+ get type(): string;
7
+ protected constructor();
8
+ protected runPrefix(input: I, ...args: MaybeContextualArg<TaskContext>): Promise<any[]>;
9
+ protected runSuffix(output: O, ctx: TaskContext): O;
10
+ abstract run(input: I, ctx: TaskContext): Promise<O>;
11
+ }
@@ -0,0 +1,28 @@
1
+ import { TasksKey } from "./constants.js";
2
+ import { Metadata } from "@decaf-ts/decoration";
3
+ import { InternalError, wrapMethodWithContext } from "@decaf-ts/db-decorators";
4
+ import { AbsContextual, } from "./../utils/ContextualLoggedClass.js";
5
+ export class TaskHandler extends AbsContextual {
6
+ get type() {
7
+ if (!this._type)
8
+ this._type = Metadata.get(this.constructor, TasksKey);
9
+ if (!this._type)
10
+ throw new InternalError(`No type annotation for this handler found. did you use @task()?`);
11
+ return this._type;
12
+ }
13
+ constructor() {
14
+ super();
15
+ wrapMethodWithContext(this, this.runSuffix.bind(this), this.run.bind(this), this.runSuffix.bind(this), this.run.name);
16
+ }
17
+ async runPrefix(input, ...args) {
18
+ const { log, ctx, ctxArgs } = await this.logCtx(args, this.runPrefix, true);
19
+ log.info(`Running task ${ctx.taskId} attempt ${ctx.attempt}`);
20
+ return [input, ...ctxArgs];
21
+ }
22
+ runSuffix(output, ctx) {
23
+ const { log } = this.logCtx([ctx], this.runPrefix);
24
+ log.info(`Concluded task ${ctx.taskId} attempt ${ctx.attempt}`);
25
+ return output;
26
+ }
27
+ }
28
+ //# sourceMappingURL=TaskHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskHandler.js","sourceRoot":"","sources":["../../../src/tasks/TaskHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,uBAAoB;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EACL,aAAa,GAEd,4CAAuC;AAGxC,MAAM,OAAgB,WACpB,SAAQ,aAA0B;IAKlC,IAAI,IAAI;QACN,IAAI,CAAC,IAAI,CAAC,KAAK;YACb,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAkB,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,KAAK;YACb,MAAM,IAAI,aAAa,CACrB,iEAAiE,CAClE,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QACR,qBAAqB,CACnB,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CACd,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,SAAS,CACvB,KAAQ,EACR,GAAG,IAAqC;QAExC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;IAC7B,CAAC;IAES,SAAS,CAAC,MAAS,EAAE,GAAgB;QAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC;IAChB,CAAC;CAGF"}
@@ -0,0 +1,8 @@
1
+ import { ITaskHandler } from "./types";
2
+ export declare class TaskHandlerRegistry {
3
+ private readonly handlers;
4
+ constructor();
5
+ protected initialize(): void;
6
+ register(handler: ITaskHandler): void;
7
+ get(type: string): ITaskHandler | undefined;
8
+ }
@@ -0,0 +1,32 @@
1
+ import { InternalError } from "@decaf-ts/db-decorators";
2
+ import { Metadata } from "@decaf-ts/decoration";
3
+ export class TaskHandlerRegistry {
4
+ constructor() {
5
+ this.handlers = new Map();
6
+ this.initialize();
7
+ }
8
+ initialize() {
9
+ const preRegisteredHandlers = Metadata.tasks();
10
+ if (preRegisteredHandlers) {
11
+ Object.entries(preRegisteredHandlers).forEach(([key, handler]) => {
12
+ let h;
13
+ try {
14
+ h = new handler();
15
+ }
16
+ catch (e) {
17
+ throw new InternalError(`Failed to initialize handler with key ${key}: ${e}`);
18
+ }
19
+ this.register(h);
20
+ });
21
+ }
22
+ }
23
+ register(handler) {
24
+ if (this.handlers.has(handler.type))
25
+ throw new InternalError(`Duplicate task handler: ${handler.type}`);
26
+ this.handlers.set(handler.type, handler);
27
+ }
28
+ get(type) {
29
+ return this.handlers.get(type);
30
+ }
31
+ }
32
+ //# sourceMappingURL=TaskHandlerRegistry.js.map