@warlock.js/cascade 4.0.162 → 4.0.164

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 (661) 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 +35 -0
  6. package/cjs/context/database-transaction-context.d.ts.map +1 -0
  7. package/cjs/context/database-transaction-context.js +40 -0
  8. package/cjs/context/database-transaction-context.js.map +1 -0
  9. package/cjs/contracts/database-driver.contract.d.ts +450 -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 +49 -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 +522 -0
  24. package/cjs/contracts/migration-driver.contract.d.ts.map +1 -0
  25. package/cjs/contracts/query-builder.contract.d.ts +1609 -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 +108 -0
  30. package/cjs/data-source/data-source-registry.d.ts.map +1 -0
  31. package/cjs/data-source/data-source-registry.js +145 -0
  32. package/cjs/data-source/data-source-registry.js.map +1 -0
  33. package/cjs/data-source/data-source.d.ts +147 -0
  34. package/cjs/data-source/data-source.d.ts.map +1 -0
  35. package/cjs/data-source/data-source.js +83 -0
  36. package/cjs/data-source/data-source.js.map +1 -0
  37. package/cjs/database-dirty-tracker.d.ts +252 -0
  38. package/cjs/database-dirty-tracker.d.ts.map +1 -0
  39. package/cjs/database-dirty-tracker.js +386 -0
  40. package/cjs/database-dirty-tracker.js.map +1 -0
  41. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
  42. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  43. package/cjs/drivers/mongodb/mongodb-blueprint.js +51 -0
  44. package/cjs/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  45. package/cjs/drivers/mongodb/mongodb-driver.d.ts +325 -0
  46. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  47. package/cjs/drivers/mongodb/mongodb-driver.js +838 -0
  48. package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -0
  49. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
  50. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  51. package/cjs/drivers/mongodb/mongodb-id-generator.js +149 -0
  52. package/cjs/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  53. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
  54. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  55. package/cjs/drivers/mongodb/mongodb-migration-driver.js +666 -0
  56. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  57. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
  58. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  59. package/cjs/drivers/mongodb/mongodb-query-builder.js +1988 -0
  60. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  61. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
  62. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  63. package/cjs/drivers/mongodb/mongodb-query-operations.js +270 -0
  64. package/cjs/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  65. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
  66. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  67. package/cjs/drivers/mongodb/mongodb-query-parser.js +1351 -0
  68. package/cjs/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  69. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
  70. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  71. package/cjs/drivers/mongodb/mongodb-sync-adapter.js +146 -0
  72. package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  73. package/cjs/drivers/mongodb/types.d.ts +43 -0
  74. package/cjs/drivers/mongodb/types.d.ts.map +1 -0
  75. package/cjs/drivers/postgres/index.d.ts +16 -0
  76. package/cjs/drivers/postgres/index.d.ts.map +1 -0
  77. package/cjs/drivers/postgres/postgres-blueprint.d.ts +64 -0
  78. package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  79. package/cjs/drivers/postgres/postgres-blueprint.js +121 -0
  80. package/cjs/drivers/postgres/postgres-blueprint.js.map +1 -0
  81. package/cjs/drivers/postgres/postgres-dialect.d.ts +136 -0
  82. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  83. package/cjs/drivers/postgres/postgres-dialect.js +268 -0
  84. package/cjs/drivers/postgres/postgres-dialect.js.map +1 -0
  85. package/cjs/drivers/postgres/postgres-driver.d.ts +432 -0
  86. package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -0
  87. package/cjs/drivers/postgres/postgres-driver.js +1010 -0
  88. package/cjs/drivers/postgres/postgres-driver.js.map +1 -0
  89. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +397 -0
  90. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  91. package/cjs/drivers/postgres/postgres-migration-driver.js +900 -0
  92. package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -0
  93. package/cjs/drivers/postgres/postgres-query-builder.d.ts +254 -0
  94. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  95. package/cjs/drivers/postgres/postgres-query-builder.js +933 -0
  96. package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -0
  97. package/cjs/drivers/postgres/postgres-query-parser.d.ts +328 -0
  98. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  99. package/cjs/drivers/postgres/postgres-query-parser.js +868 -0
  100. package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -0
  101. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  102. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  103. package/cjs/drivers/postgres/postgres-sql-serializer.js +400 -0
  104. package/cjs/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  105. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  106. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  107. package/cjs/drivers/postgres/postgres-sync-adapter.js +197 -0
  108. package/cjs/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  109. package/cjs/drivers/postgres/types.d.ts +144 -0
  110. package/cjs/drivers/postgres/types.d.ts.map +1 -0
  111. package/cjs/drivers/sql/index.d.ts +10 -0
  112. package/cjs/drivers/sql/index.d.ts.map +1 -0
  113. package/cjs/drivers/sql/sql-dialect.contract.d.ts +204 -0
  114. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  115. package/cjs/drivers/sql/sql-types.d.ts +202 -0
  116. package/cjs/drivers/sql/sql-types.d.ts.map +1 -0
  117. package/cjs/errors/missing-data-source.error.d.ts +22 -0
  118. package/cjs/errors/missing-data-source.error.d.ts.map +1 -0
  119. package/cjs/errors/missing-data-source.error.js +29 -0
  120. package/cjs/errors/missing-data-source.error.js.map +1 -0
  121. package/cjs/errors/transaction-rollback.error.d.ts +20 -0
  122. package/cjs/errors/transaction-rollback.error.d.ts.map +1 -0
  123. package/cjs/errors/transaction-rollback.error.js +27 -0
  124. package/cjs/errors/transaction-rollback.error.js.map +1 -0
  125. package/cjs/events/model-events.d.ts +231 -0
  126. package/cjs/events/model-events.d.ts.map +1 -0
  127. package/cjs/events/model-events.js +259 -0
  128. package/cjs/events/model-events.js.map +1 -0
  129. package/cjs/expressions/aggregate-expressions.d.ts +215 -0
  130. package/cjs/expressions/aggregate-expressions.d.ts.map +1 -0
  131. package/cjs/expressions/aggregate-expressions.js +221 -0
  132. package/cjs/expressions/aggregate-expressions.js.map +1 -0
  133. package/cjs/expressions/index.d.ts +2 -0
  134. package/cjs/expressions/index.d.ts.map +1 -0
  135. package/cjs/index.d.ts +45 -0
  136. package/cjs/index.d.ts.map +1 -0
  137. package/cjs/index.js +1 -0
  138. package/cjs/index.js.map +1 -0
  139. package/cjs/migration/column-builder.d.ts +417 -0
  140. package/cjs/migration/column-builder.d.ts.map +1 -0
  141. package/cjs/migration/column-builder.js +586 -0
  142. package/cjs/migration/column-builder.js.map +1 -0
  143. package/cjs/migration/column-helpers.d.ts +275 -0
  144. package/cjs/migration/column-helpers.d.ts.map +1 -0
  145. package/cjs/migration/column-helpers.js +389 -0
  146. package/cjs/migration/column-helpers.js.map +1 -0
  147. package/cjs/migration/foreign-key-builder.d.ts +103 -0
  148. package/cjs/migration/foreign-key-builder.d.ts.map +1 -0
  149. package/cjs/migration/foreign-key-builder.js +121 -0
  150. package/cjs/migration/foreign-key-builder.js.map +1 -0
  151. package/cjs/migration/index.d.ts +7 -0
  152. package/cjs/migration/index.d.ts.map +1 -0
  153. package/cjs/migration/migration-runner.d.ts +278 -0
  154. package/cjs/migration/migration-runner.d.ts.map +1 -0
  155. package/cjs/migration/migration-runner.js +815 -0
  156. package/cjs/migration/migration-runner.js.map +1 -0
  157. package/cjs/migration/migration.d.ts +1992 -0
  158. package/cjs/migration/migration.d.ts.map +1 -0
  159. package/cjs/migration/migration.js +2162 -0
  160. package/cjs/migration/migration.js.map +1 -0
  161. package/cjs/migration/sql-grammar.d.ts +61 -0
  162. package/cjs/migration/sql-grammar.d.ts.map +1 -0
  163. package/cjs/migration/sql-grammar.js +164 -0
  164. package/cjs/migration/sql-grammar.js.map +1 -0
  165. package/cjs/migration/sql-serializer.d.ts +22 -0
  166. package/cjs/migration/sql-serializer.d.ts.map +1 -0
  167. package/cjs/migration/sql-serializer.js +26 -0
  168. package/cjs/migration/sql-serializer.js.map +1 -0
  169. package/cjs/migration/types.d.ts +155 -0
  170. package/cjs/migration/types.d.ts.map +1 -0
  171. package/cjs/model/methods/accessor-methods.d.ts +13 -0
  172. package/cjs/model/methods/accessor-methods.d.ts.map +1 -0
  173. package/cjs/model/methods/accessor-methods.js +51 -0
  174. package/cjs/model/methods/accessor-methods.js.map +1 -0
  175. package/cjs/model/methods/delete-methods.d.ts +10 -0
  176. package/cjs/model/methods/delete-methods.d.ts.map +1 -0
  177. package/cjs/model/methods/delete-methods.js +10 -0
  178. package/cjs/model/methods/delete-methods.js.map +1 -0
  179. package/cjs/model/methods/dirty-methods.d.ts +10 -0
  180. package/cjs/model/methods/dirty-methods.d.ts.map +1 -0
  181. package/cjs/model/methods/dirty-methods.js +15 -0
  182. package/cjs/model/methods/dirty-methods.js.map +1 -0
  183. package/cjs/model/methods/hydration-methods.d.ts +10 -0
  184. package/cjs/model/methods/hydration-methods.d.ts.map +1 -0
  185. package/cjs/model/methods/hydration-methods.js +57 -0
  186. package/cjs/model/methods/hydration-methods.js.map +1 -0
  187. package/cjs/model/methods/instance-event-methods.d.ts +7 -0
  188. package/cjs/model/methods/instance-event-methods.d.ts.map +1 -0
  189. package/cjs/model/methods/instance-event-methods.js +15 -0
  190. package/cjs/model/methods/instance-event-methods.js.map +1 -0
  191. package/cjs/model/methods/meta-methods.d.ts +7 -0
  192. package/cjs/model/methods/meta-methods.d.ts.map +1 -0
  193. package/cjs/model/methods/meta-methods.js +78 -0
  194. package/cjs/model/methods/meta-methods.js.map +1 -0
  195. package/cjs/model/methods/query-methods.d.ts +24 -0
  196. package/cjs/model/methods/query-methods.d.ts.map +1 -0
  197. package/cjs/model/methods/query-methods.js +164 -0
  198. package/cjs/model/methods/query-methods.js.map +1 -0
  199. package/cjs/model/methods/restore-methods.d.ts +10 -0
  200. package/cjs/model/methods/restore-methods.d.ts.map +1 -0
  201. package/cjs/model/methods/restore-methods.js +13 -0
  202. package/cjs/model/methods/restore-methods.js.map +1 -0
  203. package/cjs/model/methods/scope-methods.d.ts +7 -0
  204. package/cjs/model/methods/scope-methods.d.ts.map +1 -0
  205. package/cjs/model/methods/scope-methods.js +15 -0
  206. package/cjs/model/methods/scope-methods.js.map +1 -0
  207. package/cjs/model/methods/serialization-methods.d.ts +3 -0
  208. package/cjs/model/methods/serialization-methods.d.ts.map +1 -0
  209. package/cjs/model/methods/serialization-methods.js +27 -0
  210. package/cjs/model/methods/serialization-methods.js.map +1 -0
  211. package/cjs/model/methods/static-event-methods.d.ts +9 -0
  212. package/cjs/model/methods/static-event-methods.d.ts.map +1 -0
  213. package/cjs/model/methods/static-event-methods.js +29 -0
  214. package/cjs/model/methods/static-event-methods.js.map +1 -0
  215. package/cjs/model/methods/write-methods.d.ts +10 -0
  216. package/cjs/model/methods/write-methods.d.ts.map +1 -0
  217. package/cjs/model/methods/write-methods.js +52 -0
  218. package/cjs/model/methods/write-methods.js.map +1 -0
  219. package/cjs/model/model.d.ts +1647 -0
  220. package/cjs/model/model.d.ts.map +1 -0
  221. package/cjs/model/model.js +1657 -0
  222. package/cjs/model/model.js.map +1 -0
  223. package/cjs/model/model.types.d.ts +44 -0
  224. package/cjs/model/model.types.d.ts.map +1 -0
  225. package/cjs/model/register-model.d.ts +81 -0
  226. package/cjs/model/register-model.d.ts.map +1 -0
  227. package/cjs/model/register-model.js +94 -0
  228. package/cjs/model/register-model.js.map +1 -0
  229. package/cjs/query-builder/query-builder.d.ts +556 -0
  230. package/cjs/query-builder/query-builder.d.ts.map +1 -0
  231. package/cjs/query-builder/query-builder.js +1070 -0
  232. package/cjs/query-builder/query-builder.js.map +1 -0
  233. package/cjs/relations/helpers.d.ts +156 -0
  234. package/cjs/relations/helpers.d.ts.map +1 -0
  235. package/cjs/relations/helpers.js +202 -0
  236. package/cjs/relations/helpers.js.map +1 -0
  237. package/cjs/relations/index.d.ts +35 -0
  238. package/cjs/relations/index.d.ts.map +1 -0
  239. package/cjs/relations/pivot-operations.d.ts +160 -0
  240. package/cjs/relations/pivot-operations.d.ts.map +1 -0
  241. package/cjs/relations/pivot-operations.js +293 -0
  242. package/cjs/relations/pivot-operations.js.map +1 -0
  243. package/cjs/relations/relation-hydrator.d.ts +68 -0
  244. package/cjs/relations/relation-hydrator.d.ts.map +1 -0
  245. package/cjs/relations/relation-hydrator.js +81 -0
  246. package/cjs/relations/relation-hydrator.js.map +1 -0
  247. package/cjs/relations/relation-loader.d.ts +194 -0
  248. package/cjs/relations/relation-loader.d.ts.map +1 -0
  249. package/cjs/relations/relation-loader.js +466 -0
  250. package/cjs/relations/relation-loader.js.map +1 -0
  251. package/cjs/relations/types.d.ts +306 -0
  252. package/cjs/relations/types.d.ts.map +1 -0
  253. package/cjs/remover/database-remover.d.ts +100 -0
  254. package/cjs/remover/database-remover.d.ts.map +1 -0
  255. package/cjs/remover/database-remover.js +214 -0
  256. package/cjs/remover/database-remover.js.map +1 -0
  257. package/cjs/restorer/database-restorer.d.ts +131 -0
  258. package/cjs/restorer/database-restorer.d.ts.map +1 -0
  259. package/cjs/restorer/database-restorer.js +434 -0
  260. package/cjs/restorer/database-restorer.js.map +1 -0
  261. package/cjs/sql-database-dirty-tracker.d.ts +13 -0
  262. package/cjs/sql-database-dirty-tracker.d.ts.map +1 -0
  263. package/cjs/sql-database-dirty-tracker.js +14 -0
  264. package/cjs/sql-database-dirty-tracker.js.map +1 -0
  265. package/cjs/sync/index.d.ts +12 -0
  266. package/cjs/sync/index.d.ts.map +1 -0
  267. package/cjs/sync/model-events.d.ts +62 -0
  268. package/cjs/sync/model-events.d.ts.map +1 -0
  269. package/cjs/sync/model-events.js +49 -0
  270. package/cjs/sync/model-events.js.map +1 -0
  271. package/cjs/sync/model-sync-operation.d.ts +163 -0
  272. package/cjs/sync/model-sync-operation.d.ts.map +1 -0
  273. package/cjs/sync/model-sync-operation.js +292 -0
  274. package/cjs/sync/model-sync-operation.js.map +1 -0
  275. package/cjs/sync/model-sync.d.ts +130 -0
  276. package/cjs/sync/model-sync.d.ts.map +1 -0
  277. package/cjs/sync/model-sync.js +178 -0
  278. package/cjs/sync/model-sync.js.map +1 -0
  279. package/cjs/sync/sync-context.d.ts +70 -0
  280. package/cjs/sync/sync-context.d.ts.map +1 -0
  281. package/cjs/sync/sync-context.js +101 -0
  282. package/cjs/sync/sync-context.js.map +1 -0
  283. package/cjs/sync/sync-manager.d.ts +213 -0
  284. package/cjs/sync/sync-manager.d.ts.map +1 -0
  285. package/cjs/sync/sync-manager.js +689 -0
  286. package/cjs/sync/sync-manager.js.map +1 -0
  287. package/cjs/sync/types.d.ts +289 -0
  288. package/cjs/sync/types.d.ts.map +1 -0
  289. package/cjs/test-migrations/test-enhanced-features.migration.d.ts +15 -0
  290. package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
  291. package/cjs/types.d.ts +371 -0
  292. package/cjs/types.d.ts.map +1 -0
  293. package/cjs/utils/connect-to-database.d.ts +307 -0
  294. package/cjs/utils/connect-to-database.d.ts.map +1 -0
  295. package/cjs/utils/connect-to-database.js +130 -0
  296. package/cjs/utils/connect-to-database.js.map +1 -0
  297. package/cjs/utils/database-writer.utils.d.ts +15 -0
  298. package/cjs/utils/database-writer.utils.d.ts.map +1 -0
  299. package/cjs/utils/database-writer.utils.js +14 -0
  300. package/cjs/utils/database-writer.utils.js.map +1 -0
  301. package/cjs/utils/define-model.js +100 -0
  302. package/cjs/utils/define-model.js.map +1 -0
  303. package/cjs/utils/is-valid-date-value.d.ts +5 -0
  304. package/cjs/utils/is-valid-date-value.d.ts.map +1 -0
  305. package/cjs/utils/is-valid-date-value.js +25 -0
  306. package/cjs/utils/is-valid-date-value.js.map +1 -0
  307. package/cjs/utils/once-connected.d.ts +146 -0
  308. package/cjs/utils/once-connected.d.ts.map +1 -0
  309. package/cjs/utils/once-connected.js +251 -0
  310. package/cjs/utils/once-connected.js.map +1 -0
  311. package/cjs/validation/database-seal-plugins.d.ts +12 -0
  312. package/cjs/validation/database-seal-plugins.d.ts.map +1 -0
  313. package/cjs/validation/database-seal-plugins.js +1 -0
  314. package/cjs/validation/database-seal-plugins.js.map +1 -0
  315. package/cjs/validation/database-writer-validation-error.d.ts +97 -0
  316. package/cjs/validation/database-writer-validation-error.d.ts.map +1 -0
  317. package/cjs/validation/database-writer-validation-error.js +160 -0
  318. package/cjs/validation/database-writer-validation-error.js.map +1 -0
  319. package/cjs/validation/index.d.ts +3 -0
  320. package/cjs/validation/index.d.ts.map +1 -0
  321. package/cjs/validation/mutators/embed-mutator.d.ts +9 -0
  322. package/cjs/validation/mutators/embed-mutator.d.ts.map +1 -0
  323. package/cjs/validation/mutators/embed-mutator.js +33 -0
  324. package/cjs/validation/mutators/embed-mutator.js.map +1 -0
  325. package/cjs/validation/plugins/embed-validator-plugin.d.ts +24 -0
  326. package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
  327. package/cjs/validation/plugins/embed-validator-plugin.js +18 -0
  328. package/cjs/validation/plugins/embed-validator-plugin.js.map +1 -0
  329. package/cjs/validation/rules/database-model-rule.d.ts +7 -0
  330. package/cjs/validation/rules/database-model-rule.d.ts.map +1 -0
  331. package/cjs/validation/rules/database-model-rule.js +27 -0
  332. package/cjs/validation/rules/database-model-rule.js.map +1 -0
  333. package/cjs/validation/transformers/embed-model-transformer.d.ts +3 -0
  334. package/cjs/validation/transformers/embed-model-transformer.d.ts.map +1 -0
  335. package/cjs/validation/transformers/embed-model-transformer.js +18 -0
  336. package/cjs/validation/transformers/embed-model-transformer.js.map +1 -0
  337. package/cjs/validation/validators/embed-validator.d.ts +21 -0
  338. package/cjs/validation/validators/embed-validator.d.ts.map +1 -0
  339. package/cjs/validation/validators/embed-validator.js +43 -0
  340. package/cjs/validation/validators/embed-validator.js.map +1 -0
  341. package/cjs/writer/database-writer.d.ts +181 -0
  342. package/cjs/writer/database-writer.d.ts.map +1 -0
  343. package/cjs/writer/database-writer.js +407 -0
  344. package/cjs/writer/database-writer.js.map +1 -0
  345. package/esm/data-source/data-source-registry.d.ts +108 -0
  346. package/esm/data-source/data-source-registry.d.ts.map +1 -0
  347. package/esm/data-source/data-source-registry.js +145 -0
  348. package/esm/data-source/data-source-registry.js.map +1 -0
  349. package/esm/data-source/data-source.d.ts +147 -0
  350. package/esm/data-source/data-source.d.ts.map +1 -0
  351. package/esm/data-source/data-source.js +83 -0
  352. package/esm/data-source/data-source.js.map +1 -0
  353. package/esm/database-dirty-tracker.d.ts +252 -0
  354. package/esm/database-dirty-tracker.d.ts.map +1 -0
  355. package/esm/database-dirty-tracker.js +386 -0
  356. package/esm/database-dirty-tracker.js.map +1 -0
  357. package/esm/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
  358. package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  359. package/esm/drivers/mongodb/mongodb-blueprint.js +51 -0
  360. package/esm/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  361. package/esm/drivers/mongodb/mongodb-driver.d.ts +325 -0
  362. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  363. package/esm/drivers/mongodb/mongodb-driver.js +838 -0
  364. package/esm/drivers/mongodb/mongodb-driver.js.map +1 -0
  365. package/esm/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
  366. package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  367. package/esm/drivers/mongodb/mongodb-id-generator.js +149 -0
  368. package/esm/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  369. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
  370. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  371. package/esm/drivers/mongodb/mongodb-migration-driver.js +666 -0
  372. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  373. package/esm/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
  374. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  375. package/esm/drivers/mongodb/mongodb-query-builder.js +1988 -0
  376. package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  377. package/esm/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
  378. package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  379. package/esm/drivers/mongodb/mongodb-query-operations.js +270 -0
  380. package/esm/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  381. package/esm/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
  382. package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  383. package/esm/drivers/mongodb/mongodb-query-parser.js +1351 -0
  384. package/esm/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  385. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
  386. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  387. package/esm/drivers/mongodb/mongodb-sync-adapter.js +146 -0
  388. package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  389. package/esm/drivers/mongodb/types.d.ts +43 -0
  390. package/esm/drivers/mongodb/types.d.ts.map +1 -0
  391. package/esm/drivers/postgres/index.d.ts +16 -0
  392. package/esm/drivers/postgres/index.d.ts.map +1 -0
  393. package/esm/drivers/postgres/postgres-blueprint.d.ts +64 -0
  394. package/esm/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  395. package/esm/drivers/postgres/postgres-blueprint.js +121 -0
  396. package/esm/drivers/postgres/postgres-blueprint.js.map +1 -0
  397. package/esm/drivers/postgres/postgres-dialect.d.ts +136 -0
  398. package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  399. package/esm/drivers/postgres/postgres-dialect.js +268 -0
  400. package/esm/drivers/postgres/postgres-dialect.js.map +1 -0
  401. package/esm/drivers/postgres/postgres-driver.d.ts +432 -0
  402. package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -0
  403. package/esm/drivers/postgres/postgres-driver.js +1010 -0
  404. package/esm/drivers/postgres/postgres-driver.js.map +1 -0
  405. package/esm/drivers/postgres/postgres-migration-driver.d.ts +397 -0
  406. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  407. package/esm/drivers/postgres/postgres-migration-driver.js +900 -0
  408. package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -0
  409. package/esm/drivers/postgres/postgres-query-builder.d.ts +254 -0
  410. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  411. package/esm/drivers/postgres/postgres-query-builder.js +933 -0
  412. package/esm/drivers/postgres/postgres-query-builder.js.map +1 -0
  413. package/esm/drivers/postgres/postgres-query-parser.d.ts +328 -0
  414. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  415. package/esm/drivers/postgres/postgres-query-parser.js +868 -0
  416. package/esm/drivers/postgres/postgres-query-parser.js.map +1 -0
  417. package/esm/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  418. package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  419. package/esm/drivers/postgres/postgres-sql-serializer.js +400 -0
  420. package/esm/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  421. package/esm/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  422. package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  423. package/esm/drivers/postgres/postgres-sync-adapter.js +197 -0
  424. package/esm/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  425. package/esm/drivers/postgres/types.d.ts +144 -0
  426. package/esm/drivers/postgres/types.d.ts.map +1 -0
  427. package/esm/drivers/sql/index.d.ts +10 -0
  428. package/esm/drivers/sql/index.d.ts.map +1 -0
  429. package/esm/drivers/sql/sql-dialect.contract.d.ts +204 -0
  430. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  431. package/esm/drivers/sql/sql-types.d.ts +202 -0
  432. package/esm/drivers/sql/sql-types.d.ts.map +1 -0
  433. package/esm/errors/missing-data-source.error.d.ts +22 -0
  434. package/esm/errors/missing-data-source.error.d.ts.map +1 -0
  435. package/esm/errors/missing-data-source.error.js +29 -0
  436. package/esm/errors/missing-data-source.error.js.map +1 -0
  437. package/esm/errors/transaction-rollback.error.d.ts +20 -0
  438. package/esm/errors/transaction-rollback.error.d.ts.map +1 -0
  439. package/esm/errors/transaction-rollback.error.js +27 -0
  440. package/esm/errors/transaction-rollback.error.js.map +1 -0
  441. package/esm/events/model-events.d.ts +231 -0
  442. package/esm/events/model-events.d.ts.map +1 -0
  443. package/esm/events/model-events.js +259 -0
  444. package/esm/events/model-events.js.map +1 -0
  445. package/esm/expressions/aggregate-expressions.d.ts +215 -0
  446. package/esm/expressions/aggregate-expressions.d.ts.map +1 -0
  447. package/esm/expressions/aggregate-expressions.js +221 -0
  448. package/esm/expressions/aggregate-expressions.js.map +1 -0
  449. package/esm/expressions/index.d.ts +2 -0
  450. package/esm/expressions/index.d.ts.map +1 -0
  451. package/esm/index.d.ts +45 -0
  452. package/esm/index.d.ts.map +1 -0
  453. package/esm/index.js +1 -0
  454. package/esm/index.js.map +1 -0
  455. package/esm/migration/column-builder.d.ts +417 -0
  456. package/esm/migration/column-builder.d.ts.map +1 -0
  457. package/esm/migration/column-builder.js +586 -0
  458. package/esm/migration/column-builder.js.map +1 -0
  459. package/esm/migration/column-helpers.d.ts +275 -0
  460. package/esm/migration/column-helpers.d.ts.map +1 -0
  461. package/esm/migration/column-helpers.js +389 -0
  462. package/esm/migration/column-helpers.js.map +1 -0
  463. package/esm/migration/foreign-key-builder.d.ts +103 -0
  464. package/esm/migration/foreign-key-builder.d.ts.map +1 -0
  465. package/esm/migration/foreign-key-builder.js +121 -0
  466. package/esm/migration/foreign-key-builder.js.map +1 -0
  467. package/esm/migration/index.d.ts +7 -0
  468. package/esm/migration/index.d.ts.map +1 -0
  469. package/esm/migration/migration-runner.d.ts +278 -0
  470. package/esm/migration/migration-runner.d.ts.map +1 -0
  471. package/esm/migration/migration-runner.js +815 -0
  472. package/esm/migration/migration-runner.js.map +1 -0
  473. package/esm/migration/migration.d.ts +1992 -0
  474. package/esm/migration/migration.d.ts.map +1 -0
  475. package/esm/migration/migration.js +2162 -0
  476. package/esm/migration/migration.js.map +1 -0
  477. package/esm/migration/sql-grammar.d.ts +61 -0
  478. package/esm/migration/sql-grammar.d.ts.map +1 -0
  479. package/esm/migration/sql-grammar.js +164 -0
  480. package/esm/migration/sql-grammar.js.map +1 -0
  481. package/esm/migration/sql-serializer.d.ts +22 -0
  482. package/esm/migration/sql-serializer.d.ts.map +1 -0
  483. package/esm/migration/sql-serializer.js +26 -0
  484. package/esm/migration/sql-serializer.js.map +1 -0
  485. package/esm/migration/types.d.ts +155 -0
  486. package/esm/migration/types.d.ts.map +1 -0
  487. package/esm/model/methods/accessor-methods.d.ts +13 -0
  488. package/esm/model/methods/accessor-methods.d.ts.map +1 -0
  489. package/esm/model/methods/accessor-methods.js +51 -0
  490. package/esm/model/methods/accessor-methods.js.map +1 -0
  491. package/esm/model/methods/delete-methods.d.ts +10 -0
  492. package/esm/model/methods/delete-methods.d.ts.map +1 -0
  493. package/esm/model/methods/delete-methods.js +10 -0
  494. package/esm/model/methods/delete-methods.js.map +1 -0
  495. package/esm/model/methods/dirty-methods.d.ts +10 -0
  496. package/esm/model/methods/dirty-methods.d.ts.map +1 -0
  497. package/esm/model/methods/dirty-methods.js +15 -0
  498. package/esm/model/methods/dirty-methods.js.map +1 -0
  499. package/esm/model/methods/hydration-methods.d.ts +10 -0
  500. package/esm/model/methods/hydration-methods.d.ts.map +1 -0
  501. package/esm/model/methods/hydration-methods.js +57 -0
  502. package/esm/model/methods/hydration-methods.js.map +1 -0
  503. package/esm/model/methods/instance-event-methods.d.ts +7 -0
  504. package/esm/model/methods/instance-event-methods.d.ts.map +1 -0
  505. package/esm/model/methods/instance-event-methods.js +15 -0
  506. package/esm/model/methods/instance-event-methods.js.map +1 -0
  507. package/esm/model/methods/meta-methods.d.ts +7 -0
  508. package/esm/model/methods/meta-methods.d.ts.map +1 -0
  509. package/esm/model/methods/meta-methods.js +78 -0
  510. package/esm/model/methods/meta-methods.js.map +1 -0
  511. package/esm/model/methods/query-methods.d.ts +24 -0
  512. package/esm/model/methods/query-methods.d.ts.map +1 -0
  513. package/esm/model/methods/query-methods.js +164 -0
  514. package/esm/model/methods/query-methods.js.map +1 -0
  515. package/esm/model/methods/restore-methods.d.ts +10 -0
  516. package/esm/model/methods/restore-methods.d.ts.map +1 -0
  517. package/esm/model/methods/restore-methods.js +13 -0
  518. package/esm/model/methods/restore-methods.js.map +1 -0
  519. package/esm/model/methods/scope-methods.d.ts +7 -0
  520. package/esm/model/methods/scope-methods.d.ts.map +1 -0
  521. package/esm/model/methods/scope-methods.js +15 -0
  522. package/esm/model/methods/scope-methods.js.map +1 -0
  523. package/esm/model/methods/serialization-methods.d.ts +3 -0
  524. package/esm/model/methods/serialization-methods.d.ts.map +1 -0
  525. package/esm/model/methods/serialization-methods.js +27 -0
  526. package/esm/model/methods/serialization-methods.js.map +1 -0
  527. package/esm/model/methods/static-event-methods.d.ts +9 -0
  528. package/esm/model/methods/static-event-methods.d.ts.map +1 -0
  529. package/esm/model/methods/static-event-methods.js +29 -0
  530. package/esm/model/methods/static-event-methods.js.map +1 -0
  531. package/esm/model/methods/write-methods.d.ts +10 -0
  532. package/esm/model/methods/write-methods.d.ts.map +1 -0
  533. package/esm/model/methods/write-methods.js +52 -0
  534. package/esm/model/methods/write-methods.js.map +1 -0
  535. package/esm/model/model.d.ts +1647 -0
  536. package/esm/model/model.d.ts.map +1 -0
  537. package/esm/model/model.js +1657 -0
  538. package/esm/model/model.js.map +1 -0
  539. package/esm/model/model.types.d.ts +44 -0
  540. package/esm/model/model.types.d.ts.map +1 -0
  541. package/esm/model/register-model.d.ts +81 -0
  542. package/esm/model/register-model.d.ts.map +1 -0
  543. package/esm/model/register-model.js +94 -0
  544. package/esm/model/register-model.js.map +1 -0
  545. package/esm/query-builder/query-builder.d.ts +556 -0
  546. package/esm/query-builder/query-builder.d.ts.map +1 -0
  547. package/esm/query-builder/query-builder.js +1070 -0
  548. package/esm/query-builder/query-builder.js.map +1 -0
  549. package/esm/relations/helpers.d.ts +156 -0
  550. package/esm/relations/helpers.d.ts.map +1 -0
  551. package/esm/relations/helpers.js +202 -0
  552. package/esm/relations/helpers.js.map +1 -0
  553. package/esm/relations/index.d.ts +35 -0
  554. package/esm/relations/index.d.ts.map +1 -0
  555. package/esm/relations/pivot-operations.d.ts +160 -0
  556. package/esm/relations/pivot-operations.d.ts.map +1 -0
  557. package/esm/relations/pivot-operations.js +293 -0
  558. package/esm/relations/pivot-operations.js.map +1 -0
  559. package/esm/relations/relation-hydrator.d.ts +68 -0
  560. package/esm/relations/relation-hydrator.d.ts.map +1 -0
  561. package/esm/relations/relation-hydrator.js +81 -0
  562. package/esm/relations/relation-hydrator.js.map +1 -0
  563. package/esm/relations/relation-loader.d.ts +194 -0
  564. package/esm/relations/relation-loader.d.ts.map +1 -0
  565. package/esm/relations/relation-loader.js +466 -0
  566. package/esm/relations/relation-loader.js.map +1 -0
  567. package/esm/relations/types.d.ts +306 -0
  568. package/esm/relations/types.d.ts.map +1 -0
  569. package/esm/remover/database-remover.d.ts +100 -0
  570. package/esm/remover/database-remover.d.ts.map +1 -0
  571. package/esm/remover/database-remover.js +214 -0
  572. package/esm/remover/database-remover.js.map +1 -0
  573. package/esm/restorer/database-restorer.d.ts +131 -0
  574. package/esm/restorer/database-restorer.d.ts.map +1 -0
  575. package/esm/restorer/database-restorer.js +434 -0
  576. package/esm/restorer/database-restorer.js.map +1 -0
  577. package/esm/sql-database-dirty-tracker.d.ts +13 -0
  578. package/esm/sql-database-dirty-tracker.d.ts.map +1 -0
  579. package/esm/sql-database-dirty-tracker.js +14 -0
  580. package/esm/sql-database-dirty-tracker.js.map +1 -0
  581. package/esm/sync/index.d.ts +12 -0
  582. package/esm/sync/index.d.ts.map +1 -0
  583. package/esm/sync/model-events.d.ts +62 -0
  584. package/esm/sync/model-events.d.ts.map +1 -0
  585. package/esm/sync/model-events.js +49 -0
  586. package/esm/sync/model-events.js.map +1 -0
  587. package/esm/sync/model-sync-operation.d.ts +163 -0
  588. package/esm/sync/model-sync-operation.d.ts.map +1 -0
  589. package/esm/sync/model-sync-operation.js +292 -0
  590. package/esm/sync/model-sync-operation.js.map +1 -0
  591. package/esm/sync/model-sync.d.ts +130 -0
  592. package/esm/sync/model-sync.d.ts.map +1 -0
  593. package/esm/sync/model-sync.js +178 -0
  594. package/esm/sync/model-sync.js.map +1 -0
  595. package/esm/sync/sync-context.d.ts +70 -0
  596. package/esm/sync/sync-context.d.ts.map +1 -0
  597. package/esm/sync/sync-context.js +101 -0
  598. package/esm/sync/sync-context.js.map +1 -0
  599. package/esm/sync/sync-manager.d.ts +213 -0
  600. package/esm/sync/sync-manager.d.ts.map +1 -0
  601. package/esm/sync/sync-manager.js +689 -0
  602. package/esm/sync/sync-manager.js.map +1 -0
  603. package/esm/sync/types.d.ts +289 -0
  604. package/esm/sync/types.d.ts.map +1 -0
  605. package/esm/test-migrations/test-enhanced-features.migration.d.ts +15 -0
  606. package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
  607. package/esm/types.d.ts +371 -0
  608. package/esm/types.d.ts.map +1 -0
  609. package/esm/utils/connect-to-database.d.ts +307 -0
  610. package/esm/utils/connect-to-database.d.ts.map +1 -0
  611. package/esm/utils/connect-to-database.js +130 -0
  612. package/esm/utils/connect-to-database.js.map +1 -0
  613. package/esm/utils/database-writer.utils.d.ts +15 -0
  614. package/esm/utils/database-writer.utils.d.ts.map +1 -0
  615. package/esm/utils/database-writer.utils.js +14 -0
  616. package/esm/utils/database-writer.utils.js.map +1 -0
  617. package/esm/utils/define-model.js +100 -0
  618. package/esm/utils/define-model.js.map +1 -0
  619. package/esm/utils/is-valid-date-value.d.ts +5 -0
  620. package/esm/utils/is-valid-date-value.d.ts.map +1 -0
  621. package/esm/utils/is-valid-date-value.js +25 -0
  622. package/esm/utils/is-valid-date-value.js.map +1 -0
  623. package/esm/utils/once-connected.d.ts +146 -0
  624. package/esm/utils/once-connected.d.ts.map +1 -0
  625. package/esm/utils/once-connected.js +251 -0
  626. package/esm/utils/once-connected.js.map +1 -0
  627. package/esm/validation/database-seal-plugins.d.ts +12 -0
  628. package/esm/validation/database-seal-plugins.d.ts.map +1 -0
  629. package/esm/validation/database-seal-plugins.js +1 -0
  630. package/esm/validation/database-seal-plugins.js.map +1 -0
  631. package/esm/validation/database-writer-validation-error.d.ts +97 -0
  632. package/esm/validation/database-writer-validation-error.d.ts.map +1 -0
  633. package/esm/validation/database-writer-validation-error.js +160 -0
  634. package/esm/validation/database-writer-validation-error.js.map +1 -0
  635. package/esm/validation/index.d.ts +3 -0
  636. package/esm/validation/index.d.ts.map +1 -0
  637. package/esm/validation/mutators/embed-mutator.d.ts +9 -0
  638. package/esm/validation/mutators/embed-mutator.d.ts.map +1 -0
  639. package/esm/validation/mutators/embed-mutator.js +33 -0
  640. package/esm/validation/mutators/embed-mutator.js.map +1 -0
  641. package/esm/validation/plugins/embed-validator-plugin.d.ts +24 -0
  642. package/esm/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
  643. package/esm/validation/plugins/embed-validator-plugin.js +18 -0
  644. package/esm/validation/plugins/embed-validator-plugin.js.map +1 -0
  645. package/esm/validation/rules/database-model-rule.d.ts +7 -0
  646. package/esm/validation/rules/database-model-rule.d.ts.map +1 -0
  647. package/esm/validation/rules/database-model-rule.js +27 -0
  648. package/esm/validation/rules/database-model-rule.js.map +1 -0
  649. package/esm/validation/transformers/embed-model-transformer.d.ts +3 -0
  650. package/esm/validation/transformers/embed-model-transformer.d.ts.map +1 -0
  651. package/esm/validation/transformers/embed-model-transformer.js +18 -0
  652. package/esm/validation/transformers/embed-model-transformer.js.map +1 -0
  653. package/esm/validation/validators/embed-validator.d.ts +21 -0
  654. package/esm/validation/validators/embed-validator.d.ts.map +1 -0
  655. package/esm/validation/validators/embed-validator.js +43 -0
  656. package/esm/validation/validators/embed-validator.js.map +1 -0
  657. package/esm/writer/database-writer.d.ts +181 -0
  658. package/esm/writer/database-writer.d.ts.map +1 -0
  659. package/esm/writer/database-writer.js +407 -0
  660. package/esm/writer/database-writer.js.map +1 -0
  661. package/package.json +4 -4
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-restorer.d.ts","sourceRoot":"","sources":["../../src/restorer/database-restorer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACf,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IAEpC,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;;;;;;;;;;OAUG;gBACgB,UAAU,EAAE,OAAO,KAAK;IAQ3C;;;;;;;;OAQG;IACU,OAAO,CAClB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC;IA6E1B;;;;;OAKG;IACU,UAAU,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAwJ/E;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IASvB;;;;;;;OAOG;YACW,qBAAqB;IAmCnC;;;;;;OAMG;YACW,yBAAyB;IAoCvC;;;;;;;;OAQG;YACW,gBAAgB;IAqB9B;;;;;;OAMG;YACW,aAAa;IAU3B;;;;;;;;;OASG;YACW,WAAW;IAqBzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}
@@ -0,0 +1,434 @@
1
+ /**
2
+ * Database restorer service that orchestrates model restoration.
3
+ *
4
+ * Handles the complete restoration pipeline:
5
+ * 1. Strategy detection (trash vs soft delete)
6
+ * 2. Record retrieval from trash table or soft-deleted records
7
+ * 3. ID conflict resolution
8
+ * 4. Event emission (restoring, restored)
9
+ * 5. Driver execution (insert back to original table, remove from trash/clear deletedAt)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const restorer = new DatabaseRestorer(User);
14
+ * const result = await restorer.restore(123);
15
+ *
16
+ * console.log(result.success); // true
17
+ * console.log(result.strategy); // "trash" | "soft"
18
+ * ```
19
+ */
20
+ class DatabaseRestorer {
21
+ /** Model constructor reference */
22
+ ctor;
23
+ /** Data source containing driver */
24
+ dataSource;
25
+ /** Database driver for executing queries */
26
+ driver;
27
+ /** Table/collection name */
28
+ table;
29
+ /** Primary key field name */
30
+ primaryKey;
31
+ /**
32
+ * Create a new restorer instance for a model class.
33
+ *
34
+ * @param modelClass - The model class (static context)
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const restorer = new DatabaseRestorer(User);
39
+ * await restorer.restore(123);
40
+ * ```
41
+ */
42
+ constructor(modelClass) {
43
+ this.ctor = modelClass;
44
+ this.dataSource = modelClass.getDataSource();
45
+ this.driver = this.dataSource.driver;
46
+ this.table = modelClass.table;
47
+ this.primaryKey = modelClass.primaryKey;
48
+ }
49
+ /**
50
+ * Restore a single deleted record by its ID.
51
+ *
52
+ * @param id - The primary key value of the record to restore
53
+ * @param options - Restorer options
54
+ * @returns Result containing success status, strategy used, and restored record
55
+ * @throws {Error} If record not found in trash or soft-deleted records
56
+ * @throws {Error} If ID conflict and onIdConflict is "fail"
57
+ */
58
+ async restore(id, options = {}) {
59
+ const onIdConflict = options.onIdConflict ?? "assignNew";
60
+ const skipEvents = options.skipEvents ?? false;
61
+ // 1. Resolve strategy (options → model static → data source default)
62
+ const strategy = this.resolveStrategy(options.strategy);
63
+ // 2. Validate strategy (cannot restore permanent deletes)
64
+ if (strategy === "permanent") {
65
+ throw new Error(`Cannot restore ${this.ctor.name} with ${this.primaryKey} ${id}: permanently deleted records cannot be restored.`);
66
+ }
67
+ // 3. Fetch record based on strategy
68
+ const recordData = await this.fetchRecordByStrategy(id, strategy);
69
+ if (!recordData) {
70
+ throw new Error(`Cannot restore ${this.ctor.name} with ${this.primaryKey} ${id}: record not found in ${strategy === "trash" ? "trash table" : "soft-deleted records"}.`);
71
+ }
72
+ // 4. Prepare record data (remove metadata fields)
73
+ const restoredData = { ...recordData };
74
+ delete restoredData.deletedAt;
75
+ delete restoredData.originalTable;
76
+ // 5. Check for ID conflict and handle
77
+ const finalData = await this.handleIdConflict(restoredData, id, onIdConflict);
78
+ // 6. Create temporary model instance for event emission
79
+ // Note: Model is abstract, but at runtime this.ctor is a concrete subclass
80
+ const model = new this.ctor(finalData);
81
+ // 7. Emit restoring event (unless skipEvents)
82
+ if (!skipEvents) {
83
+ await model.emitEvent("restoring");
84
+ }
85
+ // 8. Restore based on strategy
86
+ if (strategy === "trash") {
87
+ // Insert record back into original table (was moved to trash)
88
+ await this.driver.insert(this.table, finalData);
89
+ model.isNew = false;
90
+ // Remove from trash table
91
+ await this.driver.delete(this.resolveTrashTable(), {
92
+ [this.primaryKey]: id,
93
+ });
94
+ }
95
+ else if (strategy === "soft") {
96
+ // Record still exists, just unset deletedAt (don't insert - would create duplicate!)
97
+ const deletedAtColumn = this.ctor.deletedAtColumn ?? "deletedAt";
98
+ if (deletedAtColumn) {
99
+ const filter = { [this.primaryKey]: id };
100
+ const updateOperations = {
101
+ $unset: { [deletedAtColumn]: 1 },
102
+ };
103
+ await this.driver.update(this.table, filter, updateOperations);
104
+ model.isNew = false;
105
+ }
106
+ }
107
+ // 10. Emit restored event (unless skipEvents)
108
+ if (!skipEvents) {
109
+ await model.emitEvent("restored");
110
+ }
111
+ return {
112
+ success: true,
113
+ restoredCount: 1,
114
+ strategy,
115
+ restoredRecord: model,
116
+ };
117
+ }
118
+ /**
119
+ * Restore all deleted records for the model's table.
120
+ *
121
+ * @param options - Restorer options
122
+ * @returns Result containing success status, strategy used, and aggregate counts
123
+ */
124
+ async restoreAll(options = {}) {
125
+ const onIdConflict = options.onIdConflict ?? "assignNew";
126
+ const skipEvents = options.skipEvents ?? false;
127
+ // 1. Resolve strategy (options → model static → data source default)
128
+ const strategy = this.resolveStrategy(options.strategy);
129
+ // 2. Validate strategy (cannot restore permanent deletes)
130
+ if (strategy === "permanent") {
131
+ throw new Error(`Cannot restore all ${this.ctor.name} records: permanently deleted records cannot be restored.`);
132
+ }
133
+ // 3. Fetch all records based on strategy
134
+ const recordsToRestore = await this.fetchAllRecordsByStrategy(strategy);
135
+ if (recordsToRestore.length === 0) {
136
+ return {
137
+ success: true,
138
+ restoredCount: 0,
139
+ strategy,
140
+ };
141
+ }
142
+ // 4. Restore each record
143
+ let restoredCount = 0;
144
+ const conflicts = [];
145
+ const restoredRecords = [];
146
+ for (const recordData of recordsToRestore) {
147
+ const id = recordData[this.primaryKey];
148
+ try {
149
+ // Prepare record data (remove metadata fields)
150
+ const restoredData = { ...recordData };
151
+ delete restoredData.deletedAt;
152
+ delete restoredData.originalTable;
153
+ // Check for ID conflict
154
+ const idExists = await this.checkIdExists(id);
155
+ if (idExists) {
156
+ if (onIdConflict === "fail") {
157
+ throw new Error(`Cannot restore ${this.ctor.name} with ${this.primaryKey} ${id}: ID already exists in target table.`);
158
+ }
159
+ // Assign new ID
160
+ const finalData = await this.assignNewId(restoredData);
161
+ conflicts.push({
162
+ id,
163
+ reason: `ID ${id} already exists, assigned new ID ${finalData[this.primaryKey]}`,
164
+ });
165
+ // Create temporary model for events
166
+ const model = new this.ctor(finalData);
167
+ // Emit restoring event
168
+ if (!skipEvents) {
169
+ await model.emitEvent("restoring");
170
+ }
171
+ // Restore based on strategy
172
+ if (strategy === "trash") {
173
+ // Insert with new ID (was moved to trash)
174
+ await this.driver.insert(this.table, finalData);
175
+ model.isNew = false;
176
+ }
177
+ else if (strategy === "soft") {
178
+ // Record still exists, just unset deletedAt
179
+ const deletedAtColumn = this.ctor.deletedAtColumn ?? "deletedAt";
180
+ if (deletedAtColumn) {
181
+ const filter = { [this.primaryKey]: id };
182
+ const updateOperations = {
183
+ $unset: { [deletedAtColumn]: 1 },
184
+ };
185
+ await this.driver.update(this.table, filter, updateOperations);
186
+ model.isNew = false;
187
+ }
188
+ }
189
+ restoredRecords.push(model);
190
+ // Emit restored event
191
+ if (!skipEvents) {
192
+ await model.emitEvent("restored");
193
+ }
194
+ }
195
+ else {
196
+ // No conflict, restore with original ID
197
+ const model = new this.ctor(restoredData);
198
+ // Emit restoring event
199
+ if (!skipEvents) {
200
+ await model.emitEvent("restoring");
201
+ }
202
+ // Restore based on strategy
203
+ if (strategy === "trash") {
204
+ // Insert with original ID (was moved to trash)
205
+ await this.driver.insert(this.table, restoredData);
206
+ model.isNew = false;
207
+ }
208
+ else if (strategy === "soft") {
209
+ // Record still exists, just unset deletedAt
210
+ const deletedAtColumn = this.ctor.deletedAtColumn ?? "deletedAt";
211
+ if (deletedAtColumn) {
212
+ const filter = { [this.primaryKey]: id };
213
+ const updateOperations = {
214
+ $unset: { [deletedAtColumn]: 1 },
215
+ };
216
+ await this.driver.update(this.table, filter, updateOperations);
217
+ model.isNew = false;
218
+ }
219
+ }
220
+ restoredRecords.push(model);
221
+ // Emit restored event
222
+ if (!skipEvents) {
223
+ await model.emitEvent("restored");
224
+ }
225
+ }
226
+ // Remove from trash (only for trash strategy)
227
+ if (strategy === "trash") {
228
+ const trashTable = this.resolveTrashTable();
229
+ const trashFilter = { [this.primaryKey]: id };
230
+ await this.driver.delete(trashTable, trashFilter);
231
+ }
232
+ restoredCount++;
233
+ }
234
+ catch (error) {
235
+ if (onIdConflict === "fail") {
236
+ throw error;
237
+ }
238
+ // Continue with next record if assignNew mode
239
+ conflicts.push({
240
+ id,
241
+ reason: error instanceof Error ? error.message : String(error),
242
+ });
243
+ }
244
+ }
245
+ return {
246
+ success: true,
247
+ restoredCount,
248
+ restoredRecords,
249
+ strategy,
250
+ conflicts: conflicts.length > 0 ? conflicts : undefined,
251
+ };
252
+ }
253
+ /**
254
+ * Resolve the delete strategy.
255
+ *
256
+ * Priority: options → model static → data source default → "permanent"
257
+ *
258
+ * @param strategyOption - Optional strategy override from options
259
+ * @returns The resolved delete strategy
260
+ * @private
261
+ */
262
+ resolveStrategy(strategyOption) {
263
+ return (strategyOption ??
264
+ this.ctor.deleteStrategy ??
265
+ this.dataSource.defaultDeleteStrategy ??
266
+ "permanent");
267
+ }
268
+ /**
269
+ * Fetch a record by ID based on the delete strategy.
270
+ *
271
+ * @param id - The primary key value
272
+ * @param strategy - The delete strategy to use
273
+ * @returns The record data, or null if not found
274
+ * @private
275
+ */
276
+ async fetchRecordByStrategy(id, strategy) {
277
+ if (strategy === "trash") {
278
+ const trashTable = this.resolveTrashTable();
279
+ try {
280
+ const trashQuery = await this.driver
281
+ .queryBuilder(trashTable)
282
+ .where(this.primaryKey, id)
283
+ .first();
284
+ return trashQuery;
285
+ }
286
+ catch {
287
+ return null;
288
+ }
289
+ }
290
+ else if (strategy === "soft") {
291
+ const deletedAtColumn = this.ctor.deletedAtColumn ?? "deletedAt";
292
+ if (!deletedAtColumn) {
293
+ return null;
294
+ }
295
+ try {
296
+ const softDeletedQuery = await this.driver
297
+ .queryBuilder(this.table)
298
+ .where(this.primaryKey, id)
299
+ .whereNotNull(deletedAtColumn)
300
+ .first();
301
+ return softDeletedQuery;
302
+ }
303
+ catch {
304
+ return null;
305
+ }
306
+ }
307
+ return null;
308
+ }
309
+ /**
310
+ * Fetch all records based on the delete strategy.
311
+ *
312
+ * @param strategy - The delete strategy to use
313
+ * @returns Array of record data
314
+ * @private
315
+ */
316
+ async fetchAllRecordsByStrategy(strategy) {
317
+ if (strategy === "trash") {
318
+ const trashTable = this.resolveTrashTable();
319
+ try {
320
+ const trashQuery = this.driver
321
+ .queryBuilder(trashTable)
322
+ .where("originalTable", this.table)
323
+ .get();
324
+ return (await trashQuery);
325
+ }
326
+ catch {
327
+ return [];
328
+ }
329
+ }
330
+ else if (strategy === "soft") {
331
+ const deletedAtColumn = this.ctor.deletedAtColumn ?? "deletedAt";
332
+ if (!deletedAtColumn) {
333
+ return [];
334
+ }
335
+ try {
336
+ const softDeletedQuery = this.driver
337
+ .queryBuilder(this.table)
338
+ .whereNotNull(deletedAtColumn)
339
+ .get();
340
+ return (await softDeletedQuery);
341
+ }
342
+ catch {
343
+ return [];
344
+ }
345
+ }
346
+ return [];
347
+ }
348
+ /**
349
+ * Handle ID conflict by checking if ID exists and assigning new one if needed.
350
+ *
351
+ * @param recordData - The record data to restore
352
+ * @param originalId - The original ID value
353
+ * @param onIdConflict - Conflict resolution strategy
354
+ * @returns Record data with potentially new ID
355
+ * @private
356
+ */
357
+ async handleIdConflict(recordData, originalId, onIdConflict) {
358
+ const idExists = await this.checkIdExists(originalId);
359
+ if (idExists) {
360
+ if (onIdConflict === "fail") {
361
+ throw new Error(`Cannot restore ${this.ctor.name} with ${this.primaryKey} ${originalId}: ID already exists in target table.`);
362
+ }
363
+ // Assign new ID
364
+ return await this.assignNewId(recordData);
365
+ }
366
+ return recordData;
367
+ }
368
+ /**
369
+ * Check if an ID already exists in the target table.
370
+ *
371
+ * @param id - The ID to check
372
+ * @returns True if ID exists, false otherwise
373
+ * @private
374
+ */
375
+ async checkIdExists(id) {
376
+ try {
377
+ const query = this.driver.queryBuilder(this.table).where(this.primaryKey, id).exists();
378
+ return await query;
379
+ }
380
+ catch {
381
+ return false;
382
+ }
383
+ }
384
+ /**
385
+ * Assign a new ID to the record data.
386
+ *
387
+ * For MongoDB: Generates new ObjectId for `_id`, keeps `id` if it exists
388
+ * For SQL: Removes `id` to let database auto-increment
389
+ *
390
+ * @param recordData - The record data
391
+ * @returns Record data with new ID assigned
392
+ * @private
393
+ */
394
+ async assignNewId(recordData) {
395
+ const isMongoDb = this.driver.name === "mongodb";
396
+ const newData = { ...recordData };
397
+ if (isMongoDb) {
398
+ // MongoDB: Generate new ObjectId for _id
399
+ if (this.primaryKey === "_id") {
400
+ // Remove _id to let MongoDB generate new one
401
+ delete newData._id;
402
+ }
403
+ else if (this.primaryKey === "id") {
404
+ // Remove id to let ID generator create new one
405
+ delete newData.id;
406
+ }
407
+ }
408
+ else {
409
+ // SQL: Remove primary key to let database auto-increment
410
+ delete newData[this.primaryKey];
411
+ }
412
+ return newData;
413
+ }
414
+ /**
415
+ * Resolve the trash table/collection name.
416
+ *
417
+ * Priority:
418
+ * 1. Model.trashTable (if set)
419
+ * 2. Data source defaultTrashTable (e.g., "RecycleBin" for MongoDB)
420
+ * 3. Default pattern: `{table}Trash`
421
+ *
422
+ * @returns The trash table/collection name
423
+ * @private
424
+ */
425
+ resolveTrashTable() {
426
+ if (this.ctor.trashTable) {
427
+ return this.ctor.trashTable;
428
+ }
429
+ if (this.dataSource.defaultTrashTable) {
430
+ return this.dataSource.defaultTrashTable;
431
+ }
432
+ return `${this.table}Trash`;
433
+ }
434
+ }export{DatabaseRestorer};//# sourceMappingURL=database-restorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-restorer.js","sources":["../../src/restorer/database-restorer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { DatabaseDirtyTracker } from "./database-dirty-tracker";
2
+ /**
3
+ * A dirty tracker designed for SQL databases where nested objects shouldn't be flattened.
4
+ * Since SQL drivers (like Postgres) replace the entire JSON column when updated,
5
+ * we keep the object intact instead of using dot-notation keys.
6
+ */
7
+ export declare class SqlDatabaseDirtyTracker extends DatabaseDirtyTracker {
8
+ /**
9
+ * Overrides the default flattening behavior to keep the raw data structure.
10
+ */
11
+ protected flattenData(data: Record<string, unknown>): Record<string, unknown>;
12
+ }
13
+ //# sourceMappingURL=sql-database-dirty-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-database-dirty-tracker.d.ts","sourceRoot":"","sources":["../src/sql-database-dirty-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,oBAAoB;IAC/D;;OAEG;cACgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAIvF"}
@@ -0,0 +1,14 @@
1
+ import {DatabaseDirtyTracker}from'./database-dirty-tracker.js';/**
2
+ * A dirty tracker designed for SQL databases where nested objects shouldn't be flattened.
3
+ * Since SQL drivers (like Postgres) replace the entire JSON column when updated,
4
+ * we keep the object intact instead of using dot-notation keys.
5
+ */
6
+ class SqlDatabaseDirtyTracker extends DatabaseDirtyTracker {
7
+ /**
8
+ * Overrides the default flattening behavior to keep the raw data structure.
9
+ */
10
+ flattenData(data) {
11
+ // Return a shallow copy of the data without flattening nested objects
12
+ return { ...data };
13
+ }
14
+ }export{SqlDatabaseDirtyTracker};//# sourceMappingURL=sql-database-dirty-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-database-dirty-tracker.js","sources":["../src/sql-database-dirty-tracker.ts"],"sourcesContent":[null],"names":[],"mappings":"+DAEA;;;;AAIG;AACG,MAAO,uBAAwB,SAAQ,oBAAoB,CAAA;AAC/D;;AAEG;AACgB,IAAA,WAAW,CAAC,IAA6B,EAAA;;AAE1D,QAAA,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;KACpB;AACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Sync system exports.
3
+ *
4
+ * @module cascade-next/sync
5
+ */
6
+ export { modelSync } from "./model-sync";
7
+ export { ModelSyncOperation } from "./model-sync-operation";
8
+ export { MODEL_EVENT_PREFIX, ModelSyncEventType, getModelDeletedEvent, getModelEvent, getModelUpdatedEvent, } from "./model-events";
9
+ export { DEFAULT_MAX_SYNC_DEPTH, SyncContextManager } from "./sync-context";
10
+ export { SyncManager } from "./sync-manager";
11
+ export type { EmbedKey, ModelSyncConfig, ModelSyncContract, ModelSyncOperationContract, SyncConfig, SyncContext, SyncEventPayload, SyncInstruction, SyncInstructionOptions, SyncResult, } from "./types";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,YAAY,EACV,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,UAAU,GACX,MAAM,SAAS,CAAC"}