@warlock.js/cascade 4.0.48 → 4.0.58

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 @@
1
+ {"version":3,"file":"model.js","sources":["../../src/model/model.ts"],"sourcesContent":[null],"names":["DatabaseDirtyTracker","getModelFromRegistry","getAllModelsFromRegistry","modelSync","get","only","set","unset","merge","globalModelEvents","dataSourceRegistry","DatabaseRemover","DatabaseRestorer","ModelEvents","removeModelFromRegistery","DatabaseWriter"],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { ChildModel, Model } from "./model";
2
+ /**
3
+ * Options for the RegisterModel decorator
4
+ */
5
+ export type RegisterModelOptions = {
6
+ /**
7
+ * Custom name for the model in the global registry.
8
+ * If not provided, uses the class name.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * @RegisterModel({ name: "CustomUser" })
13
+ * export class User extends Model {}
14
+ * ```
15
+ */
16
+ name?: string;
17
+ };
18
+ /**
19
+ * Class decorator that registers a model in the global registry.
20
+ *
21
+ * This is an opt-in mechanism that allows models to be referenced by string name
22
+ * instead of direct class imports, helping avoid circular dependencies.
23
+ *
24
+ * @param options - Optional configuration for registration
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Auto-capture class name
29
+ * @RegisterModel()
30
+ * export class User extends Model {
31
+ * static table = "users";
32
+ * }
33
+ *
34
+ * // Custom name
35
+ * @RegisterModel({ name: "UserModel" })
36
+ * export class User extends Model {
37
+ * static table = "users";
38
+ * }
39
+ *
40
+ * // Later, retrieve by name:
41
+ * const UserModel = Model.getModel("User");
42
+ * ```
43
+ */
44
+ export declare function RegisterModel(options?: RegisterModelOptions): <T extends ChildModel<Model<import("./model").ModelSchema>>>(target: T) => T;
45
+ export declare function registerModelInRegistry(name: string, model: ChildModel<Model>): void;
46
+ /**
47
+ * Get a model class by its name from the global registry.
48
+ *
49
+ * @param name - The model class name
50
+ * @returns The model class or undefined if not found
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const UserModel = getModelFromRegistry("User");
55
+ * if (UserModel) {
56
+ * const user = await UserModel.find(1);
57
+ * }
58
+ * ```
59
+ */
60
+ export declare function getModelFromRegistry(name: string): ChildModel<Model<import("./model").ModelSchema>>;
61
+ /**
62
+ * Get all registered models from the global registry.
63
+ *
64
+ * @returns A Map of all registered model classes by name
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const allModels = getAllModelsFromRegistry();
69
+ * for (const [name, ModelClass] of allModels) {
70
+ * console.log(`Found model: ${name}`);
71
+ * }
72
+ * ```
73
+ */
74
+ export declare function getAllModelsFromRegistry(): Map<string, ChildModel<Model<import("./model").ModelSchema>>>;
75
+ /**
76
+ * Clean up all models from register
77
+ */
78
+ export declare function cleanupModelsRegistery(): void;
79
+ export declare function removeModelFromRegistery(name: string): void;
80
+ //# sourceMappingURL=register-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-model.d.ts","sourceRoot":"","sources":["../../src/model/register-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAQF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,gFAsB3D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,QAE7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,oDAEhD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,kEAEvC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,SAErC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,QAEpD"}
@@ -0,0 +1,91 @@
1
+ 'use strict';/**
2
+ * Global model registry that maps model class names to their constructors.
3
+ * This allows for string-based model references to avoid circular dependencies.
4
+ */
5
+ const modelsRegistry = new Map();
6
+ /**
7
+ * Class decorator that registers a model in the global registry.
8
+ *
9
+ * This is an opt-in mechanism that allows models to be referenced by string name
10
+ * instead of direct class imports, helping avoid circular dependencies.
11
+ *
12
+ * @param options - Optional configuration for registration
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Auto-capture class name
17
+ * @RegisterModel()
18
+ * export class User extends Model {
19
+ * static table = "users";
20
+ * }
21
+ *
22
+ * // Custom name
23
+ * @RegisterModel({ name: "UserModel" })
24
+ * export class User extends Model {
25
+ * static table = "users";
26
+ * }
27
+ *
28
+ * // Later, retrieve by name:
29
+ * const UserModel = Model.getModel("User");
30
+ * ```
31
+ */
32
+ function RegisterModel(options) {
33
+ return function (target) {
34
+ const modelName = options?.name || target.name;
35
+ if (!modelName) {
36
+ throw new Error("@RegisterModel decorator: Unable to determine model name. " +
37
+ "Please provide a name in options or ensure your class has a name.");
38
+ }
39
+ if (modelsRegistry.has(modelName)) {
40
+ console.warn(`⚠️ Model "${modelName}" is already registered. ` +
41
+ `This will overwrite the previous registration.`);
42
+ }
43
+ modelsRegistry.set(modelName, target);
44
+ return target;
45
+ };
46
+ }
47
+ function registerModelInRegistry(name, model) {
48
+ modelsRegistry.set(name, model);
49
+ }
50
+ /**
51
+ * Get a model class by its name from the global registry.
52
+ *
53
+ * @param name - The model class name
54
+ * @returns The model class or undefined if not found
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const UserModel = getModelFromRegistry("User");
59
+ * if (UserModel) {
60
+ * const user = await UserModel.find(1);
61
+ * }
62
+ * ```
63
+ */
64
+ function getModelFromRegistry(name) {
65
+ return modelsRegistry.get(name);
66
+ }
67
+ /**
68
+ * Get all registered models from the global registry.
69
+ *
70
+ * @returns A Map of all registered model classes by name
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const allModels = getAllModelsFromRegistry();
75
+ * for (const [name, ModelClass] of allModels) {
76
+ * console.log(`Found model: ${name}`);
77
+ * }
78
+ * ```
79
+ */
80
+ function getAllModelsFromRegistry() {
81
+ return new Map(modelsRegistry);
82
+ }
83
+ /**
84
+ * Clean up all models from register
85
+ */
86
+ function cleanupModelsRegistery() {
87
+ modelsRegistry.clear();
88
+ }
89
+ function removeModelFromRegistery(name) {
90
+ modelsRegistry.delete(name);
91
+ }exports.RegisterModel=RegisterModel;exports.cleanupModelsRegistery=cleanupModelsRegistery;exports.getAllModelsFromRegistry=getAllModelsFromRegistry;exports.getModelFromRegistry=getModelFromRegistry;exports.registerModelInRegistry=registerModelInRegistry;exports.removeModelFromRegistery=removeModelFromRegistery;//# sourceMappingURL=register-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-model.js","sources":["../../src/model/register-model.ts"],"sourcesContent":[null],"names":[],"mappings":"aAmBA;;;AAGG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACG,SAAU,aAAa,CAAC,OAA8B,EAAA;AAC1D,IAAA,OAAO,UAAuC,MAAS,EAAA;QACrD,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;QAE/C,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CACb,4DAA4D;AAC1D,gBAAA,mEAAmE,CACtE,CAAC;AACH,SAAA;AAED,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,WAAA,EAAc,SAAS,CAA2B,yBAAA,CAAA;AAChD,gBAAA,CAAA,8CAAA,CAAgD,CACnD,CAAC;AACH,SAAA;AAED,QAAA,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEtC,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AACJ,CAAC;AAEe,SAAA,uBAAuB,CAAC,IAAY,EAAE,KAAwB,EAAA;AAC5E,IAAA,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;AAaG;AACG,SAAU,oBAAoB,CAAC,IAAY,EAAA;AAC/C,IAAA,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;AAYG;SACa,wBAAwB,GAAA;AACtC,IAAA,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC;AAED;;AAEG;SACa,sBAAsB,GAAA;IACpC,cAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAEK,SAAU,wBAAwB,CAAC,IAAY,EAAA;AACnD,IAAA,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B"}
@@ -0,0 +1,100 @@
1
+ import type { RemoverContract, RemoverOptions, RemoverResult } from "../contracts/database-remover.contract";
2
+ import type { Model } from "../model/model";
3
+ /**
4
+ * Database remover service that orchestrates model deletion.
5
+ *
6
+ * Handles the complete deletion pipeline:
7
+ * 1. Strategy resolution (options → model static → data source default)
8
+ * 2. Validation (check if model is new, has primary key)
9
+ * 3. Event emission (deleting, deleted)
10
+ * 4. Driver execution (based on strategy: trash, permanent, or soft)
11
+ * 5. Post-deletion cleanup (mark as new, reset state)
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const user = await User.find(1);
16
+ * const remover = new DatabaseRemover(user);
17
+ * const result = await remover.destroy();
18
+ *
19
+ * console.log(result.success); // true
20
+ * console.log(result.strategy); // "trash" | "permanent" | "soft"
21
+ * ```
22
+ */
23
+ export declare class DatabaseRemover implements RemoverContract {
24
+ /** The model instance being deleted */
25
+ private readonly model;
26
+ /** Model constructor reference */
27
+ private readonly ctor;
28
+ /** Data source containing driver */
29
+ private readonly dataSource;
30
+ /** Database driver for executing queries */
31
+ private readonly driver;
32
+ /** Table/collection name */
33
+ private readonly table;
34
+ /** Primary key field name */
35
+ private readonly primaryKey;
36
+ /**
37
+ * Create a new remover instance for a model.
38
+ *
39
+ * @param model - The model instance to delete
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const user = await User.find(1);
44
+ * const remover = new DatabaseRemover(user);
45
+ * await remover.destroy();
46
+ * ```
47
+ */
48
+ constructor(model: Model);
49
+ /**
50
+ * Destroy (delete) the model instance from the database.
51
+ *
52
+ * @param options - Remover options
53
+ * @returns Result containing success status, strategy used, and metadata
54
+ * @throws {Error} If model is new (not saved) or if deletion fails
55
+ */
56
+ destroy(options?: RemoverOptions): Promise<RemoverResult>;
57
+ /**
58
+ * Prepare the trash record by preserving all original fields and adding deletion metadata.
59
+ *
60
+ * Keeps all original fields intact for easy restoration and adds:
61
+ * - `deletedAt`: Timestamp when the record was deleted
62
+ * - `originalTable`: The table/collection the record came from (for filtering in restoreAll)
63
+ *
64
+ * **ID Handling:**
65
+ * - MongoDB with `_id`: Keeps `_id` as-is (unique across database)
66
+ * - MongoDB with auto-increment `id`: Keeps `id` as a regular field (not primary key)
67
+ * - SQL: Keeps original `id` as a regular field (trash table uses its own auto-increment primary key)
68
+ *
69
+ * The trash table should use its own primary key structure:
70
+ * - MongoDB: Uses `_id` (ObjectId) as primary key, original `id` is just a field
71
+ * - SQL: Uses auto-increment `trashId` as primary key, original `id` is just a field
72
+ *
73
+ * @param documentData - The original document data
74
+ * @returns Prepared trash record data with all original fields + deletedAt + originalTable
75
+ * @private
76
+ */
77
+ private prepareTrashRecord;
78
+ /**
79
+ * Resolve the trash table/collection name.
80
+ *
81
+ * Priority:
82
+ * 1. Model.trashTable (if set)
83
+ * 2. Data source defaultTrashTable (e.g., "RecycleBin" for MongoDB)
84
+ * 3. Default pattern: `{table}Trash`
85
+ *
86
+ * @returns The trash table/collection name
87
+ * @private
88
+ */
89
+ private resolveTrashTable;
90
+ /**
91
+ * Trigger sync operations after successful deletion.
92
+ *
93
+ * Emits a model.deleted event that ModelSyncOperation listens to.
94
+ * The sync is handled by registered sync operations, not directly here.
95
+ *
96
+ * @private
97
+ */
98
+ private triggerSync;
99
+ }
100
+ //# sourceMappingURL=database-remover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-remover.d.ts","sourceRoot":"","sources":["../../src/remover/database-remover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,wCAAwC,CAAC;AAEhD,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAIxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAgB,YAAW,eAAe;IACrD,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,oCAAoC;IACpC,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;;;;;;;;;;;OAWG;gBACgB,KAAK,EAAE,KAAK;IAS/B;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiH1E;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;OAOG;YACW,WAAW;CAI1B"}
@@ -0,0 +1,209 @@
1
+ 'use strict';var events=require('@mongez/events'),modelEvents=require('../sync/model-events.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var events__default=/*#__PURE__*/_interopDefault(events);/**
2
+ * Database remover service that orchestrates model deletion.
3
+ *
4
+ * Handles the complete deletion pipeline:
5
+ * 1. Strategy resolution (options → model static → data source default)
6
+ * 2. Validation (check if model is new, has primary key)
7
+ * 3. Event emission (deleting, deleted)
8
+ * 4. Driver execution (based on strategy: trash, permanent, or soft)
9
+ * 5. Post-deletion cleanup (mark as new, reset state)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const user = await User.find(1);
14
+ * const remover = new DatabaseRemover(user);
15
+ * const result = await remover.destroy();
16
+ *
17
+ * console.log(result.success); // true
18
+ * console.log(result.strategy); // "trash" | "permanent" | "soft"
19
+ * ```
20
+ */
21
+ class DatabaseRemover {
22
+ /** The model instance being deleted */
23
+ model;
24
+ /** Model constructor reference */
25
+ ctor;
26
+ /** Data source containing driver */
27
+ dataSource;
28
+ /** Database driver for executing queries */
29
+ driver;
30
+ /** Table/collection name */
31
+ table;
32
+ /** Primary key field name */
33
+ primaryKey;
34
+ /**
35
+ * Create a new remover instance for a model.
36
+ *
37
+ * @param model - The model instance to delete
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const user = await User.find(1);
42
+ * const remover = new DatabaseRemover(user);
43
+ * await remover.destroy();
44
+ * ```
45
+ */
46
+ constructor(model) {
47
+ this.model = model;
48
+ this.ctor = model.constructor;
49
+ this.dataSource = this.ctor.getDataSource();
50
+ this.driver = this.dataSource.driver;
51
+ this.table = this.ctor.table;
52
+ this.primaryKey = this.ctor.primaryKey;
53
+ }
54
+ /**
55
+ * Destroy (delete) the model instance from the database.
56
+ *
57
+ * @param options - Remover options
58
+ * @returns Result containing success status, strategy used, and metadata
59
+ * @throws {Error} If model is new (not saved) or if deletion fails
60
+ */
61
+ async destroy(options = {}) {
62
+ // 1. Resolve strategy (options → model static → data source default → permanent)
63
+ const strategy = options.strategy ??
64
+ this.ctor.deleteStrategy ??
65
+ this.dataSource.defaultDeleteStrategy ??
66
+ "permanent";
67
+ // 2. Validate model is not new and has primary key
68
+ if (this.model.isNew) {
69
+ throw new Error(`Cannot destroy ${this.ctor.name} instance that hasn't been saved to the database.`);
70
+ }
71
+ const primaryKeyValue = this.model.get(this.primaryKey);
72
+ if (!primaryKeyValue) {
73
+ throw new Error(`Cannot destroy ${this.ctor.name} instance: primary key (${this.primaryKey}) is missing.`);
74
+ }
75
+ // 3. Emit deleting event (unless skipEvents)
76
+ if (!options.skipEvents) {
77
+ await this.model.emitEvent("deleting", {
78
+ strategy,
79
+ primaryKeyValue,
80
+ primaryKey: this.primaryKey,
81
+ });
82
+ }
83
+ // 4. Execute deletion based on strategy
84
+ let deletedCount = 0;
85
+ let trashRecord;
86
+ const filter = { [this.primaryKey]: primaryKeyValue };
87
+ const context = {
88
+ strategy,
89
+ primaryKeyValue,
90
+ primaryKey: this.primaryKey,
91
+ };
92
+ switch (strategy) {
93
+ case "trash": {
94
+ // Move to trash table, then delete
95
+ const trashTable = this.resolveTrashTable();
96
+ const documentData = { ...this.model.data };
97
+ // Prepare trash record with metadata and handle ID conflicts
98
+ const trashData = this.prepareTrashRecord(documentData);
99
+ // Insert into trash table
100
+ const insertResult = await this.driver.insert(trashTable, trashData);
101
+ trashRecord = insertResult.document;
102
+ context.trashRecord = trashRecord;
103
+ // Delete original
104
+ const result = await this.driver.delete(this.table, filter);
105
+ deletedCount = result > 0 ? 1 : 0;
106
+ break;
107
+ }
108
+ case "permanent": {
109
+ // Direct deletion
110
+ const result = await this.driver.delete(this.table, filter);
111
+ deletedCount = result > 0 ? 1 : 0;
112
+ break;
113
+ }
114
+ case "soft": {
115
+ // Set deletedAt timestamp
116
+ const deletedAtColumn = this.ctor.deletedAtColumn ?? "deletedAt";
117
+ const updateOperations = {
118
+ $set: { [deletedAtColumn]: new Date() },
119
+ };
120
+ const updateResult = await this.driver.update(this.table, filter, updateOperations);
121
+ deletedCount = updateResult.modifiedCount > 0 ? 1 : 0;
122
+ break;
123
+ }
124
+ }
125
+ if (deletedCount === 0) {
126
+ throw new Error(`Failed to destroy ${this.ctor.name} instance: record not found.`);
127
+ }
128
+ context.deletedCount = deletedCount;
129
+ // 5. Post-deletion cleanup
130
+ // Only mark as new for permanent and trash (soft delete keeps the record)
131
+ if (strategy !== "soft") {
132
+ this.model.isNew = true;
133
+ }
134
+ // 6. Emit deleted event (unless skipEvents)
135
+ if (!options.skipEvents) {
136
+ await this.model.emitEvent("deleted", context);
137
+ }
138
+ // 7. Trigger sync operations (fire-and-forget, non-blocking)
139
+ if (!options.skipSync) {
140
+ void this.triggerSync();
141
+ }
142
+ return {
143
+ success: true,
144
+ deletedCount,
145
+ strategy,
146
+ trashRecord,
147
+ };
148
+ }
149
+ /**
150
+ * Prepare the trash record by preserving all original fields and adding deletion metadata.
151
+ *
152
+ * Keeps all original fields intact for easy restoration and adds:
153
+ * - `deletedAt`: Timestamp when the record was deleted
154
+ * - `originalTable`: The table/collection the record came from (for filtering in restoreAll)
155
+ *
156
+ * **ID Handling:**
157
+ * - MongoDB with `_id`: Keeps `_id` as-is (unique across database)
158
+ * - MongoDB with auto-increment `id`: Keeps `id` as a regular field (not primary key)
159
+ * - SQL: Keeps original `id` as a regular field (trash table uses its own auto-increment primary key)
160
+ *
161
+ * The trash table should use its own primary key structure:
162
+ * - MongoDB: Uses `_id` (ObjectId) as primary key, original `id` is just a field
163
+ * - SQL: Uses auto-increment `trashId` as primary key, original `id` is just a field
164
+ *
165
+ * @param documentData - The original document data
166
+ * @returns Prepared trash record data with all original fields + deletedAt + originalTable
167
+ * @private
168
+ */
169
+ prepareTrashRecord(documentData) {
170
+ // Preserve all original fields and add deletion metadata
171
+ return {
172
+ ...documentData,
173
+ deletedAt: new Date(),
174
+ originalTable: this.table,
175
+ };
176
+ }
177
+ /**
178
+ * Resolve the trash table/collection name.
179
+ *
180
+ * Priority:
181
+ * 1. Model.trashTable (if set)
182
+ * 2. Data source defaultTrashTable (e.g., "RecycleBin" for MongoDB)
183
+ * 3. Default pattern: `{table}Trash`
184
+ *
185
+ * @returns The trash table/collection name
186
+ * @private
187
+ */
188
+ resolveTrashTable() {
189
+ if (this.ctor.trashTable) {
190
+ return this.ctor.trashTable;
191
+ }
192
+ if (this.dataSource.defaultTrashTable) {
193
+ return this.dataSource.defaultTrashTable;
194
+ }
195
+ return `${this.table}Trash`;
196
+ }
197
+ /**
198
+ * Trigger sync operations after successful deletion.
199
+ *
200
+ * Emits a model.deleted event that ModelSyncOperation listens to.
201
+ * The sync is handled by registered sync operations, not directly here.
202
+ *
203
+ * @private
204
+ */
205
+ async triggerSync() {
206
+ // Emit model.deleted event - ModelSyncOperation listens to these
207
+ await events__default.default.triggerAll(modelEvents.getModelDeletedEvent(this.ctor), this.model);
208
+ }
209
+ }exports.DatabaseRemover=DatabaseRemover;//# sourceMappingURL=database-remover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-remover.js","sources":["../../src/remover/database-remover.ts"],"sourcesContent":[null],"names":["events","getModelDeletedEvent"],"mappings":"2NAYA;;;;;;;;;;;;;;;;;;;AAmBG;MACU,eAAe,CAAA;;AAET,IAAA,KAAK,CAAQ;;AAGb,IAAA,IAAI,CAAoB;;AAGxB,IAAA,UAAU,CAAa;;AAGvB,IAAA,MAAM,CAAiB;;AAGvB,IAAA,KAAK,CAAS;;AAGd,IAAA,UAAU,CAAS;AAEpC;;;;;;;;;;;AAWG;AACH,IAAA,WAAA,CAAmB,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,WAAgC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;KACxC;AAED;;;;;;AAMG;AACI,IAAA,MAAM,OAAO,CAAC,OAAA,GAA0B,EAAE,EAAA;;AAE/C,QAAA,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;YAChB,IAAI,CAAC,IAAI,CAAC,cAAc;YACxB,IAAI,CAAC,UAAU,CAAC,qBAAqB;AACrC,YAAA,WAAW,CAAC;;AAGd,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,MAAM,IAAI,KAAK,CACb,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmD,iDAAA,CAAA,CACpF,CAAC;AACH,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,IAAI,CAAC,UAAU,CAAA,aAAA,CAAe,CAC1F,CAAC;AACH,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACvB,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE;gBACrC,QAAQ;gBACR,eAAe;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,aAAA,CAAC,CAAC;AACJ,SAAA;;QAGD,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,WAAgD,CAAC;QAErD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;AAEtD,QAAA,MAAM,OAAO,GAAmC;YAC9C,QAAQ;YACR,eAAe;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;AAEF,QAAA,QAAQ,QAAQ;YACd,KAAK,OAAO,EAAE;;AAEZ,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;;gBAG5C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;;AAGxD,gBAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACrE,gBAAA,WAAW,GAAG,YAAY,CAAC,QAAmC,CAAC;AAE/D,gBAAA,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;;AAGlC,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,gBAAA,YAAY,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM;AACP,aAAA;YAED,KAAK,WAAW,EAAE;;AAEhB,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,gBAAA,YAAY,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM;AACP,aAAA;YAED,KAAK,MAAM,EAAE;;gBAEX,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC;AACjE,gBAAA,MAAM,gBAAgB,GAAqB;oBACzC,IAAI,EAAE,EAAE,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,EAAE;iBACxC,CAAC;AACF,gBAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACpF,gBAAA,YAAY,GAAG,YAAY,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtD,MAAM;AACP,aAAA;AACF,SAAA;QAED,IAAI,YAAY,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,CAAqB,kBAAA,EAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAA8B,4BAAA,CAAA,CAAC,CAAC;AACpF,SAAA;AAED,QAAA,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;;;QAIpC,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACzB,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAChD,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,SAAA;QAED,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,QAAQ;YACR,WAAW;SACZ,CAAC;KACH;AAED;;;;;;;;;;;;;;;;;;;AAmBG;AACK,IAAA,kBAAkB,CAAC,YAAqC,EAAA;;QAE9D,OAAO;AACL,YAAA,GAAG,YAAY;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,aAAa,EAAE,IAAI,CAAC,KAAK;SAC1B,CAAC;KACH;AAED;;;;;;;;;;AAUG;IACK,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,KAAK,OAAO,CAAC;KAC7B;AAED;;;;;;;AAOG;AACK,IAAA,MAAM,WAAW,GAAA;;AAEvB,QAAA,MAAMA,uBAAM,CAAC,UAAU,CAACC,gCAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACtE;AACF"}
@@ -0,0 +1,131 @@
1
+ import type { RestorerContract, RestorerOptions, RestorerResult } from "../contracts/database-restorer.contract";
2
+ import type { Model } from "../model/model";
3
+ /**
4
+ * Database restorer service that orchestrates model restoration.
5
+ *
6
+ * Handles the complete restoration pipeline:
7
+ * 1. Strategy detection (trash vs soft delete)
8
+ * 2. Record retrieval from trash table or soft-deleted records
9
+ * 3. ID conflict resolution
10
+ * 4. Event emission (restoring, restored)
11
+ * 5. Driver execution (insert back to original table, remove from trash/clear deletedAt)
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const restorer = new DatabaseRestorer(User);
16
+ * const result = await restorer.restore(123);
17
+ *
18
+ * console.log(result.success); // true
19
+ * console.log(result.strategy); // "trash" | "soft"
20
+ * ```
21
+ */
22
+ export declare class DatabaseRestorer implements RestorerContract {
23
+ /** Model constructor reference */
24
+ private readonly ctor;
25
+ /** Data source containing driver */
26
+ private readonly dataSource;
27
+ /** Database driver for executing queries */
28
+ private readonly driver;
29
+ /** Table/collection name */
30
+ private readonly table;
31
+ /** Primary key field name */
32
+ private readonly primaryKey;
33
+ /**
34
+ * Create a new restorer instance for a model class.
35
+ *
36
+ * @param modelClass - The model class (static context)
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const restorer = new DatabaseRestorer(User);
41
+ * await restorer.restore(123);
42
+ * ```
43
+ */
44
+ constructor(modelClass: typeof Model);
45
+ /**
46
+ * Restore a single deleted record by its ID.
47
+ *
48
+ * @param id - The primary key value of the record to restore
49
+ * @param options - Restorer options
50
+ * @returns Result containing success status, strategy used, and restored record
51
+ * @throws {Error} If record not found in trash or soft-deleted records
52
+ * @throws {Error} If ID conflict and onIdConflict is "fail"
53
+ */
54
+ restore(id: string | number, options?: RestorerOptions): Promise<RestorerResult>;
55
+ /**
56
+ * Restore all deleted records for the model's table.
57
+ *
58
+ * @param options - Restorer options
59
+ * @returns Result containing success status, strategy used, and aggregate counts
60
+ */
61
+ restoreAll(options?: RestorerOptions): Promise<RestorerResult>;
62
+ /**
63
+ * Resolve the delete strategy.
64
+ *
65
+ * Priority: options → model static → data source default → "permanent"
66
+ *
67
+ * @param strategyOption - Optional strategy override from options
68
+ * @returns The resolved delete strategy
69
+ * @private
70
+ */
71
+ private resolveStrategy;
72
+ /**
73
+ * Fetch a record by ID based on the delete strategy.
74
+ *
75
+ * @param id - The primary key value
76
+ * @param strategy - The delete strategy to use
77
+ * @returns The record data, or null if not found
78
+ * @private
79
+ */
80
+ private fetchRecordByStrategy;
81
+ /**
82
+ * Fetch all records based on the delete strategy.
83
+ *
84
+ * @param strategy - The delete strategy to use
85
+ * @returns Array of record data
86
+ * @private
87
+ */
88
+ private fetchAllRecordsByStrategy;
89
+ /**
90
+ * Handle ID conflict by checking if ID exists and assigning new one if needed.
91
+ *
92
+ * @param recordData - The record data to restore
93
+ * @param originalId - The original ID value
94
+ * @param onIdConflict - Conflict resolution strategy
95
+ * @returns Record data with potentially new ID
96
+ * @private
97
+ */
98
+ private handleIdConflict;
99
+ /**
100
+ * Check if an ID already exists in the target table.
101
+ *
102
+ * @param id - The ID to check
103
+ * @returns True if ID exists, false otherwise
104
+ * @private
105
+ */
106
+ private checkIdExists;
107
+ /**
108
+ * Assign a new ID to the record data.
109
+ *
110
+ * For MongoDB: Generates new ObjectId for `_id`, keeps `id` if it exists
111
+ * For SQL: Removes `id` to let database auto-increment
112
+ *
113
+ * @param recordData - The record data
114
+ * @returns Record data with new ID assigned
115
+ * @private
116
+ */
117
+ private assignNewId;
118
+ /**
119
+ * Resolve the trash table/collection name.
120
+ *
121
+ * Priority:
122
+ * 1. Model.trashTable (if set)
123
+ * 2. Data source defaultTrashTable (e.g., "RecycleBin" for MongoDB)
124
+ * 3. Default pattern: `{table}Trash`
125
+ *
126
+ * @returns The trash table/collection name
127
+ * @private
128
+ */
129
+ private resolveTrashTable;
130
+ }
131
+ //# sourceMappingURL=database-restorer.d.ts.map