@decaf-ts/core 0.7.59 → 0.7.61

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 +17 -8
  75. package/lib/esm/query/Paginator.js.map +1 -1
  76. package/lib/esm/query/Statement.d.ts +6 -4
  77. package/lib/esm/query/Statement.js +24 -18
  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 +6 -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 +20 -11
  250. package/lib/query/Paginator.d.ts +4 -4
  251. package/lib/query/Paginator.js.map +1 -1
  252. package/lib/query/Statement.cjs +48 -42
  253. package/lib/query/Statement.d.ts +6 -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 +6 -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,240 @@
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 = void 0;
13
+ const Repository_1 = require("./../repository/Repository.cjs");
14
+ const services_1 = require("./services.cjs");
15
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
16
+ const decorators_1 = require("./../utils/decorators.cjs");
17
+ const index_1 = require("./../persistence/index.cjs");
18
+ const index_2 = require("./../query/index.cjs");
19
+ const resolveAlias = (alias) => {
20
+ if (typeof alias === "string")
21
+ return alias.endsWith("Service") ? alias : `${alias}Service`;
22
+ if (typeof alias === "symbol")
23
+ return alias.toString();
24
+ return `${alias.name}Service`;
25
+ };
26
+ class ModelService extends services_1.Service {
27
+ get class() {
28
+ if (!this.clazz)
29
+ throw new db_decorators_1.InternalError(`Class not initialized`);
30
+ return this.clazz;
31
+ }
32
+ get repo() {
33
+ if (!this._repository)
34
+ this._repository = Repository_1.Repository.forModel(this.clazz);
35
+ return this._repository;
36
+ }
37
+ constructor(clazz, name) {
38
+ super(name ?? `${clazz.name}Service`);
39
+ this.clazz = clazz;
40
+ }
41
+ static getService(name) {
42
+ if (!name)
43
+ throw new db_decorators_1.InternalError(`No name provided`);
44
+ const alias = resolveAlias(name);
45
+ try {
46
+ const injectable = services_1.Service.get(alias);
47
+ if (injectable)
48
+ return injectable;
49
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
50
+ }
51
+ catch (e) {
52
+ // ignore
53
+ }
54
+ throw new db_decorators_1.InternalError(`No ModelService found for alias ${alias}`);
55
+ }
56
+ for(conf, ...args) {
57
+ const target = this;
58
+ return new Proxy(target, {
59
+ get(original, prop, receiver) {
60
+ if (prop === "repo") {
61
+ return original.repo.for(conf, ...args);
62
+ }
63
+ return Reflect.get(original, prop, receiver);
64
+ },
65
+ });
66
+ }
67
+ async create(model, ...args) {
68
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.OperationKeys.CREATE, true)).for(this.create);
69
+ return this.repo.create(model, ...ctxArgs);
70
+ }
71
+ async createAll(models, ...args) {
72
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.BulkCrudOperationKeys.CREATE_ALL, true)).for(this.createAll);
73
+ return this.repo.createAll(models, ...ctxArgs);
74
+ }
75
+ async delete(key, ...args) {
76
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.OperationKeys.DELETE, true)).for(this.delete);
77
+ return this.repo.delete(key, ...ctxArgs);
78
+ }
79
+ async deleteAll(keys, ...args) {
80
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.BulkCrudOperationKeys.DELETE_ALL, true)).for(this.deleteAll);
81
+ return this.repo.deleteAll(keys, ...ctxArgs);
82
+ }
83
+ async read(key, ...args) {
84
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.OperationKeys.READ, true)).for(this.read);
85
+ return this.repo.read(key, ...ctxArgs);
86
+ }
87
+ async readAll(keys, ...args) {
88
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.BulkCrudOperationKeys.READ_ALL, true)).for(this.readAll);
89
+ return this.repo.readAll(keys, ...ctxArgs);
90
+ }
91
+ async query(methodName, ...args) {
92
+ const { ctxArgs } = (await this.logCtx(args, index_1.PersistenceKeys.QUERY, true)).for(this.query);
93
+ const method = this.repo?.[methodName];
94
+ if (typeof method !== "function")
95
+ throw new db_decorators_1.InternalError(`Method "${methodName}" is not implemented`);
96
+ return method.apply(this.repo, ctxArgs);
97
+ }
98
+ async update(model, ...args) {
99
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.OperationKeys.UPDATE, true)).for(this.update);
100
+ return this.repo.update(model, ...ctxArgs);
101
+ }
102
+ async updateAll(models, ...args) {
103
+ const { ctxArgs } = (await this.logCtx(args, db_decorators_1.BulkCrudOperationKeys.UPDATE_ALL, true)).for(this.updateAll);
104
+ return this.repo.updateAll(models, ...ctxArgs);
105
+ }
106
+ //
107
+ // async query(
108
+ // condition: Condition<M>,
109
+ // orderBy: keyof M,
110
+ // order: OrderDirection = OrderDirection.ASC,
111
+ // limit?: number,
112
+ // skip?: number,
113
+ // ...args: MaybeContextualArg<ContextOf<R>>
114
+ // ): Promise<M[]> {
115
+ // const { ctxArgs } = await this.logCtx(args, this.query, true);
116
+ // return this.repo.query(condition, orderBy, order, limit, skip, ...ctxArgs);
117
+ // }
118
+ async listBy(key, order, ...args) {
119
+ const { ctxArgs } = (await this.logCtx(args, index_2.PreparedStatementKeys.LIST_BY, true)).for(this.listBy);
120
+ return this.repo.listBy(key, order, ...ctxArgs);
121
+ }
122
+ async paginateBy(key, order, ref, ...args) {
123
+ const { ctxArgs } = (await this.logCtx(args, index_2.PreparedStatementKeys.PAGE_BY, true)).for(this.paginateBy);
124
+ return this.repo.paginateBy(key, order, ref, ...ctxArgs);
125
+ }
126
+ async findOneBy(key, value, ...args) {
127
+ const { ctxArgs } = (await this.logCtx(args, index_2.PreparedStatementKeys.FIND_ONE_BY, true)).for(this.findOneBy);
128
+ return this.repo.findOneBy(key, value, ...ctxArgs);
129
+ }
130
+ async findBy(key, value, ...args) {
131
+ const { ctxArgs } = (await this.logCtx(args, index_2.PreparedStatementKeys.FIND_BY, true)).for(this.findBy);
132
+ return this.repo.findBy(key, value, ...ctxArgs);
133
+ }
134
+ async statement(name, ...args) {
135
+ const { ctxArgs } = (await this.logCtx(args, index_1.PersistenceKeys.STATEMENT, true)).for(this.statement);
136
+ return this.repo.statement(name, ...ctxArgs);
137
+ }
138
+ static forModel(model, alias) {
139
+ let instance;
140
+ alias = resolveAlias(alias || model);
141
+ try {
142
+ instance = ModelService.get(alias);
143
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
144
+ }
145
+ catch (e) {
146
+ instance = undefined;
147
+ }
148
+ if (instance instanceof ModelService)
149
+ return instance;
150
+ const Base = this;
151
+ let DecoratedService = class DecoratedService extends Base {
152
+ constructor() {
153
+ super(model);
154
+ }
155
+ };
156
+ DecoratedService = __decorate([
157
+ (0, decorators_1.service)(alias),
158
+ __metadata("design:paramtypes", [])
159
+ ], DecoratedService);
160
+ return new DecoratedService();
161
+ }
162
+ refresh(table, event, id, ...args) {
163
+ return this.repo.refresh(table, event, id, ...args);
164
+ }
165
+ observe(observer, filter) {
166
+ return this.repo.observe(observer, filter);
167
+ }
168
+ unObserve(observer) {
169
+ return this.repo.unObserve(observer);
170
+ }
171
+ updateObservers(model, operation, ids, ...args) {
172
+ return this.repo.updateObservers(model, operation, ids, ...args);
173
+ }
174
+ logCtx(args, operation, allowCreate = false) {
175
+ const ctx = this.repo["adapter"]["logCtx"]([this.repo.class, ...args], operation, allowCreate, this.repo["_overrides"] || {});
176
+ function squashArgs(ctx) {
177
+ ctx.ctxArgs.shift(); // removes added model to args
178
+ return ctx;
179
+ }
180
+ if (!(ctx instanceof Promise))
181
+ return squashArgs(ctx);
182
+ return ctx.then(squashArgs);
183
+ }
184
+ }
185
+ exports.ModelService = ModelService;
186
+ __decorate([
187
+ (0, decorators_1.create)(),
188
+ __metadata("design:type", Function),
189
+ __metadata("design:paramtypes", [Object, void 0]),
190
+ __metadata("design:returntype", Promise)
191
+ ], ModelService.prototype, "create", null);
192
+ __decorate([
193
+ (0, decorators_1.create)(),
194
+ __metadata("design:type", Function),
195
+ __metadata("design:paramtypes", [Array, void 0]),
196
+ __metadata("design:returntype", Promise)
197
+ ], ModelService.prototype, "createAll", null);
198
+ __decorate([
199
+ (0, decorators_1.del)(),
200
+ __metadata("design:type", Function),
201
+ __metadata("design:paramtypes", [Object, void 0]),
202
+ __metadata("design:returntype", Promise)
203
+ ], ModelService.prototype, "delete", null);
204
+ __decorate([
205
+ (0, decorators_1.del)(),
206
+ __metadata("design:type", Function),
207
+ __metadata("design:paramtypes", [Array, void 0]),
208
+ __metadata("design:returntype", Promise)
209
+ ], ModelService.prototype, "deleteAll", null);
210
+ __decorate([
211
+ (0, decorators_1.read)(),
212
+ __metadata("design:type", Function),
213
+ __metadata("design:paramtypes", [Object, void 0]),
214
+ __metadata("design:returntype", Promise)
215
+ ], ModelService.prototype, "read", null);
216
+ __decorate([
217
+ (0, decorators_1.read)(),
218
+ __metadata("design:type", Function),
219
+ __metadata("design:paramtypes", [Array, void 0]),
220
+ __metadata("design:returntype", Promise)
221
+ ], ModelService.prototype, "readAll", null);
222
+ __decorate([
223
+ (0, decorators_1.read)(),
224
+ __metadata("design:type", Function),
225
+ __metadata("design:paramtypes", [String, Object]),
226
+ __metadata("design:returntype", Promise)
227
+ ], ModelService.prototype, "query", null);
228
+ __decorate([
229
+ (0, decorators_1.update)(),
230
+ __metadata("design:type", Function),
231
+ __metadata("design:paramtypes", [Object, void 0]),
232
+ __metadata("design:returntype", Promise)
233
+ ], ModelService.prototype, "update", null);
234
+ __decorate([
235
+ (0, decorators_1.update)(),
236
+ __metadata("design:type", Function),
237
+ __metadata("design:paramtypes", [Array, Object]),
238
+ __metadata("design:returntype", Promise)
239
+ ], ModelService.prototype, "updateAll", null);
240
+ //# sourceMappingURL=ModelService.js.map
@@ -0,0 +1,42 @@
1
+ import { type Constructor } from "@decaf-ts/decoration";
2
+ import { Model, type ModelConstructor } from "@decaf-ts/decorator-validation";
3
+ import { type Repo } from "../repository/Repository";
4
+ import { Service } from "./services";
5
+ import type { AllOperationKeys, ContextOf, EventIds, ObserverFilter, PersistenceObservable, PersistenceObserver } from "../persistence/types";
6
+ import { type IRepository, type PrimaryKeyType } from "@decaf-ts/db-decorators";
7
+ import type { ContextualArgs, ContextualizedArgs, MaybeContextualArg, MethodOrOperation } from "../utils/ContextualLoggedClass";
8
+ import { OrderDirection } from "../repository/constants";
9
+ import { type DirectionLimitOffset } from "../query/types";
10
+ import { type Observer } from "../interfaces";
11
+ export type ArrayMode = "one" | "many";
12
+ export declare class ModelService<M extends Model<boolean>, R extends Repo<M> = Repo<M>> extends Service implements IRepository<M, ContextOf<R>>, PersistenceObservable<ContextOf<R>>, PersistenceObserver<ContextOf<R>> {
13
+ private readonly clazz;
14
+ protected _repository: R;
15
+ get class(): Constructor<M>;
16
+ get repo(): R;
17
+ constructor(clazz: Constructor<M>, name?: string);
18
+ static getService<M extends Model<boolean>, S extends ModelService<M>>(name: string | symbol | Constructor<M>): S;
19
+ for(conf: any, ...args: any[]): this;
20
+ create(model: M, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
21
+ createAll(models: M[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
22
+ delete(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
23
+ deleteAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
24
+ read(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
25
+ readAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
26
+ query<M, R extends ArrayMode = "one">(methodName: string, ...args: unknown[]): Promise<R extends "one" ? M : M[]>;
27
+ update(model: M, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
28
+ updateAll(models: M[], ...args: any[]): Promise<M[]>;
29
+ listBy(key: keyof M, order: OrderDirection, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
30
+ paginateBy(key: keyof M, order: OrderDirection, ref: Omit<DirectionLimitOffset, "direction">, ...args: MaybeContextualArg<ContextOf<R>>): Promise<import("../query/Paginator").SerializedPage<M>>;
31
+ findOneBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
32
+ findBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
33
+ statement(name: string, ...args: MaybeContextualArg<ContextOf<R>>): Promise<any>;
34
+ static forModel<M extends Model<boolean>, S extends ModelService<M>>(this: new (model: ModelConstructor<M>) => S, model: ModelConstructor<M>, alias?: string | symbol): S;
35
+ refresh(table: Constructor<M>, event: AllOperationKeys, id: EventIds, ...args: ContextualArgs<ContextOf<R>>): Promise<void>;
36
+ observe(observer: Observer, filter?: ObserverFilter): void;
37
+ unObserve(observer: Observer): void;
38
+ updateObservers(model: Constructor, operation: AllOperationKeys, ids: EventIds, ...args: ContextualArgs<ContextOf<R>>): Promise<void>;
39
+ protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD): ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>;
40
+ protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD, allowCreate: false): ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>;
41
+ protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD, allowCreate: true): Promise<ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>>;
42
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelService.js","sourceRoot":"","sources":["../../src/services/ModelService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersistenceService = void 0;
4
+ const services_1 = require("./services.cjs");
5
+ const Context_1 = require("./../persistence/Context.cjs");
6
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
7
+ const index_1 = require("./../persistence/index.cjs");
8
+ class PersistenceService extends services_1.ClientBasedService {
9
+ constructor() {
10
+ super();
11
+ }
12
+ async initialize(...args) {
13
+ const cfgs = args.shift();
14
+ if (!cfgs ||
15
+ !Array.isArray(cfgs) ||
16
+ cfgs instanceof Context_1.Context ||
17
+ !cfgs.every((c) => Array.isArray(c)))
18
+ throw new db_decorators_1.InternalError(`Missing/invalid configuration`);
19
+ const { log } = (await this.logCtx(args, index_1.PersistenceKeys.INITIALIZATION, true)).for(this.initialize);
20
+ const clients = cfgs.map(([constr, cfg, ...args]) => {
21
+ try {
22
+ log.silly(`Initializing ${constr.name} with config: ${JSON.stringify(cfg)}`);
23
+ const adapter = new constr(cfg, ...args);
24
+ log.debug(`Initialized ${adapter.toString()}...`);
25
+ return adapter;
26
+ }
27
+ catch (e) {
28
+ throw new db_decorators_1.InternalError(`Failed to initialize ${constr.name}: ${e}`);
29
+ }
30
+ });
31
+ return {
32
+ client: clients,
33
+ config: cfgs,
34
+ };
35
+ }
36
+ }
37
+ exports.PersistenceService = PersistenceService;
38
+ //# sourceMappingURL=PersistenceService.js.map
@@ -0,0 +1,16 @@
1
+ import { ClientBasedService } from "./services";
2
+ import { Adapter } from "../persistence/Adapter";
3
+ import { ConfigOf, ContextOf } from "../persistence/types";
4
+ import { MaybeContextualArg } from "../utils/ContextualLoggedClass";
5
+ import { Constructor } from "@decaf-ts/decoration";
6
+ export declare class PersistenceService<A extends Adapter<any, any, any, any>> extends ClientBasedService<A[], [
7
+ Constructor<A>,
8
+ ConfigOf<A>,
9
+ ...args: any[]
10
+ ][], ContextOf<A>> {
11
+ constructor();
12
+ initialize(...args: MaybeContextualArg<ContextOf<A>>): Promise<{
13
+ config: [Constructor<A>, ConfigOf<A>, ...args: any[]][];
14
+ client: A[];
15
+ }>;
16
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistenceService.js","sourceRoot":"","sources":["../../src/services/PersistenceService.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAIhD,0DAAiD;AACjD,2DAAwD;AAExD,sDAAuD;AAEvD,MAAa,kBAEX,SAAQ,6BAIT;IACC;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAEQ,KAAK,CAAC,UAAU,CACvB,GAAG,IAAsC;QAKzC,MAAM,IAAI,GAAoD,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3E,IACE,CAAC,IAAI;YACL,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,IAAI,YAAY,iBAAO;YACvB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEpC,MAAM,IAAI,6BAAa,CAAC,+BAA+B,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,CACd,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,uBAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAC9D,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,OAAO,GAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE;YACvD,IAAI,CAAC;gBACH,GAAG,CAAC,KAAK,CACP,gBAAgB,MAAM,CAAC,IAAI,iBAAiB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAClE,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAM,CAAC;gBAC9C,GAAG,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAClD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,6BAAa,CAAC,wBAAwB,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;CACF;AA9CD,gDA8CC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ModelService.cjs"), exports);
18
+ __exportStar(require("./PersistenceService.cjs"), exports);
19
+ __exportStar(require("./services.cjs"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ export * from "./ModelService";
2
+ export * from "./PersistenceService";
3
+ export * from "./services";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAA+B;AAC/B,2DAAqC;AACrC,iDAA2B"}
@@ -0,0 +1,246 @@
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.ClientBasedService = exports.Service = void 0;
13
+ const Context_1 = require("./../persistence/Context.cjs");
14
+ const logging_1 = require("@decaf-ts/logging");
15
+ const ContextualLoggedClass_1 = require("./../utils/ContextualLoggedClass.cjs");
16
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
17
+ const constants_1 = require("./../persistence/constants.cjs");
18
+ const utils_1 = require("./../utils/utils.cjs");
19
+ const injectable_decorators_1 = require("@decaf-ts/injectable-decorators");
20
+ const generators_1 = require("./../persistence/generators.cjs");
21
+ const ObserverHandler_1 = require("./../persistence/ObserverHandler.cjs");
22
+ class Service extends ContextualLoggedClass_1.ContextualLoggedClass {
23
+ constructor(name) {
24
+ super();
25
+ this.name = name;
26
+ this.observers = [];
27
+ /**
28
+ * @description The context constructor for this adapter
29
+ * @summary Reference to the context class constructor used by this adapter
30
+ */
31
+ this.Context = (Context_1.Context);
32
+ }
33
+ /**
34
+ * @description Registers an observer for this repository.
35
+ * @summary Adds an observer that will be notified of changes to models in this repository.
36
+ * @param {Observer} observer - The observer to register.
37
+ * @param {ObserverFilter} [filter] - Optional filter to limit which events the observer receives.
38
+ * @return {void}
39
+ * @see {Observable#observe}
40
+ */
41
+ observe(observer, filter) {
42
+ if (!this.observerHandler)
43
+ Object.defineProperty(this, "observerHandler", {
44
+ value: new ObserverHandler_1.ObserverHandler(),
45
+ writable: false,
46
+ });
47
+ const log = this.log.for(this.observe);
48
+ this.observerHandler.observe(observer, filter);
49
+ log.verbose(`Registered new observer ${observer.constructor.name || observer.toString()}`);
50
+ }
51
+ /**
52
+ * @description Unregisters an observer from this repository.
53
+ * @summary Removes an observer so it will no longer receive notifications of changes.
54
+ * @param {Observer} observer - The observer to unregister.
55
+ * @return {void}
56
+ * @throws {InternalError} If the observer handler is not initialized.
57
+ * @see {Observable#unObserve}
58
+ */
59
+ unObserve(observer) {
60
+ if (!this.observerHandler)
61
+ throw new db_decorators_1.InternalError("ObserverHandler not initialized. Did you register any observables? or are you unregistering whe you shouldn't");
62
+ this.observerHandler.unObserve(observer);
63
+ const log = this.log.for(this.unObserve);
64
+ log.verbose(`Observer ${observer.toString()} removed`);
65
+ if (!this.observerHandler.count()) {
66
+ delete this.observerHandler;
67
+ log.verbose(`No longer being observed`);
68
+ }
69
+ }
70
+ /**
71
+ * @description Notifies all observers of an event.
72
+ * @summary Updates all registered observers with information about a database event.
73
+ * @param {string} table - The table name where the event occurred.
74
+ * @param {OperationKeys|BulkCrudOperationKeys|string} event - The type of event that occurred.
75
+ * @param {EventIds} id - The ID or IDs of the affected records.
76
+ * @param {...any[]} args - Additional arguments.
77
+ * @return {Promise<void>} A promise that resolves when all observers have been notified.
78
+ * @throws {InternalError} If the observer handler is not initialized.
79
+ */
80
+ async updateObservers(table, event, id, ...args) {
81
+ if (!this.observerHandler)
82
+ throw new db_decorators_1.InternalError("ObserverHandler not initialized. Did you register any observables?");
83
+ const { log, ctxArgs } = this.logCtx(args, this.updateObservers);
84
+ log.verbose(`Updating ${this.observerHandler.count()} observers for ${this}`);
85
+ await this.observerHandler.updateObservers(table, event, id, ...ctxArgs);
86
+ }
87
+ /**
88
+ * @description Creates repository flags for an operation
89
+ * @summary Generates a set of flags that describe a database operation, combining default flags with overrides
90
+ * @template F - The Repository Flags type
91
+ * @template M - The model type
92
+ * @param {OperationKeys} operation - The type of operation being performed
93
+ * @param {Partial<F>} flags - Custom flag overrides
94
+ * @param {...any[]} args - Additional arguments
95
+ * @return {Promise<F>} The complete set of flags
96
+ */
97
+ async flags(operation, flags, ...args) {
98
+ flags.correlationId =
99
+ flags.correlationId || `${operation}-${generators_1.UUID.instance.generate()}`;
100
+ const log = (flags.logger || logging_1.Logging.for(this));
101
+ log.setConfig({ correlationId: flags.correlationId });
102
+ return Object.assign({}, constants_1.DefaultAdapterFlags, flags, {
103
+ args: args,
104
+ timestamp: new Date(),
105
+ operation: operation,
106
+ logger: log,
107
+ });
108
+ }
109
+ /**
110
+ * @description Alias for updateObservers.
111
+ * @summary Notifies all observers of an event (alias for updateObservers).
112
+ * @param {string} table - The table name where the event occurred.
113
+ * @param {OperationKeys|BulkCrudOperationKeys|string} event - The type of event that occurred.
114
+ * @param {EventIds} id - The ID or IDs of the affected records.
115
+ * @param {...any[]} args - Additional arguments.
116
+ * @return {Promise<void>} A promise that resolves when all observers have been notified.
117
+ */
118
+ async refresh(table, event, id, ...args) {
119
+ return this.updateObservers(table, event, id, ...args);
120
+ }
121
+ async context(operation, overrides, ...args) {
122
+ const log = this.log.for(this.context);
123
+ log.silly(`creating new context for ${operation} operation with flag overrides: ${JSON.stringify(overrides)}`);
124
+ let ctx = args.pop();
125
+ if (typeof ctx !== "undefined" && !(ctx instanceof Context_1.Context)) {
126
+ args.push(ctx);
127
+ ctx = undefined;
128
+ }
129
+ const flags = await this.flags(typeof operation === "string" ? operation : operation.name, overrides, ...args);
130
+ if (ctx) {
131
+ return new this.Context(ctx).accumulate({
132
+ ...flags,
133
+ parentContext: ctx,
134
+ });
135
+ }
136
+ return new this.Context().accumulate(flags);
137
+ }
138
+ logCtx(args, operation, allowCreate = false, overrides) {
139
+ return ContextualLoggedClass_1.ContextualLoggedClass.logCtx.call(this, operation, overrides || {}, allowCreate, ...args.filter((e) => typeof e !== "undefined"));
140
+ }
141
+ /**
142
+ * @description Retrieves a Service instance by name/class
143
+ * @summary Looks up and returns a cached API instance by its name or constructor
144
+ * @template A Type extending Api
145
+ * @param {string | Constructor<A>} name - Name of the API or its constructor
146
+ * @return {A} The requested API instance
147
+ */
148
+ static get(name) {
149
+ if (!name)
150
+ throw new db_decorators_1.InternalError(`No name provided`);
151
+ const key = (0, utils_1.injectableServiceKey)(name);
152
+ const injectable = injectable_decorators_1.Injectables.get(key);
153
+ if (injectable)
154
+ return injectable;
155
+ throw new db_decorators_1.InternalError(`No Service found for ${typeof name === "string" ? name : typeof name === "symbol" ? name.toString() : name.name}`);
156
+ }
157
+ static async boot(...args) {
158
+ let ctx = args.pop();
159
+ if (typeof ctx !== "undefined" && !(ctx instanceof Context_1.Context)) {
160
+ args.push(ctx);
161
+ ctx = undefined;
162
+ }
163
+ const flags = await Service.prototype.flags(constants_1.PersistenceKeys.INITIALIZATION, {}, ...args);
164
+ ctx = ctx
165
+ ? new Context_1.Context(ctx).accumulate({
166
+ ...flags,
167
+ parentContext: ctx,
168
+ })
169
+ : new Context_1.Context().accumulate(flags);
170
+ args = [...args, ctx];
171
+ const { log, ctxArgs } = Service.prototype.logCtx(args, this.boot);
172
+ const services = injectable_decorators_1.Injectables.services();
173
+ for (const [key, service] of Object.entries(services)) {
174
+ try {
175
+ log.verbose(`Booting ${service.name} service...`);
176
+ const s = injectable_decorators_1.Injectables.get(service);
177
+ if (!s)
178
+ throw new db_decorators_1.InternalError(`Failed to resolve injectable for ${key}`);
179
+ if (s instanceof ClientBasedService) {
180
+ log.verbose(`Initializing ${service.name} service...`);
181
+ await s.boot(...ctxArgs);
182
+ }
183
+ }
184
+ catch (e) {
185
+ throw new db_decorators_1.InternalError(`Failed to boot ${key} service:${e}`);
186
+ }
187
+ }
188
+ }
189
+ }
190
+ exports.Service = Service;
191
+ __decorate([
192
+ (0, logging_1.final)(),
193
+ __metadata("design:type", Function),
194
+ __metadata("design:paramtypes", [Object, Function]),
195
+ __metadata("design:returntype", void 0)
196
+ ], Service.prototype, "observe", null);
197
+ __decorate([
198
+ (0, logging_1.final)(),
199
+ __metadata("design:type", Function),
200
+ __metadata("design:paramtypes", [Object]),
201
+ __metadata("design:returntype", void 0)
202
+ ], Service.prototype, "unObserve", null);
203
+ class ClientBasedService extends Service {
204
+ constructor() {
205
+ super();
206
+ }
207
+ async boot(...args) {
208
+ const { log, ctxArgs } = await this.logCtx(args, this.boot, true);
209
+ log.verbose(`Initializing ${this.toString()}...`);
210
+ const { config, client } = await this.initialize(...ctxArgs);
211
+ this._config = config;
212
+ this._client = client;
213
+ }
214
+ get config() {
215
+ if (!this._config)
216
+ throw new db_decorators_1.InternalError(`Config not initialized`);
217
+ return this._config;
218
+ }
219
+ get client() {
220
+ if (!this._client)
221
+ throw new db_decorators_1.InternalError(`Client not initialized`);
222
+ return this._client;
223
+ }
224
+ async shutdown(...args) {
225
+ const { log } = await this.logCtx(args, this.shutdown, true);
226
+ log.info(`Shutting down ${this.name} service...`);
227
+ }
228
+ }
229
+ exports.ClientBasedService = ClientBasedService;
230
+ __decorate([
231
+ (0, logging_1.final)(),
232
+ __metadata("design:type", Function),
233
+ __metadata("design:paramtypes", [Object]),
234
+ __metadata("design:returntype", Promise)
235
+ ], ClientBasedService.prototype, "boot", null);
236
+ __decorate([
237
+ (0, logging_1.final)(),
238
+ __metadata("design:type", Object),
239
+ __metadata("design:paramtypes", [])
240
+ ], ClientBasedService.prototype, "config", null);
241
+ __decorate([
242
+ (0, logging_1.final)(),
243
+ __metadata("design:type", Object),
244
+ __metadata("design:paramtypes", [])
245
+ ], ClientBasedService.prototype, "client", null);
246
+ //# sourceMappingURL=services.js.map