@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,92 @@
1
+ import {DataSource}from'../data-source/data-source.js';import {dataSourceRegistry}from'../data-source/data-source-registry.js';import {MongoDbDriver}from'../drivers/mongo/mongodb-driver.js';/**
2
+ * Connect to a database and register the data source.
3
+ *
4
+ * This is a high-level utility function that simplifies database connection
5
+ * for small to medium projects. It handles driver instantiation, connection,
6
+ * data source creation, and automatic registration.
7
+ *
8
+ * **Supported Drivers:**
9
+ * - `mongodb` (default) - MongoDB driver with optional auto ID generation
10
+ * - `postgres` - PostgreSQL driver (not yet implemented)
11
+ * - `mysql` - MySQL driver (not yet implemented)
12
+ *
13
+ * **Features:**
14
+ * - Automatic driver instantiation based on driver name
15
+ * - Connection establishment and error handling
16
+ * - DataSource creation and registration
17
+ * - Support for MongoDB-specific features (ID generation, transactions)
18
+ *
19
+ * @param options - Connection configuration options
20
+ * @returns A connected and registered DataSource instance
21
+ * @throws {Error} If connection fails or driver is not implemented
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // MongoDB with new structure
26
+ * const dataSource = await connectToDatabase({
27
+ * driver: "mongodb",
28
+ * database: "myapp",
29
+ * host: "localhost",
30
+ * port: 27017,
31
+ * driverOptions: {
32
+ * autoGenerateId: true,
33
+ * },
34
+ * clientOptions: {
35
+ * minPoolSize: 5,
36
+ * maxPoolSize: 10,
37
+ * },
38
+ * modelOptions: {
39
+ * randomIncrement: true,
40
+ * initialId: 1000,
41
+ * },
42
+ * });
43
+ * ```
44
+ */
45
+ async function connectToDatabase(options) {
46
+ // Default values
47
+ const driverType = options.driver ?? "mongodb";
48
+ const dataSourceName = options.name ?? "default";
49
+ const isDefault = options.isDefault ?? true;
50
+ // Create driver based on type
51
+ let driver;
52
+ switch (driverType) {
53
+ case "mongodb": {
54
+ driver = new MongoDbDriver({
55
+ database: options.database,
56
+ uri: options.uri,
57
+ host: options.host,
58
+ port: options.port,
59
+ username: options.username,
60
+ password: options.password,
61
+ authSource: options.authSource,
62
+ clientOptions: options.clientOptions,
63
+ }, options.driverOptions);
64
+ break;
65
+ }
66
+ case "postgres":
67
+ throw new Error("PostgreSQL driver is not yet implemented. Coming soon!");
68
+ case "mysql":
69
+ throw new Error("MySQL driver is not yet implemented. Coming soon!");
70
+ default:
71
+ throw new Error(`Unknown driver: "${driverType}". Supported drivers: mongodb, postgres, mysql`);
72
+ }
73
+ // Create data source
74
+ const dataSource = new DataSource({
75
+ name: dataSourceName,
76
+ driver,
77
+ isDefault,
78
+ defaultDeleteStrategy: options.defaultDeleteStrategy,
79
+ defaultTrashTable: options.defaultTrashTable,
80
+ modelDefaults: options.modelOptions,
81
+ });
82
+ // Register data source
83
+ dataSourceRegistry.register(dataSource);
84
+ // Connect to the database
85
+ try {
86
+ await driver.connect();
87
+ }
88
+ catch (error) {
89
+ throw new Error(`Failed to connect to ${driverType} database: ${error instanceof Error ? error.message : String(error)}`);
90
+ }
91
+ return dataSource;
92
+ }export{connectToDatabase};//# sourceMappingURL=connect-to-database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-to-database.js","sources":["../../src/utils/connect-to-database.ts"],"sourcesContent":[null],"names":[],"mappings":"8LA0PA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CG;AACI,eAAe,iBAAiB,CACrC,OAA0D,EAAA;;AAG1D,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC;AAC/C,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;AACjD,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;;AAG5C,IAAA,IAAI,MAAsB,CAAC;AAE3B,IAAA,QAAQ,UAAU;QAChB,KAAK,SAAS,EAAE;YACd,MAAM,GAAG,IAAI,aAAa,CACxB;gBACE,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa,EAAE,OAAO,CAAC,aAAoB;AAC5C,aAAA,EACD,OAAO,CAAC,aAAoB,CAC7B,CAAC;YACF,MAAM;AACP,SAAA;AAED,QAAA,KAAK,UAAU;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAE5E,QAAA,KAAK,OAAO;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AAEvE,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CACb,oBAAoB,UAAU,CAAA,8CAAA,CAAgD,CAC/E,CAAC;AACL,KAAA;;AAGD,IAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;AAChC,QAAA,IAAI,EAAE,cAAc;QACpB,MAAM;QACN,SAAS;QACT,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,aAAa,EAAE,OAAO,CAAC,YAAY;AACpC,KAAA,CAAC,CAAC;;AAGH,IAAA,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;;IAGxC,IAAI;AACF,QAAA,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AACxB,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,KAAK,CACb,CAAwB,qBAAA,EAAA,UAAU,cAAc,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CACzG,CAAC;AACH,KAAA;AAED,IAAA,OAAO,UAAU,CAAC;AACpB"}
@@ -0,0 +1,15 @@
1
+ import { type Model } from "../model/model";
2
+ type transformCallbackOptions = {
3
+ model: Model;
4
+ column: string;
5
+ value: any;
6
+ isChanged: boolean;
7
+ isNew: boolean;
8
+ };
9
+ type ModelTransformCallback = (options: transformCallbackOptions) => string;
10
+ /**
11
+ * Transfer value before saving it into the database
12
+ */
13
+ export declare function useModelTransformer(callback: ModelTransformCallback): TransformerCallback;
14
+ export {};
15
+ //# sourceMappingURL=database-writer.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-writer.utils.d.ts","sourceRoot":"","sources":["../../src/utils/database-writer.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,sBAAsB,GAAG,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC;AAE5E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB,uBAWnE"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Transfer value before saving it into the database
3
+ */
4
+ function useModelTransformer(callback) {
5
+ const transformCallback = (data, { context }) => {
6
+ const model = context.rootContext?.model;
7
+ const column = context.key;
8
+ const value = data;
9
+ const isChanged = model.isDirty(column);
10
+ const isNew = model.isNew;
11
+ return callback({ model, column, value, isChanged, isNew });
12
+ };
13
+ return transformCallback;
14
+ }export{useModelTransformer};//# sourceMappingURL=database-writer.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-writer.utils.js","sources":["../../src/utils/database-writer.utils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAaA;;AAEG;AACG,SAAU,mBAAmB,CAAC,QAAgC,EAAA;IAClE,MAAM,iBAAiB,GAAwB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAI;AACnE,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,KAAc,CAAC;AAClD,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B,QAAA,OAAO,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9D,KAAC,CAAC;AAEF,IAAA,OAAO,iBAAiB,CAAC;AAC3B"}
@@ -0,0 +1,100 @@
1
+ import {Model}from'../model/model.js';import {registerModelInRegistry}from'../model/register-model.js';/**
2
+ * Define a model with a clean, concise API.
3
+ *
4
+ * This utility function creates a Model class with the specified configuration,
5
+ * reducing boilerplate and providing a more declarative way to define models.
6
+ *
7
+ * @param options - Model configuration options
8
+ * @returns A Model class with the specified configuration
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { defineModel } from "@warlock.js/cascade";
13
+ * import { v } from "@warlock.js/seal";
14
+ *
15
+ * export const User = defineModel({
16
+ * table: "users",
17
+ * schema: v.object({
18
+ * name: v.string().required().trim(),
19
+ * email: v.string().email().required().lowercase(),
20
+ * password: v.string().required().min(6),
21
+ * role: v.string().default("user"),
22
+ * }),
23
+ * deleteStrategy: "soft",
24
+ * });
25
+ *
26
+ * // Usage
27
+ * const user = await User.create({
28
+ * name: "John Doe",
29
+ * email: "john@example.com",
30
+ * password: "secret123",
31
+ * });
32
+ * ```
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * // With type inference
37
+ * export const Post = defineModel({
38
+ * table: "posts",
39
+ * schema: v.object({
40
+ * title: v.string().required(),
41
+ * content: v.string().required(),
42
+ * authorId: v.number().required(),
43
+ * published: v.boolean().default(false),
44
+ * }),
45
+ * });
46
+ *
47
+ * // TypeScript knows the exact type!
48
+ * const post = await Post.create({
49
+ * title: "Hello World",
50
+ * content: "My first post",
51
+ * authorId: 1,
52
+ * });
53
+ *
54
+ * console.log(post.title); // ✅ Type-safe!
55
+ * ```
56
+ */
57
+ function defineModel(options) {
58
+ class DefinedModel extends Model {
59
+ /**
60
+ * Table/collection name
61
+ */
62
+ static table = options.table;
63
+ /**
64
+ * Validation schema
65
+ */
66
+ static schema = options.schema;
67
+ /**
68
+ * Delete strategy
69
+ */
70
+ static deleteStrategy = options.deleteStrategy || "trash";
71
+ /**
72
+ * Strict mode
73
+ */
74
+ static strictMode = options.strictMode || "strip";
75
+ /**
76
+ * Auto-generate ID
77
+ */
78
+ static autoGenerateId = options.autoGenerateId || false;
79
+ /**
80
+ * Random increment
81
+ */
82
+ static randomIncrement = options.randomIncrement || false;
83
+ /**
84
+ * Initial ID
85
+ */
86
+ static initialId = options.initialId || 1;
87
+ }
88
+ // Apply custom instance properties (getters/setters/methods)
89
+ if (options.properties) {
90
+ Object.defineProperties(DefinedModel.prototype, Object.getOwnPropertyDescriptors(options.properties));
91
+ }
92
+ if (options.name) {
93
+ registerModelInRegistry(options.name, DefinedModel);
94
+ }
95
+ // Apply custom static methods
96
+ if (options.statics) {
97
+ Object.defineProperties(DefinedModel, Object.getOwnPropertyDescriptors(options.statics));
98
+ }
99
+ return DefinedModel;
100
+ }export{defineModel};//# sourceMappingURL=define-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-model.js","sources":["../../src/utils/define-model.ts"],"sourcesContent":[null],"names":[],"mappings":"uGAuGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDG;AACG,SAAU,WAAW,CAMzB,OAIC,EAAA;IAID,MAAM,YAAa,SAAQ,KAAqB,CAAA;AAC9C;;AAEG;AACI,QAAA,OAAO,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAEpC;;AAEG;AACI,QAAA,OAAO,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAEtC;;AAEG;QACI,OAAO,cAAc,GAAmB,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC;AAEjF;;AAEG;QACI,OAAO,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC;AAEzD;;AAEG;QACI,OAAO,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;AAE/D;;AAEG;QACI,OAAO,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;AAEjE;;AAEG;QACI,OAAO,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;;;IAInD,IAAI,OAAO,CAAC,UAAU,EAAE;AACtB,QAAA,MAAM,CAAC,gBAAgB,CACrB,YAAY,CAAC,SAAS,EACtB,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,UAAU,CAAC,CACrD,CAAC;AACH,KAAA;IAED,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,QAAA,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACrD,KAAA;;IAGD,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,QAAA,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1F,KAAA;AAQD,IAAA,OAAO,YAAqC,CAAC;AAC/C"}
@@ -0,0 +1,146 @@
1
+ import type { DataSource } from "../data-source/data-source";
2
+ /**
3
+ * Execute a callback once the driver is connected.
4
+ *
5
+ * If the driver is already connected, the callback is executed immediately.
6
+ * Otherwise, it waits for the "connected" event.
7
+ *
8
+ * **Use Case:**
9
+ * Useful for ensuring database-dependent operations only run after connection
10
+ * is established, especially in small to medium projects with a single data source.
11
+ *
12
+ * @param dataSourceOrNameOrCallback - Data source instance, name, or callback function
13
+ * @param callback - Function to execute once connected (optional if first param is callback)
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // With default data source (just callback)
18
+ * await connectToDatabase({ database: "myapp" });
19
+ *
20
+ * onceConnected((ds) => {
21
+ * console.log("Database is ready!");
22
+ * console.log("Connected to:", ds.name);
23
+ * });
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // With data source name
29
+ * onceConnected("primary", (ds) => {
30
+ * console.log("Primary database is ready!");
31
+ * });
32
+ * ```
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * // With data source instance
37
+ * const dataSource = await connectToDatabase({ database: "myapp" });
38
+ *
39
+ * onceConnected(dataSource, (ds) => {
40
+ * console.log("Database is ready!");
41
+ * });
42
+ * ```
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * // With driver instance
47
+ * const driver = new MongoDbDriver(config);
48
+ * const dataSource = new DataSource({ name: "primary", driver });
49
+ *
50
+ * onceConnected(dataSource, () => {
51
+ * // Start application server
52
+ * app.listen(3000);
53
+ * });
54
+ *
55
+ * // Connect after setting up the callback
56
+ * await driver.connect();
57
+ * ```
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Chaining operations
62
+ * onceConnected(async (ds) => {
63
+ * // Seed database
64
+ * await seedDatabase();
65
+ *
66
+ * // Run migrations
67
+ * await runMigrations();
68
+ *
69
+ * console.log("Database ready!");
70
+ * });
71
+ * ```
72
+ */
73
+ export declare function onceConnected(dataSourceOrNameOrCallback: DataSource | string | ((dataSource: DataSource) => void), callback?: (dataSource: DataSource) => void): void;
74
+ /**
75
+ * Execute a callback once the driver is disconnected.
76
+ *
77
+ * If the driver is already disconnected, the callback is executed immediately.
78
+ * Otherwise, it waits for the "disconnected" event.
79
+ *
80
+ * **Use Case:**
81
+ * Useful for cleanup operations, graceful shutdown, or reconnection logic.
82
+ *
83
+ * @param dataSourceOrNameOrCallback - Data source instance, name, or callback function
84
+ * @param callback - Function to execute once disconnected (optional if first param is callback)
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * // With default data source (just callback)
89
+ * await connectToDatabase({ database: "myapp" });
90
+ *
91
+ * onceDisconnected((ds) => {
92
+ * console.log("Database disconnected!");
93
+ * console.log("Attempting reconnection...");
94
+ * });
95
+ * ```
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * // With data source name
100
+ * onceDisconnected("primary", (ds) => {
101
+ * console.log("Primary database disconnected!");
102
+ * });
103
+ * ```
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * // With data source instance
108
+ * const dataSource = await connectToDatabase({ database: "myapp" });
109
+ *
110
+ * onceDisconnected(dataSource, (ds) => {
111
+ * console.log("Database disconnected!");
112
+ * });
113
+ * ```
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * // Graceful shutdown with default data source
118
+ * process.on("SIGTERM", async () => {
119
+ * console.log("Shutting down...");
120
+ *
121
+ * onceDisconnected(() => {
122
+ * console.log("Database closed, exiting process");
123
+ * process.exit(0);
124
+ * });
125
+ *
126
+ * const dataSource = DataSourceRegistry.getDefault();
127
+ * await dataSource?.driver.disconnect();
128
+ * });
129
+ * ```
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * // Cleanup resources on disconnect
134
+ * onceDisconnected(async (ds) => {
135
+ * // Close file handles
136
+ * await closeFileHandles();
137
+ *
138
+ * // Clear caches
139
+ * clearCaches();
140
+ *
141
+ * console.log("Cleanup complete");
142
+ * });
143
+ * ```
144
+ */
145
+ export declare function onceDisconnected(dataSourceOrNameOrCallback: DataSource | string | ((dataSource: DataSource) => void), callback?: (dataSource: DataSource) => void): void;
146
+ //# sourceMappingURL=once-connected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once-connected.d.ts","sourceRoot":"","sources":["../../src/utils/once-connected.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,wBAAgB,aAAa,CAC3B,0BAA0B,EACtB,UAAU,GACV,MAAM,GACN,CAAC,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,EACtC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,GAC1C,IAAI,CA2DN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,wBAAgB,gBAAgB,CAC9B,0BAA0B,EACtB,UAAU,GACV,MAAM,GACN,CAAC,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,EACtC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,GAC1C,IAAI,CA2DN"}
@@ -0,0 +1,252 @@
1
+ import {dataSourceRegistry}from'../data-source/data-source-registry.js';/**
2
+ * Execute a callback once the driver is connected.
3
+ *
4
+ * If the driver is already connected, the callback is executed immediately.
5
+ * Otherwise, it waits for the "connected" event.
6
+ *
7
+ * **Use Case:**
8
+ * Useful for ensuring database-dependent operations only run after connection
9
+ * is established, especially in small to medium projects with a single data source.
10
+ *
11
+ * @param dataSourceOrNameOrCallback - Data source instance, name, or callback function
12
+ * @param callback - Function to execute once connected (optional if first param is callback)
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // With default data source (just callback)
17
+ * await connectToDatabase({ database: "myapp" });
18
+ *
19
+ * onceConnected((ds) => {
20
+ * console.log("Database is ready!");
21
+ * console.log("Connected to:", ds.name);
22
+ * });
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // With data source name
28
+ * onceConnected("primary", (ds) => {
29
+ * console.log("Primary database is ready!");
30
+ * });
31
+ * ```
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * // With data source instance
36
+ * const dataSource = await connectToDatabase({ database: "myapp" });
37
+ *
38
+ * onceConnected(dataSource, (ds) => {
39
+ * console.log("Database is ready!");
40
+ * });
41
+ * ```
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // With driver instance
46
+ * const driver = new MongoDbDriver(config);
47
+ * const dataSource = new DataSource({ name: "primary", driver });
48
+ *
49
+ * onceConnected(dataSource, () => {
50
+ * // Start application server
51
+ * app.listen(3000);
52
+ * });
53
+ *
54
+ * // Connect after setting up the callback
55
+ * await driver.connect();
56
+ * ```
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // Chaining operations
61
+ * onceConnected(async (ds) => {
62
+ * // Seed database
63
+ * await seedDatabase();
64
+ *
65
+ * // Run migrations
66
+ * await runMigrations();
67
+ *
68
+ * console.log("Database ready!");
69
+ * });
70
+ * ```
71
+ */
72
+ function onceConnected(dataSourceOrNameOrCallback, callback) {
73
+ // Determine if first parameter is a callback
74
+ let targetDataSource;
75
+ let actualCallback;
76
+ if (typeof dataSourceOrNameOrCallback === "function") {
77
+ // First param is callback, use default data source
78
+ actualCallback = dataSourceOrNameOrCallback;
79
+ targetDataSource = "default";
80
+ }
81
+ else {
82
+ // First param is data source name or instance
83
+ if (!callback) {
84
+ throw new Error("Callback is required when providing a data source name or instance.");
85
+ }
86
+ actualCallback = callback;
87
+ targetDataSource = dataSourceOrNameOrCallback;
88
+ }
89
+ // Try to get the data source if it's a string
90
+ let resolvedDataSource;
91
+ if (typeof targetDataSource === "string") {
92
+ try {
93
+ resolvedDataSource =
94
+ targetDataSource === "default"
95
+ ? dataSourceRegistry.get()
96
+ : dataSourceRegistry.get(targetDataSource);
97
+ }
98
+ catch {
99
+ // Data source not registered yet, will wait for event
100
+ }
101
+ }
102
+ else {
103
+ resolvedDataSource = targetDataSource;
104
+ }
105
+ // If data source is resolved and already connected, fire immediately
106
+ if (resolvedDataSource && resolvedDataSource.driver.isConnected) {
107
+ actualCallback(resolvedDataSource);
108
+ return;
109
+ }
110
+ // Otherwise, wait for the connected event
111
+ const listener = (ds) => {
112
+ const matches = typeof targetDataSource === "string"
113
+ ? targetDataSource === "default"
114
+ ? ds.isDefault
115
+ : ds.name === targetDataSource
116
+ : ds === targetDataSource;
117
+ if (matches) {
118
+ actualCallback(ds);
119
+ }
120
+ else {
121
+ // Not the one we're looking for, keep listening
122
+ dataSourceRegistry.once("connected", listener);
123
+ }
124
+ };
125
+ dataSourceRegistry.once("connected", listener);
126
+ }
127
+ /**
128
+ * Execute a callback once the driver is disconnected.
129
+ *
130
+ * If the driver is already disconnected, the callback is executed immediately.
131
+ * Otherwise, it waits for the "disconnected" event.
132
+ *
133
+ * **Use Case:**
134
+ * Useful for cleanup operations, graceful shutdown, or reconnection logic.
135
+ *
136
+ * @param dataSourceOrNameOrCallback - Data source instance, name, or callback function
137
+ * @param callback - Function to execute once disconnected (optional if first param is callback)
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * // With default data source (just callback)
142
+ * await connectToDatabase({ database: "myapp" });
143
+ *
144
+ * onceDisconnected((ds) => {
145
+ * console.log("Database disconnected!");
146
+ * console.log("Attempting reconnection...");
147
+ * });
148
+ * ```
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * // With data source name
153
+ * onceDisconnected("primary", (ds) => {
154
+ * console.log("Primary database disconnected!");
155
+ * });
156
+ * ```
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * // With data source instance
161
+ * const dataSource = await connectToDatabase({ database: "myapp" });
162
+ *
163
+ * onceDisconnected(dataSource, (ds) => {
164
+ * console.log("Database disconnected!");
165
+ * });
166
+ * ```
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * // Graceful shutdown with default data source
171
+ * process.on("SIGTERM", async () => {
172
+ * console.log("Shutting down...");
173
+ *
174
+ * onceDisconnected(() => {
175
+ * console.log("Database closed, exiting process");
176
+ * process.exit(0);
177
+ * });
178
+ *
179
+ * const dataSource = DataSourceRegistry.getDefault();
180
+ * await dataSource?.driver.disconnect();
181
+ * });
182
+ * ```
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * // Cleanup resources on disconnect
187
+ * onceDisconnected(async (ds) => {
188
+ * // Close file handles
189
+ * await closeFileHandles();
190
+ *
191
+ * // Clear caches
192
+ * clearCaches();
193
+ *
194
+ * console.log("Cleanup complete");
195
+ * });
196
+ * ```
197
+ */
198
+ function onceDisconnected(dataSourceOrNameOrCallback, callback) {
199
+ // Determine if first parameter is a callback
200
+ let targetDataSource;
201
+ let actualCallback;
202
+ if (typeof dataSourceOrNameOrCallback === "function") {
203
+ // First param is callback, use default data source
204
+ actualCallback = dataSourceOrNameOrCallback;
205
+ targetDataSource = "default";
206
+ }
207
+ else {
208
+ // First param is data source name or instance
209
+ if (!callback) {
210
+ throw new Error("Callback is required when providing a data source name or instance.");
211
+ }
212
+ actualCallback = callback;
213
+ targetDataSource = dataSourceOrNameOrCallback;
214
+ }
215
+ // Try to get the data source if it's a string
216
+ let resolvedDataSource;
217
+ if (typeof targetDataSource === "string") {
218
+ try {
219
+ resolvedDataSource =
220
+ targetDataSource === "default"
221
+ ? dataSourceRegistry.get()
222
+ : dataSourceRegistry.get(targetDataSource);
223
+ }
224
+ catch {
225
+ // Data source not registered yet, will wait for event
226
+ }
227
+ }
228
+ else {
229
+ resolvedDataSource = targetDataSource;
230
+ }
231
+ // If data source is resolved and already disconnected, fire immediately
232
+ if (resolvedDataSource && !resolvedDataSource.driver.isConnected) {
233
+ actualCallback(resolvedDataSource);
234
+ return;
235
+ }
236
+ // Otherwise, wait for the disconnected event
237
+ const listener = (ds) => {
238
+ const matches = typeof targetDataSource === "string"
239
+ ? targetDataSource === "default"
240
+ ? ds.isDefault
241
+ : ds.name === targetDataSource
242
+ : ds === targetDataSource;
243
+ if (matches) {
244
+ actualCallback(ds);
245
+ }
246
+ else {
247
+ // Not the one we're looking for, keep listening
248
+ dataSourceRegistry.once("disconnected", listener);
249
+ }
250
+ };
251
+ dataSourceRegistry.once("disconnected", listener);
252
+ }export{onceConnected,onceDisconnected};//# sourceMappingURL=once-connected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once-connected.js","sources":["../../src/utils/once-connected.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=database-seal-plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-seal-plugins.d.ts","sourceRoot":"","sources":["../../src/validation/database-seal-plugins.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import {registerPlugin}from'@warlock.js/seal';import {embedValidator}from'./plugins/embed-validator-plugin.js';// We need to introduce new validators
2
+ // 1. v.embed(model: typeof Model, options: EmbedOptions)
3
+ // 2. v.embedMany(model: typeof Model, options: EmbedManyOptions)
4
+ registerPlugin(embedValidator);//# sourceMappingURL=database-seal-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-seal-plugins.js","sources":["../../src/validation/database-seal-plugins.ts"],"sourcesContent":[null],"names":[],"mappings":"+GAGA;AACA;AACA;AAEA,cAAc,CAAC,cAAc,CAAC"}