@warlock.js/cascade 4.0.174 → 4.1.2

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 (1050) hide show
  1. package/README.md +6 -5
  2. package/bin/cascadejs +3 -0
  3. package/esm/cli/commands/migrate-export-sql.mjs +48 -0
  4. package/esm/cli/commands/migrate-export-sql.mjs.map +1 -0
  5. package/esm/cli/commands/migrate-list.mjs +26 -0
  6. package/esm/cli/commands/migrate-list.mjs.map +1 -0
  7. package/esm/cli/commands/migrate-rollback.mjs +50 -0
  8. package/esm/cli/commands/migrate-rollback.mjs.map +1 -0
  9. package/esm/cli/commands/migrate.mjs +65 -0
  10. package/esm/cli/commands/migrate.mjs.map +1 -0
  11. package/esm/cli/connection-from-env.mjs +181 -0
  12. package/esm/cli/connection-from-env.mjs.map +1 -0
  13. package/esm/cli/index.mjs +31 -0
  14. package/esm/cli/index.mjs.map +1 -0
  15. package/esm/cli/load-migrations.mjs +78 -0
  16. package/esm/cli/load-migrations.mjs.map +1 -0
  17. package/esm/cli/printers.mjs +57 -0
  18. package/esm/cli/printers.mjs.map +1 -0
  19. package/esm/cli/setup-logger.mjs +30 -0
  20. package/esm/cli/setup-logger.mjs.map +1 -0
  21. package/esm/cli/with-cli-connection.mjs +39 -0
  22. package/esm/cli/with-cli-connection.mjs.map +1 -0
  23. package/esm/cli.d.mts +1 -0
  24. package/esm/cli.mjs +26 -0
  25. package/esm/cli.mjs.map +1 -0
  26. package/esm/context/database-data-source-context.d.mts +32 -0
  27. package/esm/context/database-data-source-context.d.mts.map +1 -0
  28. package/esm/context/database-data-source-context.mjs +35 -0
  29. package/esm/context/database-data-source-context.mjs.map +1 -0
  30. package/esm/context/database-transaction-context.d.mts +38 -0
  31. package/esm/context/database-transaction-context.d.mts.map +1 -0
  32. package/esm/context/database-transaction-context.mjs +47 -0
  33. package/esm/context/database-transaction-context.mjs.map +1 -0
  34. package/esm/contracts/database-driver.contract.d.mts +443 -0
  35. package/esm/contracts/database-driver.contract.d.mts.map +1 -0
  36. package/esm/contracts/database-id-generator.contract.d.mts +109 -0
  37. package/esm/contracts/database-id-generator.contract.d.mts.map +1 -0
  38. package/esm/contracts/database-remover.contract.d.mts +108 -0
  39. package/esm/contracts/database-remover.contract.d.mts.map +1 -0
  40. package/esm/contracts/database-restorer.contract.d.mts +145 -0
  41. package/esm/contracts/database-restorer.contract.d.mts.map +1 -0
  42. package/esm/contracts/database-writer.contract.d.mts +123 -0
  43. package/esm/contracts/database-writer.contract.d.mts.map +1 -0
  44. package/esm/contracts/driver-blueprint.contract.d.mts +52 -0
  45. package/esm/contracts/driver-blueprint.contract.d.mts.map +1 -0
  46. package/esm/contracts/index.d.mts +9 -0
  47. package/esm/contracts/migration-driver.contract.d.mts +476 -0
  48. package/esm/contracts/migration-driver.contract.d.mts.map +1 -0
  49. package/esm/contracts/query-builder.contract.d.mts +1663 -0
  50. package/esm/contracts/query-builder.contract.d.mts.map +1 -0
  51. package/esm/contracts/sync-adapter.contract.d.mts +49 -0
  52. package/esm/contracts/sync-adapter.contract.d.mts.map +1 -0
  53. package/esm/data-source/data-source-registry.d.mts +111 -0
  54. package/esm/data-source/data-source-registry.d.mts.map +1 -0
  55. package/esm/data-source/data-source-registry.mjs +142 -0
  56. package/esm/data-source/data-source-registry.mjs.map +1 -0
  57. package/esm/data-source/data-source.d.mts +160 -0
  58. package/esm/data-source/data-source.d.mts.map +1 -0
  59. package/esm/data-source/data-source.mjs +87 -0
  60. package/esm/data-source/data-source.mjs.map +1 -0
  61. package/esm/database-dirty-tracker.d.mts +254 -0
  62. package/esm/database-dirty-tracker.d.mts.map +1 -0
  63. package/esm/database-dirty-tracker.mjs +356 -0
  64. package/esm/database-dirty-tracker.mjs.map +1 -0
  65. package/esm/drivers/mongodb/mongodb-blueprint.mjs +54 -0
  66. package/esm/drivers/mongodb/mongodb-blueprint.mjs.map +1 -0
  67. package/esm/drivers/mongodb/mongodb-driver.d.mts +334 -0
  68. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -0
  69. package/esm/drivers/mongodb/mongodb-driver.mjs +716 -0
  70. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -0
  71. package/esm/drivers/mongodb/mongodb-id-generator.d.mts +120 -0
  72. package/esm/drivers/mongodb/mongodb-id-generator.d.mts.map +1 -0
  73. package/esm/drivers/mongodb/mongodb-id-generator.mjs +141 -0
  74. package/esm/drivers/mongodb/mongodb-id-generator.mjs.map +1 -0
  75. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts +322 -0
  76. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts.map +1 -0
  77. package/esm/drivers/mongodb/mongodb-migration-driver.mjs +531 -0
  78. package/esm/drivers/mongodb/mongodb-migration-driver.mjs.map +1 -0
  79. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +1117 -0
  80. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -0
  81. package/esm/drivers/mongodb/mongodb-query-builder.mjs +1828 -0
  82. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -0
  83. package/esm/drivers/mongodb/mongodb-query-operations.d.mts +230 -0
  84. package/esm/drivers/mongodb/mongodb-query-operations.d.mts.map +1 -0
  85. package/esm/drivers/mongodb/mongodb-query-operations.mjs +275 -0
  86. package/esm/drivers/mongodb/mongodb-query-operations.mjs.map +1 -0
  87. package/esm/drivers/mongodb/mongodb-query-parser.d.mts +263 -0
  88. package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -0
  89. package/esm/drivers/mongodb/mongodb-query-parser.mjs +965 -0
  90. package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -0
  91. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts +78 -0
  92. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts.map +1 -0
  93. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs +118 -0
  94. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs.map +1 -0
  95. package/esm/drivers/mongodb/types.d.mts +43 -0
  96. package/esm/drivers/mongodb/types.d.mts.map +1 -0
  97. package/esm/drivers/postgres/index.d.mts +8 -0
  98. package/esm/drivers/postgres/index.mjs +9 -0
  99. package/esm/drivers/postgres/postgres-blueprint.d.mts +60 -0
  100. package/esm/drivers/postgres/postgres-blueprint.d.mts.map +1 -0
  101. package/esm/drivers/postgres/postgres-blueprint.mjs +105 -0
  102. package/esm/drivers/postgres/postgres-blueprint.mjs.map +1 -0
  103. package/esm/drivers/postgres/postgres-dialect.d.mts +144 -0
  104. package/esm/drivers/postgres/postgres-dialect.d.mts.map +1 -0
  105. package/esm/drivers/postgres/postgres-dialect.mjs +227 -0
  106. package/esm/drivers/postgres/postgres-dialect.mjs.map +1 -0
  107. package/esm/drivers/postgres/postgres-driver.d.mts +424 -0
  108. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -0
  109. package/esm/drivers/postgres/postgres-driver.mjs +845 -0
  110. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -0
  111. package/esm/drivers/postgres/postgres-migration-driver.d.mts +393 -0
  112. package/esm/drivers/postgres/postgres-migration-driver.d.mts.map +1 -0
  113. package/esm/drivers/postgres/postgres-migration-driver.mjs +760 -0
  114. package/esm/drivers/postgres/postgres-migration-driver.mjs.map +1 -0
  115. package/esm/drivers/postgres/postgres-query-builder.d.mts +399 -0
  116. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -0
  117. package/esm/drivers/postgres/postgres-query-builder.mjs +1105 -0
  118. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -0
  119. package/esm/drivers/postgres/postgres-query-parser.d.mts +351 -0
  120. package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -0
  121. package/esm/drivers/postgres/postgres-query-parser.mjs +796 -0
  122. package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -0
  123. package/esm/drivers/postgres/postgres-sql-serializer.mjs +260 -0
  124. package/esm/drivers/postgres/postgres-sql-serializer.mjs.map +1 -0
  125. package/esm/drivers/postgres/postgres-sync-adapter.d.mts +79 -0
  126. package/esm/drivers/postgres/postgres-sync-adapter.d.mts.map +1 -0
  127. package/esm/drivers/postgres/postgres-sync-adapter.mjs +162 -0
  128. package/esm/drivers/postgres/postgres-sync-adapter.mjs.map +1 -0
  129. package/esm/drivers/postgres/types.d.mts +105 -0
  130. package/esm/drivers/postgres/types.d.mts.map +1 -0
  131. package/esm/drivers/sql/sql-dialect.contract.d.mts +221 -0
  132. package/esm/drivers/sql/sql-dialect.contract.d.mts.map +1 -0
  133. package/esm/drivers/sql/sql-types.d.mts +150 -0
  134. package/esm/drivers/sql/sql-types.d.mts.map +1 -0
  135. package/esm/errors/missing-data-source.error.d.mts +25 -0
  136. package/esm/errors/missing-data-source.error.d.mts.map +1 -0
  137. package/esm/errors/missing-data-source.error.mjs +31 -0
  138. package/esm/errors/missing-data-source.error.mjs.map +1 -0
  139. package/esm/errors/transaction-rollback.error.d.mts +23 -0
  140. package/esm/errors/transaction-rollback.error.d.mts.map +1 -0
  141. package/esm/errors/transaction-rollback.error.mjs +29 -0
  142. package/esm/errors/transaction-rollback.error.mjs.map +1 -0
  143. package/esm/events/model-events.d.mts +234 -0
  144. package/esm/events/model-events.d.mts.map +1 -0
  145. package/esm/events/model-events.mjs +254 -0
  146. package/esm/events/model-events.mjs.map +1 -0
  147. package/esm/expressions/aggregate-expressions.d.mts +224 -0
  148. package/esm/expressions/aggregate-expressions.d.mts.map +1 -0
  149. package/esm/expressions/aggregate-expressions.mjs +232 -0
  150. package/esm/expressions/aggregate-expressions.mjs.map +1 -0
  151. package/esm/index.d.mts +67 -0
  152. package/esm/index.mjs +53 -0
  153. package/esm/migration/column-builder.d.mts +420 -0
  154. package/esm/migration/column-builder.d.mts.map +1 -0
  155. package/esm/migration/column-builder.mjs +532 -0
  156. package/esm/migration/column-builder.mjs.map +1 -0
  157. package/esm/migration/column-helpers.d.mts +280 -0
  158. package/esm/migration/column-helpers.d.mts.map +1 -0
  159. package/esm/migration/column-helpers.mjs +376 -0
  160. package/esm/migration/column-helpers.mjs.map +1 -0
  161. package/esm/migration/foreign-key-builder.d.mts +106 -0
  162. package/esm/migration/foreign-key-builder.d.mts.map +1 -0
  163. package/esm/migration/foreign-key-builder.mjs +126 -0
  164. package/esm/migration/foreign-key-builder.mjs.map +1 -0
  165. package/esm/migration/index.d.mts +6 -0
  166. package/esm/migration/index.mjs +7 -0
  167. package/esm/migration/migration-runner.d.mts +279 -0
  168. package/esm/migration/migration-runner.d.mts.map +1 -0
  169. package/esm/migration/migration-runner.mjs +662 -0
  170. package/esm/migration/migration-runner.mjs.map +1 -0
  171. package/esm/migration/migration.d.mts +2035 -0
  172. package/esm/migration/migration.d.mts.map +1 -0
  173. package/esm/migration/migration.mjs +2083 -0
  174. package/esm/migration/migration.mjs.map +1 -0
  175. package/esm/migration/sql-grammar.mjs +115 -0
  176. package/esm/migration/sql-grammar.mjs.map +1 -0
  177. package/esm/migration/sql-serializer.d.mts +26 -0
  178. package/esm/migration/sql-serializer.d.mts.map +1 -0
  179. package/esm/migration/sql-serializer.mjs +26 -0
  180. package/esm/migration/sql-serializer.mjs.map +1 -0
  181. package/esm/migration/types.d.mts +136 -0
  182. package/esm/migration/types.d.mts.map +1 -0
  183. package/esm/model/methods/accessor-methods.mjs +54 -0
  184. package/esm/model/methods/accessor-methods.mjs.map +1 -0
  185. package/esm/model/methods/delete-methods.mjs +16 -0
  186. package/esm/model/methods/delete-methods.mjs.map +1 -0
  187. package/esm/model/methods/dirty-methods.mjs +20 -0
  188. package/esm/model/methods/dirty-methods.mjs.map +1 -0
  189. package/esm/model/methods/hydration-methods.mjs +51 -0
  190. package/esm/model/methods/hydration-methods.mjs.map +1 -0
  191. package/esm/model/methods/instance-event-methods.mjs +22 -0
  192. package/esm/model/methods/instance-event-methods.mjs.map +1 -0
  193. package/esm/model/methods/meta-methods.mjs +36 -0
  194. package/esm/model/methods/meta-methods.mjs.map +1 -0
  195. package/esm/model/methods/pivot-methods.mjs +48 -0
  196. package/esm/model/methods/pivot-methods.mjs.map +1 -0
  197. package/esm/model/methods/query-methods.mjs +121 -0
  198. package/esm/model/methods/query-methods.mjs.map +1 -0
  199. package/esm/model/methods/restore-methods.mjs +16 -0
  200. package/esm/model/methods/restore-methods.mjs.map +1 -0
  201. package/esm/model/methods/scope-methods.mjs +20 -0
  202. package/esm/model/methods/scope-methods.mjs.map +1 -0
  203. package/esm/model/methods/serialization-methods.mjs +20 -0
  204. package/esm/model/methods/serialization-methods.mjs.map +1 -0
  205. package/esm/model/methods/static-event-methods.mjs +37 -0
  206. package/esm/model/methods/static-event-methods.mjs.map +1 -0
  207. package/esm/model/methods/write-methods.mjs +69 -0
  208. package/esm/model/methods/write-methods.mjs.map +1 -0
  209. package/esm/model/model.d.mts +1778 -0
  210. package/esm/model/model.d.mts.map +1 -0
  211. package/esm/model/model.mjs +1762 -0
  212. package/esm/model/model.mjs.map +1 -0
  213. package/esm/model/model.types.d.mts +47 -0
  214. package/esm/model/model.types.d.mts.map +1 -0
  215. package/esm/model/register-model.d.mts +140 -0
  216. package/esm/model/register-model.d.mts.map +1 -0
  217. package/esm/model/register-model.mjs +175 -0
  218. package/esm/model/register-model.mjs.map +1 -0
  219. package/esm/model/relation-decorators.d.mts +88 -0
  220. package/esm/model/relation-decorators.d.mts.map +1 -0
  221. package/esm/model/relation-decorators.mjs +191 -0
  222. package/esm/model/relation-decorators.mjs.map +1 -0
  223. package/esm/operations/database.d.mts +46 -0
  224. package/esm/operations/database.d.mts.map +1 -0
  225. package/esm/operations/database.mjs +40 -0
  226. package/esm/operations/database.mjs.map +1 -0
  227. package/esm/operations/index.d.mts +2 -0
  228. package/esm/operations/index.mjs +4 -0
  229. package/esm/operations/migrations.d.mts +71 -0
  230. package/esm/operations/migrations.d.mts.map +1 -0
  231. package/esm/operations/migrations.mjs +70 -0
  232. package/esm/operations/migrations.mjs.map +1 -0
  233. package/esm/query-builder/query-builder.d.mts +564 -0
  234. package/esm/query-builder/query-builder.d.mts.map +1 -0
  235. package/esm/query-builder/query-builder.mjs +1097 -0
  236. package/esm/query-builder/query-builder.mjs.map +1 -0
  237. package/esm/relations/index.d.mts +4 -0
  238. package/esm/relations/index.mjs +5 -0
  239. package/esm/relations/key-conventions.mjs +119 -0
  240. package/esm/relations/key-conventions.mjs.map +1 -0
  241. package/esm/relations/pivot-operations.d.mts +155 -0
  242. package/esm/relations/pivot-operations.d.mts.map +1 -0
  243. package/esm/relations/pivot-operations.mjs +232 -0
  244. package/esm/relations/pivot-operations.mjs.map +1 -0
  245. package/esm/relations/relation-hydrator.d.mts +55 -0
  246. package/esm/relations/relation-hydrator.d.mts.map +1 -0
  247. package/esm/relations/relation-hydrator.mjs +52 -0
  248. package/esm/relations/relation-hydrator.mjs.map +1 -0
  249. package/esm/relations/relation-loader.d.mts +190 -0
  250. package/esm/relations/relation-loader.d.mts.map +1 -0
  251. package/esm/relations/relation-loader.mjs +416 -0
  252. package/esm/relations/relation-loader.mjs.map +1 -0
  253. package/esm/relations/types.d.mts +317 -0
  254. package/esm/relations/types.d.mts.map +1 -0
  255. package/esm/remover/database-remover.d.mts +104 -0
  256. package/esm/remover/database-remover.d.mts.map +1 -0
  257. package/esm/remover/database-remover.mjs +174 -0
  258. package/esm/remover/database-remover.mjs.map +1 -0
  259. package/esm/restorer/database-restorer.d.mts +135 -0
  260. package/esm/restorer/database-restorer.d.mts.map +1 -0
  261. package/esm/restorer/database-restorer.mjs +316 -0
  262. package/esm/restorer/database-restorer.mjs.map +1 -0
  263. package/esm/sql-database-dirty-tracker.d.mts +17 -0
  264. package/esm/sql-database-dirty-tracker.d.mts.map +1 -0
  265. package/esm/sql-database-dirty-tracker.mjs +20 -0
  266. package/esm/sql-database-dirty-tracker.mjs.map +1 -0
  267. package/esm/sync/model-events.mjs +46 -0
  268. package/esm/sync/model-events.mjs.map +1 -0
  269. package/esm/sync/model-sync-operation.d.mts +159 -0
  270. package/esm/sync/model-sync-operation.d.mts.map +1 -0
  271. package/esm/sync/model-sync-operation.mjs +257 -0
  272. package/esm/sync/model-sync-operation.mjs.map +1 -0
  273. package/esm/sync/model-sync.d.mts +126 -0
  274. package/esm/sync/model-sync.d.mts.map +1 -0
  275. package/esm/sync/model-sync.mjs +157 -0
  276. package/esm/sync/model-sync.mjs.map +1 -0
  277. package/esm/sync/sync-context.d.mts +69 -0
  278. package/esm/sync/sync-context.d.mts.map +1 -0
  279. package/esm/sync/sync-context.mjs +95 -0
  280. package/esm/sync/sync-context.mjs.map +1 -0
  281. package/esm/sync/sync-manager.d.mts +213 -0
  282. package/esm/sync/sync-manager.d.mts.map +1 -0
  283. package/esm/sync/sync-manager.mjs +597 -0
  284. package/esm/sync/sync-manager.mjs.map +1 -0
  285. package/esm/sync/types.d.mts +215 -0
  286. package/esm/sync/types.d.mts.map +1 -0
  287. package/esm/types.d.mts +423 -0
  288. package/esm/types.d.mts.map +1 -0
  289. package/esm/utils/connect-to-database.d.mts +328 -0
  290. package/esm/utils/connect-to-database.d.mts.map +1 -0
  291. package/esm/utils/connect-to-database.mjs +130 -0
  292. package/esm/utils/connect-to-database.mjs.map +1 -0
  293. package/esm/utils/database-writer.utils.d.mts +18 -0
  294. package/esm/utils/database-writer.utils.d.mts.map +1 -0
  295. package/esm/utils/database-writer.utils.mjs +25 -0
  296. package/esm/utils/database-writer.utils.mjs.map +1 -0
  297. package/esm/utils/define-model.d.mts +185 -0
  298. package/esm/utils/define-model.d.mts.map +1 -0
  299. package/esm/utils/define-model.mjs +105 -0
  300. package/esm/utils/define-model.mjs.map +1 -0
  301. package/esm/utils/is-valid-date-value.mjs +22 -0
  302. package/esm/utils/is-valid-date-value.mjs.map +1 -0
  303. package/esm/utils/once-connected.d.mts +150 -0
  304. package/esm/utils/once-connected.d.mts.map +1 -0
  305. package/esm/utils/once-connected.mjs +203 -0
  306. package/esm/utils/once-connected.mjs.map +1 -0
  307. package/esm/validation/database-seal-plugins.d.mts +1 -0
  308. package/esm/validation/database-seal-plugins.mjs +11 -0
  309. package/esm/validation/database-seal-plugins.mjs.map +1 -0
  310. package/esm/validation/database-writer-validation-error.d.mts +101 -0
  311. package/esm/validation/database-writer-validation-error.d.mts.map +1 -0
  312. package/esm/validation/database-writer-validation-error.mjs +153 -0
  313. package/esm/validation/database-writer-validation-error.mjs.map +1 -0
  314. package/esm/validation/index.d.mts +2 -0
  315. package/esm/validation/index.mjs +4 -0
  316. package/esm/validation/mutators/embed-mutator.mjs +26 -0
  317. package/esm/validation/mutators/embed-mutator.mjs.map +1 -0
  318. package/esm/validation/plugins/database-rules-plugin.d.mts +28 -0
  319. package/esm/validation/plugins/database-rules-plugin.d.mts.map +1 -0
  320. package/esm/validation/plugins/database-rules-plugin.mjs +43 -0
  321. package/esm/validation/plugins/database-rules-plugin.mjs.map +1 -0
  322. package/esm/validation/plugins/embed-validator-plugin.d.mts +17 -0
  323. package/esm/validation/plugins/embed-validator-plugin.d.mts.map +1 -0
  324. package/esm/validation/plugins/embed-validator-plugin.mjs +20 -0
  325. package/esm/validation/plugins/embed-validator-plugin.mjs.map +1 -0
  326. package/esm/validation/rules/database-model-rule.mjs +32 -0
  327. package/esm/validation/rules/database-model-rule.mjs.map +1 -0
  328. package/esm/validation/rules/exists-rule.mjs +29 -0
  329. package/esm/validation/rules/exists-rule.mjs.map +1 -0
  330. package/esm/validation/rules/unique-rule.mjs +43 -0
  331. package/esm/validation/rules/unique-rule.mjs.map +1 -0
  332. package/esm/validation/transformers/embed-model-transformer.mjs +17 -0
  333. package/esm/validation/transformers/embed-model-transformer.mjs.map +1 -0
  334. package/esm/validation/types.d.mts +43 -0
  335. package/esm/validation/types.d.mts.map +1 -0
  336. package/esm/validation/validators/embed-validator.d.mts +25 -0
  337. package/esm/validation/validators/embed-validator.d.mts.map +1 -0
  338. package/esm/validation/validators/embed-validator.mjs +42 -0
  339. package/esm/validation/validators/embed-validator.mjs.map +1 -0
  340. package/esm/writer/database-writer.d.mts +178 -0
  341. package/esm/writer/database-writer.d.mts.map +1 -0
  342. package/esm/writer/database-writer.mjs +317 -0
  343. package/esm/writer/database-writer.mjs.map +1 -0
  344. package/llms-full.txt +2027 -0
  345. package/llms.txt +23 -0
  346. package/package.json +60 -51
  347. package/skills/README.md +65 -0
  348. package/skills/aggregate-data/SKILL.md +102 -0
  349. package/skills/cascade-basics/SKILL.md +93 -0
  350. package/skills/configure-delete-strategy/SKILL.md +126 -0
  351. package/skills/define-model/SKILL.md +170 -0
  352. package/skills/define-relations/SKILL.md +171 -0
  353. package/skills/manage-data-sources/SKILL.md +140 -0
  354. package/skills/manage-transactions/SKILL.md +118 -0
  355. package/skills/paginate-results/SKILL.md +122 -0
  356. package/skills/perform-atomic-ops/SKILL.md +98 -0
  357. package/skills/query-data/SKILL.md +168 -0
  358. package/skills/run-cascade-cli/SKILL.md +125 -0
  359. package/skills/search-by-vector/SKILL.md +127 -0
  360. package/skills/subscribe-to-model-events/SKILL.md +148 -0
  361. package/skills/track-changes/SKILL.md +109 -0
  362. package/skills/write-migration/SKILL.md +144 -0
  363. package/cjs/context/database-data-source-context.d.ts +0 -29
  364. package/cjs/context/database-data-source-context.d.ts.map +0 -1
  365. package/cjs/context/database-data-source-context.js +0 -28
  366. package/cjs/context/database-data-source-context.js.map +0 -1
  367. package/cjs/context/database-transaction-context.d.ts +0 -35
  368. package/cjs/context/database-transaction-context.d.ts.map +0 -1
  369. package/cjs/context/database-transaction-context.js +0 -40
  370. package/cjs/context/database-transaction-context.js.map +0 -1
  371. package/cjs/contracts/database-driver.contract.d.ts +0 -450
  372. package/cjs/contracts/database-driver.contract.d.ts.map +0 -1
  373. package/cjs/contracts/database-id-generator.contract.d.ts +0 -109
  374. package/cjs/contracts/database-id-generator.contract.d.ts.map +0 -1
  375. package/cjs/contracts/database-remover.contract.d.ts +0 -104
  376. package/cjs/contracts/database-remover.contract.d.ts.map +0 -1
  377. package/cjs/contracts/database-restorer.contract.d.ts +0 -143
  378. package/cjs/contracts/database-restorer.contract.d.ts.map +0 -1
  379. package/cjs/contracts/database-writer.contract.d.ts +0 -119
  380. package/cjs/contracts/database-writer.contract.d.ts.map +0 -1
  381. package/cjs/contracts/driver-blueprint.contract.d.ts +0 -49
  382. package/cjs/contracts/driver-blueprint.contract.d.ts.map +0 -1
  383. package/cjs/contracts/index.d.ts +0 -10
  384. package/cjs/contracts/index.d.ts.map +0 -1
  385. package/cjs/contracts/migration-driver.contract.d.ts +0 -522
  386. package/cjs/contracts/migration-driver.contract.d.ts.map +0 -1
  387. package/cjs/contracts/query-builder.contract.d.ts +0 -1609
  388. package/cjs/contracts/query-builder.contract.d.ts.map +0 -1
  389. package/cjs/contracts/sync-adapter.contract.d.ts +0 -58
  390. package/cjs/contracts/sync-adapter.contract.d.ts.map +0 -1
  391. package/cjs/data-source/data-source-registry.d.ts +0 -108
  392. package/cjs/data-source/data-source-registry.d.ts.map +0 -1
  393. package/cjs/data-source/data-source-registry.js +0 -145
  394. package/cjs/data-source/data-source-registry.js.map +0 -1
  395. package/cjs/data-source/data-source.d.ts +0 -147
  396. package/cjs/data-source/data-source.d.ts.map +0 -1
  397. package/cjs/data-source/data-source.js +0 -83
  398. package/cjs/data-source/data-source.js.map +0 -1
  399. package/cjs/database-dirty-tracker.d.ts +0 -252
  400. package/cjs/database-dirty-tracker.d.ts.map +0 -1
  401. package/cjs/database-dirty-tracker.js +0 -386
  402. package/cjs/database-dirty-tracker.js.map +0 -1
  403. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
  404. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
  405. package/cjs/drivers/mongodb/mongodb-blueprint.js +0 -51
  406. package/cjs/drivers/mongodb/mongodb-blueprint.js.map +0 -1
  407. package/cjs/drivers/mongodb/mongodb-driver.d.ts +0 -325
  408. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
  409. package/cjs/drivers/mongodb/mongodb-driver.js +0 -845
  410. package/cjs/drivers/mongodb/mongodb-driver.js.map +0 -1
  411. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
  412. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
  413. package/cjs/drivers/mongodb/mongodb-id-generator.js +0 -149
  414. package/cjs/drivers/mongodb/mongodb-id-generator.js.map +0 -1
  415. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
  416. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
  417. package/cjs/drivers/mongodb/mongodb-migration-driver.js +0 -666
  418. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
  419. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
  420. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
  421. package/cjs/drivers/mongodb/mongodb-query-builder.js +0 -1988
  422. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +0 -1
  423. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
  424. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
  425. package/cjs/drivers/mongodb/mongodb-query-operations.js +0 -270
  426. package/cjs/drivers/mongodb/mongodb-query-operations.js.map +0 -1
  427. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
  428. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
  429. package/cjs/drivers/mongodb/mongodb-query-parser.js +0 -1351
  430. package/cjs/drivers/mongodb/mongodb-query-parser.js.map +0 -1
  431. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
  432. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
  433. package/cjs/drivers/mongodb/mongodb-sync-adapter.js +0 -146
  434. package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
  435. package/cjs/drivers/mongodb/types.d.ts +0 -43
  436. package/cjs/drivers/mongodb/types.d.ts.map +0 -1
  437. package/cjs/drivers/postgres/index.d.ts +0 -16
  438. package/cjs/drivers/postgres/index.d.ts.map +0 -1
  439. package/cjs/drivers/postgres/postgres-blueprint.d.ts +0 -64
  440. package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
  441. package/cjs/drivers/postgres/postgres-blueprint.js +0 -121
  442. package/cjs/drivers/postgres/postgres-blueprint.js.map +0 -1
  443. package/cjs/drivers/postgres/postgres-dialect.d.ts +0 -136
  444. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +0 -1
  445. package/cjs/drivers/postgres/postgres-dialect.js +0 -268
  446. package/cjs/drivers/postgres/postgres-dialect.js.map +0 -1
  447. package/cjs/drivers/postgres/postgres-driver.d.ts +0 -432
  448. package/cjs/drivers/postgres/postgres-driver.d.ts.map +0 -1
  449. package/cjs/drivers/postgres/postgres-driver.js +0 -1008
  450. package/cjs/drivers/postgres/postgres-driver.js.map +0 -1
  451. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +0 -397
  452. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
  453. package/cjs/drivers/postgres/postgres-migration-driver.js +0 -900
  454. package/cjs/drivers/postgres/postgres-migration-driver.js.map +0 -1
  455. package/cjs/drivers/postgres/postgres-query-builder.d.ts +0 -254
  456. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
  457. package/cjs/drivers/postgres/postgres-query-builder.js +0 -933
  458. package/cjs/drivers/postgres/postgres-query-builder.js.map +0 -1
  459. package/cjs/drivers/postgres/postgres-query-parser.d.ts +0 -328
  460. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
  461. package/cjs/drivers/postgres/postgres-query-parser.js +0 -868
  462. package/cjs/drivers/postgres/postgres-query-parser.js.map +0 -1
  463. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
  464. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
  465. package/cjs/drivers/postgres/postgres-sql-serializer.js +0 -400
  466. package/cjs/drivers/postgres/postgres-sql-serializer.js.map +0 -1
  467. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
  468. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
  469. package/cjs/drivers/postgres/postgres-sync-adapter.js +0 -204
  470. package/cjs/drivers/postgres/postgres-sync-adapter.js.map +0 -1
  471. package/cjs/drivers/postgres/types.d.ts +0 -144
  472. package/cjs/drivers/postgres/types.d.ts.map +0 -1
  473. package/cjs/drivers/sql/index.d.ts +0 -10
  474. package/cjs/drivers/sql/index.d.ts.map +0 -1
  475. package/cjs/drivers/sql/sql-dialect.contract.d.ts +0 -204
  476. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
  477. package/cjs/drivers/sql/sql-types.d.ts +0 -202
  478. package/cjs/drivers/sql/sql-types.d.ts.map +0 -1
  479. package/cjs/errors/missing-data-source.error.d.ts +0 -22
  480. package/cjs/errors/missing-data-source.error.d.ts.map +0 -1
  481. package/cjs/errors/missing-data-source.error.js +0 -29
  482. package/cjs/errors/missing-data-source.error.js.map +0 -1
  483. package/cjs/errors/transaction-rollback.error.d.ts +0 -20
  484. package/cjs/errors/transaction-rollback.error.d.ts.map +0 -1
  485. package/cjs/errors/transaction-rollback.error.js +0 -27
  486. package/cjs/errors/transaction-rollback.error.js.map +0 -1
  487. package/cjs/events/model-events.d.ts +0 -231
  488. package/cjs/events/model-events.d.ts.map +0 -1
  489. package/cjs/events/model-events.js +0 -259
  490. package/cjs/events/model-events.js.map +0 -1
  491. package/cjs/expressions/aggregate-expressions.d.ts +0 -215
  492. package/cjs/expressions/aggregate-expressions.d.ts.map +0 -1
  493. package/cjs/expressions/aggregate-expressions.js +0 -221
  494. package/cjs/expressions/aggregate-expressions.js.map +0 -1
  495. package/cjs/expressions/index.d.ts +0 -2
  496. package/cjs/expressions/index.d.ts.map +0 -1
  497. package/cjs/index.d.ts +0 -45
  498. package/cjs/index.d.ts.map +0 -1
  499. package/cjs/index.js +0 -1
  500. package/cjs/index.js.map +0 -1
  501. package/cjs/migration/column-builder.d.ts +0 -417
  502. package/cjs/migration/column-builder.d.ts.map +0 -1
  503. package/cjs/migration/column-builder.js +0 -586
  504. package/cjs/migration/column-builder.js.map +0 -1
  505. package/cjs/migration/column-helpers.d.ts +0 -275
  506. package/cjs/migration/column-helpers.d.ts.map +0 -1
  507. package/cjs/migration/column-helpers.js +0 -389
  508. package/cjs/migration/column-helpers.js.map +0 -1
  509. package/cjs/migration/foreign-key-builder.d.ts +0 -103
  510. package/cjs/migration/foreign-key-builder.d.ts.map +0 -1
  511. package/cjs/migration/foreign-key-builder.js +0 -121
  512. package/cjs/migration/foreign-key-builder.js.map +0 -1
  513. package/cjs/migration/index.d.ts +0 -7
  514. package/cjs/migration/index.d.ts.map +0 -1
  515. package/cjs/migration/migration-runner.d.ts +0 -278
  516. package/cjs/migration/migration-runner.d.ts.map +0 -1
  517. package/cjs/migration/migration-runner.js +0 -815
  518. package/cjs/migration/migration-runner.js.map +0 -1
  519. package/cjs/migration/migration.d.ts +0 -1988
  520. package/cjs/migration/migration.d.ts.map +0 -1
  521. package/cjs/migration/migration.js +0 -2162
  522. package/cjs/migration/migration.js.map +0 -1
  523. package/cjs/migration/sql-grammar.d.ts +0 -61
  524. package/cjs/migration/sql-grammar.d.ts.map +0 -1
  525. package/cjs/migration/sql-grammar.js +0 -164
  526. package/cjs/migration/sql-grammar.js.map +0 -1
  527. package/cjs/migration/sql-serializer.d.ts +0 -22
  528. package/cjs/migration/sql-serializer.d.ts.map +0 -1
  529. package/cjs/migration/sql-serializer.js +0 -26
  530. package/cjs/migration/sql-serializer.js.map +0 -1
  531. package/cjs/migration/types.d.ts +0 -155
  532. package/cjs/migration/types.d.ts.map +0 -1
  533. package/cjs/model/methods/accessor-methods.d.ts +0 -13
  534. package/cjs/model/methods/accessor-methods.d.ts.map +0 -1
  535. package/cjs/model/methods/accessor-methods.js +0 -51
  536. package/cjs/model/methods/accessor-methods.js.map +0 -1
  537. package/cjs/model/methods/delete-methods.d.ts +0 -10
  538. package/cjs/model/methods/delete-methods.d.ts.map +0 -1
  539. package/cjs/model/methods/delete-methods.js +0 -10
  540. package/cjs/model/methods/delete-methods.js.map +0 -1
  541. package/cjs/model/methods/dirty-methods.d.ts +0 -10
  542. package/cjs/model/methods/dirty-methods.d.ts.map +0 -1
  543. package/cjs/model/methods/dirty-methods.js +0 -15
  544. package/cjs/model/methods/dirty-methods.js.map +0 -1
  545. package/cjs/model/methods/hydration-methods.d.ts +0 -10
  546. package/cjs/model/methods/hydration-methods.d.ts.map +0 -1
  547. package/cjs/model/methods/hydration-methods.js +0 -57
  548. package/cjs/model/methods/hydration-methods.js.map +0 -1
  549. package/cjs/model/methods/instance-event-methods.d.ts +0 -7
  550. package/cjs/model/methods/instance-event-methods.d.ts.map +0 -1
  551. package/cjs/model/methods/instance-event-methods.js +0 -15
  552. package/cjs/model/methods/instance-event-methods.js.map +0 -1
  553. package/cjs/model/methods/meta-methods.d.ts +0 -7
  554. package/cjs/model/methods/meta-methods.d.ts.map +0 -1
  555. package/cjs/model/methods/meta-methods.js +0 -78
  556. package/cjs/model/methods/meta-methods.js.map +0 -1
  557. package/cjs/model/methods/query-methods.d.ts +0 -24
  558. package/cjs/model/methods/query-methods.d.ts.map +0 -1
  559. package/cjs/model/methods/query-methods.js +0 -164
  560. package/cjs/model/methods/query-methods.js.map +0 -1
  561. package/cjs/model/methods/restore-methods.d.ts +0 -10
  562. package/cjs/model/methods/restore-methods.d.ts.map +0 -1
  563. package/cjs/model/methods/restore-methods.js +0 -13
  564. package/cjs/model/methods/restore-methods.js.map +0 -1
  565. package/cjs/model/methods/scope-methods.d.ts +0 -7
  566. package/cjs/model/methods/scope-methods.d.ts.map +0 -1
  567. package/cjs/model/methods/scope-methods.js +0 -15
  568. package/cjs/model/methods/scope-methods.js.map +0 -1
  569. package/cjs/model/methods/serialization-methods.d.ts +0 -3
  570. package/cjs/model/methods/serialization-methods.d.ts.map +0 -1
  571. package/cjs/model/methods/serialization-methods.js +0 -27
  572. package/cjs/model/methods/serialization-methods.js.map +0 -1
  573. package/cjs/model/methods/static-event-methods.d.ts +0 -9
  574. package/cjs/model/methods/static-event-methods.d.ts.map +0 -1
  575. package/cjs/model/methods/static-event-methods.js +0 -29
  576. package/cjs/model/methods/static-event-methods.js.map +0 -1
  577. package/cjs/model/methods/write-methods.d.ts +0 -10
  578. package/cjs/model/methods/write-methods.d.ts.map +0 -1
  579. package/cjs/model/methods/write-methods.js +0 -52
  580. package/cjs/model/methods/write-methods.js.map +0 -1
  581. package/cjs/model/model.d.ts +0 -1647
  582. package/cjs/model/model.d.ts.map +0 -1
  583. package/cjs/model/model.js +0 -1657
  584. package/cjs/model/model.js.map +0 -1
  585. package/cjs/model/model.types.d.ts +0 -44
  586. package/cjs/model/model.types.d.ts.map +0 -1
  587. package/cjs/model/register-model.d.ts +0 -81
  588. package/cjs/model/register-model.d.ts.map +0 -1
  589. package/cjs/model/register-model.js +0 -94
  590. package/cjs/model/register-model.js.map +0 -1
  591. package/cjs/query-builder/query-builder.d.ts +0 -556
  592. package/cjs/query-builder/query-builder.d.ts.map +0 -1
  593. package/cjs/query-builder/query-builder.js +0 -1070
  594. package/cjs/query-builder/query-builder.js.map +0 -1
  595. package/cjs/relations/helpers.d.ts +0 -156
  596. package/cjs/relations/helpers.d.ts.map +0 -1
  597. package/cjs/relations/helpers.js +0 -202
  598. package/cjs/relations/helpers.js.map +0 -1
  599. package/cjs/relations/index.d.ts +0 -35
  600. package/cjs/relations/index.d.ts.map +0 -1
  601. package/cjs/relations/pivot-operations.d.ts +0 -160
  602. package/cjs/relations/pivot-operations.d.ts.map +0 -1
  603. package/cjs/relations/pivot-operations.js +0 -293
  604. package/cjs/relations/pivot-operations.js.map +0 -1
  605. package/cjs/relations/relation-hydrator.d.ts +0 -68
  606. package/cjs/relations/relation-hydrator.d.ts.map +0 -1
  607. package/cjs/relations/relation-hydrator.js +0 -81
  608. package/cjs/relations/relation-hydrator.js.map +0 -1
  609. package/cjs/relations/relation-loader.d.ts +0 -194
  610. package/cjs/relations/relation-loader.d.ts.map +0 -1
  611. package/cjs/relations/relation-loader.js +0 -466
  612. package/cjs/relations/relation-loader.js.map +0 -1
  613. package/cjs/relations/types.d.ts +0 -306
  614. package/cjs/relations/types.d.ts.map +0 -1
  615. package/cjs/remover/database-remover.d.ts +0 -100
  616. package/cjs/remover/database-remover.d.ts.map +0 -1
  617. package/cjs/remover/database-remover.js +0 -214
  618. package/cjs/remover/database-remover.js.map +0 -1
  619. package/cjs/restorer/database-restorer.d.ts +0 -131
  620. package/cjs/restorer/database-restorer.d.ts.map +0 -1
  621. package/cjs/restorer/database-restorer.js +0 -434
  622. package/cjs/restorer/database-restorer.js.map +0 -1
  623. package/cjs/sql-database-dirty-tracker.d.ts +0 -13
  624. package/cjs/sql-database-dirty-tracker.d.ts.map +0 -1
  625. package/cjs/sql-database-dirty-tracker.js +0 -14
  626. package/cjs/sql-database-dirty-tracker.js.map +0 -1
  627. package/cjs/sync/index.d.ts +0 -12
  628. package/cjs/sync/index.d.ts.map +0 -1
  629. package/cjs/sync/model-events.d.ts +0 -62
  630. package/cjs/sync/model-events.d.ts.map +0 -1
  631. package/cjs/sync/model-events.js +0 -49
  632. package/cjs/sync/model-events.js.map +0 -1
  633. package/cjs/sync/model-sync-operation.d.ts +0 -163
  634. package/cjs/sync/model-sync-operation.d.ts.map +0 -1
  635. package/cjs/sync/model-sync-operation.js +0 -292
  636. package/cjs/sync/model-sync-operation.js.map +0 -1
  637. package/cjs/sync/model-sync.d.ts +0 -130
  638. package/cjs/sync/model-sync.d.ts.map +0 -1
  639. package/cjs/sync/model-sync.js +0 -178
  640. package/cjs/sync/model-sync.js.map +0 -1
  641. package/cjs/sync/sync-context.d.ts +0 -70
  642. package/cjs/sync/sync-context.d.ts.map +0 -1
  643. package/cjs/sync/sync-context.js +0 -101
  644. package/cjs/sync/sync-context.js.map +0 -1
  645. package/cjs/sync/sync-manager.d.ts +0 -213
  646. package/cjs/sync/sync-manager.d.ts.map +0 -1
  647. package/cjs/sync/sync-manager.js +0 -689
  648. package/cjs/sync/sync-manager.js.map +0 -1
  649. package/cjs/sync/types.d.ts +0 -289
  650. package/cjs/sync/types.d.ts.map +0 -1
  651. package/cjs/test-migrations/test-enhanced-features.migration.d.ts +0 -15
  652. package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
  653. package/cjs/types.d.ts +0 -371
  654. package/cjs/types.d.ts.map +0 -1
  655. package/cjs/utils/connect-to-database.d.ts +0 -307
  656. package/cjs/utils/connect-to-database.d.ts.map +0 -1
  657. package/cjs/utils/connect-to-database.js +0 -130
  658. package/cjs/utils/connect-to-database.js.map +0 -1
  659. package/cjs/utils/database-writer.utils.d.ts +0 -15
  660. package/cjs/utils/database-writer.utils.d.ts.map +0 -1
  661. package/cjs/utils/database-writer.utils.js +0 -14
  662. package/cjs/utils/database-writer.utils.js.map +0 -1
  663. package/cjs/utils/define-model.js +0 -100
  664. package/cjs/utils/define-model.js.map +0 -1
  665. package/cjs/utils/is-valid-date-value.d.ts +0 -5
  666. package/cjs/utils/is-valid-date-value.d.ts.map +0 -1
  667. package/cjs/utils/is-valid-date-value.js +0 -25
  668. package/cjs/utils/is-valid-date-value.js.map +0 -1
  669. package/cjs/utils/once-connected.d.ts +0 -146
  670. package/cjs/utils/once-connected.d.ts.map +0 -1
  671. package/cjs/utils/once-connected.js +0 -251
  672. package/cjs/utils/once-connected.js.map +0 -1
  673. package/cjs/validation/database-seal-plugins.d.ts +0 -12
  674. package/cjs/validation/database-seal-plugins.d.ts.map +0 -1
  675. package/cjs/validation/database-seal-plugins.js +0 -1
  676. package/cjs/validation/database-seal-plugins.js.map +0 -1
  677. package/cjs/validation/database-writer-validation-error.d.ts +0 -97
  678. package/cjs/validation/database-writer-validation-error.d.ts.map +0 -1
  679. package/cjs/validation/database-writer-validation-error.js +0 -160
  680. package/cjs/validation/database-writer-validation-error.js.map +0 -1
  681. package/cjs/validation/index.d.ts +0 -3
  682. package/cjs/validation/index.d.ts.map +0 -1
  683. package/cjs/validation/mutators/embed-mutator.d.ts +0 -9
  684. package/cjs/validation/mutators/embed-mutator.d.ts.map +0 -1
  685. package/cjs/validation/mutators/embed-mutator.js +0 -33
  686. package/cjs/validation/mutators/embed-mutator.js.map +0 -1
  687. package/cjs/validation/plugins/embed-validator-plugin.d.ts +0 -24
  688. package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
  689. package/cjs/validation/plugins/embed-validator-plugin.js +0 -18
  690. package/cjs/validation/plugins/embed-validator-plugin.js.map +0 -1
  691. package/cjs/validation/rules/database-model-rule.d.ts +0 -7
  692. package/cjs/validation/rules/database-model-rule.d.ts.map +0 -1
  693. package/cjs/validation/rules/database-model-rule.js +0 -27
  694. package/cjs/validation/rules/database-model-rule.js.map +0 -1
  695. package/cjs/validation/transformers/embed-model-transformer.d.ts +0 -3
  696. package/cjs/validation/transformers/embed-model-transformer.d.ts.map +0 -1
  697. package/cjs/validation/transformers/embed-model-transformer.js +0 -18
  698. package/cjs/validation/transformers/embed-model-transformer.js.map +0 -1
  699. package/cjs/validation/validators/embed-validator.d.ts +0 -21
  700. package/cjs/validation/validators/embed-validator.d.ts.map +0 -1
  701. package/cjs/validation/validators/embed-validator.js +0 -43
  702. package/cjs/validation/validators/embed-validator.js.map +0 -1
  703. package/cjs/writer/database-writer.d.ts +0 -174
  704. package/cjs/writer/database-writer.d.ts.map +0 -1
  705. package/cjs/writer/database-writer.js +0 -400
  706. package/cjs/writer/database-writer.js.map +0 -1
  707. package/esm/context/database-data-source-context.d.ts +0 -29
  708. package/esm/context/database-data-source-context.d.ts.map +0 -1
  709. package/esm/context/database-data-source-context.js +0 -28
  710. package/esm/context/database-data-source-context.js.map +0 -1
  711. package/esm/context/database-transaction-context.d.ts +0 -35
  712. package/esm/context/database-transaction-context.d.ts.map +0 -1
  713. package/esm/context/database-transaction-context.js +0 -40
  714. package/esm/context/database-transaction-context.js.map +0 -1
  715. package/esm/contracts/database-driver.contract.d.ts +0 -450
  716. package/esm/contracts/database-driver.contract.d.ts.map +0 -1
  717. package/esm/contracts/database-id-generator.contract.d.ts +0 -109
  718. package/esm/contracts/database-id-generator.contract.d.ts.map +0 -1
  719. package/esm/contracts/database-remover.contract.d.ts +0 -104
  720. package/esm/contracts/database-remover.contract.d.ts.map +0 -1
  721. package/esm/contracts/database-restorer.contract.d.ts +0 -143
  722. package/esm/contracts/database-restorer.contract.d.ts.map +0 -1
  723. package/esm/contracts/database-writer.contract.d.ts +0 -119
  724. package/esm/contracts/database-writer.contract.d.ts.map +0 -1
  725. package/esm/contracts/driver-blueprint.contract.d.ts +0 -49
  726. package/esm/contracts/driver-blueprint.contract.d.ts.map +0 -1
  727. package/esm/contracts/index.d.ts +0 -10
  728. package/esm/contracts/index.d.ts.map +0 -1
  729. package/esm/contracts/migration-driver.contract.d.ts +0 -522
  730. package/esm/contracts/migration-driver.contract.d.ts.map +0 -1
  731. package/esm/contracts/query-builder.contract.d.ts +0 -1609
  732. package/esm/contracts/query-builder.contract.d.ts.map +0 -1
  733. package/esm/contracts/sync-adapter.contract.d.ts +0 -58
  734. package/esm/contracts/sync-adapter.contract.d.ts.map +0 -1
  735. package/esm/data-source/data-source-registry.d.ts +0 -108
  736. package/esm/data-source/data-source-registry.d.ts.map +0 -1
  737. package/esm/data-source/data-source-registry.js +0 -145
  738. package/esm/data-source/data-source-registry.js.map +0 -1
  739. package/esm/data-source/data-source.d.ts +0 -147
  740. package/esm/data-source/data-source.d.ts.map +0 -1
  741. package/esm/data-source/data-source.js +0 -83
  742. package/esm/data-source/data-source.js.map +0 -1
  743. package/esm/database-dirty-tracker.d.ts +0 -252
  744. package/esm/database-dirty-tracker.d.ts.map +0 -1
  745. package/esm/database-dirty-tracker.js +0 -386
  746. package/esm/database-dirty-tracker.js.map +0 -1
  747. package/esm/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
  748. package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
  749. package/esm/drivers/mongodb/mongodb-blueprint.js +0 -51
  750. package/esm/drivers/mongodb/mongodb-blueprint.js.map +0 -1
  751. package/esm/drivers/mongodb/mongodb-driver.d.ts +0 -325
  752. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
  753. package/esm/drivers/mongodb/mongodb-driver.js +0 -845
  754. package/esm/drivers/mongodb/mongodb-driver.js.map +0 -1
  755. package/esm/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
  756. package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
  757. package/esm/drivers/mongodb/mongodb-id-generator.js +0 -149
  758. package/esm/drivers/mongodb/mongodb-id-generator.js.map +0 -1
  759. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
  760. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
  761. package/esm/drivers/mongodb/mongodb-migration-driver.js +0 -666
  762. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
  763. package/esm/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
  764. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
  765. package/esm/drivers/mongodb/mongodb-query-builder.js +0 -1988
  766. package/esm/drivers/mongodb/mongodb-query-builder.js.map +0 -1
  767. package/esm/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
  768. package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
  769. package/esm/drivers/mongodb/mongodb-query-operations.js +0 -270
  770. package/esm/drivers/mongodb/mongodb-query-operations.js.map +0 -1
  771. package/esm/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
  772. package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
  773. package/esm/drivers/mongodb/mongodb-query-parser.js +0 -1351
  774. package/esm/drivers/mongodb/mongodb-query-parser.js.map +0 -1
  775. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
  776. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
  777. package/esm/drivers/mongodb/mongodb-sync-adapter.js +0 -146
  778. package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
  779. package/esm/drivers/mongodb/types.d.ts +0 -43
  780. package/esm/drivers/mongodb/types.d.ts.map +0 -1
  781. package/esm/drivers/postgres/index.d.ts +0 -16
  782. package/esm/drivers/postgres/index.d.ts.map +0 -1
  783. package/esm/drivers/postgres/postgres-blueprint.d.ts +0 -64
  784. package/esm/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
  785. package/esm/drivers/postgres/postgres-blueprint.js +0 -121
  786. package/esm/drivers/postgres/postgres-blueprint.js.map +0 -1
  787. package/esm/drivers/postgres/postgres-dialect.d.ts +0 -136
  788. package/esm/drivers/postgres/postgres-dialect.d.ts.map +0 -1
  789. package/esm/drivers/postgres/postgres-dialect.js +0 -268
  790. package/esm/drivers/postgres/postgres-dialect.js.map +0 -1
  791. package/esm/drivers/postgres/postgres-driver.d.ts +0 -432
  792. package/esm/drivers/postgres/postgres-driver.d.ts.map +0 -1
  793. package/esm/drivers/postgres/postgres-driver.js +0 -1008
  794. package/esm/drivers/postgres/postgres-driver.js.map +0 -1
  795. package/esm/drivers/postgres/postgres-migration-driver.d.ts +0 -397
  796. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
  797. package/esm/drivers/postgres/postgres-migration-driver.js +0 -900
  798. package/esm/drivers/postgres/postgres-migration-driver.js.map +0 -1
  799. package/esm/drivers/postgres/postgres-query-builder.d.ts +0 -254
  800. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
  801. package/esm/drivers/postgres/postgres-query-builder.js +0 -933
  802. package/esm/drivers/postgres/postgres-query-builder.js.map +0 -1
  803. package/esm/drivers/postgres/postgres-query-parser.d.ts +0 -328
  804. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
  805. package/esm/drivers/postgres/postgres-query-parser.js +0 -868
  806. package/esm/drivers/postgres/postgres-query-parser.js.map +0 -1
  807. package/esm/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
  808. package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
  809. package/esm/drivers/postgres/postgres-sql-serializer.js +0 -400
  810. package/esm/drivers/postgres/postgres-sql-serializer.js.map +0 -1
  811. package/esm/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
  812. package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
  813. package/esm/drivers/postgres/postgres-sync-adapter.js +0 -204
  814. package/esm/drivers/postgres/postgres-sync-adapter.js.map +0 -1
  815. package/esm/drivers/postgres/types.d.ts +0 -144
  816. package/esm/drivers/postgres/types.d.ts.map +0 -1
  817. package/esm/drivers/sql/index.d.ts +0 -10
  818. package/esm/drivers/sql/index.d.ts.map +0 -1
  819. package/esm/drivers/sql/sql-dialect.contract.d.ts +0 -204
  820. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
  821. package/esm/drivers/sql/sql-types.d.ts +0 -202
  822. package/esm/drivers/sql/sql-types.d.ts.map +0 -1
  823. package/esm/errors/missing-data-source.error.d.ts +0 -22
  824. package/esm/errors/missing-data-source.error.d.ts.map +0 -1
  825. package/esm/errors/missing-data-source.error.js +0 -29
  826. package/esm/errors/missing-data-source.error.js.map +0 -1
  827. package/esm/errors/transaction-rollback.error.d.ts +0 -20
  828. package/esm/errors/transaction-rollback.error.d.ts.map +0 -1
  829. package/esm/errors/transaction-rollback.error.js +0 -27
  830. package/esm/errors/transaction-rollback.error.js.map +0 -1
  831. package/esm/events/model-events.d.ts +0 -231
  832. package/esm/events/model-events.d.ts.map +0 -1
  833. package/esm/events/model-events.js +0 -259
  834. package/esm/events/model-events.js.map +0 -1
  835. package/esm/expressions/aggregate-expressions.d.ts +0 -215
  836. package/esm/expressions/aggregate-expressions.d.ts.map +0 -1
  837. package/esm/expressions/aggregate-expressions.js +0 -221
  838. package/esm/expressions/aggregate-expressions.js.map +0 -1
  839. package/esm/expressions/index.d.ts +0 -2
  840. package/esm/expressions/index.d.ts.map +0 -1
  841. package/esm/index.d.ts +0 -45
  842. package/esm/index.d.ts.map +0 -1
  843. package/esm/index.js +0 -1
  844. package/esm/index.js.map +0 -1
  845. package/esm/migration/column-builder.d.ts +0 -417
  846. package/esm/migration/column-builder.d.ts.map +0 -1
  847. package/esm/migration/column-builder.js +0 -586
  848. package/esm/migration/column-builder.js.map +0 -1
  849. package/esm/migration/column-helpers.d.ts +0 -275
  850. package/esm/migration/column-helpers.d.ts.map +0 -1
  851. package/esm/migration/column-helpers.js +0 -389
  852. package/esm/migration/column-helpers.js.map +0 -1
  853. package/esm/migration/foreign-key-builder.d.ts +0 -103
  854. package/esm/migration/foreign-key-builder.d.ts.map +0 -1
  855. package/esm/migration/foreign-key-builder.js +0 -121
  856. package/esm/migration/foreign-key-builder.js.map +0 -1
  857. package/esm/migration/index.d.ts +0 -7
  858. package/esm/migration/index.d.ts.map +0 -1
  859. package/esm/migration/migration-runner.d.ts +0 -278
  860. package/esm/migration/migration-runner.d.ts.map +0 -1
  861. package/esm/migration/migration-runner.js +0 -815
  862. package/esm/migration/migration-runner.js.map +0 -1
  863. package/esm/migration/migration.d.ts +0 -1988
  864. package/esm/migration/migration.d.ts.map +0 -1
  865. package/esm/migration/migration.js +0 -2162
  866. package/esm/migration/migration.js.map +0 -1
  867. package/esm/migration/sql-grammar.d.ts +0 -61
  868. package/esm/migration/sql-grammar.d.ts.map +0 -1
  869. package/esm/migration/sql-grammar.js +0 -164
  870. package/esm/migration/sql-grammar.js.map +0 -1
  871. package/esm/migration/sql-serializer.d.ts +0 -22
  872. package/esm/migration/sql-serializer.d.ts.map +0 -1
  873. package/esm/migration/sql-serializer.js +0 -26
  874. package/esm/migration/sql-serializer.js.map +0 -1
  875. package/esm/migration/types.d.ts +0 -155
  876. package/esm/migration/types.d.ts.map +0 -1
  877. package/esm/model/methods/accessor-methods.d.ts +0 -13
  878. package/esm/model/methods/accessor-methods.d.ts.map +0 -1
  879. package/esm/model/methods/accessor-methods.js +0 -51
  880. package/esm/model/methods/accessor-methods.js.map +0 -1
  881. package/esm/model/methods/delete-methods.d.ts +0 -10
  882. package/esm/model/methods/delete-methods.d.ts.map +0 -1
  883. package/esm/model/methods/delete-methods.js +0 -10
  884. package/esm/model/methods/delete-methods.js.map +0 -1
  885. package/esm/model/methods/dirty-methods.d.ts +0 -10
  886. package/esm/model/methods/dirty-methods.d.ts.map +0 -1
  887. package/esm/model/methods/dirty-methods.js +0 -15
  888. package/esm/model/methods/dirty-methods.js.map +0 -1
  889. package/esm/model/methods/hydration-methods.d.ts +0 -10
  890. package/esm/model/methods/hydration-methods.d.ts.map +0 -1
  891. package/esm/model/methods/hydration-methods.js +0 -57
  892. package/esm/model/methods/hydration-methods.js.map +0 -1
  893. package/esm/model/methods/instance-event-methods.d.ts +0 -7
  894. package/esm/model/methods/instance-event-methods.d.ts.map +0 -1
  895. package/esm/model/methods/instance-event-methods.js +0 -15
  896. package/esm/model/methods/instance-event-methods.js.map +0 -1
  897. package/esm/model/methods/meta-methods.d.ts +0 -7
  898. package/esm/model/methods/meta-methods.d.ts.map +0 -1
  899. package/esm/model/methods/meta-methods.js +0 -78
  900. package/esm/model/methods/meta-methods.js.map +0 -1
  901. package/esm/model/methods/query-methods.d.ts +0 -24
  902. package/esm/model/methods/query-methods.d.ts.map +0 -1
  903. package/esm/model/methods/query-methods.js +0 -164
  904. package/esm/model/methods/query-methods.js.map +0 -1
  905. package/esm/model/methods/restore-methods.d.ts +0 -10
  906. package/esm/model/methods/restore-methods.d.ts.map +0 -1
  907. package/esm/model/methods/restore-methods.js +0 -13
  908. package/esm/model/methods/restore-methods.js.map +0 -1
  909. package/esm/model/methods/scope-methods.d.ts +0 -7
  910. package/esm/model/methods/scope-methods.d.ts.map +0 -1
  911. package/esm/model/methods/scope-methods.js +0 -15
  912. package/esm/model/methods/scope-methods.js.map +0 -1
  913. package/esm/model/methods/serialization-methods.d.ts +0 -3
  914. package/esm/model/methods/serialization-methods.d.ts.map +0 -1
  915. package/esm/model/methods/serialization-methods.js +0 -27
  916. package/esm/model/methods/serialization-methods.js.map +0 -1
  917. package/esm/model/methods/static-event-methods.d.ts +0 -9
  918. package/esm/model/methods/static-event-methods.d.ts.map +0 -1
  919. package/esm/model/methods/static-event-methods.js +0 -29
  920. package/esm/model/methods/static-event-methods.js.map +0 -1
  921. package/esm/model/methods/write-methods.d.ts +0 -10
  922. package/esm/model/methods/write-methods.d.ts.map +0 -1
  923. package/esm/model/methods/write-methods.js +0 -52
  924. package/esm/model/methods/write-methods.js.map +0 -1
  925. package/esm/model/model.d.ts +0 -1647
  926. package/esm/model/model.d.ts.map +0 -1
  927. package/esm/model/model.js +0 -1657
  928. package/esm/model/model.js.map +0 -1
  929. package/esm/model/model.types.d.ts +0 -44
  930. package/esm/model/model.types.d.ts.map +0 -1
  931. package/esm/model/register-model.d.ts +0 -81
  932. package/esm/model/register-model.d.ts.map +0 -1
  933. package/esm/model/register-model.js +0 -94
  934. package/esm/model/register-model.js.map +0 -1
  935. package/esm/query-builder/query-builder.d.ts +0 -556
  936. package/esm/query-builder/query-builder.d.ts.map +0 -1
  937. package/esm/query-builder/query-builder.js +0 -1070
  938. package/esm/query-builder/query-builder.js.map +0 -1
  939. package/esm/relations/helpers.d.ts +0 -156
  940. package/esm/relations/helpers.d.ts.map +0 -1
  941. package/esm/relations/helpers.js +0 -202
  942. package/esm/relations/helpers.js.map +0 -1
  943. package/esm/relations/index.d.ts +0 -35
  944. package/esm/relations/index.d.ts.map +0 -1
  945. package/esm/relations/pivot-operations.d.ts +0 -160
  946. package/esm/relations/pivot-operations.d.ts.map +0 -1
  947. package/esm/relations/pivot-operations.js +0 -293
  948. package/esm/relations/pivot-operations.js.map +0 -1
  949. package/esm/relations/relation-hydrator.d.ts +0 -68
  950. package/esm/relations/relation-hydrator.d.ts.map +0 -1
  951. package/esm/relations/relation-hydrator.js +0 -81
  952. package/esm/relations/relation-hydrator.js.map +0 -1
  953. package/esm/relations/relation-loader.d.ts +0 -194
  954. package/esm/relations/relation-loader.d.ts.map +0 -1
  955. package/esm/relations/relation-loader.js +0 -466
  956. package/esm/relations/relation-loader.js.map +0 -1
  957. package/esm/relations/types.d.ts +0 -306
  958. package/esm/relations/types.d.ts.map +0 -1
  959. package/esm/remover/database-remover.d.ts +0 -100
  960. package/esm/remover/database-remover.d.ts.map +0 -1
  961. package/esm/remover/database-remover.js +0 -214
  962. package/esm/remover/database-remover.js.map +0 -1
  963. package/esm/restorer/database-restorer.d.ts +0 -131
  964. package/esm/restorer/database-restorer.d.ts.map +0 -1
  965. package/esm/restorer/database-restorer.js +0 -434
  966. package/esm/restorer/database-restorer.js.map +0 -1
  967. package/esm/sql-database-dirty-tracker.d.ts +0 -13
  968. package/esm/sql-database-dirty-tracker.d.ts.map +0 -1
  969. package/esm/sql-database-dirty-tracker.js +0 -14
  970. package/esm/sql-database-dirty-tracker.js.map +0 -1
  971. package/esm/sync/index.d.ts +0 -12
  972. package/esm/sync/index.d.ts.map +0 -1
  973. package/esm/sync/model-events.d.ts +0 -62
  974. package/esm/sync/model-events.d.ts.map +0 -1
  975. package/esm/sync/model-events.js +0 -49
  976. package/esm/sync/model-events.js.map +0 -1
  977. package/esm/sync/model-sync-operation.d.ts +0 -163
  978. package/esm/sync/model-sync-operation.d.ts.map +0 -1
  979. package/esm/sync/model-sync-operation.js +0 -292
  980. package/esm/sync/model-sync-operation.js.map +0 -1
  981. package/esm/sync/model-sync.d.ts +0 -130
  982. package/esm/sync/model-sync.d.ts.map +0 -1
  983. package/esm/sync/model-sync.js +0 -178
  984. package/esm/sync/model-sync.js.map +0 -1
  985. package/esm/sync/sync-context.d.ts +0 -70
  986. package/esm/sync/sync-context.d.ts.map +0 -1
  987. package/esm/sync/sync-context.js +0 -101
  988. package/esm/sync/sync-context.js.map +0 -1
  989. package/esm/sync/sync-manager.d.ts +0 -213
  990. package/esm/sync/sync-manager.d.ts.map +0 -1
  991. package/esm/sync/sync-manager.js +0 -689
  992. package/esm/sync/sync-manager.js.map +0 -1
  993. package/esm/sync/types.d.ts +0 -289
  994. package/esm/sync/types.d.ts.map +0 -1
  995. package/esm/test-migrations/test-enhanced-features.migration.d.ts +0 -15
  996. package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
  997. package/esm/types.d.ts +0 -371
  998. package/esm/types.d.ts.map +0 -1
  999. package/esm/utils/connect-to-database.d.ts +0 -307
  1000. package/esm/utils/connect-to-database.d.ts.map +0 -1
  1001. package/esm/utils/connect-to-database.js +0 -130
  1002. package/esm/utils/connect-to-database.js.map +0 -1
  1003. package/esm/utils/database-writer.utils.d.ts +0 -15
  1004. package/esm/utils/database-writer.utils.d.ts.map +0 -1
  1005. package/esm/utils/database-writer.utils.js +0 -14
  1006. package/esm/utils/database-writer.utils.js.map +0 -1
  1007. package/esm/utils/define-model.js +0 -100
  1008. package/esm/utils/define-model.js.map +0 -1
  1009. package/esm/utils/is-valid-date-value.d.ts +0 -5
  1010. package/esm/utils/is-valid-date-value.d.ts.map +0 -1
  1011. package/esm/utils/is-valid-date-value.js +0 -25
  1012. package/esm/utils/is-valid-date-value.js.map +0 -1
  1013. package/esm/utils/once-connected.d.ts +0 -146
  1014. package/esm/utils/once-connected.d.ts.map +0 -1
  1015. package/esm/utils/once-connected.js +0 -251
  1016. package/esm/utils/once-connected.js.map +0 -1
  1017. package/esm/validation/database-seal-plugins.d.ts +0 -12
  1018. package/esm/validation/database-seal-plugins.d.ts.map +0 -1
  1019. package/esm/validation/database-seal-plugins.js +0 -1
  1020. package/esm/validation/database-seal-plugins.js.map +0 -1
  1021. package/esm/validation/database-writer-validation-error.d.ts +0 -97
  1022. package/esm/validation/database-writer-validation-error.d.ts.map +0 -1
  1023. package/esm/validation/database-writer-validation-error.js +0 -160
  1024. package/esm/validation/database-writer-validation-error.js.map +0 -1
  1025. package/esm/validation/index.d.ts +0 -3
  1026. package/esm/validation/index.d.ts.map +0 -1
  1027. package/esm/validation/mutators/embed-mutator.d.ts +0 -9
  1028. package/esm/validation/mutators/embed-mutator.d.ts.map +0 -1
  1029. package/esm/validation/mutators/embed-mutator.js +0 -33
  1030. package/esm/validation/mutators/embed-mutator.js.map +0 -1
  1031. package/esm/validation/plugins/embed-validator-plugin.d.ts +0 -24
  1032. package/esm/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
  1033. package/esm/validation/plugins/embed-validator-plugin.js +0 -18
  1034. package/esm/validation/plugins/embed-validator-plugin.js.map +0 -1
  1035. package/esm/validation/rules/database-model-rule.d.ts +0 -7
  1036. package/esm/validation/rules/database-model-rule.d.ts.map +0 -1
  1037. package/esm/validation/rules/database-model-rule.js +0 -27
  1038. package/esm/validation/rules/database-model-rule.js.map +0 -1
  1039. package/esm/validation/transformers/embed-model-transformer.d.ts +0 -3
  1040. package/esm/validation/transformers/embed-model-transformer.d.ts.map +0 -1
  1041. package/esm/validation/transformers/embed-model-transformer.js +0 -18
  1042. package/esm/validation/transformers/embed-model-transformer.js.map +0 -1
  1043. package/esm/validation/validators/embed-validator.d.ts +0 -21
  1044. package/esm/validation/validators/embed-validator.d.ts.map +0 -1
  1045. package/esm/validation/validators/embed-validator.js +0 -43
  1046. package/esm/validation/validators/embed-validator.js.map +0 -1
  1047. package/esm/writer/database-writer.d.ts +0 -174
  1048. package/esm/writer/database-writer.d.ts.map +0 -1
  1049. package/esm/writer/database-writer.js +0 -400
  1050. package/esm/writer/database-writer.js.map +0 -1
@@ -1,933 +0,0 @@
1
- 'use strict';var dataSourceRegistry=require('../../data-source/data-source-registry.js'),registerModel=require('../../model/register-model.js'),queryBuilder=require('../../query-builder/query-builder.js'),postgresQueryParser=require('./postgres-query-parser.js');/**
2
- * PostgreSQL Query Builder
3
- *
4
- * Extends the pure QueryBuilder base with PostgreSQL-specific execution,
5
- * SQL generation, relation hydration, and scope management.
6
- *
7
- * @module cascade/drivers/postgres
8
- */
9
- // ============================================================================
10
- // HELPER
11
- // ============================================================================
12
- /**
13
- * Cast an Op[] to PostgresParserOperation[] — the shapes are compatible since
14
- * both have `type: string` and `data: Record<string, unknown>`.
15
- */
16
- function toParserOps(ops) {
17
- return ops;
18
- }
19
- // ============================================================================
20
- // POSTGRES QUERY BUILDER
21
- // ============================================================================
22
- /**
23
- * PostgreSQL Query Builder.
24
- *
25
- * Collects query operations (via the base class) and delegates SQL generation
26
- * to `PostgresQueryParser`. Owns execution, hydration, and relation loading.
27
- *
28
- * @example
29
- * ```typescript
30
- * const users = await User.query()
31
- * .select(["id", "name", "email"])
32
- * .where("status", "active")
33
- * .orderBy("createdAt", "desc")
34
- * .limit(10)
35
- * .get();
36
- * ```
37
- */
38
- class PostgresQueryBuilder extends queryBuilder.QueryBuilder {
39
- table;
40
- // ──────────────────────────────────────────────────────────────
41
- // POSTGRES-SPECIFIC STATE
42
- // ──────────────────────────────────────────────────────────────
43
- /** Data source backing this builder. */
44
- dataSource;
45
- /** Hydration callback for transforming result rows into model instances. */
46
- hydrateCallback;
47
- /** Invoked before query execution. */
48
- fetchingCallback;
49
- /** Invoked after fetch but before hydration. */
50
- hydratingCallback;
51
- /** Invoked after fetch and hydration. */
52
- fetchedCallback;
53
- /**
54
- * Map of relations registered via `joinWith()`.
55
- * Keyed by dot-notation path (e.g. "organizationAiModel.aiModel").
56
- */
57
- joinRelations = new Map();
58
- // ──────────────────────────────────────────────────────────────
59
- // CONSTRUCTOR
60
- // ──────────────────────────────────────────────────────────────
61
- /**
62
- * @param table - Target table name
63
- * @param dataSource - Optional (uses default data source from registry if omitted)
64
- */
65
- constructor(table, dataSource) {
66
- super();
67
- this.table = table;
68
- this.dataSource = dataSource ?? dataSourceRegistry.dataSourceRegistry.get();
69
- }
70
- // ──────────────────────────────────────────────────────────────
71
- // DRIVER
72
- // ──────────────────────────────────────────────────────────────
73
- get driver() {
74
- return this.dataSource.driver;
75
- }
76
- // ──────────────────────────────────────────────────────────────
77
- // CLONE
78
- // ──────────────────────────────────────────────────────────────
79
- clone() {
80
- const cloned = new PostgresQueryBuilder(this.table, this.dataSource);
81
- // Copy base-class state
82
- cloned.operations = [...this.operations];
83
- cloned.pendingGlobalScopes = this.pendingGlobalScopes;
84
- cloned.availableLocalScopes = this.availableLocalScopes;
85
- cloned.disabledGlobalScopes = new Set(this.disabledGlobalScopes);
86
- cloned.scopesApplied = this.scopesApplied;
87
- cloned.eagerLoadRelations = new Map(this.eagerLoadRelations);
88
- cloned.countRelations = [...this.countRelations];
89
- cloned.relationDefinitions = this.relationDefinitions;
90
- cloned.modelClass = this.modelClass;
91
- // Copy PG-specific state
92
- cloned.hydrateCallback = this.hydrateCallback;
93
- cloned.joinRelations = new Map(this.joinRelations);
94
- return cloned;
95
- }
96
- // ============================================================================
97
- // PG-SPECIFIC FLUENT METHODS
98
- // ============================================================================
99
- /**
100
- * Native-query escape hatch. Passes `operations[]` to the callback for
101
- * direct manipulation. Use sparingly — only when fluent API is insufficient.
102
- *
103
- * @example
104
- * q.raw(ops => ops.push({ type: "whereRaw", data: { expression: "1=1" } }))
105
- */
106
- raw(callback) {
107
- callback(this.operations);
108
- return this;
109
- }
110
- /**
111
- * Record a DISTINCT flag AND auto-select the field(s).
112
- * In PostgreSQL, DISTINCT ON (col) requires the col to appear in SELECT.
113
- *
114
- * @example
115
- * q.distinctValues("category") // SELECT category … DISTINCT ON (category)
116
- * q.distinctValues(["category", "status"]) // both fields in DISTINCT ON and SELECT
117
- */
118
- distinctValues(fields) {
119
- // Record the base DISTINCT flag op
120
- super.distinctValues(fields);
121
- // Also add a select for the field(s) so they appear in the SELECT clause
122
- if (fields) {
123
- const fieldArr = Array.isArray(fields) ? fields : [fields];
124
- this.addOperation("select", { fields: fieldArr });
125
- }
126
- return this;
127
- }
128
- /**
129
- * Nearest-neighbour vector similarity search via pgvector cosine distance.
130
- *
131
- * Adds two operations atomically:
132
- * 1. `selectRaw` → `1 - (column <=> $n::vector) AS <alias>`
133
- * Makes the similarity score available on every returned row.
134
- * 2. `orderByRaw` → `column <=> $n::vector`
135
- * Tells the PostgreSQL query planner to use the IVFFlat/HNSW vector index.
136
- * Using the alias in ORDER BY would bypass the index — the raw expression is required.
137
- *
138
- * @example
139
- * ```typescript
140
- * const results = await Vector.query()
141
- * .where({ organization_id: "org-123", content_type: "summary" })
142
- * .similarTo("embedding", queryEmbedding)
143
- * .limit(5)
144
- * .get<VectorRow & { score: number }>();
145
- * ```
146
- */
147
- similarTo(column, embedding, alias = "score") {
148
- // pgvector expects the literal format: [n,n,n,...]
149
- const literal = `[${embedding.join(",")}]`;
150
- const quotedCol = this.driver.dialect.quoteIdentifier(column);
151
- const quotedTable = this.driver.dialect.quoteIdentifier(this.table);
152
- // 0 — Preserve all table columns.
153
- // Adding a selectRaw suppresses the parser's "SELECT *" fallback,
154
- // so we must explicitly include table.* before the score expression.
155
- this.addOperation("selectRaw", {
156
- expression: `${quotedTable}.*`,
157
- bindings: [],
158
- });
159
- // 1 — Add similarity score to SELECT
160
- this.addOperation("selectRaw", {
161
- expression: `1 - (${quotedCol} <=> ?::vector) AS ${alias}`,
162
- bindings: [literal],
163
- });
164
- // 2 — ORDER BY the raw expression so the vector index is used
165
- this.addOperation("orderByRaw", {
166
- expression: `${quotedCol} <=> ?::vector`,
167
- bindings: [literal],
168
- });
169
- return this;
170
- }
171
- /** Set a hydration callback that transforms each result row. */
172
- hydrate(callback) {
173
- this.hydrateCallback = callback;
174
- return this;
175
- }
176
- /** Register a callback invoked before query execution. */
177
- onFetching(callback) {
178
- this.fetchingCallback = callback;
179
- return () => {
180
- this.fetchingCallback = undefined;
181
- };
182
- }
183
- /** Register a callback invoked after fetch but before hydration. */
184
- onHydrating(callback) {
185
- this.hydratingCallback = callback;
186
- return () => {
187
- this.hydratingCallback = undefined;
188
- };
189
- }
190
- /** Register a callback invoked after fetch and hydration. */
191
- onFetched(callback) {
192
- this.fetchedCallback = callback;
193
- return () => {
194
- this.fetchedCallback = undefined;
195
- };
196
- }
197
- // ============================================================================
198
- // SCOPES
199
- // ============================================================================
200
- /** Apply pending global scopes to the operations list. */
201
- applyPendingScopes() {
202
- if (!this.pendingGlobalScopes || this.scopesApplied)
203
- return;
204
- const beforeOps = [];
205
- const afterOps = [];
206
- for (const [name, { callback, timing }] of this.pendingGlobalScopes) {
207
- if (this.disabledGlobalScopes.has(name))
208
- continue;
209
- const temp = new PostgresQueryBuilder(this.table, this.dataSource);
210
- callback(temp);
211
- if (timing === "before") {
212
- beforeOps.push(...temp.operations);
213
- }
214
- else {
215
- afterOps.push(...temp.operations);
216
- }
217
- }
218
- this.operations = [...beforeOps, ...this.operations, ...afterOps];
219
- this.scopesApplied = true;
220
- }
221
- // ============================================================================
222
- // WHERE — POSTGRES-SPECIFIC (driver.dialect required)
223
- // ============================================================================
224
- /** Array field contains a value (or object with key). */
225
- whereArrayContains(field, value, key) {
226
- const quotedField = this.driver.dialect.quoteIdentifier(field);
227
- if (key) {
228
- this.addOperation("whereRaw", {
229
- expression: `${quotedField} @> ?::jsonb`,
230
- bindings: [JSON.stringify([{ [key]: value }])],
231
- });
232
- }
233
- else {
234
- this.addOperation("whereRaw", {
235
- expression: `? = ANY(${quotedField})`,
236
- bindings: [value],
237
- });
238
- }
239
- return this;
240
- }
241
- /** Array field does NOT contain a value (or object with key). */
242
- whereArrayNotContains(field, value, key) {
243
- const quotedField = this.driver.dialect.quoteIdentifier(field);
244
- if (key) {
245
- this.addOperation("whereRaw", {
246
- expression: `NOT (${quotedField} @> ?::jsonb)`,
247
- bindings: [JSON.stringify([{ [key]: value }])],
248
- });
249
- }
250
- else {
251
- this.addOperation("whereRaw", {
252
- expression: `NOT (? = ANY(${quotedField}))`,
253
- bindings: [value],
254
- });
255
- }
256
- return this;
257
- }
258
- /** Array field contains value OR is empty. */
259
- whereArrayHasOrEmpty(field, value, key) {
260
- const quotedField = this.driver.dialect.quoteIdentifier(field);
261
- if (key) {
262
- this.addOperation("whereRaw", {
263
- expression: `(${quotedField} @> ?::jsonb OR ${quotedField} = '[]'::jsonb OR ${quotedField} IS NULL)`,
264
- bindings: [JSON.stringify([{ [key]: value }])],
265
- });
266
- }
267
- else {
268
- this.addOperation("whereRaw", {
269
- expression: `(? = ANY(${quotedField}) OR array_length(${quotedField}, 1) IS NULL)`,
270
- bindings: [value],
271
- });
272
- }
273
- return this;
274
- }
275
- /** Array field does NOT contain value OR is empty. */
276
- whereArrayNotHaveOrEmpty(field, value, key) {
277
- const quotedField = this.driver.dialect.quoteIdentifier(field);
278
- if (key) {
279
- this.addOperation("whereRaw", {
280
- expression: `(NOT (${quotedField} @> ?::jsonb) OR ${quotedField} = '[]'::jsonb OR ${quotedField} IS NULL)`,
281
- bindings: [JSON.stringify([{ [key]: value }])],
282
- });
283
- }
284
- else {
285
- this.addOperation("whereRaw", {
286
- expression: `(NOT (? = ANY(${quotedField})) OR array_length(${quotedField}, 1) IS NULL)`,
287
- bindings: [value],
288
- });
289
- }
290
- return this;
291
- }
292
- // ============================================================================
293
- // joinWith — RESOLVE RELATION DEFINITIONS
294
- // ============================================================================
295
- /**
296
- * Load relations via SQL JOINs (single query) with optional per-relation constraints.
297
- *
298
- * Supports:
299
- * - `joinWith("author")` / `joinWith(["author", "category"])`
300
- * - `joinWith({ actions: q => q.where("status", "pending").limit(5) })`
301
- * - `joinWith({ organizationAiModel: "id,name", actions: q => q.orderBy("sort_order") })`
302
- *
303
- * @example
304
- * ChatMessage.joinWith({
305
- * actions: q => q.where("status", "pending").orderBy("sort_order", "asc").limit(5),
306
- * organizationAiModel: "id,createdAt",
307
- * })
308
- */
309
- joinWith(...args) {
310
- const entries = [];
311
- for (const arg of args) {
312
- if (typeof arg === "string") {
313
- entries.push({ path: arg });
314
- }
315
- else if (Array.isArray(arg)) {
316
- for (const rel of arg) {
317
- entries.push({ path: rel });
318
- }
319
- }
320
- else if (typeof arg === "object" && arg !== null) {
321
- for (const [rel, val] of Object.entries(arg)) {
322
- entries.push({ path: rel, constraint: val });
323
- }
324
- }
325
- }
326
- for (const { path, constraint } of entries) {
327
- // Parse each dot-notation path segment (supports "rel1.rel2" nesting)
328
- const segments = path.split(".");
329
- let currentModel = this.modelClass;
330
- let currentPath = "";
331
- for (let i = 0; i < segments.length; i++) {
332
- const rawSeg = segments[i];
333
- // String shorthand: "relName:col1,col2"
334
- const colonIdx = rawSeg.indexOf(":");
335
- const segName = colonIdx === -1 ? rawSeg : rawSeg.slice(0, colonIdx);
336
- const segColumns = colonIdx === -1
337
- ? undefined
338
- : rawSeg
339
- .slice(colonIdx + 1)
340
- .split(",")
341
- .filter(Boolean);
342
- currentPath = currentPath ? `${currentPath}.${segName}` : segName;
343
- // If already registered, update if new select columns given; advance model
344
- if (this.joinRelations.has(currentPath)) {
345
- const existing = this.joinRelations.get(currentPath);
346
- if (segColumns)
347
- existing.select = segColumns;
348
- // Apply constraint only on the deepest segment
349
- if (i === segments.length - 1 && constraint !== undefined) {
350
- existing.constraintOps = this._resolveConstraintOps(constraint);
351
- }
352
- currentModel =
353
- typeof existing.model === "string"
354
- ? registerModel.getModelFromRegistry(existing.model)
355
- : existing.model;
356
- continue;
357
- }
358
- if (!this.relationDefinitions)
359
- continue;
360
- const def = (i === 0
361
- ? this.relationDefinitions
362
- : currentModel?.relations)?.[segName];
363
- if (!def) {
364
- throw new Error(`Relation "${segName}" not found on model ${currentModel?.name ?? "unknown"}`);
365
- }
366
- // Resolve select columns: colon shorthand > constraint string > def.select
367
- let selectColumns = segColumns ?? def.select;
368
- let constraintOps;
369
- if (i === segments.length - 1 && constraint !== undefined) {
370
- if (typeof constraint === "string") {
371
- selectColumns = constraint.split(",").filter(Boolean);
372
- }
373
- else {
374
- constraintOps = this._resolveConstraintOps(constraint);
375
- }
376
- }
377
- const alias = currentPath.replace(/\./g, "_");
378
- this.joinRelations.set(currentPath, {
379
- alias,
380
- type: def.type,
381
- model: def.model,
382
- localKey: def.localKey,
383
- foreignKey: def.foreignKey,
384
- ownerKey: def.ownerKey,
385
- parentPath: i > 0 ? currentPath.substring(0, currentPath.lastIndexOf(".")) : null,
386
- relationName: segName,
387
- parentModel: currentModel,
388
- select: selectColumns,
389
- constraintOps,
390
- });
391
- currentModel =
392
- typeof def.model === "string" ? registerModel.getModelFromRegistry(def.model) : def.model;
393
- if (!currentModel) {
394
- throw new Error(`Relation model not found for "${segName}" in "${currentPath}"`);
395
- }
396
- }
397
- }
398
- return this;
399
- }
400
- /** Run a joinWith constraint callback against a sub-QB and capture its operations. */
401
- _resolveConstraintOps(constraint) {
402
- if (typeof constraint === "string")
403
- return [];
404
- const sub = new PostgresQueryBuilder("__sub__", this.dataSource);
405
- constraint(sub);
406
- return sub.operations;
407
- }
408
- // ============================================================================
409
- // EXECUTION METHODS
410
- // ============================================================================
411
- /**
412
- * Execute the query and return all matching rows.
413
- */
414
- async get() {
415
- this.applyPendingScopes();
416
- this._processJoinWithOps();
417
- this.applyJoinRelations();
418
- if (this.fetchingCallback) {
419
- await this.fetchingCallback(this);
420
- }
421
- const parser = new postgresQueryParser.PostgresQueryParser({
422
- table: this.table,
423
- operations: toParserOps(this.operations),
424
- });
425
- const { query = "", bindings = [] } = parser.parse();
426
- try {
427
- const result = await this.driver.query(query, bindings);
428
- let records = result.rows;
429
- const joinedData = this.extractJoinedRelationData(records);
430
- if (this.hydratingCallback) {
431
- await this.hydratingCallback(records, {});
432
- }
433
- if (this.hydrateCallback) {
434
- records = records.map((row, index) => this.hydrateCallback(row, index));
435
- }
436
- this.attachJoinedRelations(records, joinedData);
437
- if (this.fetchedCallback) {
438
- await this.fetchedCallback(records, {});
439
- }
440
- this.operations = [];
441
- return records;
442
- }
443
- catch (error) {
444
- console.log("Error while executing:", query, bindings);
445
- console.log("Query Builder Error:", error);
446
- throw error;
447
- }
448
- }
449
- /** Get first result. */
450
- async first() {
451
- const results = await this.limit(1).get();
452
- return results[0] ?? null;
453
- }
454
- /** Get last result (by id desc). */
455
- async last() {
456
- const results = await this.orderByDesc("id").limit(1).get();
457
- return results[0] ?? null;
458
- }
459
- /** Get random results. */
460
- async random(limit) {
461
- this.orderByRaw("RANDOM()");
462
- if (limit)
463
- this.limit(limit);
464
- return this.get();
465
- }
466
- /** Get first or throw. */
467
- async firstOrFail() {
468
- const result = await this.first();
469
- if (!result)
470
- throw new Error("No records found");
471
- return result;
472
- }
473
- /** Get first or call callback. */
474
- async firstOr(callback) {
475
- const result = await this.first();
476
- return result ?? (await callback());
477
- }
478
- /** Get first or return null. */
479
- async firstOrNull() {
480
- return this.first();
481
- }
482
- /** Get first or return default. */
483
- async firstOrNew(defaults) {
484
- const result = await this.first();
485
- return result ?? defaults;
486
- }
487
- /** Find by primary key. */
488
- async find(id) {
489
- return this.where("id", id).first();
490
- }
491
- /** Count matching rows. */
492
- async count() {
493
- this.applyPendingScopes();
494
- const countOps = toParserOps([
495
- ...this.operations.filter((op) => op.type.includes("where") || op.type.includes("join")),
496
- { type: "selectRaw", data: { expression: 'COUNT(*) AS "count"' } },
497
- ]);
498
- const parser = new postgresQueryParser.PostgresQueryParser({ table: this.table, operations: countOps });
499
- const { query = "", bindings = [] } = parser.parse();
500
- const result = await this.driver.query(query, bindings);
501
- return parseInt(result.rows[0]?.count ?? "0", 10);
502
- }
503
- /** SUM a numeric field. */
504
- async sum(field) {
505
- this.applyPendingScopes();
506
- const result = await this.selectRaw(`SUM(${field}) as sum`).first();
507
- return parseFloat(result?.sum ?? "0");
508
- }
509
- /** AVG of a numeric field. */
510
- async avg(field) {
511
- this.applyPendingScopes();
512
- const result = await this.selectRaw(`AVG(${field}) as avg`).first();
513
- return parseFloat(result?.avg ?? "0");
514
- }
515
- /** MIN of a numeric field. */
516
- async min(field) {
517
- this.applyPendingScopes();
518
- const result = await this.selectRaw(`MIN(${field}) as min`).first();
519
- return parseFloat(result?.min ?? "0");
520
- }
521
- /** MAX of a numeric field. */
522
- async max(field) {
523
- this.applyPendingScopes();
524
- const result = await this.selectRaw(`MAX(${field}) as max`).first();
525
- return parseFloat(result?.max ?? "0");
526
- }
527
- /** Get distinct values for a field. */
528
- async distinct(field) {
529
- this.distinctValues(field);
530
- const results = await this.get();
531
- return results.map((row) => row[field]);
532
- }
533
- /** Get array of all values for a single field. */
534
- async pluck(field) {
535
- const results = await this.select([field]).get();
536
- return results.map((row) => row[field]);
537
- }
538
- /** Get a single scalar value. */
539
- async value(field) {
540
- const result = await this.select([field]).first();
541
- return result?.[field] ?? null;
542
- }
543
- /** Check whether any matching rows exist. */
544
- async exists() {
545
- const count = await this.limit(1).count();
546
- return count > 0;
547
- }
548
- /** Check whether NO matching rows exist. */
549
- async notExists() {
550
- return !(await this.exists());
551
- }
552
- /** COUNT DISTINCT a field. */
553
- async countDistinct(field) {
554
- const result = await this.selectRaw(`COUNT(DISTINCT ${field}) as count`).first();
555
- return parseInt(result?.count ?? "0", 10);
556
- }
557
- // ─── Aggregation shortcuts via latest/oldest ─────────────────
558
- /** Get latest records ordered by a column. */
559
- async latest(column = "createdAt") {
560
- return this.orderBy(column, "desc").get();
561
- }
562
- // ─── Increment / Decrement ───────────────────────────────────
563
- /** Increment a numeric field. Returns new value. */
564
- async increment(field, amount = 1) {
565
- this.applyPendingScopes();
566
- const { sql: filterSql, params: filterParams } = this.buildFilter();
567
- const updateSql = `UPDATE ${this.driver.dialect.quoteIdentifier(this.table)} ` +
568
- `SET ${this.driver.dialect.quoteIdentifier(field)} = COALESCE(${this.driver.dialect.quoteIdentifier(field)}, 0) + $1 ` +
569
- (filterSql ? `WHERE ${filterSql.replace("WHERE ", "")} ` : "") +
570
- `RETURNING ${this.driver.dialect.quoteIdentifier(field)}`;
571
- const result = await this.driver.query(updateSql, [
572
- amount,
573
- ...filterParams,
574
- ]);
575
- return result.rows[0]?.[field] ?? 0;
576
- }
577
- /** Decrement a numeric field. Returns new value. */
578
- async decrement(field, amount = 1) {
579
- return this.increment(field, -amount);
580
- }
581
- /** Increment a field for all matching rows. Returns affected row count. */
582
- async incrementMany(field, amount = 1) {
583
- this.applyPendingScopes();
584
- const { sql: filterSql, params: filterParams } = this.buildFilter();
585
- const updateSql = `UPDATE ${this.driver.dialect.quoteIdentifier(this.table)} ` +
586
- `SET ${this.driver.dialect.quoteIdentifier(field)} = COALESCE(${this.driver.dialect.quoteIdentifier(field)}, 0) + $1` +
587
- (filterSql ? ` WHERE ${filterSql.replace("WHERE ", "")}` : "");
588
- const result = await this.driver.query(updateSql, [amount, ...filterParams]);
589
- return result.rowCount ?? 0;
590
- }
591
- /** Decrement a field for all matching rows. Returns affected row count. */
592
- async decrementMany(field, amount = 1) {
593
- return this.incrementMany(field, -amount);
594
- }
595
- // ─── Chunking / Pagination ───────────────────────────────────
596
- /**
597
- * Process results in memory-efficient chunks.
598
- *
599
- * @example
600
- * await User.query().chunk(100, async (rows, idx) => { ... })
601
- */
602
- async chunk(size, callback) {
603
- let chunkIndex = 0;
604
- let hasMore = true;
605
- while (hasMore) {
606
- const chunk = await this.clone()
607
- .skip(chunkIndex * size)
608
- .limit(size)
609
- .get();
610
- if (chunk.length === 0)
611
- break;
612
- const shouldContinue = await callback(chunk, chunkIndex);
613
- if (shouldContinue === false)
614
- break;
615
- hasMore = chunk.length === size;
616
- chunkIndex++;
617
- }
618
- }
619
- /** Page-based pagination. */
620
- async paginate(options) {
621
- const page = options?.page ?? 1;
622
- const limit = options?.limit ?? 10;
623
- const skip = (page - 1) * limit;
624
- const [data, total] = await Promise.all([
625
- this.clone().skip(skip).limit(limit).get(),
626
- this.count(),
627
- ]);
628
- return {
629
- data,
630
- pagination: {
631
- total,
632
- page,
633
- limit,
634
- pages: Math.ceil(total / limit),
635
- },
636
- };
637
- }
638
- /**
639
- * Set cursor pagination hints fluently.
640
- * The recorded values are picked up by `cursorPaginate()` when no explicit
641
- * options are passed.
642
- *
643
- * @example
644
- * User.query().cursor(lastId).cursorPaginate({ limit: 20 })
645
- */
646
- cursor(after, before) {
647
- this.addOperation("cursor", { after, before });
648
- return this;
649
- }
650
- /** Cursor-based pagination. */
651
- async cursorPaginate(options) {
652
- // Fall back to fluently-recorded cursor op if options.cursor not provided
653
- const cursorOp = this.getOps("cursor")[0];
654
- const recordedCursor = cursorOp?.data.after;
655
- const { limit = 10, cursor = recordedCursor, column = "id", direction = "next", } = options ?? {};
656
- if (cursor) {
657
- this.where(column, direction === "next" ? ">" : "<", cursor);
658
- }
659
- this.orderBy(column, direction === "next" ? "asc" : "desc");
660
- const results = await this.limit(limit + 1).get();
661
- const hasMore = results.length > limit;
662
- let data = hasMore ? results.slice(0, limit) : results;
663
- if (direction === "prev")
664
- data = data.reverse();
665
- let nextCursor;
666
- let prevCursor;
667
- let hasPrev = false;
668
- if (data.length > 0) {
669
- const firstItem = data[0][column];
670
- const lastItem = data[data.length - 1][column];
671
- if (direction === "next") {
672
- nextCursor = hasMore ? lastItem : undefined;
673
- if (cursor) {
674
- hasPrev = true;
675
- prevCursor = firstItem;
676
- }
677
- }
678
- else {
679
- prevCursor = hasMore ? firstItem : undefined;
680
- hasPrev = hasMore;
681
- if (cursor)
682
- nextCursor = lastItem;
683
- }
684
- }
685
- return { data, pagination: { hasMore, hasPrev, nextCursor, prevCursor } };
686
- }
687
- // ─── Mutation methods ────────────────────────────────────────
688
- /** Delete matching rows. Returns deleted count. */
689
- async delete() {
690
- this.applyPendingScopes();
691
- const { sql, params } = this.buildFilter();
692
- const deleteSql = `DELETE FROM ${this.driver.dialect.quoteIdentifier(this.table)} ${sql}`;
693
- const result = await this.driver.query(deleteSql, params);
694
- return result.rowCount ?? 0;
695
- }
696
- /** Delete the first matching row. */
697
- async deleteOne() {
698
- return this.limit(1).delete();
699
- }
700
- /** Update matching rows. */
701
- async update(fields) {
702
- this.applyPendingScopes();
703
- const result = await this.driver.updateMany(this.table, {}, { $set: fields });
704
- return result.modifiedCount;
705
- }
706
- /** Unset fields from matching rows. */
707
- async unset(...fields) {
708
- this.applyPendingScopes();
709
- const updateObj = {};
710
- for (const field of fields)
711
- updateObj[field] = 1;
712
- const result = await this.driver.updateMany(this.table, {}, { $unset: updateObj });
713
- return result.modifiedCount;
714
- }
715
- // ─── Inspection / Debugging ───────────────────────────────────
716
- /** Return the SQL + bindings without executing. */
717
- parse() {
718
- this.applyPendingScopes();
719
- const parser = new postgresQueryParser.PostgresQueryParser({
720
- table: this.table,
721
- operations: toParserOps(this.operations),
722
- });
723
- return parser.parse();
724
- }
725
- /** Formatted SQL string (for logging/debugging). */
726
- pretty() {
727
- const { query = "", bindings } = this.parse();
728
- return `${query}\n-- Bindings: ${JSON.stringify(bindings ?? [])}`;
729
- }
730
- /** Run EXPLAIN ANALYZE on the query. */
731
- async explain() {
732
- const { query = "", bindings = [] } = this.parse();
733
- const result = await this.driver.query(`EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) ${query}`, bindings);
734
- return result.rows;
735
- }
736
- // ─── Utility ──────────────────────────────────────────────────
737
- /** Extend the builder with a driver-specific extension. */
738
- extend(extension, ..._args) {
739
- throw new Error(`Extension "${extension}" is not supported by PostgresQueryBuilder`);
740
- }
741
- /** Pluck scalar values for a single field (alias for pluck). */
742
- async pluckOne(field) {
743
- const results = await this.select([field]).get();
744
- return results.map((row) => row[field]);
745
- }
746
- // ============================================================================
747
- // JOIN RELATIONS — INTERNAL PIPELINE
748
- // ============================================================================
749
- /**
750
- * Before `get()` runs the parser, consume any joinWith ops recorded by the base
751
- * class and expand them into the joinRelations Map.
752
- */
753
- _processJoinWithOps() {
754
- const joinWithOps = this.operations.filter((op) => op.type === "joinWith");
755
- if (joinWithOps.length === 0)
756
- return;
757
- // Remove joinWith ops from main operations — they are consumed here
758
- this.operations = this.operations.filter((op) => op.type !== "joinWith");
759
- for (const op of joinWithOps) {
760
- const constraints = op.data.constraints;
761
- for (const [path, constraint] of Object.entries(constraints)) {
762
- // Re-delegate to the extended joinWith implementation
763
- if (!constraint || constraint === "") {
764
- this.joinWith(path);
765
- }
766
- else {
767
- this.joinWith({ [path]: constraint });
768
- }
769
- }
770
- }
771
- }
772
- /**
773
- * Translate each entry in `joinRelations` into actual JOIN + selectRelatedColumns operations.
774
- */
775
- applyJoinRelations() {
776
- if (this.joinRelations.size === 0)
777
- return;
778
- for (const [path, config] of this.joinRelations) {
779
- const RelatedModel = typeof config.model === "string"
780
- ? registerModel.getModelFromRegistry(config.model)
781
- : config.model;
782
- if (!RelatedModel) {
783
- throw new Error(`Relation model not found for ${path}`);
784
- }
785
- const relatedTable = RelatedModel.table;
786
- const alias = config.alias;
787
- const parentTable = config.parentPath
788
- ? this.joinRelations.get(config.parentPath).alias
789
- : this.table;
790
- const parentDefTable = config.parentModel?.table ?? this.table;
791
- let localField;
792
- let foreignField;
793
- if (config.type === "belongsTo") {
794
- localField = config.foreignKey ?? `${config.relationName}Id`;
795
- foreignField = config.ownerKey ?? "id";
796
- }
797
- else {
798
- localField = config.localKey ?? "id";
799
- foreignField = config.foreignKey ?? `${parentDefTable.slice(0, -1)}Id`;
800
- }
801
- // hasMany uses a correlated subquery in SELECT (no JOIN) to avoid row explosion
802
- if (config.type !== "hasMany") {
803
- this.addOperation("leftJoin", {
804
- table: relatedTable,
805
- alias,
806
- localField: `${parentTable}.${localField}`,
807
- foreignField,
808
- });
809
- }
810
- this.addOperation("selectRelatedColumns", {
811
- alias,
812
- relationName: config.relationName,
813
- path,
814
- table: relatedTable,
815
- select: config.select,
816
- type: config.type,
817
- foreignKey: foreignField,
818
- localKey: localField,
819
- parentTable,
820
- constraintOps: config.constraintOps, // passed through to parser
821
- });
822
- }
823
- }
824
- /**
825
- * Extract per-relation data from raw DB rows (before hydration).
826
- * Returns a Map of row index → nested relation data tree.
827
- */
828
- extractJoinedRelationData(records) {
829
- const result = new Map();
830
- if (this.joinRelations.size === 0)
831
- return result;
832
- records.forEach((record, index) => {
833
- const relationData = {};
834
- // Process shallower paths first so parents exist before children
835
- const sortedPaths = Array.from(this.joinRelations.keys()).sort((a, b) => a.split(".").length - b.split(".").length);
836
- for (const path of sortedPaths) {
837
- const config = this.joinRelations.get(path);
838
- const columnName = config.alias;
839
- const relatedData = record[columnName];
840
- delete record[columnName];
841
- const parsedData = relatedData !== null &&
842
- !(typeof relatedData === "object" &&
843
- Object.values(relatedData).every((v) => v === null))
844
- ? relatedData
845
- : null;
846
- const parts = path.split(".");
847
- const lastPart = parts.pop();
848
- let current = relationData;
849
- for (const part of parts) {
850
- if (!current[part])
851
- current[part] = {};
852
- current = current[part];
853
- }
854
- current[lastPart] = parsedData;
855
- }
856
- result.set(index, relationData);
857
- });
858
- return result;
859
- }
860
- /**
861
- * Attach extracted relation data to hydrated model instances.
862
- */
863
- attachJoinedRelations(records, joinedData) {
864
- if (this.joinRelations.size === 0)
865
- return;
866
- const attachNested = (model, dataTree, currentPath = "") => {
867
- if (!dataTree || typeof dataTree !== "object")
868
- return;
869
- for (const [key, data] of Object.entries(dataTree)) {
870
- const path = currentPath ? `${currentPath}.${key}` : key;
871
- const config = this.joinRelations.get(path);
872
- if (!config)
873
- continue;
874
- const m = model;
875
- if (data === null) {
876
- m[key] = null;
877
- m.loadedRelations?.set(key, null);
878
- continue;
879
- }
880
- const RelatedModel = registerModel.resolveModelClass(config.model);
881
- if (!RelatedModel)
882
- continue;
883
- const childKeys = Array.from(this.joinRelations.keys())
884
- .filter((p) => p.startsWith(`${path}.`))
885
- .map((p) => p.split(".")[path.split(".").length]);
886
- if (config.type === "hasMany") {
887
- const rows = Array.isArray(data) ? data : [];
888
- const instances = rows.map((row) => {
889
- const rowData = { ...row };
890
- for (const childKey of childKeys)
891
- delete rowData[childKey];
892
- return RelatedModel.hydrate(rowData);
893
- });
894
- m[key] = instances;
895
- m.loadedRelations?.set(key, instances);
896
- }
897
- else {
898
- const modelData = { ...data };
899
- for (const childKey of childKeys)
900
- delete modelData[childKey];
901
- const relatedInstance = RelatedModel.hydrate(modelData);
902
- attachNested(relatedInstance, data, path);
903
- m[key] = relatedInstance;
904
- m.loadedRelations?.set(key, relatedInstance);
905
- }
906
- }
907
- };
908
- records.forEach((model, index) => {
909
- const relationData = joinedData.get(index);
910
- if (relationData)
911
- attachNested(model, relationData);
912
- });
913
- }
914
- // ============================================================================
915
- // INTERNAL HELPERS
916
- // ============================================================================
917
- /**
918
- * Build a WHERE-only SQL fragment from `where*` operations on the current builder.
919
- * Used by DELETE / UPDATE / increment paths.
920
- */
921
- buildFilter() {
922
- const whereOps = this.operations.filter((op) => op.type.includes("where") || op.type.includes("Where"));
923
- if (whereOps.length === 0)
924
- return { sql: "", params: [] };
925
- const parser = new postgresQueryParser.PostgresQueryParser({
926
- table: this.table,
927
- operations: toParserOps(whereOps),
928
- });
929
- const { query = "", bindings = [] } = parser.parse();
930
- const whereMatch = query.match(/WHERE .+$/);
931
- return { sql: whereMatch ? whereMatch[0] : "", params: bindings };
932
- }
933
- }exports.PostgresQueryBuilder=PostgresQueryBuilder;//# sourceMappingURL=postgres-query-builder.js.map