@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
@@ -1,398 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ModelService = exports.ClientBasedService = exports.Service = void 0;
13
- const db_decorators_1 = require("@decaf-ts/db-decorators");
14
- const logging_1 = require("@decaf-ts/logging");
15
- const injectable_decorators_1 = require("@decaf-ts/injectable-decorators");
16
- const Repository_1 = require("./../repository/Repository.cjs");
17
- const decorators_1 = require("./decorators.cjs");
18
- const Context_1 = require("./../persistence/Context.cjs");
19
- const constants_1 = require("./../persistence/constants.cjs");
20
- const utils_1 = require("./utils.cjs");
21
- class Service {
22
- constructor(name) {
23
- this.name = name;
24
- /**
25
- * @description The context constructor for this adapter
26
- * @summary Reference to the context class constructor used by this adapter
27
- */
28
- this.Context = (Context_1.Context);
29
- }
30
- /**
31
- * @description Creates repository flags for an operation
32
- * @summary Generates a set of flags that describe a database operation, combining default flags with overrides
33
- * @template F - The Repository Flags type
34
- * @template M - The model type
35
- * @param {OperationKeys} operation - The type of operation being performed
36
- * @param {Constructor<M>} model - The model constructor
37
- * @param {Partial<F>} flags - Custom flag overrides
38
- * @param {...any[]} args - Additional arguments
39
- * @return {Promise<F>} The complete set of flags
40
- */
41
- async flags(operation, flags,
42
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
- ...args) {
44
- let log = (flags.logger || logging_1.Logging.for(this.toString()));
45
- if (flags.correlationId)
46
- log = log.for({ correlationId: flags.correlationId });
47
- return Object.assign({}, constants_1.DefaultAdapterFlags, flags, {
48
- timestamp: new Date(),
49
- operation: operation,
50
- logger: log,
51
- });
52
- }
53
- async context(operation, overrides, ...args) {
54
- const normalizedOverrides = overrides;
55
- const flags = await this.flags(operation, normalizedOverrides, ...args);
56
- return new this.Context().accumulate(flags);
57
- }
58
- async logCtx(args, method, allowCreate = false) {
59
- return (await Service.logCtx.bind(this)(args, method, allowCreate));
60
- }
61
- static async logCtx(args, operation, allowCreate = false,
62
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
63
- ...argz) {
64
- const bootCtx = async function bootCtx() {
65
- if (!allowCreate)
66
- throw new db_decorators_1.InternalError("No context provided");
67
- return this.context(typeof operation === "string" ? operation : operation.name, {});
68
- }.bind(this);
69
- if (args.length < 1) {
70
- args = [await bootCtx()];
71
- }
72
- const ctx = args.pop();
73
- if (!(ctx instanceof Context_1.Context))
74
- args = [...args, await bootCtx()];
75
- const log = (this
76
- ? ctx.logger.for(this).for(operation)
77
- : ctx.logger.clear().for(this).for(operation));
78
- return {
79
- ctx: ctx,
80
- log: operation ? log.for(operation) : log,
81
- ctxArgs: [...args, ctx],
82
- };
83
- }
84
- /**
85
- * @description Retrieves a Service instance by name/class
86
- * @summary Looks up and returns a cached API instance by its name or constructor
87
- * @template A Type extending Api
88
- * @param {string | Constructor<A>} name - Name of the API or its constructor
89
- * @return {A} The requested API instance
90
- */
91
- static get(name) {
92
- if (!name)
93
- throw new db_decorators_1.InternalError(`No name provided`);
94
- const key = (0, utils_1.injectableServiceKey)(name);
95
- const injectable = injectable_decorators_1.Injectables.get(key);
96
- if (injectable)
97
- return injectable;
98
- throw new db_decorators_1.InternalError(`No Service found for ${typeof name === "string" ? name : typeof name === "symbol" ? name.toString() : name.name}`);
99
- }
100
- static async boot(...args) {
101
- const factory = {
102
- async context(operation) {
103
- return new Context_1.Context().accumulate(Object.assign({}, constants_1.DefaultAdapterFlags, {
104
- timestamp: new Date(),
105
- operation: operation,
106
- logger: logging_1.Logging.get(),
107
- }));
108
- },
109
- };
110
- const { log, ctxArgs } = await this.logCtx.bind(factory)(args, this.boot, true);
111
- const services = injectable_decorators_1.Injectables.services();
112
- for (const [key, service] of Object.entries(services)) {
113
- try {
114
- log.verbose(`Booting ${service.name} service...`);
115
- const s = injectable_decorators_1.Injectables.get(service);
116
- if (!s)
117
- throw new db_decorators_1.InternalError(`Failed to resolve injectable for ${key}`);
118
- if (s instanceof ClientBasedService) {
119
- log.verbose(`Initializing ${service.name} service...`);
120
- await s.boot(...ctxArgs);
121
- }
122
- }
123
- catch (e) {
124
- throw new db_decorators_1.InternalError(`Failed to boot ${key} service:${e}`);
125
- }
126
- }
127
- }
128
- }
129
- exports.Service = Service;
130
- class ClientBasedService extends Service {
131
- constructor() {
132
- super();
133
- }
134
- async boot(...args) {
135
- const { log, ctxArgs } = await this.logCtx(args, this.boot, true);
136
- log.verbose(`Initializing ${this.toString()}...`);
137
- const { config, client } = await this.initialize(...ctxArgs);
138
- this._config = config;
139
- this._client = client;
140
- }
141
- get config() {
142
- if (!this._config)
143
- throw new db_decorators_1.InternalError(`Config not initialized`);
144
- return this._config;
145
- }
146
- get client() {
147
- if (!this._client)
148
- throw new db_decorators_1.InternalError(`Client not initialized`);
149
- return this._client;
150
- }
151
- async shutdown(...args) {
152
- const { log } = await this.logCtx(args, this.shutdown, true);
153
- log.info(`Shutting down ${this.name} service...`);
154
- }
155
- }
156
- exports.ClientBasedService = ClientBasedService;
157
- __decorate([
158
- (0, logging_1.final)(),
159
- __metadata("design:type", Function),
160
- __metadata("design:paramtypes", [Object]),
161
- __metadata("design:returntype", Promise)
162
- ], ClientBasedService.prototype, "boot", null);
163
- __decorate([
164
- (0, logging_1.final)(),
165
- __metadata("design:type", Object),
166
- __metadata("design:paramtypes", [])
167
- ], ClientBasedService.prototype, "config", null);
168
- __decorate([
169
- (0, logging_1.final)(),
170
- __metadata("design:type", Object),
171
- __metadata("design:paramtypes", [])
172
- ], ClientBasedService.prototype, "client", null);
173
- const resolveAlias = (alias) => {
174
- if (typeof alias === "string")
175
- return alias.endsWith("Service") ? alias : `${alias}Service`;
176
- if (typeof alias === "symbol")
177
- return alias.toString();
178
- return `${alias.name}Service`;
179
- };
180
- class ModelService extends Service {
181
- get class() {
182
- if (!this.clazz)
183
- throw new db_decorators_1.InternalError(`Class not initialized`);
184
- return this.clazz;
185
- }
186
- get repo() {
187
- if (!this._repository)
188
- this._repository = Repository_1.Repository.forModel(this.clazz);
189
- return this._repository;
190
- }
191
- constructor(clazz, name) {
192
- super(name ?? `${clazz.name}Service`);
193
- this.clazz = clazz;
194
- }
195
- static getService(name) {
196
- if (!name)
197
- throw new db_decorators_1.InternalError(`No name provided`);
198
- const alias = resolveAlias(name);
199
- try {
200
- const injectable = Service.get(alias);
201
- if (injectable)
202
- return injectable;
203
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
204
- }
205
- catch (e) {
206
- // ignore
207
- }
208
- throw new db_decorators_1.InternalError(`No ModelService found for alias ${alias}`);
209
- }
210
- for(conf, ...args) {
211
- const target = this;
212
- return new Proxy(target, {
213
- get(original, prop, receiver) {
214
- if (prop === "repo") {
215
- return original.repo.for(conf, ...args);
216
- }
217
- return Reflect.get(original, prop, receiver);
218
- },
219
- });
220
- }
221
- async create(model, ...args) {
222
- const { ctxArgs } = await this.logCtx(args, this.create, true);
223
- return this.repo.create(model, ...ctxArgs);
224
- }
225
- async createAll(models, ...args) {
226
- const { ctxArgs } = await this.logCtx(args, this.createAll, true);
227
- return this.repo.createAll(models, ...ctxArgs);
228
- }
229
- async delete(key, ...args) {
230
- const { ctxArgs } = await this.logCtx(args, this.delete, true);
231
- return this.repo.delete(key, ...ctxArgs);
232
- }
233
- async deleteAll(keys, ...args) {
234
- const { ctxArgs } = await this.logCtx(args, this.deleteAll, true);
235
- return this.repo.deleteAll(keys, ...ctxArgs);
236
- }
237
- async read(key, ...args) {
238
- const { ctxArgs } = await this.logCtx(args, this.read, true);
239
- return this.repo.read(key, ...ctxArgs);
240
- }
241
- async readAll(keys, ...args) {
242
- const { ctxArgs } = await this.logCtx(args, this.readAll, true);
243
- return this.repo.readAll(keys, ...ctxArgs);
244
- }
245
- async query(methodName, ...args) {
246
- const method = this.repo?.[methodName];
247
- if (typeof method !== "function")
248
- throw new Error(`Method "${methodName}" is not implemented`);
249
- return method.apply(this.repo, args);
250
- }
251
- async update(model, ...args) {
252
- const { ctxArgs } = await this.logCtx(args, this.update, true);
253
- return this.repo.update(model, ...ctxArgs);
254
- }
255
- async updateAll(models, ...args) {
256
- const { ctxArgs } = await this.logCtx(args, this.updateAll, true);
257
- return this.repo.updateAll(models, ...ctxArgs);
258
- }
259
- //
260
- // async query(
261
- // condition: Condition<M>,
262
- // orderBy: keyof M,
263
- // order: OrderDirection = OrderDirection.ASC,
264
- // limit?: number,
265
- // skip?: number,
266
- // ...args: MaybeContextualArg<ContextOfRepository<R>>
267
- // ): Promise<M[]> {
268
- // const { ctxArgs } = await this.logCtx(args, this.query, true);
269
- // return this.repo.query(condition, orderBy, order, limit, skip, ...ctxArgs);
270
- // }
271
- async listBy(key, order, ...args) {
272
- const { ctxArgs } = await this.logCtx(args, this.listBy, true);
273
- return this.repo.listBy(key, order, ...ctxArgs);
274
- }
275
- async paginateBy(key, order, ref, ...args) {
276
- const { ctxArgs } = await this.logCtx(args, this.paginateBy, true);
277
- return this.repo.paginateBy(key, order, ref, ...ctxArgs);
278
- }
279
- async findOneBy(key, value, ...args) {
280
- const { ctxArgs } = await this.logCtx(args, this.findOneBy, true);
281
- return this.repo.findOneBy(key, value, ...ctxArgs);
282
- }
283
- async findBy(key, value, ...args) {
284
- const { ctxArgs } = await this.logCtx(args, this.findBy, true);
285
- return this.repo.findBy(key, value, ...ctxArgs);
286
- }
287
- async statement(name, ...args) {
288
- const { ctxArgs } = await this.logCtx(args, this.statement, true);
289
- return this.repo.statement(name, ...ctxArgs);
290
- }
291
- async logCtx(args, method, allowCreate = false) {
292
- return (await ModelService.logCtx.bind(this.repo["adapter"])(args, method, allowCreate, this.repo["_overrides"], this.class));
293
- }
294
- static forModel(model, alias) {
295
- let instance;
296
- alias = resolveAlias(alias || model);
297
- try {
298
- instance = ModelService.get(alias);
299
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
300
- }
301
- catch (e) {
302
- instance = undefined;
303
- }
304
- if (instance instanceof ModelService)
305
- return instance;
306
- const Base = this;
307
- let DecoratedService = class DecoratedService extends Base {
308
- constructor() {
309
- super(model);
310
- }
311
- };
312
- DecoratedService = __decorate([
313
- (0, decorators_1.service)(alias),
314
- __metadata("design:paramtypes", [])
315
- ], DecoratedService);
316
- return new DecoratedService();
317
- }
318
- static async logCtx(args, operation, allowCreate = false, overrides = {}, constructor) {
319
- const bootCtx = async function bootCtx() {
320
- if (!allowCreate)
321
- throw new db_decorators_1.InternalError("No context provided");
322
- return this.context(typeof operation === "string" ? operation : operation.name, overrides, constructor);
323
- }.bind(this);
324
- if (args.length < 1) {
325
- args = [await bootCtx()];
326
- }
327
- let ctx = args.pop();
328
- if (!(ctx instanceof Context_1.Context)) {
329
- if (typeof ctx !== "undefined")
330
- args.push(ctx);
331
- ctx = (await bootCtx());
332
- }
333
- const log = (this
334
- ? ctx.logger.for(this).for(operation)
335
- : ctx.logger.clear().for(this).for(operation));
336
- return {
337
- ctx: ctx,
338
- log: log,
339
- ctxArgs: [...args, ctx],
340
- };
341
- }
342
- }
343
- exports.ModelService = ModelService;
344
- __decorate([
345
- (0, decorators_1.create)(),
346
- __metadata("design:type", Function),
347
- __metadata("design:paramtypes", [Object, void 0]),
348
- __metadata("design:returntype", Promise)
349
- ], ModelService.prototype, "create", null);
350
- __decorate([
351
- (0, decorators_1.create)(),
352
- __metadata("design:type", Function),
353
- __metadata("design:paramtypes", [Array, void 0]),
354
- __metadata("design:returntype", Promise)
355
- ], ModelService.prototype, "createAll", null);
356
- __decorate([
357
- (0, decorators_1.del)(),
358
- __metadata("design:type", Function),
359
- __metadata("design:paramtypes", [Object, void 0]),
360
- __metadata("design:returntype", Promise)
361
- ], ModelService.prototype, "delete", null);
362
- __decorate([
363
- (0, decorators_1.del)(),
364
- __metadata("design:type", Function),
365
- __metadata("design:paramtypes", [Array, void 0]),
366
- __metadata("design:returntype", Promise)
367
- ], ModelService.prototype, "deleteAll", null);
368
- __decorate([
369
- (0, decorators_1.read)(),
370
- __metadata("design:type", Function),
371
- __metadata("design:paramtypes", [Object, void 0]),
372
- __metadata("design:returntype", Promise)
373
- ], ModelService.prototype, "read", null);
374
- __decorate([
375
- (0, decorators_1.read)(),
376
- __metadata("design:type", Function),
377
- __metadata("design:paramtypes", [Array, void 0]),
378
- __metadata("design:returntype", Promise)
379
- ], ModelService.prototype, "readAll", null);
380
- __decorate([
381
- (0, decorators_1.read)(),
382
- __metadata("design:type", Function),
383
- __metadata("design:paramtypes", [String, Object]),
384
- __metadata("design:returntype", Promise)
385
- ], ModelService.prototype, "query", null);
386
- __decorate([
387
- (0, decorators_1.update)(),
388
- __metadata("design:type", Function),
389
- __metadata("design:paramtypes", [Object, void 0]),
390
- __metadata("design:returntype", Promise)
391
- ], ModelService.prototype, "update", null);
392
- __decorate([
393
- (0, decorators_1.update)(),
394
- __metadata("design:type", Function),
395
- __metadata("design:paramtypes", [Array, Object]),
396
- __metadata("design:returntype", Promise)
397
- ], ModelService.prototype, "updateAll", null);
398
- //# sourceMappingURL=Services.js.map
@@ -1,83 +0,0 @@
1
- import type { ContextOfRepository, Contextual, FlagsOf as ContextualFlagsOf } from "@decaf-ts/db-decorators";
2
- import { IRepository, OperationKeys, type PrimaryKeyType } from "@decaf-ts/db-decorators";
3
- import { Constructor } from "@decaf-ts/decoration";
4
- import type { ContextualArgs, ContextualizedArgs, MaybeContextualArg } from "./ContextualLoggedClass";
5
- import { type AdapterFlags, type FlagsOf } from "../persistence/types";
6
- import { Model, type ModelConstructor } from "@decaf-ts/decorator-validation";
7
- import { Repository } from "../repository/Repository";
8
- import { Context } from "../persistence/Context";
9
- import { OrderDirection } from "../repository/constants";
10
- import { DirectionLimitOffset } from "../query/index";
11
- export declare abstract class Service<C extends Context<AdapterFlags> = Context<AdapterFlags>> {
12
- readonly name?: string | undefined;
13
- protected constructor(name?: string | undefined);
14
- /**
15
- * @description Creates repository flags for an operation
16
- * @summary Generates a set of flags that describe a database operation, combining default flags with overrides
17
- * @template F - The Repository Flags type
18
- * @template M - The model type
19
- * @param {OperationKeys} operation - The type of operation being performed
20
- * @param {Constructor<M>} model - The model constructor
21
- * @param {Partial<F>} flags - Custom flag overrides
22
- * @param {...any[]} args - Additional arguments
23
- * @return {Promise<F>} The complete set of flags
24
- */
25
- protected flags(operation: OperationKeys | string, flags: Partial<FlagsOf<C>>, ...args: any[]): Promise<FlagsOf<C>>;
26
- /**
27
- * @description The context constructor for this adapter
28
- * @summary Reference to the context class constructor used by this adapter
29
- */
30
- protected readonly Context: Constructor<C>;
31
- context(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE | string, overrides: Partial<ContextualFlagsOf<C>>, ...args: any[]): Promise<C>;
32
- protected logCtx<ARGS extends any[]>(args: ARGS, method: ((...args: any[]) => any) | string, allowCreate?: boolean): Promise<ContextualizedArgs<any, ARGS>>;
33
- protected static logCtx<CONTEXT extends Context<any>, ARGS extends any[]>(this: Contextual, args: ARGS, operation: ((...args: any[]) => any) | string, allowCreate?: boolean, ...argz: any[]): Promise<ContextualizedArgs<CONTEXT, ARGS>>;
34
- /**
35
- * @description Retrieves a Service instance by name/class
36
- * @summary Looks up and returns a cached API instance by its name or constructor
37
- * @template A Type extending Api
38
- * @param {string | Constructor<A>} name - Name of the API or its constructor
39
- * @return {A} The requested API instance
40
- */
41
- static get<A extends Service>(name: string | symbol | Constructor<A>): A;
42
- static boot<C extends Context<any> = any>(...args: MaybeContextualArg<C>): Promise<void>;
43
- }
44
- export declare abstract class ClientBasedService<CLIENT, CONF, C extends Context<any> = any> extends Service {
45
- protected _client?: CLIENT;
46
- protected _config?: CONF;
47
- protected constructor();
48
- boot(...args: MaybeContextualArg<C>): Promise<void>;
49
- abstract initialize(...args: ContextualArgs<C>): Promise<{
50
- config: CONF;
51
- client: CLIENT;
52
- }>;
53
- protected get config(): CONF;
54
- get client(): CLIENT;
55
- shutdown(...args: MaybeContextualArg<C>): Promise<void>;
56
- }
57
- export type ArrayMode = "one" | "many";
58
- export declare class ModelService<M extends Model<boolean>, R extends Repository<M, any> = Repository<M, any>> extends Service implements IRepository<M, ContextOfRepository<R>> {
59
- private readonly clazz;
60
- protected _repository: R;
61
- get class(): Constructor<M>;
62
- get repo(): R;
63
- constructor(clazz: Constructor<M>, name?: string);
64
- static getService<M extends Model<boolean>, S extends ModelService<M>>(name: string | symbol | Constructor<M>): S;
65
- for(conf: any, ...args: any[]): this;
66
- create(model: M, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M>;
67
- createAll(models: M[], ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M[]>;
68
- delete(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M>;
69
- deleteAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M[]>;
70
- read(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M>;
71
- readAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M[]>;
72
- query<M, R extends ArrayMode = "one">(methodName: string, ...args: unknown[]): Promise<R extends "one" ? M : M[]>;
73
- update(model: M, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M>;
74
- updateAll(models: M[], ...args: any[]): Promise<M[]>;
75
- listBy(key: keyof M, order: OrderDirection, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M[]>;
76
- paginateBy(key: keyof M, order: OrderDirection, ref: Omit<DirectionLimitOffset, "direction">, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<import("../query/Paginator").SerializedPage<M>>;
77
- findOneBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M>;
78
- findBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<M[]>;
79
- statement(name: string, ...args: MaybeContextualArg<ContextOfRepository<R>>): Promise<any>;
80
- protected logCtx<ARGS extends any[]>(args: ARGS, method: ((...args: any[]) => any) | string, allowCreate?: boolean): Promise<ContextualizedArgs<any, ARGS>>;
81
- static forModel<M extends Model<boolean>, S extends ModelService<M>>(this: new (model: ModelConstructor<M>) => S, model: ModelConstructor<M>, alias?: string | symbol): S;
82
- protected static logCtx<CONTEXT extends Context<any>, ARGS extends any[]>(this: Contextual, args: ARGS, operation: ((...args: any[]) => any) | string, allowCreate: boolean | undefined, overrides: Partial<FlagsOf<CONTEXT>> | undefined, constructor: ModelConstructor<any>): Promise<ContextualizedArgs<CONTEXT, ARGS>>;
83
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Services.js","sourceRoot":"","sources":["../../src/utils/Services.ts"],"names":[],"mappings":"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"}