@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration-driver.mjs","names":[],"sources":["../../../../../../../@warlock.js/cascade/src/drivers/postgres/postgres-migration-driver.ts"],"sourcesContent":["/**\r\n * PostgreSQL Migration Driver\r\n *\r\n * Implements the MigrationDriverContract for PostgreSQL DDL operations.\r\n * Provides methods for creating/dropping tables, columns, indexes,\r\n * and constraints.\r\n *\r\n * @module cascade/drivers/postgres\r\n */\r\n\r\nimport { databaseTransactionContext } from \"../../context/database-transaction-context\";\r\nimport type {\r\n ColumnDefinition,\r\n ColumnType,\r\n ForeignKeyDefinition,\r\n FullTextIndexOptions,\r\n GeoIndexOptions,\r\n IndexDefinition,\r\n MigrationDriverContract,\r\n TableIndexInformation,\r\n VectorIndexOptions,\r\n} from \"../../contracts/migration-driver.contract\";\r\nimport type { MigrationDefaults, UuidStrategy } from \"../../types\";\r\nimport type { PostgresDriver } from \"./postgres-driver\";\r\n\r\n/**\r\n * PostgreSQL Migration Driver.\r\n *\r\n * Handles database schema operations for PostgreSQL including:\r\n * - Table creation and deletion\r\n * - Column management\r\n * - Index creation (B-tree, GIN, GiST, etc.)\r\n * - Constraint management (foreign keys, unique, etc.)\r\n *\r\n * @example\r\n * ```typescript\r\n * const migrationDriver = driver.migrationDriver();\r\n *\r\n * // Create a table\r\n * await migrationDriver.createTable('users');\r\n *\r\n * // Add columns\r\n * await migrationDriver.addColumn('users', {\r\n * name: 'email',\r\n * type: 'string',\r\n * length: 255,\r\n * nullable: false\r\n * });\r\n *\r\n * // Create unique index\r\n * await migrationDriver.createUniqueIndex('users', ['email']);\r\n * ```\r\n */\r\nexport class PostgresMigrationDriver implements MigrationDriverContract {\r\n /**\r\n * Active transaction client (if any).\r\n */\r\n private get transactionClient(): unknown {\r\n return databaseTransactionContext.getSession();\r\n }\r\n\r\n /**\r\n * Create a new migration driver.\r\n *\r\n * @param driver - The PostgreSQL driver instance\r\n */\r\n public constructor(public readonly driver: PostgresDriver) {}\r\n\r\n // ============================================================================\r\n // TABLE OPERATIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Create a new table with a default id column.\r\n *\r\n * @param table - Table name\r\n */\r\n public async createTable(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n // Create empty table - columns are added via addColumn operations\r\n await this.execute(`CREATE TABLE ${quotedTable} ()`);\r\n }\r\n\r\n /**\r\n * Create table if it doesn't exist.\r\n *\r\n * @param table - Table name\r\n */\r\n public async createTableIfNotExists(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n // Create empty table if not exists - columns are added via addColumn operations\r\n await this.execute(`CREATE TABLE IF NOT EXISTS ${quotedTable} ()`);\r\n }\r\n\r\n /**\r\n * Drop an existing table.\r\n *\r\n * @param table - Table name\r\n */\r\n public async dropTable(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n await this.execute(`DROP TABLE ${quotedTable} CASCADE`);\r\n }\r\n\r\n /**\r\n * Drop table if it exists.\r\n *\r\n * @param table - Table name\r\n */\r\n public async dropTableIfExists(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n await this.execute(`DROP TABLE IF EXISTS ${quotedTable} CASCADE`);\r\n }\r\n\r\n /**\r\n * Rename a table.\r\n *\r\n * @param from - Current table name\r\n * @param to - New table name\r\n */\r\n public async renameTable(from: string, to: string): Promise<void> {\r\n const quotedFrom = this.driver.dialect.quoteIdentifier(from);\r\n const quotedTo = this.driver.dialect.quoteIdentifier(to);\r\n await this.execute(`ALTER TABLE ${quotedFrom} RENAME TO ${quotedTo}`);\r\n }\r\n\r\n /**\r\n * Truncate a table — remove all rows efficiently.\r\n *\r\n * @param table - Table name\r\n */\r\n public async truncateTable(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n await this.execute(`TRUNCATE TABLE ${quotedTable}`);\r\n }\r\n\r\n /**\r\n * Check if a table exists.\r\n *\r\n * @param table - Table name\r\n * @returns Whether the table exists\r\n */\r\n public async tableExists(table: string): Promise<boolean> {\r\n const result = await this.driver.query<{ exists: boolean }>(\r\n `SELECT EXISTS (\r\n SELECT FROM information_schema.tables\r\n WHERE table_schema = 'public'\r\n AND table_name = $1\r\n )`,\r\n [table],\r\n );\r\n return result.rows[0]?.exists ?? false;\r\n }\r\n\r\n /**\r\n * List all columns in a table.\r\n *\r\n * @param table - Table name\r\n * @returns Array of column definitions\r\n */\r\n public async listColumns(table: string): Promise<ColumnDefinition[]> {\r\n const result = await this.driver.query<{\r\n column_name: string;\r\n data_type: string;\r\n character_maximum_length: number | null;\r\n numeric_precision: number | null;\r\n numeric_scale: number | null;\r\n is_nullable: string;\r\n column_default: string | null;\r\n }>(\r\n `SELECT\r\n column_name,\r\n data_type,\r\n character_maximum_length,\r\n numeric_precision,\r\n numeric_scale,\r\n is_nullable,\r\n column_default\r\n FROM information_schema.columns\r\n WHERE table_schema = 'public'\r\n AND table_name = $1\r\n ORDER BY ordinal_position`,\r\n [table],\r\n );\r\n\r\n return result.rows.map((row) => ({\r\n name: row.column_name,\r\n type: this.mapPostgresTypeToColumnType(row.data_type),\r\n length: row.character_maximum_length ?? undefined,\r\n precision: row.numeric_precision ?? undefined,\r\n scale: row.numeric_scale ?? undefined,\r\n nullable: row.is_nullable === \"YES\",\r\n defaultValue: row.column_default ?? undefined,\r\n }));\r\n }\r\n\r\n /**\r\n * List all tables in the current database.\r\n *\r\n * @returns Array of table names\r\n */\r\n public async listTables(): Promise<string[]> {\r\n const result = await this.driver.query<{ table_name: string }>(\r\n `SELECT table_name\r\n FROM information_schema.tables\r\n WHERE table_schema = 'public'\r\n ORDER BY table_name`,\r\n );\r\n\r\n return result.rows.map((row) => row.table_name);\r\n }\r\n\r\n /**\r\n * Ensure the migrations tracking table exists.\r\n *\r\n * Creates the table with proper schema if it doesn't exist.\r\n *\r\n * @param tableName - Name of the migrations table\r\n */\r\n public async ensureMigrationsTable(tableName: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(tableName);\r\n\r\n await this.execute(`\r\n CREATE TABLE IF NOT EXISTS ${quotedTable} (\r\n \"id\" SERIAL PRIMARY KEY,\r\n \"name\" VARCHAR(255) NOT NULL UNIQUE,\r\n \"batch\" INTEGER NOT NULL,\r\n \"executedAt\" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),\r\n \"createdAt\" TIMESTAMP WITH TIME ZONE\r\n )\r\n `);\r\n }\r\n\r\n // ============================================================================\r\n // COLUMN OPERATIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Add a column to an existing table.\r\n *\r\n * @param table - Table name\r\n * @param column - Column definition\r\n */\r\n public async addColumn(table: string, column: ColumnDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column.name);\r\n\r\n // For auto-increment integers, use SERIAL/BIGSERIAL instead of INTEGER/BIGINT\r\n let sqlType: string;\r\n if (column.autoIncrement) {\r\n if (column.type === \"bigInteger\") {\r\n sqlType = \"BIGSERIAL\";\r\n } else {\r\n sqlType = \"SERIAL\";\r\n }\r\n } else {\r\n sqlType = this.driver.dialect.getSqlType(column.type, {\r\n length: column.length,\r\n precision: column.precision,\r\n scale: column.scale,\r\n dimensions: column.dimensions,\r\n });\r\n }\r\n\r\n let sql = `ALTER TABLE ${quotedTable} ADD COLUMN ${quotedColumn} ${sqlType}`;\r\n\r\n // Handle generated columns\r\n if (column.generated) {\r\n sql += ` GENERATED ALWAYS AS (${column.generated.expression})`;\r\n if (column.generated.stored) {\r\n sql += \" STORED\";\r\n }\r\n // PostgreSQL only supports STORED, not VIRTUAL\r\n // If virtual is requested, it's simply ignored (PostgreSQL doesn't support it)\r\n } else {\r\n // SERIAL/BIGSERIAL are always NOT NULL, so skip for those\r\n if (!column.autoIncrement && column.nullable === false) {\r\n sql += \" NOT NULL\";\r\n }\r\n\r\n if (column.defaultValue !== undefined) {\r\n // Check for special CURRENT_TIMESTAMP marker\r\n if (\r\n typeof column.defaultValue === \"object\" &&\r\n column.defaultValue !== null &&\r\n (column.defaultValue as any).__type === \"CURRENT_TIMESTAMP\"\r\n ) {\r\n sql += \" DEFAULT NOW()\";\r\n } else if (column.isRawDefault === false) {\r\n // Explicit string literal - escape it properly\r\n const escaped = String(column.defaultValue).replace(/'/g, \"''\");\r\n sql += ` DEFAULT '${escaped}'`;\r\n } else if (typeof column.defaultValue === \"boolean\") {\r\n // Boolean values\r\n sql += ` DEFAULT ${column.defaultValue ? \"TRUE\" : \"FALSE\"}`;\r\n } else if (typeof column.defaultValue === \"number\") {\r\n // Numeric values\r\n sql += ` DEFAULT ${column.defaultValue}`;\r\n } else {\r\n // Raw SQL expression (default behavior when isRawDefault is true or undefined)\r\n sql += ` DEFAULT ${column.defaultValue}`;\r\n }\r\n }\r\n\r\n // Handle primary key\r\n if (column.primary) {\r\n sql += \" PRIMARY KEY\";\r\n }\r\n\r\n // Handle unique constraint\r\n if (column.unique) {\r\n sql += \" UNIQUE\";\r\n }\r\n }\r\n\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop a column from a table.\r\n *\r\n * @param table - Table name\r\n * @param column - Column name\r\n */\r\n public async dropColumn(table: string, column: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP COLUMN ${quotedColumn}`);\r\n }\r\n\r\n /**\r\n * Drop multiple columns from a table.\r\n *\r\n * @param table - Table name\r\n * @param columns - Column names\r\n */\r\n public async dropColumns(table: string, columns: string[]): Promise<void> {\r\n for (const column of columns) {\r\n await this.dropColumn(table, column);\r\n }\r\n }\r\n\r\n /**\r\n * Rename a column.\r\n *\r\n * @param table - Table name\r\n * @param from - Current column name\r\n * @param to - New column name\r\n */\r\n public async renameColumn(table: string, from: string, to: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedFrom = this.driver.dialect.quoteIdentifier(from);\r\n const quotedTo = this.driver.dialect.quoteIdentifier(to);\r\n await this.execute(`ALTER TABLE ${quotedTable} RENAME COLUMN ${quotedFrom} TO ${quotedTo}`);\r\n }\r\n\r\n /**\r\n * Modify an existing column.\r\n *\r\n * @param table - Table name\r\n * @param column - New column definition\r\n */\r\n public async modifyColumn(table: string, column: ColumnDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column.name);\r\n const sqlType = this.driver.dialect.getSqlType(column.type, {\r\n length: column.length,\r\n precision: column.precision,\r\n scale: column.scale,\r\n dimensions: column.dimensions,\r\n });\r\n\r\n // PostgreSQL requires separate ALTER statements for type and nullability\r\n await this.execute(`ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} TYPE ${sqlType}`);\r\n\r\n if (column.nullable === false) {\r\n await this.execute(`ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} SET NOT NULL`);\r\n } else if (column.nullable === true) {\r\n await this.execute(`ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} DROP NOT NULL`);\r\n }\r\n\r\n if (column.defaultValue !== undefined) {\r\n let defaultVal: string;\r\n\r\n // Check for special CURRENT_TIMESTAMP marker\r\n if (\r\n typeof column.defaultValue === \"object\" &&\r\n column.defaultValue !== null &&\r\n (column.defaultValue as any).__type === \"CURRENT_TIMESTAMP\"\r\n ) {\r\n defaultVal = \"NOW()\";\r\n } else if (typeof column.defaultValue === \"string\") {\r\n defaultVal = `'${column.defaultValue}'`;\r\n } else {\r\n defaultVal = String(column.defaultValue);\r\n }\r\n\r\n await this.execute(\r\n `ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} SET DEFAULT ${defaultVal}`,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Create standard timestamp columns (created_at, updated_at).\r\n *\r\n * PostgreSQL implementation creates TIMESTAMPTZ columns with NOW() defaults.\r\n *\r\n * @param table - Table name\r\n */\r\n public async createTimestampColumns(table: string): Promise<void> {\r\n await this.addColumn(table, {\r\n name: \"created_at\",\r\n type: \"timestamp\",\r\n nullable: false,\r\n defaultValue: \"NOW()\",\r\n isRawDefault: true,\r\n });\r\n\r\n await this.addColumn(table, {\r\n name: \"updated_at\",\r\n type: \"timestamp\",\r\n nullable: false,\r\n defaultValue: \"NOW()\",\r\n isRawDefault: true,\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // INDEX OPERATIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Create an index on one or more columns.\r\n *\r\n * Supports:\r\n * - Regular column indexes\r\n * - Expression-based indexes (e.g., `lower(email)`)\r\n * - Covering indexes (INCLUDE clause)\r\n * - Concurrent index creation (CONCURRENTLY keyword)\r\n *\r\n * @param table - Table name\r\n * @param index - Index definition\r\n */\r\n public async createIndex(table: string, index: IndexDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const indexName = index.name ?? `idx_${table}_${index.columns.join(\"_\")}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n const uniqueKeyword = index.unique ? \"UNIQUE \" : \"\";\r\n const concurrentlyKeyword = index.concurrently ? \"CONCURRENTLY \" : \"\";\r\n\r\n let columnsPart: string;\r\n\r\n // Handle expression-based indexes\r\n if (index.expressions && index.expressions.length > 0) {\r\n // Wrap each expression in parentheses\r\n columnsPart = index.expressions.map((expr) => `(${expr})`).join(\", \");\r\n } else {\r\n // Regular column indexes\r\n const columns = index.columns.map((col, i) => {\r\n const quotedCol = this.driver.dialect.quoteIdentifier(col);\r\n const direction = index.directions?.[i]?.toUpperCase() ?? \"\";\r\n return direction ? `${quotedCol} ${direction}` : quotedCol;\r\n });\r\n columnsPart = columns.join(\", \");\r\n }\r\n\r\n let sql = `CREATE ${uniqueKeyword}INDEX ${concurrentlyKeyword}${quotedIndexName} ON ${quotedTable} (${columnsPart})`;\r\n\r\n // Add INCLUDE clause for covering indexes\r\n if (index.include && index.include.length > 0) {\r\n const includeCols = index.include\r\n .map((col) => this.driver.dialect.quoteIdentifier(col))\r\n .join(\", \");\r\n sql += ` INCLUDE (${includeCols})`;\r\n }\r\n\r\n // Add partial index condition\r\n if (index.where && Object.keys(index.where).length > 0) {\r\n const conditions = Object.entries(index.where)\r\n .map(([key, value]) => {\r\n const quotedKey = this.driver.dialect.quoteIdentifier(key);\r\n return typeof value === \"string\"\r\n ? `${quotedKey} = '${value}'`\r\n : `${quotedKey} = ${value}`;\r\n })\r\n .join(\" AND \");\r\n sql += ` WHERE ${conditions}`;\r\n }\r\n\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop an index.\r\n *\r\n * @param table - Table name\r\n * @param indexNameOrColumns - Index name or columns\r\n */\r\n public async dropIndex(table: string, indexNameOrColumns: string | string[]): Promise<void> {\r\n let indexName: string;\r\n\r\n if (typeof indexNameOrColumns === \"string\") {\r\n indexName = indexNameOrColumns;\r\n } else {\r\n indexName = `idx_${table}_${indexNameOrColumns.join(\"_\")}`;\r\n }\r\n\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n await this.execute(`DROP INDEX IF EXISTS ${quotedIndexName}`);\r\n }\r\n\r\n /**\r\n * Create a unique index.\r\n *\r\n * @param table - Table name\r\n * @param columns - Columns to include\r\n * @param name - Optional index name\r\n */\r\n public async createUniqueIndex(table: string, columns: string[], name?: string): Promise<void> {\r\n await this.createIndex(table, { columns, unique: true, name });\r\n }\r\n\r\n /**\r\n * Drop a unique index.\r\n *\r\n * @param table - Table name\r\n * @param columns - Columns in the index\r\n */\r\n public async dropUniqueIndex(table: string, columns: string[]): Promise<void> {\r\n await this.dropIndex(table, columns);\r\n }\r\n\r\n // ============================================================================\r\n // SPECIALIZED INDEXES\r\n // ============================================================================\r\n\r\n /**\r\n * Create a full-text search index using GIN.\r\n *\r\n * @param table - Table name\r\n * @param columns - Columns to index\r\n * @param options - Full-text options\r\n */\r\n public async createFullTextIndex(\r\n table: string,\r\n columns: string[],\r\n options?: FullTextIndexOptions,\r\n ): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const indexName = options?.name ?? `idx_${table}_fulltext_${columns.join(\"_\")}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n const language = options?.language ?? \"english\";\r\n\r\n const tsvectors = columns.map((col) => {\r\n const weight = options?.weights?.[col] ?? \"A\";\r\n return `setweight(to_tsvector('${language}', COALESCE(${this.driver.dialect.quoteIdentifier(col)}, '')), '${weight}')`;\r\n });\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING GIN ((${tsvectors.join(\" || \")}))`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop a full-text search index.\r\n *\r\n * @param table - Table name\r\n * @param name - Index name\r\n */\r\n public async dropFullTextIndex(table: string, name: string): Promise<void> {\r\n await this.dropIndex(table, name);\r\n }\r\n\r\n /**\r\n * Create a geo-spatial index using GiST.\r\n *\r\n * @param table - Table name\r\n * @param column - Geo column\r\n * @param options - Geo index options\r\n */\r\n public async createGeoIndex(\r\n table: string,\r\n column: string,\r\n options?: GeoIndexOptions,\r\n ): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n const indexName = options?.name ?? `idx_${table}_geo_${column}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING GIST (${quotedColumn})`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop a geo-spatial index.\r\n *\r\n * @param table - Table name\r\n * @param column - Geo column\r\n */\r\n public async dropGeoIndex(table: string, column: string): Promise<void> {\r\n await this.dropIndex(table, `idx_${table}_geo_${column}`);\r\n }\r\n\r\n /**\r\n * Create a vector search index (requires pgvector extension).\r\n *\r\n * @param table - Table name\r\n * @param column - Vector column\r\n * @param options - Vector index options\r\n */\r\n public async createVectorIndex(\r\n table: string,\r\n column: string,\r\n options: VectorIndexOptions,\r\n ): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n const indexName = options.name ?? `idx_${table}_vector_${column}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n\r\n // Map similarity to pgvector operator class\r\n const opClass =\r\n options.similarity === \"euclidean\"\r\n ? \"vector_l2_ops\"\r\n : options.similarity === \"dotProduct\"\r\n ? \"vector_ip_ops\"\r\n : \"vector_cosine_ops\";\r\n\r\n const lists = options.lists ?? 100;\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING ivfflat (${quotedColumn} ${opClass}) WITH (lists = ${lists})`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop a vector search index.\r\n *\r\n * @param table - Table name\r\n * @param column - Vector column\r\n */\r\n public async dropVectorIndex(table: string, column: string): Promise<void> {\r\n await this.dropIndex(table, `idx_${table}_vector_${column}`);\r\n }\r\n\r\n /**\r\n * Create a TTL index (not natively supported in PostgreSQL).\r\n *\r\n * Note: PostgreSQL doesn't have native TTL indexes like MongoDB.\r\n * This creates a partial index and requires a scheduled job for cleanup.\r\n *\r\n * @param table - Table name\r\n * @param column - Date column\r\n * @param expireAfterSeconds - Expiration time in seconds\r\n */\r\n public async createTTLIndex(\r\n table: string,\r\n column: string,\r\n expireAfterSeconds: number,\r\n ): Promise<void> {\r\n // Create a partial index for expired rows (for efficient cleanup queries)\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n const indexName = `idx_${table}_ttl_${column}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} (${quotedColumn}) WHERE ${quotedColumn} < NOW() - INTERVAL '${expireAfterSeconds} seconds'`,\r\n );\r\n\r\n // Note: User must set up a scheduled job (pg_cron, etc.) to:\r\n // DELETE FROM table WHERE column < NOW() - INTERVAL 'X seconds'\r\n }\r\n\r\n /**\r\n * Drop a TTL index.\r\n *\r\n * @param table - Table name\r\n * @param column - Column with TTL index\r\n */\r\n public async dropTTLIndex(table: string, column: string): Promise<void> {\r\n await this.dropIndex(table, `idx_${table}_ttl_${column}`);\r\n }\r\n\r\n /**\r\n * List all indexes on a table.\r\n *\r\n * @param table - Table name\r\n * @returns Array of index metadata\r\n */\r\n public async listIndexes(table: string): Promise<TableIndexInformation[]> {\r\n const result = await this.driver.query<{ indexname: string; indexdef: string }>(\r\n `SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = 'public' AND tablename = $1`,\r\n [table],\r\n );\r\n\r\n return result.rows.map((row) => {\r\n const isUnique = row.indexdef.includes(\"UNIQUE\");\r\n const isPrimary = row.indexname.endsWith(\"_pkey\");\r\n const columnsMatch = row.indexdef.match(/\\(([^)]+)\\)/);\r\n const columns = columnsMatch\r\n ? columnsMatch[1].split(\",\").map((c) => c.trim().replace(/\"/g, \"\"))\r\n : [];\r\n\r\n let type = \"btree\";\r\n if (row.indexdef.includes(\"USING GIN\")) type = \"gin\";\r\n else if (row.indexdef.includes(\"USING GIST\")) type = \"gist\";\r\n else if (row.indexdef.includes(\"USING HASH\")) type = \"hash\";\r\n else if (row.indexdef.includes(\"USING ivfflat\")) type = \"ivfflat\";\r\n\r\n return {\r\n name: row.indexname,\r\n columns,\r\n type,\r\n unique: isUnique || isPrimary,\r\n partial: row.indexdef.includes(\"WHERE\"),\r\n options: { primary: isPrimary, definition: row.indexdef },\r\n };\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // EXTENSIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Check if a PostgreSQL extension is available on the database server.\r\n *\r\n * @param extension - Extension name (e.g., \"vector\")\r\n */\r\n public async isExtensionAvailable(extension: string): Promise<boolean> {\r\n try {\r\n const result = await this.driver.query<{ name: string }>(\r\n `SELECT name FROM pg_available_extensions WHERE name = $1`,\r\n [extension],\r\n );\r\n\r\n return result?.rows?.length > 0;\r\n } catch {\r\n // If we can't check (e.g., permissions issue or pg_available_extensions not accessible),\r\n // we return true to avoid false positives. Execution will just proceed and fail naturally if it's missing.\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Get the official documentation or installation URL for a PostgreSQL extension.\r\n *\r\n * @param extension - Extension name\r\n */\r\n public getExtensionDocsUrl(extension: string): string | undefined {\r\n const guideUrls: Record<string, string> = {\r\n vector: \"https://github.com/pgvector/pgvector#installation\",\r\n postgis: \"https://postgis.net/documentation/getting_started/\",\r\n pg_trgm: \"https://www.postgresql.org/docs/current/pgtrgm.html\",\r\n uuid_ossp: \"https://www.postgresql.org/docs/current/uuid-ossp.html\",\r\n };\r\n\r\n return guideUrls[extension] ?? `https://www.postgresql.org/docs/current/${extension}.html`;\r\n }\r\n\r\n // ============================================================================\r\n // CONSTRAINTS\r\n // ============================================================================\r\n\r\n /**\r\n * Add a foreign key constraint.\r\n *\r\n * @param table - Table name\r\n * @param foreignKey - Foreign key definition\r\n */\r\n public async addForeignKey(table: string, foreignKey: ForeignKeyDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(foreignKey.column);\r\n const quotedRefTable = this.driver.dialect.quoteIdentifier(foreignKey.referencesTable);\r\n const quotedRefColumn = this.driver.dialect.quoteIdentifier(foreignKey.referencesColumn);\r\n\r\n const constraintName =\r\n foreignKey.name ?? `fk_${table}_${foreignKey.column}_${foreignKey.referencesTable}`;\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(constraintName);\r\n\r\n let sql = `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedConstraint} FOREIGN KEY (${quotedColumn}) REFERENCES ${quotedRefTable} (${quotedRefColumn})`;\r\n\r\n if (foreignKey.onDelete) {\r\n sql += ` ON DELETE ${this.mapForeignKeyAction(foreignKey.onDelete)}`;\r\n }\r\n\r\n if (foreignKey.onUpdate) {\r\n sql += ` ON UPDATE ${this.mapForeignKeyAction(foreignKey.onUpdate)}`;\r\n }\r\n\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop a foreign key constraint.\r\n *\r\n * @param table - Table name\r\n * @param name - Constraint name\r\n */\r\n public async dropForeignKey(table: string, name: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(name);\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedConstraint}`);\r\n }\r\n\r\n /**\r\n * Add a primary key constraint.\r\n *\r\n * @param table - Table name\r\n * @param columns - Primary key columns\r\n */\r\n public async addPrimaryKey(table: string, columns: string[]): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumns = columns.map((c) => this.driver.dialect.quoteIdentifier(c)).join(\", \");\r\n const constraintName = `pk_${table}`;\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(constraintName);\r\n\r\n await this.execute(\r\n `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedConstraint} PRIMARY KEY (${quotedColumns})`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop the primary key constraint.\r\n *\r\n * @param table - Table name\r\n */\r\n public async dropPrimaryKey(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const constraintName = `pk_${table}`;\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(constraintName);\r\n\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedConstraint}`);\r\n }\r\n\r\n /**\r\n * Add a CHECK constraint.\r\n *\r\n * @param table - Table name\r\n * @param name - Constraint name\r\n * @param expression - SQL CHECK expression\r\n */\r\n public async addCheck(table: string, name: string, expression: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedName = this.driver.dialect.quoteIdentifier(name);\r\n const sql = `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedName} CHECK (${expression})`;\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop a CHECK constraint.\r\n *\r\n * @param table - Table name\r\n * @param name - Constraint name\r\n */\r\n public async dropCheck(table: string, name: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedName = this.driver.dialect.quoteIdentifier(name);\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedName}`);\r\n }\r\n\r\n // ============================================================================\r\n // SCHEMA VALIDATION (NOT APPLICABLE FOR PostgreSQL)\r\n // ============================================================================\r\n\r\n /**\r\n * Set schema validation (no-op for PostgreSQL).\r\n *\r\n * PostgreSQL uses column constraints instead.\r\n */\r\n public async setSchemaValidation(_table: string, _schema: object): Promise<void> {\r\n // No-op: PostgreSQL doesn't have MongoDB-style schema validation\r\n // Use CHECK constraints instead\r\n }\r\n\r\n /**\r\n * Remove schema validation (no-op for PostgreSQL).\r\n */\r\n public async removeSchemaValidation(_table: string): Promise<void> {\r\n // No-op\r\n }\r\n\r\n // ============================================================================\r\n // TRANSACTIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Begin a transaction.\r\n */\r\n public async beginTransaction(): Promise<void> {\r\n await this.execute(\"BEGIN\");\r\n }\r\n\r\n /**\r\n * Commit the current transaction.\r\n */\r\n public async commit(): Promise<void> {\r\n await this.execute(\"COMMIT\");\r\n }\r\n\r\n /**\r\n * Rollback the current transaction.\r\n */\r\n public async rollback(): Promise<void> {\r\n await this.execute(\"ROLLBACK\");\r\n }\r\n\r\n /**\r\n * Whether transactions are supported.\r\n */\r\n public supportsTransactions(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Get the default transactional behavior for PostgreSQL.\r\n *\r\n * PostgreSQL supports transactional DDL operations, so migrations\r\n * are wrapped in transactions by default for atomicity and safety.\r\n *\r\n * @returns true (PostgreSQL DDL is transactional)\r\n */\r\n public getDefaultTransactional(): boolean {\r\n return true;\r\n }\r\n\r\n // ============================================================================\r\n // DEFAULTS\r\n // ============================================================================\r\n\r\n /**\r\n * Get the default UUID generation expression for PostgreSQL.\r\n *\r\n * Resolution order:\r\n * 1. `migrationDefaults.uuidExpression` → raw expression (escape hatch)\r\n * 2. `migrationDefaults.uuidStrategy` → mapped to PG function\r\n * 3. Fallback → `gen_random_uuid()` (v4, PG 13+)\r\n *\r\n * @param migrationDefaults - Optional overrides from DataSource config\r\n * @returns PostgreSQL SQL expression for UUID generation\r\n *\r\n * @example\r\n * ```typescript\r\n * driver.getUuidDefault(); // \"gen_random_uuid()\"\r\n * driver.getUuidDefault({ uuidStrategy: \"v7\" }); // \"uuidv7()\"\r\n * driver.getUuidDefault({ uuidExpression: \"uuid_generate_v1mc()\" }); // \"uuid_generate_v1mc()\"\r\n * ```\r\n */\r\n public getUuidDefault(migrationDefaults?: MigrationDefaults): string {\r\n // Escape hatch: raw expression takes highest precedence\r\n if (migrationDefaults?.uuidExpression) {\r\n return migrationDefaults.uuidExpression;\r\n }\r\n\r\n const strategy = migrationDefaults?.uuidStrategy ?? \"v4\";\r\n\r\n const strategyMap: Record<UuidStrategy, string> = {\r\n v4: \"gen_random_uuid()\",\r\n v7: \"uuidv7()\",\r\n };\r\n\r\n return strategyMap[strategy];\r\n }\r\n\r\n // ============================================================================\r\n // RAW ACCESS\r\n // ============================================================================\r\n\r\n /**\r\n * Execute raw operations with direct driver access.\r\n *\r\n * @param callback - Callback receiving the driver\r\n */\r\n public async raw<T>(callback: (connection: unknown) => Promise<T>): Promise<T> {\r\n return callback(this.driver);\r\n }\r\n\r\n // ============================================================================\r\n // HELPERS\r\n // ============================================================================\r\n\r\n /**\r\n * Execute a SQL statement.\r\n *\r\n * @param sql - SQL to execute\r\n * @param params - Query parameters\r\n */\r\n private async execute(sql: string, params: unknown[] = []): Promise<void> {\r\n await this.driver.query(sql, params);\r\n }\r\n\r\n /**\r\n * Map foreign key action to PostgreSQL syntax.\r\n */\r\n private mapForeignKeyAction(action: \"cascade\" | \"restrict\" | \"setNull\" | \"noAction\"): string {\r\n const mapping: Record<string, string> = {\r\n cascade: \"CASCADE\",\r\n restrict: \"RESTRICT\",\r\n setNull: \"SET NULL\",\r\n noAction: \"NO ACTION\",\r\n };\r\n return mapping[action] ?? \"NO ACTION\";\r\n }\r\n\r\n /**\r\n * Map PostgreSQL data type to ColumnType.\r\n */\r\n private mapPostgresTypeToColumnType(pgType: string): ColumnType {\r\n const typeMap: Record<string, ColumnType> = {\r\n \"character varying\": \"string\",\r\n varchar: \"string\",\r\n character: \"char\",\r\n char: \"char\",\r\n text: \"text\",\r\n integer: \"integer\",\r\n int: \"integer\",\r\n smallint: \"smallInteger\",\r\n bigint: \"bigInteger\",\r\n real: \"float\",\r\n \"double precision\": \"double\",\r\n numeric: \"decimal\",\r\n decimal: \"decimal\",\r\n boolean: \"boolean\",\r\n date: \"date\",\r\n timestamp: \"dateTime\",\r\n \"timestamp without time zone\": \"dateTime\",\r\n \"timestamp with time zone\": \"timestamp\",\r\n time: \"time\",\r\n \"time without time zone\": \"time\",\r\n json: \"json\",\r\n jsonb: \"json\",\r\n bytea: \"binary\",\r\n uuid: \"uuid\",\r\n inet: \"ipAddress\",\r\n macaddr: \"macAddress\",\r\n point: \"point\",\r\n polygon: \"polygon\",\r\n line: \"lineString\",\r\n geometry: \"geometry\",\r\n // PostgreSQL array types\r\n \"integer[]\": \"arrayInt\",\r\n \"int[]\": \"arrayInt\",\r\n \"bigint[]\": \"arrayBigInt\",\r\n \"real[]\": \"arrayFloat\",\r\n \"decimal[]\": \"arrayDecimal\",\r\n \"numeric[]\": \"arrayDecimal\",\r\n \"boolean[]\": \"arrayBoolean\",\r\n \"text[]\": \"arrayText\",\r\n \"date[]\": \"arrayDate\",\r\n \"timestamp with time zone[]\": \"arrayTimestamp\",\r\n \"timestamptz[]\": \"arrayTimestamp\",\r\n \"uuid[]\": \"arrayUuid\",\r\n \"jsonb[]\": \"arrayJson\",\r\n \"json[]\": \"arrayJson\",\r\n };\r\n\r\n return typeMap[pgType.toLowerCase()] ?? \"string\";\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -0,0 +1,399 @@
1
+ import { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, DriverQuery, GroupByInput, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression } from "../../contracts/query-builder.contract.mjs";
2
+ import { DataSource } from "../../data-source/data-source.mjs";
3
+ import { ModelRef } from "../../model/register-model.mjs";
4
+ import { Op, QueryBuilder } from "../../query-builder/query-builder.mjs";
5
+ import { GenericObject } from "@mongez/reinforcements";
6
+
7
+ //#region ../../@warlock.js/cascade/src/drivers/postgres/postgres-query-builder.d.ts
8
+ type JoinRelationConfig = {
9
+ alias: string;
10
+ type: "belongsTo" | "hasOne" | "hasMany";
11
+ model?: ModelRef;
12
+ localKey?: string;
13
+ foreignKey?: string;
14
+ ownerKey?: string;
15
+ parentPath?: string | null;
16
+ relationName?: string;
17
+ parentModel?: ModelRef;
18
+ select?: string[]; /** Operations recorded by a joinWith constraint callback. */
19
+ constraintOps?: Op[];
20
+ };
21
+ /**
22
+ * PostgreSQL Query Builder.
23
+ *
24
+ * Collects query operations (via the base class) and delegates SQL generation
25
+ * to `PostgresQueryParser`. Owns execution, hydration, and relation loading.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const users = await User.query()
30
+ * .select(["id", "name", "email"])
31
+ * .where("status", "active")
32
+ * .orderBy("createdAt", "desc")
33
+ * .limit(10)
34
+ * .get();
35
+ * ```
36
+ */
37
+ declare class PostgresQueryBuilder<T = unknown> extends QueryBuilder<T> implements QueryBuilderContract<T> {
38
+ readonly table: string;
39
+ /** Data source backing this builder. */
40
+ readonly dataSource: DataSource;
41
+ /** Hydration callback for transforming result rows into model instances. */
42
+ hydrateCallback?: (data: unknown, index: number) => unknown;
43
+ /** Invoked before query execution. */
44
+ private fetchingCallback?;
45
+ /** Invoked after fetch but before hydration. */
46
+ private hydratingCallback?;
47
+ /** Invoked after fetch and hydration. */
48
+ private fetchedCallback?;
49
+ /**
50
+ * Map of relations registered via `joinWith()`.
51
+ * Keyed by dot-notation path (e.g. "organizationAiModel.aiModel").
52
+ */
53
+ joinRelations: Map<string, JoinRelationConfig>;
54
+ /**
55
+ * Idempotency guard for `applyJoinRelations()` so calling `parse()` then
56
+ * `get()` (or `parse()` twice) doesn't double-emit `selectRelatedColumns`
57
+ * operations.
58
+ */
59
+ private joinRelationsApplied;
60
+ /**
61
+ * Idempotency guard for `applyCountRelations()` — see `joinRelationsApplied`.
62
+ */
63
+ private countRelationsApplied;
64
+ /**
65
+ * Idempotency guard for `applyHasRelations()` — see `joinRelationsApplied`.
66
+ */
67
+ private hasRelationsApplied;
68
+ /**
69
+ * Alias → SQL expression for two-arg `groupBy` aggregates. Recorded by the
70
+ * `groupBy` override; consumed by `applyGroupByAggregates` to rewrite a
71
+ * `having()` on the alias into the underlying expression (Postgres forbids
72
+ * SELECT aliases in HAVING).
73
+ */
74
+ private aggregateAliases;
75
+ /**
76
+ * Idempotency guard for `applyGroupByAggregates()` — see `joinRelationsApplied`.
77
+ */
78
+ private groupByAggregatesApplied;
79
+ /**
80
+ * @param table - Target table name
81
+ * @param dataSource - Optional (uses default data source from registry if omitted)
82
+ */
83
+ constructor(table: string, dataSource?: DataSource);
84
+ private get driver();
85
+ clone(): this;
86
+ /**
87
+ * Native-query escape hatch. Passes `operations[]` to the callback for
88
+ * direct manipulation. Use sparingly — only when fluent API is insufficient.
89
+ *
90
+ * @example
91
+ * q.raw(ops => ops.push({ type: "whereRaw", data: { expression: "1=1" } }))
92
+ */
93
+ raw(callback: (operations: Op[]) => void): this;
94
+ /**
95
+ * Record a DISTINCT flag AND auto-select the field(s).
96
+ * In PostgreSQL, DISTINCT ON (col) requires the col to appear in SELECT.
97
+ *
98
+ * @example
99
+ * q.distinctValues("category") // SELECT category … DISTINCT ON (category)
100
+ * q.distinctValues(["category", "status"]) // both fields in DISTINCT ON and SELECT
101
+ */
102
+ distinctValues(fields?: string | string[]): this;
103
+ /**
104
+ * GROUP BY with computed aggregates.
105
+ *
106
+ * Single-arg form defers to the base builder. With `aggregates`, each entry
107
+ * is translated to SQL — via the dialect for `$agg.*` helpers, verbatim for
108
+ * a raw SQL string — and pushed through the proven `selectRaw` projection
109
+ * (the same plumbing `similarTo` / `applyCountRelations` rely on). The
110
+ * grouped columns are projected explicitly because `SELECT *` is invalid
111
+ * alongside `GROUP BY`. The alias → expression map is recorded so
112
+ * `applyGroupByAggregates` can later rewrite `having()` on the alias.
113
+ *
114
+ * `$agg.distinct/floor/first/last` throw (MongoDB-only on Postgres v1);
115
+ * MongoDB operator objects throw (not portable to SQL).
116
+ *
117
+ * @example
118
+ * Order.query().groupBy("category", {
119
+ * orders: $agg.count(),
120
+ * revenue: $agg.sum("amount"),
121
+ * }).having("revenue", ">", 1000);
122
+ */
123
+ groupBy(fields: GroupByInput): this;
124
+ groupBy(fields: GroupByInput, aggregates: Record<string, RawExpression>): this;
125
+ /**
126
+ * Nearest-neighbour vector similarity search via pgvector cosine distance.
127
+ *
128
+ * Adds two operations atomically:
129
+ * 1. `selectRaw` → `1 - (column <=> $n::vector) AS <alias>`
130
+ * Makes the similarity score available on every returned row.
131
+ * 2. `orderByRaw` → `column <=> $n::vector`
132
+ * Tells the PostgreSQL query planner to use the IVFFlat/HNSW vector index.
133
+ * Using the alias in ORDER BY would bypass the index — the raw expression is required.
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * const results = await Vector.query()
138
+ * .where({ organization_id: "org-123", content_type: "summary" })
139
+ * .similarTo("embedding", queryEmbedding)
140
+ * .limit(5)
141
+ * .get<VectorRow & { score: number }>();
142
+ * ```
143
+ */
144
+ similarTo(column: string, embedding: number[], alias?: string): this;
145
+ /** Set a hydration callback that transforms each result row. */
146
+ hydrate(callback: (data: unknown, index: number) => unknown): this;
147
+ /** Register a callback invoked before query execution. */
148
+ onFetching(callback: (query: this) => void | Promise<void>): () => void;
149
+ /** Register a callback invoked after fetch but before hydration. */
150
+ onHydrating(callback: (records: unknown[], context: unknown) => void | Promise<void>): () => void;
151
+ /** Register a callback invoked after fetch and hydration. */
152
+ onFetched(callback: (records: unknown[], context: unknown) => void | Promise<void>): () => void;
153
+ /** Apply pending global scopes to the operations list. */
154
+ private applyPendingScopes;
155
+ /** Array field contains a value (or object with key). */
156
+ whereArrayContains(field: string, value: unknown, key?: string): this;
157
+ /** Array field does NOT contain a value (or object with key). */
158
+ whereArrayNotContains(field: string, value: unknown, key?: string): this;
159
+ /** Array field contains value OR is empty. */
160
+ whereArrayHasOrEmpty(field: string, value: unknown, key?: string): this;
161
+ /** Array field does NOT contain value OR is empty. */
162
+ whereArrayNotHaveOrEmpty(field: string, value: unknown, key?: string): this;
163
+ /**
164
+ * Load relations via SQL JOINs (single query) with optional per-relation constraints.
165
+ *
166
+ * Supports:
167
+ * - `joinWith("author")` / `joinWith(["author", "category"])`
168
+ * - `joinWith({ actions: q => q.where("status", "pending").limit(5) })`
169
+ * - `joinWith({ organizationAiModel: "id,name", actions: q => q.orderBy("sort_order") })`
170
+ *
171
+ * @example
172
+ * ChatMessage.joinWith({
173
+ * actions: q => q.where("status", "pending").orderBy("sort_order", "asc").limit(5),
174
+ * organizationAiModel: "id,createdAt",
175
+ * })
176
+ */
177
+ joinWith(...args: unknown[]): this;
178
+ /** Run a joinWith constraint callback against a sub-QB and capture its operations. */
179
+ private _resolveConstraintOps;
180
+ /**
181
+ * Execute the query and return all matching rows.
182
+ */
183
+ get<TResult = T>(): Promise<TResult[]>;
184
+ /** Get first result. */
185
+ first<TResult = T>(): Promise<TResult | null>;
186
+ /** Get last result (by id desc). */
187
+ last<TResult = T>(): Promise<TResult | null>;
188
+ /** Get random results. */
189
+ random<TResult = T>(limit?: number): Promise<TResult[]>;
190
+ /** Get first or throw. */
191
+ firstOrFail<TResult = T>(): Promise<TResult>;
192
+ /** Get first or call callback. */
193
+ firstOr<TResult = T>(callback: () => TResult | Promise<TResult>): Promise<TResult>;
194
+ /** Get first or return null. */
195
+ firstOrNull<TResult = T>(): Promise<TResult | null>;
196
+ /** Get first or return default. */
197
+ firstOrNew<TResult = T>(defaults: GenericObject): Promise<TResult>;
198
+ /** Find by primary key. */
199
+ find<TResult = T>(id: number | string): Promise<TResult | null>;
200
+ /** Count matching rows. */
201
+ count(): Promise<number>;
202
+ /** SUM a numeric field. */
203
+ sum(field: string): Promise<number>;
204
+ /** AVG of a numeric field. */
205
+ avg(field: string): Promise<number>;
206
+ /** MIN of a numeric field. */
207
+ min(field: string): Promise<number>;
208
+ /** MAX of a numeric field. */
209
+ max(field: string): Promise<number>;
210
+ /** Get distinct values for a field. */
211
+ distinct<TResult = unknown>(field: string): Promise<TResult[]>;
212
+ /** Get array of all values for a single field. */
213
+ pluck(field: string): Promise<unknown[]>;
214
+ /** Get a single scalar value. */
215
+ value<TResult = unknown>(field: string): Promise<TResult | null>;
216
+ /** Check whether any matching rows exist. */
217
+ exists(): Promise<boolean>;
218
+ /** Check whether NO matching rows exist. */
219
+ notExists(): Promise<boolean>;
220
+ /** COUNT DISTINCT a field. */
221
+ countDistinct(field: string): Promise<number>;
222
+ /** Get latest records ordered by a column. */
223
+ latest(column?: string): Promise<T[]>;
224
+ /** Increment a numeric field. Returns new value. */
225
+ increment(field: string, amount?: number): Promise<number>;
226
+ /** Decrement a numeric field. Returns new value. */
227
+ decrement(field: string, amount?: number): Promise<number>;
228
+ /** Increment a field for all matching rows. Returns affected row count. */
229
+ incrementMany(field: string, amount?: number): Promise<number>;
230
+ /** Decrement a field for all matching rows. Returns affected row count. */
231
+ decrementMany(field: string, amount?: number): Promise<number>;
232
+ /**
233
+ * Process results in memory-efficient chunks.
234
+ *
235
+ * @example
236
+ * await User.query().chunk(100, async (rows, idx) => { ... })
237
+ */
238
+ chunk(size: number, callback: ChunkCallback<T>): Promise<void>;
239
+ /** Page-based pagination. */
240
+ paginate(options?: PaginationOptions): Promise<PaginationResult<T>>;
241
+ /**
242
+ * Set cursor pagination hints fluently.
243
+ * The recorded values are picked up by `cursorPaginate()` when no explicit
244
+ * options are passed.
245
+ *
246
+ * @example
247
+ * User.query().cursor(lastId).cursorPaginate({ limit: 20 })
248
+ */
249
+ cursor(after?: unknown, before?: unknown): this;
250
+ /** Cursor-based pagination. */
251
+ cursorPaginate(options?: CursorPaginationOptions): Promise<CursorPaginationResult<T>>;
252
+ /** Delete matching rows. Returns deleted count. */
253
+ delete(): Promise<number>;
254
+ /** Delete the first matching row. */
255
+ deleteOne(): Promise<number>;
256
+ /** Update matching rows. */
257
+ update(fields: Record<string, unknown>): Promise<number>;
258
+ /** Unset fields from matching rows. */
259
+ unset(...fields: string[]): Promise<number>;
260
+ /**
261
+ * Return the SQL + bindings without executing.
262
+ *
263
+ * Runs the same prelude as `get()` (scopes, joinWith expansion, joinRelations,
264
+ * countRelations) so the preview matches what would actually be sent to the
265
+ * database. The apply* methods are idempotent — calling `parse()` then `get()`
266
+ * does not double-emit operations.
267
+ */
268
+ parse(): DriverQuery;
269
+ /** Formatted SQL string (for logging/debugging). */
270
+ pretty(): string;
271
+ /** Run EXPLAIN ANALYZE on the query. */
272
+ explain(): Promise<unknown>;
273
+ /** Extend the builder with a driver-specific extension. */
274
+ extend<R>(extension: string, ..._args: unknown[]): R;
275
+ /** Pluck scalar values for a single field (alias for pluck). */
276
+ pluckOne<TResult = unknown>(field: string): Promise<TResult[]>;
277
+ /**
278
+ * Before `get()` runs the parser, consume any joinWith ops recorded by the base
279
+ * class and expand them into the joinRelations Map.
280
+ */
281
+ private _processJoinWithOps;
282
+ /**
283
+ * Translate each entry in `joinRelations` into actual JOIN + selectRelatedColumns operations.
284
+ *
285
+ * Idempotent — guarded by `joinRelationsApplied` so repeat calls (e.g.
286
+ * `parse()` followed by `get()`) don't double-emit operations.
287
+ */
288
+ private applyJoinRelations;
289
+ /**
290
+ * Translate every `has` / `whereHas` / `orWhereHas` / `doesntHave` /
291
+ * `whereDoesntHave` operation into an equivalent `whereRaw` (or
292
+ * `orWhereRaw`) carrying an EXISTS / NOT EXISTS / COUNT-comparison
293
+ * subquery. Keeps the parser pure (no schema awareness) — same pattern as
294
+ * `applyJoinRelations` and `applyCountRelations`.
295
+ *
296
+ * In-place rewrite preserves position so the boolean (AND/OR) stays
297
+ * correctly slotted relative to other where conditions.
298
+ *
299
+ * Idempotent — guarded by `hasRelationsApplied` so repeat calls (e.g.
300
+ * `parse()` followed by `get()`) don't double-translate.
301
+ */
302
+ private applyHasRelations;
303
+ /**
304
+ * Translate one has-family operation into its `whereRaw`/`orWhereRaw`
305
+ * equivalent. Resolves the relation definition, builds the EXISTS or
306
+ * COUNT-comparison subquery, and returns the replacement op.
307
+ */
308
+ private translateHasOp;
309
+ /**
310
+ * Build the SQL fragment that goes inside a `whereRaw` op for a has-family
311
+ * translation. Branches on relation type AND on the operation type:
312
+ *
313
+ * - `has` with default operator/count → `EXISTS (SELECT 1 FROM ...)`
314
+ * - `has` with custom operator/count → `(SELECT COUNT(*) FROM ...) <op> <count>`
315
+ * - `whereHas` / `orWhereHas` → `EXISTS (SELECT 1 ... AND <constraint>)`
316
+ * - `doesntHave` → `NOT EXISTS (SELECT 1 FROM ...)`
317
+ * - `whereDoesntHave` → `NOT EXISTS (SELECT 1 ... AND <constraint>)`
318
+ */
319
+ private buildHasSubquery;
320
+ /**
321
+ * Translate each entry in `countRelations` into a correlated COUNT subquery
322
+ * emitted as a `selectRaw` operation. Runs after `applyJoinRelations` so the
323
+ * "preserve main table columns" guard sees any joins already in place.
324
+ *
325
+ * Idempotent — guarded by `countRelationsApplied` so repeat calls (e.g.
326
+ * `parse()` followed by `get()`) don't double-emit operations.
327
+ */
328
+ private applyCountRelations;
329
+ /**
330
+ * Without an explicit `select(...)` or any `selectRaw`/`selectRelatedColumns`
331
+ * already pushed, the parser's "no selects → SELECT *" fallback would be
332
+ * suppressed once we add count expressions. Push `<table>.*` first so the
333
+ * caller's columns survive.
334
+ */
335
+ private ensureMainColumnsForCount;
336
+ /**
337
+ * Build a single correlated-subquery expression for a count entry. Branches
338
+ * on relation type (hasMany/hasOne/belongsTo/belongsToMany). The optional
339
+ * constraint callback's where-ops are translated via a sub-parser and
340
+ * spliced into the subquery's WHERE clause.
341
+ */
342
+ private buildCountSubquery;
343
+ /**
344
+ * Run a constraint's where-ops through a fresh sub-parser to obtain a SQL
345
+ * WHERE-fragment plus bindings. Strips the leading `WHERE ` and rewrites
346
+ * `$N` placeholders back to `?` so the outer parser renumbers them
347
+ * consistently when it processes the enclosing `selectRaw` operation.
348
+ *
349
+ * Non-where ops (orderBy / limit / etc.) are silently dropped — they have
350
+ * no meaning inside a COUNT subquery.
351
+ */
352
+ private extractCountWhereFragment;
353
+ /**
354
+ * Rewrite every `having` op whose field matches a recorded aggregate alias
355
+ * into a `havingRaw` carrying the underlying SQL expression. PostgreSQL
356
+ * forbids SELECT aliases in HAVING, so `having("revenue", ">", 1000)` on a
357
+ * `groupBy` aggregate would otherwise throw at runtime. A `having` on a
358
+ * grouped column (no alias match) is left untouched. Runs at parse time
359
+ * (not in the `groupBy` override) so it is independent of fluent call order.
360
+ *
361
+ * Idempotent — guarded by `groupByAggregatesApplied` so repeat calls (e.g.
362
+ * `parse()` followed by `get()`) don't double-process.
363
+ */
364
+ private applyGroupByAggregates;
365
+ /**
366
+ * Run the RelationLoader against the fetched rows for every relation
367
+ * registered via `with()`. Mutates each model instance in place — attaches
368
+ * loaded relations onto `model.loadedRelations` and as direct properties.
369
+ *
370
+ * Lives here (not in `buildQuery`'s `onFetched` callback as it did
371
+ * historically) so any code path that calls `get()` — including
372
+ * `Model.newQueryBuilder()` direct instantiation, custom builder subclasses
373
+ * via `static builder`, or any `eagerLoadRelations`-bearing builder — gets
374
+ * eager-loading. Previously the loader was only installed when the builder
375
+ * was constructed via `Model.query()` / `buildQuery`, so bypassing that
376
+ * factory made `with()` a silent no-op.
377
+ *
378
+ * Skipped silently when `modelClass` is absent (raw driver-level
379
+ * `queryBuilder()` usage has no relations map to consult).
380
+ */
381
+ private applyEagerLoading;
382
+ /**
383
+ * Extract per-relation data from raw DB rows (before hydration).
384
+ * Returns a Map of row index → nested relation data tree.
385
+ */
386
+ private extractJoinedRelationData;
387
+ /**
388
+ * Attach extracted relation data to hydrated model instances.
389
+ */
390
+ private attachJoinedRelations;
391
+ /**
392
+ * Build a WHERE-only SQL fragment from `where*` operations on the current builder.
393
+ * Used by DELETE / UPDATE / increment paths.
394
+ */
395
+ private buildFilter;
396
+ }
397
+ //#endregion
398
+ export { PostgresQueryBuilder };
399
+ //# sourceMappingURL=postgres-query-builder.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-query-builder.d.mts","names":[],"sources":["../../../../../../../@warlock.js/cascade/src/drivers/postgres/postgres-query-builder.ts"],"mappings":"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"}