@warlock.js/cascade 4.0.48 → 4.0.59

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 (401) hide show
  1. package/cjs/context/database-data-source-context.d.ts +29 -0
  2. package/cjs/context/database-data-source-context.d.ts.map +1 -0
  3. package/cjs/context/database-data-source-context.js +28 -0
  4. package/cjs/context/database-data-source-context.js.map +1 -0
  5. package/cjs/context/database-transaction-context.d.ts +31 -0
  6. package/cjs/context/database-transaction-context.d.ts.map +1 -0
  7. package/cjs/context/database-transaction-context.js +34 -0
  8. package/cjs/context/database-transaction-context.js.map +1 -0
  9. package/cjs/contracts/database-driver.contract.d.ts +143 -0
  10. package/cjs/contracts/database-driver.contract.d.ts.map +1 -0
  11. package/cjs/contracts/database-id-generator.contract.d.ts +109 -0
  12. package/cjs/contracts/database-id-generator.contract.d.ts.map +1 -0
  13. package/cjs/contracts/database-remover.contract.d.ts +104 -0
  14. package/cjs/contracts/database-remover.contract.d.ts.map +1 -0
  15. package/cjs/contracts/database-restorer.contract.d.ts +143 -0
  16. package/cjs/contracts/database-restorer.contract.d.ts.map +1 -0
  17. package/cjs/contracts/database-writer.contract.d.ts +119 -0
  18. package/cjs/contracts/database-writer.contract.d.ts.map +1 -0
  19. package/cjs/contracts/driver-blueprint.contract.d.ts +45 -0
  20. package/cjs/contracts/driver-blueprint.contract.d.ts.map +1 -0
  21. package/cjs/contracts/index.d.ts +10 -0
  22. package/cjs/contracts/index.d.ts.map +1 -0
  23. package/cjs/contracts/migration-driver.contract.d.ts +365 -0
  24. package/cjs/contracts/migration-driver.contract.d.ts.map +1 -0
  25. package/cjs/contracts/query-builder.contract.d.ts +1128 -0
  26. package/cjs/contracts/query-builder.contract.d.ts.map +1 -0
  27. package/cjs/contracts/sync-adapter.contract.d.ts +58 -0
  28. package/cjs/contracts/sync-adapter.contract.d.ts.map +1 -0
  29. package/cjs/data-source/data-source-registry.d.ts +104 -0
  30. package/cjs/data-source/data-source-registry.d.ts.map +1 -0
  31. package/cjs/data-source/data-source-registry.js +138 -0
  32. package/cjs/data-source/data-source-registry.js.map +1 -0
  33. package/cjs/data-source/data-source.d.ts +106 -0
  34. package/cjs/data-source/data-source.d.ts.map +1 -0
  35. package/cjs/data-source/data-source.js +77 -0
  36. package/cjs/data-source/data-source.js.map +1 -0
  37. package/cjs/database-dirty-tracker.d.ts +253 -0
  38. package/cjs/database-dirty-tracker.d.ts.map +1 -0
  39. package/cjs/database-dirty-tracker.js +389 -0
  40. package/cjs/database-dirty-tracker.js.map +1 -0
  41. package/cjs/drivers/mongo/mongo-id-generator.d.ts +116 -0
  42. package/cjs/drivers/mongo/mongo-id-generator.d.ts.map +1 -0
  43. package/cjs/drivers/mongo/mongo-id-generator.js +149 -0
  44. package/cjs/drivers/mongo/mongo-id-generator.js.map +1 -0
  45. package/cjs/drivers/mongo/mongo-migration-driver.d.ts +228 -0
  46. package/cjs/drivers/mongo/mongo-migration-driver.d.ts.map +1 -0
  47. package/cjs/drivers/mongo/mongo-migration-driver.js +524 -0
  48. package/cjs/drivers/mongo/mongo-migration-driver.js.map +1 -0
  49. package/cjs/drivers/mongo/mongo-query-builder.d.ts +922 -0
  50. package/cjs/drivers/mongo/mongo-query-builder.d.ts.map +1 -0
  51. package/cjs/drivers/mongo/mongo-query-builder.js +1740 -0
  52. package/cjs/drivers/mongo/mongo-query-builder.js.map +1 -0
  53. package/cjs/drivers/mongo/mongo-query-operations.d.ts +226 -0
  54. package/cjs/drivers/mongo/mongo-query-operations.d.ts.map +1 -0
  55. package/cjs/drivers/mongo/mongo-query-operations.js +270 -0
  56. package/cjs/drivers/mongo/mongo-query-operations.js.map +1 -0
  57. package/cjs/drivers/mongo/mongo-query-parser.d.ts +262 -0
  58. package/cjs/drivers/mongo/mongo-query-parser.d.ts.map +1 -0
  59. package/cjs/drivers/mongo/mongo-query-parser.js +1351 -0
  60. package/cjs/drivers/mongo/mongo-query-parser.js.map +1 -0
  61. package/cjs/drivers/mongo/mongo-sync-adapter.d.ts +79 -0
  62. package/cjs/drivers/mongo/mongo-sync-adapter.d.ts.map +1 -0
  63. package/cjs/drivers/mongo/mongo-sync-adapter.js +146 -0
  64. package/cjs/drivers/mongo/mongo-sync-adapter.js.map +1 -0
  65. package/cjs/drivers/mongo/mongodb-blueprint.d.ts +30 -0
  66. package/cjs/drivers/mongo/mongodb-blueprint.d.ts.map +1 -0
  67. package/cjs/drivers/mongo/mongodb-blueprint.js +51 -0
  68. package/cjs/drivers/mongo/mongodb-blueprint.js.map +1 -0
  69. package/cjs/drivers/mongo/mongodb-driver.d.ts +188 -0
  70. package/cjs/drivers/mongo/mongodb-driver.d.ts.map +1 -0
  71. package/cjs/drivers/mongo/mongodb-driver.js +411 -0
  72. package/cjs/drivers/mongo/mongodb-driver.js.map +1 -0
  73. package/cjs/drivers/mongo/types.d.ts +43 -0
  74. package/cjs/drivers/mongo/types.d.ts.map +1 -0
  75. package/cjs/errors/missing-data-source.error.d.ts +22 -0
  76. package/cjs/errors/missing-data-source.error.d.ts.map +1 -0
  77. package/cjs/errors/missing-data-source.error.js +29 -0
  78. package/cjs/errors/missing-data-source.error.js.map +1 -0
  79. package/cjs/events/model-events.d.ts +231 -0
  80. package/cjs/events/model-events.d.ts.map +1 -0
  81. package/cjs/events/model-events.js +259 -0
  82. package/cjs/events/model-events.js.map +1 -0
  83. package/cjs/expressions/aggregate-expressions.d.ts +215 -0
  84. package/cjs/expressions/aggregate-expressions.d.ts.map +1 -0
  85. package/cjs/expressions/aggregate-expressions.js +221 -0
  86. package/cjs/expressions/aggregate-expressions.js.map +1 -0
  87. package/cjs/expressions/index.d.ts +2 -0
  88. package/cjs/expressions/index.d.ts.map +1 -0
  89. package/cjs/index.d.ts +41 -0
  90. package/cjs/index.d.ts.map +1 -0
  91. package/cjs/index.js +1 -267
  92. package/cjs/index.js.map +1 -1
  93. package/cjs/migration/column-builder.d.ts +167 -0
  94. package/cjs/migration/column-builder.d.ts.map +1 -0
  95. package/cjs/migration/column-builder.js +217 -0
  96. package/cjs/migration/column-builder.js.map +1 -0
  97. package/cjs/migration/foreign-key-builder.d.ts +110 -0
  98. package/cjs/migration/foreign-key-builder.d.ts.map +1 -0
  99. package/cjs/migration/foreign-key-builder.js +129 -0
  100. package/cjs/migration/foreign-key-builder.js.map +1 -0
  101. package/cjs/migration/index.d.ts +6 -0
  102. package/cjs/migration/index.d.ts.map +1 -0
  103. package/cjs/migration/migration-runner.d.ts +231 -0
  104. package/cjs/migration/migration-runner.d.ts.map +1 -0
  105. package/cjs/migration/migration-runner.js +443 -0
  106. package/cjs/migration/migration-runner.js.map +1 -0
  107. package/cjs/migration/migration.js +1346 -0
  108. package/cjs/migration/migration.js.map +1 -0
  109. package/cjs/migration/types.d.ts +132 -0
  110. package/cjs/migration/types.d.ts.map +1 -0
  111. package/cjs/model/model.d.ts +1267 -0
  112. package/cjs/model/model.d.ts.map +1 -0
  113. package/cjs/model/model.js +1463 -0
  114. package/cjs/model/model.js.map +1 -0
  115. package/cjs/model/register-model.d.ts +80 -0
  116. package/cjs/model/register-model.d.ts.map +1 -0
  117. package/cjs/model/register-model.js +91 -0
  118. package/cjs/model/register-model.js.map +1 -0
  119. package/cjs/remover/database-remover.d.ts +100 -0
  120. package/cjs/remover/database-remover.d.ts.map +1 -0
  121. package/cjs/remover/database-remover.js +209 -0
  122. package/cjs/remover/database-remover.js.map +1 -0
  123. package/cjs/restorer/database-restorer.d.ts +131 -0
  124. package/cjs/restorer/database-restorer.d.ts.map +1 -0
  125. package/cjs/restorer/database-restorer.js +425 -0
  126. package/cjs/restorer/database-restorer.js.map +1 -0
  127. package/cjs/sync/index.d.ts +12 -0
  128. package/cjs/sync/index.d.ts.map +1 -0
  129. package/cjs/sync/model-events.d.ts +62 -0
  130. package/cjs/sync/model-events.d.ts.map +1 -0
  131. package/cjs/sync/model-events.js +49 -0
  132. package/cjs/sync/model-events.js.map +1 -0
  133. package/cjs/sync/model-sync-operation.d.ts +163 -0
  134. package/cjs/sync/model-sync-operation.d.ts.map +1 -0
  135. package/cjs/sync/model-sync-operation.js +292 -0
  136. package/cjs/sync/model-sync-operation.js.map +1 -0
  137. package/cjs/sync/model-sync.d.ts +130 -0
  138. package/cjs/sync/model-sync.d.ts.map +1 -0
  139. package/cjs/sync/model-sync.js +178 -0
  140. package/cjs/sync/model-sync.js.map +1 -0
  141. package/cjs/sync/sync-context.d.ts +70 -0
  142. package/cjs/sync/sync-context.d.ts.map +1 -0
  143. package/cjs/sync/sync-context.js +101 -0
  144. package/cjs/sync/sync-context.js.map +1 -0
  145. package/cjs/sync/sync-manager.d.ts +213 -0
  146. package/cjs/sync/sync-manager.d.ts.map +1 -0
  147. package/cjs/sync/sync-manager.js +689 -0
  148. package/cjs/sync/sync-manager.js.map +1 -0
  149. package/cjs/sync/types.d.ts +289 -0
  150. package/cjs/sync/types.d.ts.map +1 -0
  151. package/cjs/types.d.ts +45 -0
  152. package/cjs/types.d.ts.map +1 -0
  153. package/cjs/utils/connect-to-database.d.ts +246 -0
  154. package/cjs/utils/connect-to-database.d.ts.map +1 -0
  155. package/cjs/utils/connect-to-database.js +92 -0
  156. package/cjs/utils/connect-to-database.js.map +1 -0
  157. package/cjs/utils/database-writer.utils.d.ts +15 -0
  158. package/cjs/utils/database-writer.utils.d.ts.map +1 -0
  159. package/cjs/utils/database-writer.utils.js +14 -0
  160. package/cjs/utils/database-writer.utils.js.map +1 -0
  161. package/cjs/utils/define-model.js +100 -0
  162. package/cjs/utils/define-model.js.map +1 -0
  163. package/cjs/utils/once-connected.d.ts +146 -0
  164. package/cjs/utils/once-connected.d.ts.map +1 -0
  165. package/cjs/utils/once-connected.js +252 -0
  166. package/cjs/utils/once-connected.js.map +1 -0
  167. package/cjs/validation/database-seal-plugins.d.ts +2 -0
  168. package/cjs/validation/database-seal-plugins.d.ts.map +1 -0
  169. package/cjs/validation/database-seal-plugins.js +4 -0
  170. package/cjs/validation/database-seal-plugins.js.map +1 -0
  171. package/cjs/validation/database-writer-validation-error.d.ts +97 -0
  172. package/cjs/validation/database-writer-validation-error.d.ts.map +1 -0
  173. package/cjs/validation/database-writer-validation-error.js +160 -0
  174. package/cjs/validation/database-writer-validation-error.js.map +1 -0
  175. package/cjs/validation/index.d.ts +3 -0
  176. package/cjs/validation/index.d.ts.map +1 -0
  177. package/cjs/validation/mutators/embed-mutator.d.ts +9 -0
  178. package/cjs/validation/mutators/embed-mutator.d.ts.map +1 -0
  179. package/cjs/validation/mutators/embed-mutator.js +33 -0
  180. package/cjs/validation/mutators/embed-mutator.js.map +1 -0
  181. package/cjs/validation/plugins/embed-validator-plugin.d.ts +24 -0
  182. package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
  183. package/cjs/validation/plugins/embed-validator-plugin.js +18 -0
  184. package/cjs/validation/plugins/embed-validator-plugin.js.map +1 -0
  185. package/cjs/validation/rules/database-model-rule.d.ts +7 -0
  186. package/cjs/validation/rules/database-model-rule.d.ts.map +1 -0
  187. package/cjs/validation/rules/database-model-rule.js +27 -0
  188. package/cjs/validation/rules/database-model-rule.js.map +1 -0
  189. package/cjs/validation/transformers/embed-model-transformer.d.ts +3 -0
  190. package/cjs/validation/transformers/embed-model-transformer.d.ts.map +1 -0
  191. package/cjs/validation/transformers/embed-model-transformer.js +18 -0
  192. package/cjs/validation/transformers/embed-model-transformer.js.map +1 -0
  193. package/cjs/validation/validators/embed-validator.d.ts +21 -0
  194. package/cjs/validation/validators/embed-validator.d.ts.map +1 -0
  195. package/cjs/validation/validators/embed-validator.js +42 -0
  196. package/cjs/validation/validators/embed-validator.js.map +1 -0
  197. package/cjs/writer/database-writer.d.ts +181 -0
  198. package/cjs/writer/database-writer.d.ts.map +1 -0
  199. package/cjs/writer/database-writer.js +402 -0
  200. package/cjs/writer/database-writer.js.map +1 -0
  201. package/esm/context/database-data-source-context.d.ts +29 -0
  202. package/esm/context/database-data-source-context.d.ts.map +1 -0
  203. package/esm/context/database-data-source-context.js +28 -0
  204. package/esm/context/database-data-source-context.js.map +1 -0
  205. package/esm/context/database-transaction-context.d.ts +31 -0
  206. package/esm/context/database-transaction-context.d.ts.map +1 -0
  207. package/esm/context/database-transaction-context.js +34 -0
  208. package/esm/context/database-transaction-context.js.map +1 -0
  209. package/esm/contracts/database-driver.contract.d.ts +143 -0
  210. package/esm/contracts/database-driver.contract.d.ts.map +1 -0
  211. package/esm/contracts/database-id-generator.contract.d.ts +109 -0
  212. package/esm/contracts/database-id-generator.contract.d.ts.map +1 -0
  213. package/esm/contracts/database-remover.contract.d.ts +104 -0
  214. package/esm/contracts/database-remover.contract.d.ts.map +1 -0
  215. package/esm/contracts/database-restorer.contract.d.ts +143 -0
  216. package/esm/contracts/database-restorer.contract.d.ts.map +1 -0
  217. package/esm/contracts/database-writer.contract.d.ts +119 -0
  218. package/esm/contracts/database-writer.contract.d.ts.map +1 -0
  219. package/esm/contracts/driver-blueprint.contract.d.ts +45 -0
  220. package/esm/contracts/driver-blueprint.contract.d.ts.map +1 -0
  221. package/esm/contracts/index.d.ts +10 -0
  222. package/esm/contracts/index.d.ts.map +1 -0
  223. package/esm/contracts/migration-driver.contract.d.ts +365 -0
  224. package/esm/contracts/migration-driver.contract.d.ts.map +1 -0
  225. package/esm/contracts/query-builder.contract.d.ts +1128 -0
  226. package/esm/contracts/query-builder.contract.d.ts.map +1 -0
  227. package/esm/contracts/sync-adapter.contract.d.ts +58 -0
  228. package/esm/contracts/sync-adapter.contract.d.ts.map +1 -0
  229. package/esm/data-source/data-source-registry.d.ts +104 -0
  230. package/esm/data-source/data-source-registry.d.ts.map +1 -0
  231. package/esm/data-source/data-source-registry.js +138 -0
  232. package/esm/data-source/data-source-registry.js.map +1 -0
  233. package/esm/data-source/data-source.d.ts +106 -0
  234. package/esm/data-source/data-source.d.ts.map +1 -0
  235. package/esm/data-source/data-source.js +77 -0
  236. package/esm/data-source/data-source.js.map +1 -0
  237. package/esm/database-dirty-tracker.d.ts +253 -0
  238. package/esm/database-dirty-tracker.d.ts.map +1 -0
  239. package/esm/database-dirty-tracker.js +389 -0
  240. package/esm/database-dirty-tracker.js.map +1 -0
  241. package/esm/drivers/mongo/mongo-id-generator.d.ts +116 -0
  242. package/esm/drivers/mongo/mongo-id-generator.d.ts.map +1 -0
  243. package/esm/drivers/mongo/mongo-id-generator.js +149 -0
  244. package/esm/drivers/mongo/mongo-id-generator.js.map +1 -0
  245. package/esm/drivers/mongo/mongo-migration-driver.d.ts +228 -0
  246. package/esm/drivers/mongo/mongo-migration-driver.d.ts.map +1 -0
  247. package/esm/drivers/mongo/mongo-migration-driver.js +524 -0
  248. package/esm/drivers/mongo/mongo-migration-driver.js.map +1 -0
  249. package/esm/drivers/mongo/mongo-query-builder.d.ts +922 -0
  250. package/esm/drivers/mongo/mongo-query-builder.d.ts.map +1 -0
  251. package/esm/drivers/mongo/mongo-query-builder.js +1740 -0
  252. package/esm/drivers/mongo/mongo-query-builder.js.map +1 -0
  253. package/esm/drivers/mongo/mongo-query-operations.d.ts +226 -0
  254. package/esm/drivers/mongo/mongo-query-operations.d.ts.map +1 -0
  255. package/esm/drivers/mongo/mongo-query-operations.js +270 -0
  256. package/esm/drivers/mongo/mongo-query-operations.js.map +1 -0
  257. package/esm/drivers/mongo/mongo-query-parser.d.ts +262 -0
  258. package/esm/drivers/mongo/mongo-query-parser.d.ts.map +1 -0
  259. package/esm/drivers/mongo/mongo-query-parser.js +1351 -0
  260. package/esm/drivers/mongo/mongo-query-parser.js.map +1 -0
  261. package/esm/drivers/mongo/mongo-sync-adapter.d.ts +79 -0
  262. package/esm/drivers/mongo/mongo-sync-adapter.d.ts.map +1 -0
  263. package/esm/drivers/mongo/mongo-sync-adapter.js +146 -0
  264. package/esm/drivers/mongo/mongo-sync-adapter.js.map +1 -0
  265. package/esm/drivers/mongo/mongodb-blueprint.d.ts +30 -0
  266. package/esm/drivers/mongo/mongodb-blueprint.d.ts.map +1 -0
  267. package/esm/drivers/mongo/mongodb-blueprint.js +51 -0
  268. package/esm/drivers/mongo/mongodb-blueprint.js.map +1 -0
  269. package/esm/drivers/mongo/mongodb-driver.d.ts +188 -0
  270. package/esm/drivers/mongo/mongodb-driver.d.ts.map +1 -0
  271. package/esm/drivers/mongo/mongodb-driver.js +411 -0
  272. package/esm/drivers/mongo/mongodb-driver.js.map +1 -0
  273. package/esm/drivers/mongo/types.d.ts +43 -0
  274. package/esm/drivers/mongo/types.d.ts.map +1 -0
  275. package/esm/errors/missing-data-source.error.d.ts +22 -0
  276. package/esm/errors/missing-data-source.error.d.ts.map +1 -0
  277. package/esm/errors/missing-data-source.error.js +29 -0
  278. package/esm/errors/missing-data-source.error.js.map +1 -0
  279. package/esm/events/model-events.d.ts +231 -0
  280. package/esm/events/model-events.d.ts.map +1 -0
  281. package/esm/events/model-events.js +259 -0
  282. package/esm/events/model-events.js.map +1 -0
  283. package/esm/expressions/aggregate-expressions.d.ts +215 -0
  284. package/esm/expressions/aggregate-expressions.d.ts.map +1 -0
  285. package/esm/expressions/aggregate-expressions.js +221 -0
  286. package/esm/expressions/aggregate-expressions.js.map +1 -0
  287. package/esm/expressions/index.d.ts +2 -0
  288. package/esm/expressions/index.d.ts.map +1 -0
  289. package/esm/index.d.ts +41 -0
  290. package/esm/index.d.ts.map +1 -0
  291. package/esm/index.js +1 -40
  292. package/esm/index.js.map +1 -1
  293. package/esm/migration/column-builder.d.ts +167 -0
  294. package/esm/migration/column-builder.d.ts.map +1 -0
  295. package/esm/migration/column-builder.js +217 -0
  296. package/esm/migration/column-builder.js.map +1 -0
  297. package/esm/migration/foreign-key-builder.d.ts +110 -0
  298. package/esm/migration/foreign-key-builder.d.ts.map +1 -0
  299. package/esm/migration/foreign-key-builder.js +129 -0
  300. package/esm/migration/foreign-key-builder.js.map +1 -0
  301. package/esm/migration/index.d.ts +6 -0
  302. package/esm/migration/index.d.ts.map +1 -0
  303. package/esm/migration/migration-runner.d.ts +231 -0
  304. package/esm/migration/migration-runner.d.ts.map +1 -0
  305. package/esm/migration/migration-runner.js +443 -0
  306. package/esm/migration/migration-runner.js.map +1 -0
  307. package/esm/migration/migration.js +1346 -0
  308. package/esm/migration/migration.js.map +1 -0
  309. package/esm/migration/types.d.ts +132 -0
  310. package/esm/migration/types.d.ts.map +1 -0
  311. package/esm/model/model.d.ts +1267 -0
  312. package/esm/model/model.d.ts.map +1 -0
  313. package/esm/model/model.js +1463 -0
  314. package/esm/model/model.js.map +1 -0
  315. package/esm/model/register-model.d.ts +80 -0
  316. package/esm/model/register-model.d.ts.map +1 -0
  317. package/esm/model/register-model.js +91 -0
  318. package/esm/model/register-model.js.map +1 -0
  319. package/esm/remover/database-remover.d.ts +100 -0
  320. package/esm/remover/database-remover.d.ts.map +1 -0
  321. package/esm/remover/database-remover.js +209 -0
  322. package/esm/remover/database-remover.js.map +1 -0
  323. package/esm/restorer/database-restorer.d.ts +131 -0
  324. package/esm/restorer/database-restorer.d.ts.map +1 -0
  325. package/esm/restorer/database-restorer.js +425 -0
  326. package/esm/restorer/database-restorer.js.map +1 -0
  327. package/esm/sync/index.d.ts +12 -0
  328. package/esm/sync/index.d.ts.map +1 -0
  329. package/esm/sync/model-events.d.ts +62 -0
  330. package/esm/sync/model-events.d.ts.map +1 -0
  331. package/esm/sync/model-events.js +49 -0
  332. package/esm/sync/model-events.js.map +1 -0
  333. package/esm/sync/model-sync-operation.d.ts +163 -0
  334. package/esm/sync/model-sync-operation.d.ts.map +1 -0
  335. package/esm/sync/model-sync-operation.js +292 -0
  336. package/esm/sync/model-sync-operation.js.map +1 -0
  337. package/esm/sync/model-sync.d.ts +130 -0
  338. package/esm/sync/model-sync.d.ts.map +1 -0
  339. package/esm/sync/model-sync.js +178 -0
  340. package/esm/sync/model-sync.js.map +1 -0
  341. package/esm/sync/sync-context.d.ts +70 -0
  342. package/esm/sync/sync-context.d.ts.map +1 -0
  343. package/esm/sync/sync-context.js +101 -0
  344. package/esm/sync/sync-context.js.map +1 -0
  345. package/esm/sync/sync-manager.d.ts +213 -0
  346. package/esm/sync/sync-manager.d.ts.map +1 -0
  347. package/esm/sync/sync-manager.js +689 -0
  348. package/esm/sync/sync-manager.js.map +1 -0
  349. package/esm/sync/types.d.ts +289 -0
  350. package/esm/sync/types.d.ts.map +1 -0
  351. package/esm/types.d.ts +45 -0
  352. package/esm/types.d.ts.map +1 -0
  353. package/esm/utils/connect-to-database.d.ts +246 -0
  354. package/esm/utils/connect-to-database.d.ts.map +1 -0
  355. package/esm/utils/connect-to-database.js +92 -0
  356. package/esm/utils/connect-to-database.js.map +1 -0
  357. package/esm/utils/database-writer.utils.d.ts +15 -0
  358. package/esm/utils/database-writer.utils.d.ts.map +1 -0
  359. package/esm/utils/database-writer.utils.js +14 -0
  360. package/esm/utils/database-writer.utils.js.map +1 -0
  361. package/esm/utils/define-model.js +100 -0
  362. package/esm/utils/define-model.js.map +1 -0
  363. package/esm/utils/once-connected.d.ts +146 -0
  364. package/esm/utils/once-connected.d.ts.map +1 -0
  365. package/esm/utils/once-connected.js +252 -0
  366. package/esm/utils/once-connected.js.map +1 -0
  367. package/esm/validation/database-seal-plugins.d.ts +2 -0
  368. package/esm/validation/database-seal-plugins.d.ts.map +1 -0
  369. package/esm/validation/database-seal-plugins.js +4 -0
  370. package/esm/validation/database-seal-plugins.js.map +1 -0
  371. package/esm/validation/database-writer-validation-error.d.ts +97 -0
  372. package/esm/validation/database-writer-validation-error.d.ts.map +1 -0
  373. package/esm/validation/database-writer-validation-error.js +160 -0
  374. package/esm/validation/database-writer-validation-error.js.map +1 -0
  375. package/esm/validation/index.d.ts +3 -0
  376. package/esm/validation/index.d.ts.map +1 -0
  377. package/esm/validation/mutators/embed-mutator.d.ts +9 -0
  378. package/esm/validation/mutators/embed-mutator.d.ts.map +1 -0
  379. package/esm/validation/mutators/embed-mutator.js +33 -0
  380. package/esm/validation/mutators/embed-mutator.js.map +1 -0
  381. package/esm/validation/plugins/embed-validator-plugin.d.ts +24 -0
  382. package/esm/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
  383. package/esm/validation/plugins/embed-validator-plugin.js +18 -0
  384. package/esm/validation/plugins/embed-validator-plugin.js.map +1 -0
  385. package/esm/validation/rules/database-model-rule.d.ts +7 -0
  386. package/esm/validation/rules/database-model-rule.d.ts.map +1 -0
  387. package/esm/validation/rules/database-model-rule.js +27 -0
  388. package/esm/validation/rules/database-model-rule.js.map +1 -0
  389. package/esm/validation/transformers/embed-model-transformer.d.ts +3 -0
  390. package/esm/validation/transformers/embed-model-transformer.d.ts.map +1 -0
  391. package/esm/validation/transformers/embed-model-transformer.js +18 -0
  392. package/esm/validation/transformers/embed-model-transformer.js.map +1 -0
  393. package/esm/validation/validators/embed-validator.d.ts +21 -0
  394. package/esm/validation/validators/embed-validator.d.ts.map +1 -0
  395. package/esm/validation/validators/embed-validator.js +42 -0
  396. package/esm/validation/validators/embed-validator.js.map +1 -0
  397. package/esm/writer/database-writer.d.ts +181 -0
  398. package/esm/writer/database-writer.d.ts.map +1 -0
  399. package/esm/writer/database-writer.js +402 -0
  400. package/esm/writer/database-writer.js.map +1 -0
  401. package/package.json +61 -52
@@ -0,0 +1,181 @@
1
+ import type { WriterContract, WriterOptions, WriterResult } from "../contracts/database-writer.contract";
2
+ import type { Model } from "../model/model";
3
+ /**
4
+ * Database writer service that orchestrates model persistence.
5
+ *
6
+ * Handles the complete save pipeline:
7
+ * 1. Check for changes (skip if no changes and not new)
8
+ * 2. Emit `saving` event (for data enrichment)
9
+ * 3. Emit `validating` event
10
+ * 4. Validate and cast data via @warlock.js/seal schema
11
+ * 5. Emit `validated` event
12
+ * 6. Generate ID (for new NoSQL records)
13
+ * 7. Emit `creating`/`updating` events
14
+ * 8. Execute insert or update via driver
15
+ * 9. Merge returned data into model
16
+ * 10. Reset dirty tracker and update `isNew` flag
17
+ * 11. Emit `saved` and `created`/`updated` events
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const user = new User({ name: "Alice", email: "alice@example.com" });
22
+ * const writer = new DatabaseWriter(user);
23
+ * await writer.save();
24
+ *
25
+ * console.log(user.get("id")); // 1 (auto-generated)
26
+ * console.log(user.get("_id")); // ObjectId("...")
27
+ *
28
+ * // Update existing record
29
+ * user.set("name", "Alice Smith");
30
+ * await writer.save();
31
+ * // Only updates the "name" field (partial update)
32
+ *
33
+ * // Silent save (no events)
34
+ * await writer.save({ skipEvents: true });
35
+ * ```
36
+ */
37
+ export declare class DatabaseWriter implements WriterContract {
38
+ /** The model instance being persisted */
39
+ private readonly model;
40
+ /** Model constructor reference */
41
+ private readonly ctor;
42
+ /** Data source containing driver and ID generator */
43
+ private readonly dataSource;
44
+ /** Database driver for executing queries */
45
+ private readonly driver;
46
+ /** Table/collection name */
47
+ private readonly table;
48
+ /** Primary key field name */
49
+ private readonly primaryKey;
50
+ /** Validation schema (if defined) */
51
+ private readonly schema?;
52
+ /** Strict mode configuration */
53
+ private readonly strictMode;
54
+ /**
55
+ * Create a new writer instance for a model.
56
+ *
57
+ * @param model - The model instance to persist
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const user = new User({ name: "Alice" });
62
+ * const writer = new DatabaseWriter(user);
63
+ * await writer.save();
64
+ * ```
65
+ */
66
+ constructor(model: Model);
67
+ /**
68
+ * Save the model instance to the database.
69
+ *
70
+ * @param options - Save options
71
+ * @returns Result with success status, document, and metadata
72
+ * @throws {ValidationError} If validation fails
73
+ */
74
+ save(options?: WriterOptions): Promise<WriterResult>;
75
+ /**
76
+ * Validate and cast model data using the schema.
77
+ *
78
+ * Updates the model's data in-place with validated/casted values.
79
+ *
80
+ * @param isInsert - Whether this is an insert operation
81
+ * @param options - Save options
82
+ * @throws {ValidationError} If validation fails
83
+ * @private
84
+ */
85
+ private validateAndCast;
86
+ /**
87
+ * Perform an insert operation.
88
+ *
89
+ * @param options - Save options
90
+ * @returns Insert result
91
+ * @private
92
+ */
93
+ private performInsert;
94
+ /**
95
+ * Perform an update operation.
96
+ *
97
+ * @param options - Save options
98
+ * @returns Update result
99
+ * @private
100
+ */
101
+ private performUpdate;
102
+ /**
103
+ * Generate ID for the model if auto-generation is enabled.
104
+ *
105
+ * @private
106
+ */
107
+ private generateIdIfNeeded;
108
+ /**
109
+ * Build update operations from the model's dirty tracker.
110
+ *
111
+ * Handles both modified fields ($set) and removed fields ($unset).
112
+ *
113
+ * @returns Update operations for the driver
114
+ * @private
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * // Model with changes
119
+ * user.set("name", "Alice");
120
+ * user.unset("tempField");
121
+ *
122
+ * const operations = this.buildUpdateOperations();
123
+ * // {
124
+ * // $set: { name: "Alice" },
125
+ * // $unset: { tempField: 1 }
126
+ * // }
127
+ * ```
128
+ */
129
+ private buildUpdateOperations;
130
+ /**
131
+ * Resolve the initial ID from model configuration.
132
+ *
133
+ * Priority:
134
+ * 1. Model.initialId (explicit value)
135
+ * 2. Model.randomInitialId (random or function)
136
+ * 3. Default: 1
137
+ *
138
+ * @returns The initial ID value
139
+ * @private
140
+ */
141
+ private resolveInitialId;
142
+ /**
143
+ * Resolve the increment value from model configuration.
144
+ *
145
+ * Priority:
146
+ * 1. Model.incrementIdBy (explicit value)
147
+ * 2. Model.randomIncrement (random or function)
148
+ * 3. Default: 1
149
+ *
150
+ * @returns The increment value
151
+ * @private
152
+ */
153
+ private resolveIncrementBy;
154
+ /**
155
+ * Generate a random integer between min and max (inclusive).
156
+ *
157
+ * @param min - Minimum value
158
+ * @param max - Maximum value
159
+ * @returns Random integer
160
+ * @private
161
+ */
162
+ private randomInt;
163
+ /**
164
+ * Trigger sync operations after successful save.
165
+ * Only syncs on updates (not creates) unless sync config specifies embedOnCreate.
166
+ *
167
+ * @param changedFields - Fields that were changed (for filtering)
168
+ * @private
169
+ */
170
+ /**
171
+ * Trigger sync operations after successful save.
172
+ *
173
+ * Emits a model.updated event that ModelSyncOperation listens to.
174
+ * The sync is handled by registered sync operations, not directly here.
175
+ *
176
+ * @param changedFields - Fields that were changed (for filtering)
177
+ * @private
178
+ */
179
+ private triggerSync;
180
+ }
181
+ //# sourceMappingURL=database-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-writer.d.ts","sourceRoot":"","sources":["../../src/writer/database-writer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAMxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,cAAe,YAAW,cAAc;IACnD,yCAAyC;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAkB;IAE1C,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;;;;;;;;;;OAWG;gBACgB,KAAK,EAAE,KAAK;IAW/B;;;;;;OAMG;IACU,IAAI,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IA0DrE;;;;;;;;;OASG;YACW,eAAe;IA8D7B;;;;;;OAMG;YACW,aAAa;IAsC3B;;;;;;OAMG;YACW,aAAa;IAoC3B;;;;OAIG;YACW,kBAAkB;IAwBhC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;OAMG;IACH;;;;;;;;OAQG;YACW,WAAW;CAI1B"}
@@ -0,0 +1,402 @@
1
+ 'use strict';var events=require('@mongez/events'),seal=require('@warlock.js/seal'),modelEvents=require('../sync/model-events.js'),databaseWriterValidationError=require('../validation/database-writer-validation-error.js');require('../validation/database-seal-plugins.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var events__default=/*#__PURE__*/_interopDefault(events);/**
2
+ * Database writer service that orchestrates model persistence.
3
+ *
4
+ * Handles the complete save pipeline:
5
+ * 1. Check for changes (skip if no changes and not new)
6
+ * 2. Emit `saving` event (for data enrichment)
7
+ * 3. Emit `validating` event
8
+ * 4. Validate and cast data via @warlock.js/seal schema
9
+ * 5. Emit `validated` event
10
+ * 6. Generate ID (for new NoSQL records)
11
+ * 7. Emit `creating`/`updating` events
12
+ * 8. Execute insert or update via driver
13
+ * 9. Merge returned data into model
14
+ * 10. Reset dirty tracker and update `isNew` flag
15
+ * 11. Emit `saved` and `created`/`updated` events
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const user = new User({ name: "Alice", email: "alice@example.com" });
20
+ * const writer = new DatabaseWriter(user);
21
+ * await writer.save();
22
+ *
23
+ * console.log(user.get("id")); // 1 (auto-generated)
24
+ * console.log(user.get("_id")); // ObjectId("...")
25
+ *
26
+ * // Update existing record
27
+ * user.set("name", "Alice Smith");
28
+ * await writer.save();
29
+ * // Only updates the "name" field (partial update)
30
+ *
31
+ * // Silent save (no events)
32
+ * await writer.save({ skipEvents: true });
33
+ * ```
34
+ */
35
+ class DatabaseWriter {
36
+ /** The model instance being persisted */
37
+ model;
38
+ /** Model constructor reference */
39
+ ctor;
40
+ /** Data source containing driver and ID generator */
41
+ dataSource;
42
+ /** Database driver for executing queries */
43
+ driver;
44
+ /** Table/collection name */
45
+ table;
46
+ /** Primary key field name */
47
+ primaryKey;
48
+ /** Validation schema (if defined) */
49
+ schema;
50
+ /** Strict mode configuration */
51
+ strictMode;
52
+ /**
53
+ * Create a new writer instance for a model.
54
+ *
55
+ * @param model - The model instance to persist
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const user = new User({ name: "Alice" });
60
+ * const writer = new DatabaseWriter(user);
61
+ * await writer.save();
62
+ * ```
63
+ */
64
+ constructor(model) {
65
+ this.model = model;
66
+ this.ctor = model.constructor;
67
+ this.dataSource = this.ctor.getDataSource();
68
+ this.driver = this.dataSource.driver;
69
+ this.table = this.ctor.table;
70
+ this.primaryKey = this.ctor.primaryKey;
71
+ this.schema = this.ctor.schema;
72
+ this.strictMode = this.ctor.strictMode;
73
+ }
74
+ /**
75
+ * Save the model instance to the database.
76
+ *
77
+ * @param options - Save options
78
+ * @returns Result with success status, document, and metadata
79
+ * @throws {ValidationError} If validation fails
80
+ */
81
+ async save(options = {}) {
82
+ const isInsert = this.model.isNew;
83
+ // 1. Check if model has changes (skip if no changes and not new)
84
+ if (!isInsert && !this.model.hasChanges()) {
85
+ return {
86
+ success: true,
87
+ document: this.model.data,
88
+ isNew: false,
89
+ modifiedCount: 0,
90
+ };
91
+ }
92
+ // 2. Emit saving event (before validation for data enrichment)
93
+ if (!options.skipEvents) {
94
+ await this.model.emitEvent("saving", {
95
+ isInsert,
96
+ options,
97
+ mode: isInsert ? "insert" : "update",
98
+ });
99
+ }
100
+ // 3. Validate and cast data
101
+ await this.validateAndCast(isInsert, options);
102
+ // 4. Execute insert or update
103
+ let result;
104
+ if (isInsert) {
105
+ result = await this.performInsert(options);
106
+ }
107
+ else {
108
+ result = await this.performUpdate(options);
109
+ }
110
+ // 5. Reset dirty tracker and update isNew flag
111
+ const changedFields = isInsert ? [] : this.model.getDirtyColumns();
112
+ this.model.dirtyTracker.reset();
113
+ this.model.isNew = false;
114
+ // 6. Emit post-save events
115
+ if (!options.skipEvents) {
116
+ await this.model.emitEvent("saved");
117
+ await this.model.emitEvent(isInsert ? "created" : "updated");
118
+ }
119
+ // 7. Trigger sync operations (fire-and-forget, non-blocking)
120
+ if (!options.skipSync && !isInsert) {
121
+ void this.triggerSync(changedFields);
122
+ }
123
+ return {
124
+ success: true,
125
+ document: this.model.data,
126
+ isNew: isInsert,
127
+ modifiedCount: isInsert ? undefined : result.modifiedCount,
128
+ };
129
+ }
130
+ /**
131
+ * Validate and cast model data using the schema.
132
+ *
133
+ * Updates the model's data in-place with validated/casted values.
134
+ *
135
+ * @param isInsert - Whether this is an insert operation
136
+ * @param options - Save options
137
+ * @throws {ValidationError} If validation fails
138
+ * @private
139
+ */
140
+ async validateAndCast(isInsert, options) {
141
+ // Emit validating event
142
+ if (!options.skipEvents) {
143
+ await this.model.emitEvent("validating", {
144
+ isInsert,
145
+ options,
146
+ mode: isInsert ? "insert" : "update",
147
+ });
148
+ }
149
+ // Skip validation if requested or no schema defined
150
+ if (options.skipValidation || !this.schema) {
151
+ return;
152
+ }
153
+ // Clone schema for partial data (updates only)
154
+ const validationSchema = isInsert
155
+ ? this.schema.clone()
156
+ : this.schema.clone(Object.keys(this.model.data)).extend({
157
+ id: seal.v.int(),
158
+ _id: seal.v.any(),
159
+ createdAt: seal.v.date(),
160
+ updatedAt: seal.v.date(),
161
+ });
162
+ // Apply strict mode
163
+ if (this.strictMode === "strip") {
164
+ validationSchema.stripUnknown();
165
+ }
166
+ else if (this.strictMode === "fail") {
167
+ validationSchema.allowUnknown(false);
168
+ }
169
+ else if (this.strictMode === "allow") {
170
+ validationSchema.allowUnknown(true);
171
+ }
172
+ // Run validation
173
+ const result = await seal.v.validate(validationSchema, this.model.data, {
174
+ context: {
175
+ model: this.model,
176
+ },
177
+ ...seal.getSealConfig(),
178
+ });
179
+ if (!result.isValid) {
180
+ const error = new databaseWriterValidationError.DatabaseWriterValidationError(`[${this.model.constructor.name} Model] ${isInsert ? "Insert" : "Update"} Validation failed`, result.errors);
181
+ if (!options.skipEvents) {
182
+ await this.model.emitEvent("validated", { result, error });
183
+ }
184
+ throw error;
185
+ }
186
+ // Update model data with validated/casted data
187
+ this.model.replaceData(result.data);
188
+ // Emit validated event
189
+ if (!options.skipEvents) {
190
+ await this.model.emitEvent("validated", { result });
191
+ }
192
+ }
193
+ /**
194
+ * Perform an insert operation.
195
+ *
196
+ * @param options - Save options
197
+ * @returns Insert result
198
+ * @private
199
+ */
200
+ async performInsert(options) {
201
+ // Generate ID if needed (NoSQL only)
202
+ await this.generateIdIfNeeded();
203
+ // Get data to insert (already validated and casted)
204
+ const dataToInsert = this.model.data;
205
+ // add createdAt and updatedAt to the data
206
+ const createdAtColumn = this.ctor.createdAtColumn ?? "createdAt";
207
+ if (createdAtColumn) {
208
+ dataToInsert[createdAtColumn] = new Date();
209
+ }
210
+ const updatedAtColumn = this.ctor.updatedAtColumn ?? "updatedAt";
211
+ if (updatedAtColumn) {
212
+ dataToInsert[updatedAtColumn] = new Date();
213
+ }
214
+ // Emit creating event
215
+ if (!options.skipEvents) {
216
+ await this.model.emitEvent("creating");
217
+ }
218
+ // INSERT: use full validated data
219
+ const result = await this.driver.insert(this.table, dataToInsert);
220
+ // Merge returned data (e.g., generated _id, timestamps)
221
+ // Note: We use merge here because the result might not include all fields
222
+ // (e.g., our generated 'id' field), and we don't want to lose them
223
+ this.model.merge(result.document);
224
+ // Reset dirty tracker immediately after merge to prevent
225
+ // database-generated fields (like _id) from being marked as dirty
226
+ this.model.dirtyTracker.reset();
227
+ return result;
228
+ }
229
+ /**
230
+ * Perform an update operation.
231
+ *
232
+ * @param options - Save options
233
+ * @returns Update result
234
+ * @private
235
+ */
236
+ async performUpdate(options) {
237
+ // Emit updating event
238
+ if (!options.skipEvents) {
239
+ await this.model.emitEvent("updating");
240
+ }
241
+ if (this.ctor.updatedAtColumn !== false) {
242
+ this.model.set(this.ctor.updatedAtColumn ?? "updatedAt", new Date());
243
+ }
244
+ if (options.replace) {
245
+ const document = await this.driver.replace(this.table, {
246
+ [this.primaryKey]: this.model.get(this.primaryKey),
247
+ }, this.model.data);
248
+ if (document) {
249
+ this.model.replaceData(document);
250
+ }
251
+ return { modifiedCount: document ? 1 : 0 };
252
+ }
253
+ // Build operations from dirty tracker
254
+ const operations = this.buildUpdateOperations();
255
+ // Build filter using primary key
256
+ const filter = { [this.primaryKey]: this.model.get(this.primaryKey) };
257
+ // Execute update with operations
258
+ return await this.driver.update(this.table, filter, operations);
259
+ }
260
+ /**
261
+ * Generate ID for the model if auto-generation is enabled.
262
+ *
263
+ * @private
264
+ */
265
+ async generateIdIfNeeded() {
266
+ if (!this.ctor.autoGenerateId || this.model.get("id")) {
267
+ return;
268
+ }
269
+ const idGenerator = this.dataSource.idGenerator;
270
+ if (!idGenerator) {
271
+ return;
272
+ }
273
+ // Resolve ID generation options from model configuration
274
+ const initialId = this.resolveInitialId();
275
+ const incrementIdBy = this.resolveIncrementBy();
276
+ const id = await idGenerator.generateNextId({
277
+ table: this.table,
278
+ initialId,
279
+ incrementIdBy,
280
+ });
281
+ this.model.set("id", id);
282
+ }
283
+ /**
284
+ * Build update operations from the model's dirty tracker.
285
+ *
286
+ * Handles both modified fields ($set) and removed fields ($unset).
287
+ *
288
+ * @returns Update operations for the driver
289
+ * @private
290
+ *
291
+ * @example
292
+ * ```typescript
293
+ * // Model with changes
294
+ * user.set("name", "Alice");
295
+ * user.unset("tempField");
296
+ *
297
+ * const operations = this.buildUpdateOperations();
298
+ * // {
299
+ * // $set: { name: "Alice" },
300
+ * // $unset: { tempField: 1 }
301
+ * // }
302
+ * ```
303
+ */
304
+ buildUpdateOperations() {
305
+ const operations = {};
306
+ // Get dirty columns (modified fields)
307
+ const dirtyColumns = this.model.getDirtyColumns();
308
+ if (dirtyColumns.length > 0) {
309
+ operations.$set = {};
310
+ for (const column of dirtyColumns) {
311
+ const value = this.model.get(column);
312
+ if (value === undefined)
313
+ continue;
314
+ operations.$set[column] = this.model.get(column);
315
+ }
316
+ }
317
+ // Get removed columns
318
+ const removedColumns = this.model.getRemovedColumns();
319
+ if (removedColumns.length > 0) {
320
+ operations.$unset = {};
321
+ for (const column of removedColumns) {
322
+ operations.$unset[column] = 1;
323
+ }
324
+ }
325
+ return operations;
326
+ }
327
+ /**
328
+ * Resolve the initial ID from model configuration.
329
+ *
330
+ * Priority:
331
+ * 1. Model.initialId (explicit value)
332
+ * 2. Model.randomInitialId (random or function)
333
+ * 3. Default: 1
334
+ *
335
+ * @returns The initial ID value
336
+ * @private
337
+ */
338
+ resolveInitialId() {
339
+ if (this.ctor.initialId) {
340
+ return this.ctor.initialId;
341
+ }
342
+ if (this.ctor.randomInitialId) {
343
+ return typeof this.ctor.randomInitialId === "function"
344
+ ? this.ctor.randomInitialId()
345
+ : this.randomInt(10000, 499999);
346
+ }
347
+ return 1; // Default initial ID
348
+ }
349
+ /**
350
+ * Resolve the increment value from model configuration.
351
+ *
352
+ * Priority:
353
+ * 1. Model.incrementIdBy (explicit value)
354
+ * 2. Model.randomIncrement (random or function)
355
+ * 3. Default: 1
356
+ *
357
+ * @returns The increment value
358
+ * @private
359
+ */
360
+ resolveIncrementBy() {
361
+ if (this.ctor.incrementIdBy) {
362
+ return this.ctor.incrementIdBy;
363
+ }
364
+ if (this.ctor.randomIncrement) {
365
+ return typeof this.ctor.randomIncrement === "function"
366
+ ? this.ctor.randomIncrement()
367
+ : this.randomInt(1, 10);
368
+ }
369
+ return 1; // Default increment
370
+ }
371
+ /**
372
+ * Generate a random integer between min and max (inclusive).
373
+ *
374
+ * @param min - Minimum value
375
+ * @param max - Maximum value
376
+ * @returns Random integer
377
+ * @private
378
+ */
379
+ randomInt(min, max) {
380
+ return Math.floor(Math.random() * (max - min + 1)) + min;
381
+ }
382
+ /**
383
+ * Trigger sync operations after successful save.
384
+ * Only syncs on updates (not creates) unless sync config specifies embedOnCreate.
385
+ *
386
+ * @param changedFields - Fields that were changed (for filtering)
387
+ * @private
388
+ */
389
+ /**
390
+ * Trigger sync operations after successful save.
391
+ *
392
+ * Emits a model.updated event that ModelSyncOperation listens to.
393
+ * The sync is handled by registered sync operations, not directly here.
394
+ *
395
+ * @param changedFields - Fields that were changed (for filtering)
396
+ * @private
397
+ */
398
+ async triggerSync(changedFields) {
399
+ // Emit model.updated event - ModelSyncOperation listens to these
400
+ await events__default.default.triggerAll(modelEvents.getModelUpdatedEvent(this.ctor), this.model, changedFields);
401
+ }
402
+ }exports.DatabaseWriter=DatabaseWriter;//# sourceMappingURL=database-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-writer.js","sources":["../../src/writer/database-writer.ts"],"sourcesContent":[null],"names":["v","getSealConfig","DatabaseWriterValidationError","events","getModelUpdatedEvent"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Context } from "@warlock.js/context";
2
+ import type { DataSource } from "../data-source/data-source";
3
+ type DataSourceContextValue = string | DataSource;
4
+ type DataSourceContextStore = {
5
+ dataSource?: DataSourceContextValue;
6
+ };
7
+ /**
8
+ * Database DataSource Context
9
+ *
10
+ * Manages the active database connection/data source using AsyncLocalStorage.
11
+ * Extends the base Context class for consistent API.
12
+ */
13
+ declare class DatabaseDataSourceContext extends Context<DataSourceContextStore> {
14
+ /**
15
+ * Get the current data source
16
+ */
17
+ getDataSource(): DataSourceContextValue | undefined;
18
+ /**
19
+ * Set the data source in context
20
+ */
21
+ setDataSource(dataSource: DataSourceContextValue): void;
22
+ /**
23
+ * Build the initial data source store with defaults
24
+ */
25
+ buildStore(): DataSourceContextStore;
26
+ }
27
+ export declare const databaseDataSourceContext: DatabaseDataSourceContext;
28
+ export {};
29
+ //# sourceMappingURL=database-data-source-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-data-source-context.d.ts","sourceRoot":"","sources":["../../src/context/database-data-source-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,KAAK,sBAAsB,GAAG,MAAM,GAAG,UAAU,CAAC;AAElD,KAAK,sBAAsB,GAAG;IAC5B,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF;;;;;GAKG;AACH,cAAM,yBAA0B,SAAQ,OAAO,CAAC,sBAAsB,CAAC;IACrE;;OAEG;IACI,aAAa,IAAI,sBAAsB,GAAG,SAAS;IAI1D;;OAEG;IACI,aAAa,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI;IAI9D;;OAEG;IACI,UAAU,IAAI,sBAAsB;CAG5C;AAED,eAAO,MAAM,yBAAyB,2BAAkC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import {contextManager,Context}from'@warlock.js/context';/**
2
+ * Database DataSource Context
3
+ *
4
+ * Manages the active database connection/data source using AsyncLocalStorage.
5
+ * Extends the base Context class for consistent API.
6
+ */
7
+ class DatabaseDataSourceContext extends Context {
8
+ /**
9
+ * Get the current data source
10
+ */
11
+ getDataSource() {
12
+ return this.get("dataSource");
13
+ }
14
+ /**
15
+ * Set the data source in context
16
+ */
17
+ setDataSource(dataSource) {
18
+ this.set("dataSource", dataSource);
19
+ }
20
+ /**
21
+ * Build the initial data source store with defaults
22
+ */
23
+ buildStore() {
24
+ return { dataSource: undefined };
25
+ }
26
+ }
27
+ const databaseDataSourceContext = new DatabaseDataSourceContext();
28
+ contextManager.register("db.datasource", databaseDataSourceContext);export{databaseDataSourceContext};//# sourceMappingURL=database-data-source-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-data-source-context.js","sources":["../../src/context/database-data-source-context.ts"],"sourcesContent":[null],"names":[],"mappings":"yDASA;;;;;AAKG;AACH,MAAM,yBAA0B,SAAQ,OAA+B,CAAA;AACrE;;AAEG;IACI,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KAC/B;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,UAAkC,EAAA;AACrD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;KACpC;AAED;;AAEG;IACI,UAAU,GAAA;AACf,QAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;KAClC;AACF,CAAA;AAEY,MAAA,yBAAyB,GAAG,IAAI,yBAAyB,GAAG;AAEzE,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,yBAAyB,CAAC"}