@warlock.js/cascade 4.0.174 → 4.1.1

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-driver.mjs","names":[],"sources":["../../../../../../../@warlock.js/cascade/src/drivers/postgres/postgres-driver.ts"],"sourcesContent":["/**\r\n * PostgreSQL Driver\r\n *\r\n * Main driver implementation for PostgreSQL database operations.\r\n * Implements the DriverContract interface to provide a unified API\r\n * for CRUD operations, transactions, and query building.\r\n *\r\n * Uses the `pg` package for database connectivity with connection pooling.\r\n *\r\n * @module cascade/drivers/postgres\r\n */\r\n\r\nimport { colors } from \"@mongez/copper\";\r\nimport { log } from \"@warlock.js/logger\";\r\nimport { databaseTransactionContext } from \"../../context/database-transaction-context\";\r\nimport type {\r\n CreateDatabaseOptions,\r\n DriverContract,\r\n DriverEventListener,\r\n DriverTransactionContract,\r\n DropDatabaseOptions,\r\n InsertResult,\r\n TransactionContext,\r\n UpdateOperations,\r\n UpdateResult,\r\n} from \"../../contracts/database-driver.contract\";\r\nimport type { DriverBlueprintContract } from \"../../contracts/driver-blueprint.contract\";\r\nimport type { MigrationDriverContract } from \"../../contracts/migration-driver.contract\";\r\nimport type { QueryBuilderContract } from \"../../contracts/query-builder.contract\";\r\nimport type { SyncAdapterContract } from \"../../contracts/sync-adapter.contract\";\r\nimport { TransactionRollbackError } from \"../../errors/transaction-rollback.error\";\r\nimport { SQLSerializer } from \"../../migration/sql-serializer\";\r\nimport { SqlDatabaseDirtyTracker } from \"../../sql-database-dirty-tracker\";\r\nimport type { ModelDefaults } from \"../../types\";\r\nimport { DatabaseDriver } from \"../../utils/connect-to-database\";\r\nimport { isValidDateValue } from \"../../utils/is-valid-date-value\";\r\nimport { PostgresBlueprint } from \"./postgres-blueprint\";\r\nimport { PostgresDialect } from \"./postgres-dialect\";\r\nimport { PostgresMigrationDriver } from \"./postgres-migration-driver\";\r\nimport { PostgresQueryBuilder } from \"./postgres-query-builder\";\r\nimport { PostgresSQLSerializer } from \"./postgres-sql-serializer\";\r\nimport { PostgresSyncAdapter } from \"./postgres-sync-adapter\";\r\nimport type { PostgresPoolConfig, PostgresQueryResult, PostgresTransactionOptions } from \"./types\";\r\n\r\n/**\r\n * Lazily loaded pg module types.\r\n */\r\ntype PgPool = import(\"pg\").Pool;\r\ntype PgPoolClient = import(\"pg\").PoolClient;\r\ntype PgPoolConfig = import(\"pg\").PoolConfig;\r\n\r\n/**\r\n * Cached pg module reference.\r\n */\r\nlet pgModule: typeof import(\"pg\") | undefined;\r\n\r\n/**\r\n * Lazily load the pg package.\r\n *\r\n * @returns The pg module\r\n * @throws Error if pg is not installed\r\n */\r\nasync function loadPg(): Promise<typeof import(\"pg\")> {\r\n if (pgModule) {\r\n return pgModule;\r\n }\r\n\r\n try {\r\n pgModule = await import(\"pg\");\r\n return pgModule;\r\n } catch {\r\n throw new Error(\r\n 'The \"pg\" package is required for PostgreSQL support. ' + \"Please install it: npm install pg\",\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * PostgreSQL database driver implementing the Cascade DriverContract.\r\n *\r\n * Provides connection pooling, CRUD operations, transactions, and\r\n * integration with Cascade's query builder and migration systems.\r\n *\r\n * @example\r\n * ```typescript\r\n * const driver = new PostgresDriver({\r\n * host: 'localhost',\r\n * port: 5432,\r\n * database: 'myapp',\r\n * user: 'postgres',\r\n * password: 'secret'\r\n * });\r\n *\r\n * await driver.connect();\r\n *\r\n * // Insert a document\r\n * const result = await driver.insert('users', { name: 'Alice', email: 'alice@example.com' });\r\n *\r\n * // Query using the query builder\r\n * const users = await driver.queryBuilder('users')\r\n * .where('name', 'Alice')\r\n * .get();\r\n *\r\n * await driver.disconnect();\r\n * ```\r\n */\r\nexport class PostgresDriver implements DriverContract {\r\n /**\r\n * Driver name identifier.\r\n */\r\n public readonly name = \"postgres\" as DatabaseDriver;\r\n\r\n /**\r\n * SQL dialect for PostgreSQL-specific syntax.\r\n */\r\n public readonly dialect = new PostgresDialect();\r\n\r\n /**\r\n * PostgreSQL driver model defaults.\r\n *\r\n * PostgreSQL follows SQL conventions:\r\n * - snake_case naming for columns (created_at, updated_at, deleted_at)\r\n * - Native AUTO_INCREMENT for IDs (no manual generation)\r\n * - Timestamps enabled by default\r\n * - Permanent delete strategy (hard deletes)\r\n */\r\n public readonly modelDefaults: Partial<ModelDefaults> = {\r\n namingConvention: \"snake_case\",\r\n createdAtColumn: \"created_at\",\r\n updatedAtColumn: \"updated_at\",\r\n deletedAtColumn: \"deleted_at\",\r\n timestamps: true,\r\n autoGenerateId: false, // PostgreSQL uses SERIAL/BIGSERIAL\r\n strictMode: \"fail\",\r\n deleteStrategy: \"permanent\",\r\n };\r\n\r\n /**\r\n * Connection pool instance.\r\n */\r\n private _pool: PgPool | undefined;\r\n\r\n /**\r\n * Event listeners for driver lifecycle events.\r\n */\r\n private readonly _eventListeners = new Map<string, Set<DriverEventListener>>();\r\n\r\n /**\r\n * Whether the driver is currently connected.\r\n */\r\n private _isConnected = false;\r\n\r\n /**\r\n * Blueprint instance (lazy-loaded).\r\n */\r\n private _blueprint: DriverBlueprintContract | undefined;\r\n\r\n /**\r\n * Migration driver instance (lazy-loaded).\r\n */\r\n private _migrationDriver: MigrationDriverContract | undefined;\r\n\r\n /**\r\n * Sync adapter instance (lazy-loaded).\r\n */\r\n private _syncAdapter: SyncAdapterContract | undefined;\r\n\r\n /**\r\n * Create a new PostgreSQL driver instance.\r\n *\r\n * @param config - PostgreSQL connection configuration\r\n */\r\n public constructor(private readonly config: PostgresPoolConfig) {}\r\n\r\n /**\r\n * Get the connection pool instance.\r\n *\r\n * @throws Error if not connected\r\n */\r\n public get pool(): PgPool {\r\n if (!this._pool) {\r\n throw new Error(\"PostgreSQL driver is not connected. Call connect() first.\");\r\n }\r\n return this._pool;\r\n }\r\n\r\n /**\r\n * Get database native client\r\n */\r\n public getClient<Client = PgPool>(): Client {\r\n return this.pool as Client;\r\n }\r\n\r\n /**\r\n * Check if the driver is currently connected.\r\n */\r\n public get isConnected(): boolean {\r\n return this._isConnected;\r\n }\r\n\r\n /**\r\n * Get the driver blueprint (information schema).\r\n */\r\n public get blueprint(): DriverBlueprintContract {\r\n if (!this._blueprint) {\r\n this._blueprint = new PostgresBlueprint(this);\r\n }\r\n return this._blueprint;\r\n }\r\n\r\n /**\r\n * Establish connection to the PostgreSQL database.\r\n *\r\n * Creates a connection pool with the configured options.\r\n * Emits 'connected' event on successful connection.\r\n */\r\n public async connect(): Promise<void> {\r\n if (this._isConnected) {\r\n return;\r\n }\r\n\r\n const pg = await loadPg();\r\n\r\n try {\r\n const poolConfig: PgPoolConfig = {\r\n host: this.config.host ?? \"localhost\",\r\n port: this.config.port ?? 5432,\r\n database: this.config.database,\r\n user: this.config.user,\r\n password: this.config.password,\r\n connectionString: this.config.connectionString,\r\n max: this.config.max ?? 10,\r\n min: this.config.min ?? 0,\r\n idleTimeoutMillis: this.config.idleTimeoutMillis ?? 30000,\r\n connectionTimeoutMillis: this.config.connectionTimeoutMillis ?? 2000,\r\n application_name: this.config.application_name ?? \"cascade\",\r\n ssl: this.config.ssl,\r\n };\r\n\r\n log.info(\r\n \"database.postgres\",\r\n \"connection\",\r\n `Connecting to database ${colors.bold(colors.yellowBright(this.config.database))}`,\r\n );\r\n\r\n this._pool = new pg.Pool(poolConfig);\r\n\r\n // Test the connection\r\n const client = await this._pool.connect();\r\n client.release();\r\n\r\n log.success(\r\n \"database.postgres\",\r\n \"connection\",\r\n `Connected to database ${colors.bold(colors.yellowBright(this.config.database))}`,\r\n );\r\n\r\n this._isConnected = true;\r\n this.emit(\"connected\");\r\n } catch (error) {\r\n log.error(\"database.postgres\", \"connection\", \"Failed to connect to database\");\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Close the database connection pool.\r\n *\r\n * Waits for all active queries to complete before closing.\r\n * Emits 'disconnected' event on successful disconnection.\r\n */\r\n public async disconnect(): Promise<void> {\r\n if (!this._isConnected || !this._pool) {\r\n return;\r\n }\r\n\r\n await this._pool.end();\r\n this._pool = undefined;\r\n this._isConnected = false;\r\n this.emit(\"disconnected\");\r\n }\r\n\r\n /**\r\n * Register an event listener for driver lifecycle events.\r\n *\r\n * @param event - Event name ('connected', 'disconnected', etc.)\r\n * @param listener - Callback function to invoke\r\n */\r\n public on(event: string, listener: DriverEventListener): void {\r\n if (!this._eventListeners.has(event)) {\r\n this._eventListeners.set(event, new Set());\r\n }\r\n\r\n this._eventListeners.get(event)!.add(listener);\r\n }\r\n\r\n /**\r\n * Serialize data for storage in PostgreSQL.\r\n *\r\n * Handles Date objects, BigInt, and other JavaScript types\r\n * that need special handling for PostgreSQL storage.\r\n *\r\n * @param data - The data object to serialize\r\n * @returns Serialized data ready for PostgreSQL\r\n */\r\n public serialize(data: Record<string, unknown>): Record<string, unknown> {\r\n const serialized: Record<string, unknown> = {};\r\n\r\n for (const [key, value] of Object.entries(data)) {\r\n if (value === undefined) {\r\n continue; // Skip undefined values\r\n }\r\n\r\n if (value instanceof Date) {\r\n serialized[key] = value.toISOString();\r\n } else if (typeof value === \"bigint\") {\r\n serialized[key] = value.toString();\r\n } else if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\r\n // Nested objects will be stored as JSONB\r\n serialized[key] = value;\r\n } else if (\r\n Array.isArray(value) &&\r\n value.length > 0 &&\r\n value.every((v) => typeof v === \"number\")\r\n ) {\r\n // pgvector columns expect the literal '[n1,n2,...]' format.\r\n // If we pass a raw JS number[] the pg driver serializes it as a\r\n // PostgreSQL array '{n1,n2,...}' which the vector type rejects.\r\n serialized[key] = `[${value.join(\",\")}]`;\r\n } else {\r\n serialized[key] = value;\r\n }\r\n }\r\n\r\n return serialized;\r\n }\r\n\r\n /**\r\n * Get the dirty tracker for this driver.\r\n */\r\n public getDirtyTracker(data: Record<string, unknown>): SqlDatabaseDirtyTracker {\r\n return new SqlDatabaseDirtyTracker(data);\r\n }\r\n\r\n /**\r\n * Deserialize data retrieved from PostgreSQL.\r\n *\r\n * Converts PostgreSQL types back to JavaScript equivalents.\r\n *\r\n * @param data - The data object from PostgreSQL\r\n * @returns Deserialized JavaScript object\r\n */\r\n public deserialize(data: Record<string, unknown>): Record<string, unknown> {\r\n // PostgreSQL pg driver handles most type conversions automatically\r\n // Special handling can be added here if needed\r\n for (const [key, value] of Object.entries(data)) {\r\n // Only re-inflate strings — pg already returns Date objects from DB reads\r\n if (typeof value !== \"string\") continue;\r\n\r\n if (isValidDateValue(value)) {\r\n data[key] = new Date(value);\r\n continue;\r\n }\r\n\r\n // pgvector columns are returned as '[n1,n2,...]' strings.\r\n // charCodeAt is faster than startsWith/endsWith — no string allocation.\r\n // '[' = 91, ']' = 93\r\n if (value.charCodeAt(0) === 91 && value.charCodeAt(value.length - 1) === 93) {\r\n const parts = value.slice(1, -1).split(\",\");\r\n const nums = new Array<number>(parts.length);\r\n let isNumericVector = parts.length > 0;\r\n\r\n for (let i = 0; i < parts.length; i++) {\r\n const n = +parts[i]; // unary + is the fastest string-to-number coercion\r\n if (!Number.isFinite(n)) {\r\n isNumericVector = false;\r\n break; // early-exit — not a numeric vector, leave value untouched\r\n }\r\n nums[i] = n;\r\n }\r\n\r\n if (isNumericVector) {\r\n data[key] = nums;\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Insert a single row into a table.\r\n *\r\n * Uses INSERT ... RETURNING to get the inserted row with generated values.\r\n *\r\n * @param table - Target table name\r\n * @param document - Data to insert\r\n * @param options - Optional insertion options\r\n * @returns The inserted document\r\n */\r\n public async insert(\r\n table: string,\r\n document: Record<string, unknown>,\r\n _options?: Record<string, unknown>,\r\n ): Promise<InsertResult> {\r\n const serialized = this.serialize(document);\r\n\r\n // Filter out id if null/undefined to let PostgreSQL SERIAL auto-generate\r\n const filteredData = Object.fromEntries(\r\n Object.entries(serialized).filter(([key, value]) => {\r\n // Exclude id if null/undefined (let SERIAL handle it)\r\n if (key === \"id\" && (value === null || value === undefined)) {\r\n return false;\r\n }\r\n return true;\r\n }),\r\n );\r\n\r\n const columns = Object.keys(filteredData);\r\n const values = Object.values(filteredData);\r\n\r\n if (columns.length === 0) {\r\n throw new Error(\"Cannot insert empty document\");\r\n }\r\n\r\n const quotedColumns = columns.map((c) => this.dialect.quoteIdentifier(c)).join(\", \");\r\n const placeholders = columns.map((_, i) => this.dialect.placeholder(i + 1)).join(\", \");\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n\r\n const sql = `INSERT INTO ${quotedTable} (${quotedColumns}) VALUES (${placeholders}) RETURNING *`;\r\n\r\n const result = await this.query<Record<string, unknown>>(sql, values);\r\n\r\n return {\r\n document: result.rows[0],\r\n };\r\n }\r\n\r\n /**\r\n * Insert multiple rows into a table.\r\n *\r\n * Uses a single INSERT statement with multiple value sets for efficiency.\r\n *\r\n * @param table - Target table name\r\n * @param documents - Array of documents to insert\r\n * @param options - Optional insertion options\r\n * @returns Array of inserted documents\r\n */\r\n public async insertMany(\r\n table: string,\r\n documents: Record<string, unknown>[],\r\n _options?: Record<string, unknown>,\r\n ): Promise<InsertResult[]> {\r\n if (documents.length === 0) {\r\n return [];\r\n }\r\n\r\n // Get all unique columns across all documents\r\n const allColumns = new Set<string>();\r\n for (const doc of documents) {\r\n const serialized = this.serialize(doc);\r\n Object.keys(serialized).forEach((key) => allColumns.add(key));\r\n }\r\n const columns = Array.from(allColumns);\r\n\r\n const quotedColumns = columns.map((c) => this.dialect.quoteIdentifier(c)).join(\", \");\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n\r\n // Build value sets and params\r\n const valueSets: string[] = [];\r\n const params: unknown[] = [];\r\n let paramIndex = 1;\r\n\r\n for (const doc of documents) {\r\n const serialized = this.serialize(doc);\r\n const rowPlaceholders: string[] = [];\r\n\r\n for (const col of columns) {\r\n if (col in serialized) {\r\n rowPlaceholders.push(this.dialect.placeholder(paramIndex++));\r\n params.push(serialized[col]);\r\n } else {\r\n rowPlaceholders.push(\"DEFAULT\");\r\n }\r\n }\r\n\r\n valueSets.push(`(${rowPlaceholders.join(\", \")})`);\r\n }\r\n\r\n const sql = `INSERT INTO ${quotedTable} (${quotedColumns}) VALUES ${valueSets.join(\", \")} RETURNING *`;\r\n\r\n const result = await this.query<Record<string, unknown>>(sql, params);\r\n\r\n return result.rows as unknown as InsertResult[];\r\n }\r\n\r\n /**\r\n * Update a single row matching the filter.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param update - Update operations ($set, $unset, $inc)\r\n * @param options - Optional update options\r\n * @returns Update result with modified count\r\n */\r\n public async update(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n update: UpdateOperations,\r\n _options?: Record<string, unknown>,\r\n ): Promise<UpdateResult> {\r\n const { sql, params } = this.buildUpdateQuery(table, filter, update, 1);\r\n try {\r\n const result = await this.query(sql, params);\r\n\r\n return {\r\n modifiedCount: result.rowCount ?? 0,\r\n };\r\n } catch (error) {\r\n console.log(\"PG Query Error in:\", sql, params);\r\n\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Find one and update a single row matching the filter and return the updated row\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param update - Update operations ($set, $unset, $inc)\r\n * @param options - Optional update options\r\n * @returns The updated row or null\r\n */\r\n public async findOneAndUpdate<T = unknown>(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n update: UpdateOperations,\r\n _options?: Record<string, unknown>,\r\n ): Promise<T | null> {\r\n const { sql, params } = this.buildUpdateQuery(table, filter, update, 1);\r\n // Add RETURNING * to get the updated row back\r\n const sqlWithReturning = `${sql} RETURNING *`;\r\n const result = await this.query<T>(sqlWithReturning, params);\r\n return result.rows[0] ?? null;\r\n }\r\n\r\n /**\r\n * Update multiple rows matching the filter.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param update - Update operations\r\n * @param options - Optional update options\r\n * @returns Update result with modified count\r\n */\r\n public async updateMany(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n update: UpdateOperations,\r\n _options?: Record<string, unknown>,\r\n ): Promise<UpdateResult> {\r\n const { sql, params } = this.buildUpdateQuery(table, filter, update);\r\n\r\n const result = await this.query(sql, params);\r\n\r\n return {\r\n modifiedCount: result.rowCount ?? 0,\r\n };\r\n }\r\n\r\n /**\r\n * Replace a document matching the filter.\r\n *\r\n * Completely replaces the document (not a partial update).\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param document - New document data\r\n * @param options - Optional options\r\n * @returns The replaced document or null\r\n */\r\n public async replace<T = unknown>(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n document: Record<string, unknown>,\r\n _options?: Record<string, unknown>,\r\n ): Promise<T | null> {\r\n const serialized = this.serialize(document);\r\n const columns = Object.keys(serialized);\r\n const values = Object.values(serialized);\r\n\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n const setClauses = columns\r\n .map((col, i) => `${this.dialect.quoteIdentifier(col)} = ${this.dialect.placeholder(i + 1)}`)\r\n .join(\", \");\r\n\r\n const { whereClause, whereParams } = this.buildWhereClause(filter, columns.length + 1);\r\n\r\n const sql = `UPDATE ${quotedTable} SET ${setClauses} ${whereClause} RETURNING *`;\r\n const params = [...values, ...whereParams];\r\n\r\n const result = await this.query<T>(sql, params);\r\n\r\n return result.rows[0] ?? null;\r\n }\r\n\r\n /**\r\n * Upsert (insert or update) a single row.\r\n *\r\n * Uses PostgreSQL's INSERT ... ON CONFLICT ... DO UPDATE syntax.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions to find existing row (used for conflict detection)\r\n * @param document - Document data to insert or update\r\n * @param options - Upsert options (conflictColumns for conflict target)\r\n * @returns The upserted row\r\n */\r\n public async upsert<T = unknown>(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n document: Record<string, unknown>,\r\n options?: Record<string, unknown>,\r\n ): Promise<T> {\r\n const serialized = this.serialize(document);\r\n const columns = Object.keys(serialized);\r\n const values = Object.values(serialized);\r\n\r\n if (columns.length === 0) {\r\n throw new Error(\"Cannot upsert empty document\");\r\n }\r\n\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n const quotedColumns = columns.map((c) => this.dialect.quoteIdentifier(c)).join(\", \");\r\n const placeholders = columns.map((_, i) => this.dialect.placeholder(i + 1)).join(\", \");\r\n\r\n // Determine conflict columns from options or filter\r\n const conflictColumns = (options?.conflictColumns as string[]) ?? Object.keys(filter);\r\n if (conflictColumns.length === 0) {\r\n throw new Error(\"Upsert requires conflictColumns option or filter with columns\");\r\n }\r\n\r\n const quotedConflictColumns = conflictColumns\r\n .map((c) => this.dialect.quoteIdentifier(c))\r\n .join(\", \");\r\n\r\n // Build UPDATE clause for ON CONFLICT\r\n // Update all columns except the conflict columns (they stay the same)\r\n const updateColumns = columns.filter((col) => !conflictColumns.includes(col));\r\n const setClauses = updateColumns\r\n .map((col, i) => {\r\n const valueIndex = columns.indexOf(col) + 1;\r\n return `${this.dialect.quoteIdentifier(col)} = ${this.dialect.placeholder(valueIndex)}`;\r\n })\r\n .join(\", \");\r\n\r\n // If there are no columns to update (all columns are conflict columns), use EXCLUDED\r\n const updateClause =\r\n setClauses.length > 0\r\n ? setClauses\r\n : columns\r\n .map(\r\n (col) =>\r\n `${this.dialect.quoteIdentifier(col)} = EXCLUDED.${this.dialect.quoteIdentifier(col)}`,\r\n )\r\n .join(\", \");\r\n\r\n const sql = `INSERT INTO ${quotedTable} (${quotedColumns}) VALUES (${placeholders}) ON CONFLICT (${quotedConflictColumns}) DO UPDATE SET ${updateClause} RETURNING *`;\r\n\r\n const result = await this.query<T>(sql, values);\r\n\r\n return result.rows[0]! as T;\r\n }\r\n\r\n /**\r\n * Find one and delete a single row matching the filter and return the deleted row.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param options - Optional delete options\r\n * @returns The deleted row or null\r\n */\r\n public async findOneAndDelete<T = unknown>(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n _options?: Record<string, unknown>,\r\n ): Promise<T | null> {\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n const { whereClause, whereParams } = this.buildWhereClause(filter, 1);\r\n\r\n // Use ctid for single row deletion with RETURNING\r\n const sql = `DELETE FROM ${quotedTable} WHERE ctid IN (SELECT ctid FROM ${quotedTable} ${whereClause} LIMIT 1) RETURNING *`;\r\n\r\n const result = await this.query<T>(sql, whereParams);\r\n\r\n return result.rows[0] ? (result.rows[0] as T) : null;\r\n }\r\n\r\n /**\r\n * Delete a single row matching the filter.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param options - Optional options\r\n * @returns Number of deleted rows (0 or 1)\r\n */\r\n public async delete(\r\n table: string,\r\n filter?: Record<string, unknown>,\r\n _options?: Record<string, unknown>,\r\n ): Promise<number> {\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n const { whereClause, whereParams } = this.buildWhereClause(filter ?? {}, 1);\r\n\r\n // Use ctid for single row deletion\r\n const sql = `DELETE FROM ${quotedTable} WHERE ctid IN (SELECT ctid FROM ${quotedTable} ${whereClause} LIMIT 1)`;\r\n\r\n const result = await this.query(sql, whereParams);\r\n\r\n return result.rowCount ?? 0;\r\n }\r\n\r\n /**\r\n * Delete multiple rows matching the filter.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param options - Optional options\r\n * @returns Number of deleted rows\r\n */\r\n public async deleteMany(\r\n table: string,\r\n filter?: Record<string, unknown>,\r\n _options?: Record<string, unknown>,\r\n ): Promise<number> {\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n const { whereClause, whereParams } = this.buildWhereClause(filter ?? {}, 1);\r\n\r\n const sql = `DELETE FROM ${quotedTable} ${whereClause}`;\r\n\r\n const result = await this.query(sql, whereParams);\r\n\r\n return result.rowCount ?? 0;\r\n }\r\n\r\n /**\r\n * Truncate a table (remove all rows).\r\n *\r\n * Uses TRUNCATE TABLE for fast deletion with RESTART IDENTITY.\r\n *\r\n * @param table - Target table name\r\n * @param options - Optional options\r\n * @param options.cascade - If true, automatically truncate all tables with foreign key references (use with caution)\r\n * @returns Number of deleted rows (always 0 for TRUNCATE)\r\n */\r\n public async truncateTable(table: string, options?: { cascade?: boolean }): Promise<number> {\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n const cascadeClause = options?.cascade ? \" CASCADE\" : \"\";\r\n await this.query(`TRUNCATE TABLE ${quotedTable} RESTART IDENTITY${cascadeClause}`);\r\n return 0; // TRUNCATE doesn't return row count\r\n }\r\n\r\n /**\r\n * Get a query builder for the specified table.\r\n *\r\n * @param table - Target table name\r\n * @returns Query builder instance\r\n */\r\n public queryBuilder<T = unknown>(table: string): QueryBuilderContract<T> {\r\n return new PostgresQueryBuilder<T>(table) as unknown as QueryBuilderContract<T>;\r\n }\r\n\r\n /**\r\n * Begin a new database transaction.\r\n *\r\n * Acquires a client from the pool and starts a transaction.\r\n * The client is stored in AsyncLocalStorage for automatic\r\n * participation by subsequent queries.\r\n *\r\n * @param options - Optional transaction options\r\n * @returns Transaction contract with commit/rollback methods\r\n */\r\n public async beginTransaction(\r\n options?: PostgresTransactionOptions,\r\n ): Promise<DriverTransactionContract<PgPoolClient>> {\r\n const client = await this.pool.connect();\r\n\r\n let beginSql = \"BEGIN\";\r\n if (options?.isolationLevel) {\r\n beginSql += ` ISOLATION LEVEL ${options.isolationLevel.toUpperCase()}`;\r\n }\r\n if (options?.readOnly) {\r\n beginSql += \" READ ONLY\";\r\n }\r\n if (options?.deferrable) {\r\n beginSql += \" DEFERRABLE\";\r\n }\r\n\r\n await client.query(beginSql);\r\n\r\n return {\r\n context: client,\r\n commit: async () => {\r\n await client.query(\"COMMIT\");\r\n client.release();\r\n },\r\n rollback: async () => {\r\n await client.query(\"ROLLBACK\");\r\n client.release();\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Execute a function within a transaction scope (recommended pattern).\r\n *\r\n * Automatically commits on success, rolls back on any error, and guarantees\r\n * resource cleanup. This is the recommended way to use transactions.\r\n *\r\n * @param fn - Async function to execute within transaction\r\n * @param options - Transaction options (isolation level, read-only, etc.)\r\n * @returns The return value of the callback function\r\n * @throws {Error} If transaction fails or is explicitly rolled back\r\n */\r\n public async transaction<T>(\r\n fn: (ctx: TransactionContext) => Promise<T>,\r\n options?: Record<string, unknown>,\r\n ): Promise<T> {\r\n // Prevent nested transaction() calls\r\n if (databaseTransactionContext.hasActiveTransaction()) {\r\n // throw new Error(\r\n // \"Nested transaction() calls are not supported. \" +\r\n // \"Use beginTransaction() with savepoints for advanced transaction patterns.\",\r\n // );\r\n }\r\n\r\n const tx = await this.beginTransaction(options);\r\n\r\n // Set transaction context for queries within callback\r\n databaseTransactionContext.enter({ session: tx.context });\r\n\r\n try {\r\n // Create transaction context with rollback method\r\n const ctx: TransactionContext = {\r\n rollback(reason?: string): never {\r\n throw new TransactionRollbackError(reason);\r\n },\r\n };\r\n\r\n // Execute callback\r\n const result = await fn(ctx);\r\n\r\n // Auto-commit on success\r\n await tx.commit();\r\n\r\n return result;\r\n } catch (error) {\r\n // Auto-rollback on any error (including explicit rollback)\r\n await tx.rollback();\r\n log.error(\r\n `database.postgress`,\r\n \"transaction\",\r\n \"Transaction operation failed, rolled back everything\",\r\n );\r\n throw error;\r\n } finally {\r\n // Guaranteed cleanup\r\n databaseTransactionContext.exit();\r\n }\r\n }\r\n\r\n /**\r\n * Perform an atomic update operation.\r\n *\r\n * Builds and executes an UPDATE query for the given filter and operations.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param operations - Update operations\r\n * @param options - Optional options\r\n * @returns Update result\r\n */\r\n public async atomic(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n operations: UpdateOperations,\r\n _options?: Record<string, unknown>,\r\n ): Promise<UpdateResult> {\r\n const { sql, params } = this.buildUpdateQuery(table, filter, operations, 1);\r\n\r\n const result = await this.query(sql, params);\r\n\r\n return {\r\n modifiedCount: result.rowCount ?? 0,\r\n };\r\n }\r\n\r\n /**\r\n * Get the sync adapter for bulk denormalized updates.\r\n *\r\n * @returns Sync adapter instance\r\n */\r\n public syncAdapter(): SyncAdapterContract {\r\n if (!this._syncAdapter) {\r\n this._syncAdapter = new PostgresSyncAdapter(this);\r\n }\r\n return this._syncAdapter;\r\n }\r\n\r\n /**\r\n * Get the migration driver for schema operations.\r\n *\r\n * @returns Migration driver instance\r\n */\r\n public migrationDriver(): MigrationDriverContract {\r\n if (!this._migrationDriver) {\r\n this._migrationDriver = new PostgresMigrationDriver(this);\r\n }\r\n\r\n return this._migrationDriver;\r\n }\r\n\r\n /**\r\n * Return a SQL serializer for this driver's dialect.\r\n * Used by Migration.toSQL() to convert pending operations to SQL strings.\r\n */\r\n public getSQLSerializer(): SQLSerializer {\r\n return new PostgresSQLSerializer(this.dialect);\r\n }\r\n\r\n /**\r\n * Execute a raw SQL query.\r\n *\r\n * Automatically uses the transaction client if one is active.\r\n *\r\n * @param sql - SQL query string\r\n * @param params - Query parameters\r\n * @returns Query result\r\n */\r\n public async query<T = Record<string, unknown>>(\r\n sql: string,\r\n params: unknown[] = [],\r\n ): Promise<PostgresQueryResult<T>> {\r\n // Check for active transaction client\r\n const txClient = databaseTransactionContext.getSession() as PgPoolClient | undefined;\r\n\r\n const startTime = this.config.logging ? performance.now() : 0;\r\n\r\n let paramsString = \"\";\r\n if (this.config.logging && params.length > 0) {\r\n paramsString = JSON.stringify(params);\r\n if (paramsString.length > 300) {\r\n paramsString = paramsString.substring(0, 300) + \"...\";\r\n }\r\n paramsString = ` | Params: ${paramsString}`;\r\n }\r\n\r\n try {\r\n let result;\r\n if (this.config.logging) {\r\n log.info({\r\n module: \"database.postgres\",\r\n action: \"query.executing\",\r\n message: `${sql}${paramsString}`,\r\n context: { params, sql },\r\n });\r\n }\r\n if (txClient) {\r\n result = await txClient.query(sql, params);\r\n } else {\r\n result = await this.pool.query(sql, params);\r\n }\r\n\r\n if (this.config.logging) {\r\n const duration = (performance.now() - startTime).toFixed(2);\r\n log.success({\r\n module: \"database.postgres\",\r\n action: \"query.executed\",\r\n message: `[${duration}ms] ${sql}${paramsString}`,\r\n context: { params, sql, duration },\r\n });\r\n }\r\n\r\n return result as PostgresQueryResult<T>;\r\n } catch (error) {\r\n if (this.config.logging) {\r\n const duration = (performance.now() - startTime).toFixed(2);\r\n log.error({\r\n module: \"database.postgres\",\r\n action: \"query.error\",\r\n message: `[${duration}ms] ${sql}${paramsString}`,\r\n context: {\r\n sql,\r\n params,\r\n error: error instanceof Error ? error.message : String(error),\r\n },\r\n });\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Emit an event to all registered listeners.\r\n *\r\n * @param event - Event name\r\n * @param args - Event arguments\r\n */\r\n private emit(event: string, ...args: unknown[]): void {\r\n const listeners = this._eventListeners.get(event);\r\n if (listeners) {\r\n for (const listener of listeners) {\r\n listener(...args);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Build a simple WHERE clause from a filter object.\r\n *\r\n * @param filter - Filter conditions\r\n * @param startParamIndex - Starting parameter index\r\n * @returns Object with WHERE clause string and parameters\r\n */\r\n private buildWhereClause(\r\n filter: Record<string, unknown>,\r\n startParamIndex: number,\r\n ): { whereClause: string; whereParams: unknown[] } {\r\n const conditions: string[] = [];\r\n const params: unknown[] = [];\r\n let paramIndex = startParamIndex;\r\n\r\n for (const [key, value] of Object.entries(filter)) {\r\n const quotedKey = this.dialect.quoteIdentifier(key);\r\n\r\n if (value === null) {\r\n conditions.push(`${quotedKey} IS NULL`);\r\n } else {\r\n conditions.push(`${quotedKey} = ${this.dialect.placeholder(paramIndex++)}`);\r\n params.push(value);\r\n }\r\n }\r\n\r\n const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(\" AND \")}` : \"\";\r\n\r\n return { whereClause, whereParams: params };\r\n }\r\n\r\n /**\r\n * Build an UPDATE query from update operations.\r\n *\r\n * @param table - Target table name\r\n * @param filter - Filter conditions\r\n * @param update - Update operations\r\n * @param limit - Optional limit (for single row update)\r\n * @returns Object with SQL and parameters\r\n */\r\n private buildUpdateQuery(\r\n table: string,\r\n filter: Record<string, unknown>,\r\n update: UpdateOperations,\r\n limit?: number,\r\n ): { sql: string; params: unknown[] } {\r\n const setClauses: string[] = [];\r\n const params: unknown[] = [];\r\n let paramIndex = 1;\r\n\r\n // Handle $set\r\n if (update.$set) {\r\n for (const [key, value] of Object.entries(update.$set)) {\r\n setClauses.push(\r\n `${this.dialect.quoteIdentifier(key)} = ${this.dialect.placeholder(paramIndex++)}`,\r\n );\r\n params.push(value);\r\n }\r\n }\r\n\r\n // Handle $unset (set to NULL)\r\n if (update.$unset) {\r\n for (const key of Object.keys(update.$unset)) {\r\n setClauses.push(`${this.dialect.quoteIdentifier(key)} = NULL`);\r\n }\r\n }\r\n\r\n // Handle $inc\r\n if (update.$inc) {\r\n for (const [key, amount] of Object.entries(update.$inc)) {\r\n const quotedKey = this.dialect.quoteIdentifier(key);\r\n setClauses.push(\r\n `${quotedKey} = COALESCE(${quotedKey}, 0) + ${this.dialect.placeholder(paramIndex++)}`,\r\n );\r\n params.push(amount);\r\n }\r\n }\r\n\r\n // Handle $dec\r\n if (update.$dec) {\r\n for (const [key, amount] of Object.entries(update.$dec)) {\r\n const quotedKey = this.dialect.quoteIdentifier(key);\r\n setClauses.push(\r\n `${quotedKey} = COALESCE(${quotedKey}, 0) - ${this.dialect.placeholder(paramIndex++)}`,\r\n );\r\n params.push(amount);\r\n }\r\n }\r\n\r\n if (setClauses.length === 0) {\r\n throw new Error(\"No update operations specified\");\r\n }\r\n\r\n const quotedTable = this.dialect.quoteIdentifier(table);\r\n const { whereClause, whereParams } = this.buildWhereClause(filter, paramIndex);\r\n params.push(...whereParams);\r\n\r\n let sql = `UPDATE ${quotedTable} SET ${setClauses.join(\", \")} ${whereClause}`;\r\n\r\n // For single row update, use ctid subquery\r\n if (limit === 1 && whereClause) {\r\n sql = `UPDATE ${quotedTable} SET ${setClauses.join(\", \")} WHERE ctid IN (SELECT ctid FROM ${quotedTable} ${whereClause} LIMIT 1)`;\r\n }\r\n\r\n return { sql, params };\r\n }\r\n\r\n // ============================================================\r\n // Database Lifecycle Operations\r\n // ============================================================\r\n\r\n /**\r\n * Create a new database.\r\n *\r\n * Note: This requires connecting to a system database (like 'postgres')\r\n * since you cannot create a database while connected to it.\r\n *\r\n * @param name - Database name to create\r\n * @param options - Creation options (encoding, template, etc.)\r\n * @returns true if created, false if already exists\r\n */\r\n public async createDatabase(name: string, options?: CreateDatabaseOptions): Promise<boolean> {\r\n // Check if database already exists\r\n if (await this.databaseExists(name)) {\r\n return false;\r\n }\r\n\r\n // Build CREATE DATABASE statement\r\n const quotedName = this.dialect.quoteIdentifier(name);\r\n let sql = `CREATE DATABASE ${quotedName}`;\r\n\r\n const withClauses: string[] = [];\r\n\r\n if (options?.encoding) {\r\n withClauses.push(`ENCODING = '${options.encoding}'`);\r\n }\r\n if (options?.template) {\r\n withClauses.push(`TEMPLATE = ${this.dialect.quoteIdentifier(options.template)}`);\r\n }\r\n if (options?.locale) {\r\n withClauses.push(`LC_COLLATE = '${options.locale}'`);\r\n withClauses.push(`LC_CTYPE = '${options.locale}'`);\r\n }\r\n if (options?.owner) {\r\n withClauses.push(`OWNER = ${this.dialect.quoteIdentifier(options.owner)}`);\r\n }\r\n\r\n if (withClauses.length > 0) {\r\n sql += ` WITH ${withClauses.join(\" \")}`;\r\n }\r\n\r\n try {\r\n await this.query(sql);\r\n log.success(\"database\", \"lifecycle\", `Created database ${name}`);\r\n return true;\r\n } catch (error) {\r\n log.error(\"database\", \"lifecycle\", `Failed to create database ${name}: ${error}`);\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Drop a database.\r\n *\r\n * @param name - Database name to drop\r\n * @param options - Drop options\r\n * @returns true if dropped, false if didn't exist\r\n */\r\n public async dropDatabase(name: string, options?: DropDatabaseOptions): Promise<boolean> {\r\n // Check if database exists first (if ifExists option not set)\r\n if (!options?.ifExists && !(await this.databaseExists(name))) {\r\n return false;\r\n }\r\n\r\n const quotedName = this.dialect.quoteIdentifier(name);\r\n let sql = \"DROP DATABASE\";\r\n\r\n if (options?.ifExists) {\r\n sql += \" IF EXISTS\";\r\n }\r\n\r\n sql += ` ${quotedName}`;\r\n\r\n // PostgreSQL 13+ supports WITH (FORCE) to terminate active connections\r\n if (options?.force) {\r\n sql += \" WITH (FORCE)\";\r\n }\r\n\r\n try {\r\n await this.query(sql);\r\n log.success(\"database\", \"lifecycle\", `Dropped database ${name}`);\r\n return true;\r\n } catch (error) {\r\n log.error(\"database\", \"lifecycle\", `Failed to drop database ${name}: ${error}`);\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Check if a database exists.\r\n *\r\n * @param name - Database name to check\r\n * @returns true if database exists\r\n */\r\n public async databaseExists(name: string): Promise<boolean> {\r\n const result = await this.query<{ exists: boolean }>(\r\n `SELECT EXISTS(SELECT 1 FROM pg_database WHERE datname = $1) as exists`,\r\n [name],\r\n );\r\n\r\n return result.rows[0]?.exists ?? false;\r\n }\r\n\r\n /**\r\n * List all databases.\r\n *\r\n * @returns Array of database names\r\n */\r\n public async listDatabases(): Promise<string[]> {\r\n const result = await this.query<{ datname: string }>(\r\n `SELECT datname FROM pg_database WHERE datistemplate = false ORDER BY datname`,\r\n );\r\n\r\n return result.rows.map((row) => row.datname);\r\n }\r\n\r\n // ============================================================\r\n // Table Management Operations\r\n // ============================================================\r\n\r\n /**\r\n * Drop a table.\r\n *\r\n * @param name - Table name to drop\r\n * @throws Error if table doesn't exist\r\n */\r\n public async dropTable(name: string): Promise<void> {\r\n const quotedName = this.dialect.quoteIdentifier(name);\r\n await this.query(`DROP TABLE ${quotedName}`);\r\n log.success(\"database\", \"table\", `Dropped table ${name}`);\r\n }\r\n\r\n /**\r\n * Drop a table if it exists.\r\n *\r\n * @param name - Table name to drop\r\n */\r\n public async dropTableIfExists(name: string): Promise<void> {\r\n const quotedName = this.dialect.quoteIdentifier(name);\r\n await this.query(`DROP TABLE IF EXISTS ${quotedName}`);\r\n }\r\n\r\n /**\r\n * Drop all tables in the current database.\r\n *\r\n * Uses CASCADE to handle foreign key dependencies.\r\n * Useful for `migrate:fresh` command.\r\n */\r\n public async dropAllTables(): Promise<void> {\r\n // Get all tables from blueprint\r\n const tables = await this.blueprint.listTables();\r\n\r\n if (tables.length === 0) {\r\n return;\r\n }\r\n\r\n // Drop all tables with CASCADE to handle foreign keys\r\n for (const table of tables) {\r\n const quotedName = this.dialect.quoteIdentifier(table);\r\n await this.query(`DROP TABLE IF EXISTS ${quotedName} CASCADE`);\r\n }\r\n\r\n log.success(\"database\", \"table\", `Dropped ${tables.length} tables`);\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -0,0 +1,393 @@
1
+ import { MigrationDefaults } from "../../types.mjs";
2
+ import { TableIndexInformation } from "../../contracts/driver-blueprint.contract.mjs";
3
+ import { ColumnDefinition, ForeignKeyDefinition, FullTextIndexOptions, GeoIndexOptions, IndexDefinition, MigrationDriverContract, VectorIndexOptions } from "../../contracts/migration-driver.contract.mjs";
4
+ import { PostgresDriver } from "./postgres-driver.mjs";
5
+
6
+ //#region ../../@warlock.js/cascade/src/drivers/postgres/postgres-migration-driver.d.ts
7
+ /**
8
+ * PostgreSQL Migration Driver.
9
+ *
10
+ * Handles database schema operations for PostgreSQL including:
11
+ * - Table creation and deletion
12
+ * - Column management
13
+ * - Index creation (B-tree, GIN, GiST, etc.)
14
+ * - Constraint management (foreign keys, unique, etc.)
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const migrationDriver = driver.migrationDriver();
19
+ *
20
+ * // Create a table
21
+ * await migrationDriver.createTable('users');
22
+ *
23
+ * // Add columns
24
+ * await migrationDriver.addColumn('users', {
25
+ * name: 'email',
26
+ * type: 'string',
27
+ * length: 255,
28
+ * nullable: false
29
+ * });
30
+ *
31
+ * // Create unique index
32
+ * await migrationDriver.createUniqueIndex('users', ['email']);
33
+ * ```
34
+ */
35
+ declare class PostgresMigrationDriver implements MigrationDriverContract {
36
+ readonly driver: PostgresDriver;
37
+ /**
38
+ * Active transaction client (if any).
39
+ */
40
+ private get transactionClient();
41
+ /**
42
+ * Create a new migration driver.
43
+ *
44
+ * @param driver - The PostgreSQL driver instance
45
+ */
46
+ constructor(driver: PostgresDriver);
47
+ /**
48
+ * Create a new table with a default id column.
49
+ *
50
+ * @param table - Table name
51
+ */
52
+ createTable(table: string): Promise<void>;
53
+ /**
54
+ * Create table if it doesn't exist.
55
+ *
56
+ * @param table - Table name
57
+ */
58
+ createTableIfNotExists(table: string): Promise<void>;
59
+ /**
60
+ * Drop an existing table.
61
+ *
62
+ * @param table - Table name
63
+ */
64
+ dropTable(table: string): Promise<void>;
65
+ /**
66
+ * Drop table if it exists.
67
+ *
68
+ * @param table - Table name
69
+ */
70
+ dropTableIfExists(table: string): Promise<void>;
71
+ /**
72
+ * Rename a table.
73
+ *
74
+ * @param from - Current table name
75
+ * @param to - New table name
76
+ */
77
+ renameTable(from: string, to: string): Promise<void>;
78
+ /**
79
+ * Truncate a table — remove all rows efficiently.
80
+ *
81
+ * @param table - Table name
82
+ */
83
+ truncateTable(table: string): Promise<void>;
84
+ /**
85
+ * Check if a table exists.
86
+ *
87
+ * @param table - Table name
88
+ * @returns Whether the table exists
89
+ */
90
+ tableExists(table: string): Promise<boolean>;
91
+ /**
92
+ * List all columns in a table.
93
+ *
94
+ * @param table - Table name
95
+ * @returns Array of column definitions
96
+ */
97
+ listColumns(table: string): Promise<ColumnDefinition[]>;
98
+ /**
99
+ * List all tables in the current database.
100
+ *
101
+ * @returns Array of table names
102
+ */
103
+ listTables(): Promise<string[]>;
104
+ /**
105
+ * Ensure the migrations tracking table exists.
106
+ *
107
+ * Creates the table with proper schema if it doesn't exist.
108
+ *
109
+ * @param tableName - Name of the migrations table
110
+ */
111
+ ensureMigrationsTable(tableName: string): Promise<void>;
112
+ /**
113
+ * Add a column to an existing table.
114
+ *
115
+ * @param table - Table name
116
+ * @param column - Column definition
117
+ */
118
+ addColumn(table: string, column: ColumnDefinition): Promise<void>;
119
+ /**
120
+ * Drop a column from a table.
121
+ *
122
+ * @param table - Table name
123
+ * @param column - Column name
124
+ */
125
+ dropColumn(table: string, column: string): Promise<void>;
126
+ /**
127
+ * Drop multiple columns from a table.
128
+ *
129
+ * @param table - Table name
130
+ * @param columns - Column names
131
+ */
132
+ dropColumns(table: string, columns: string[]): Promise<void>;
133
+ /**
134
+ * Rename a column.
135
+ *
136
+ * @param table - Table name
137
+ * @param from - Current column name
138
+ * @param to - New column name
139
+ */
140
+ renameColumn(table: string, from: string, to: string): Promise<void>;
141
+ /**
142
+ * Modify an existing column.
143
+ *
144
+ * @param table - Table name
145
+ * @param column - New column definition
146
+ */
147
+ modifyColumn(table: string, column: ColumnDefinition): Promise<void>;
148
+ /**
149
+ * Create standard timestamp columns (created_at, updated_at).
150
+ *
151
+ * PostgreSQL implementation creates TIMESTAMPTZ columns with NOW() defaults.
152
+ *
153
+ * @param table - Table name
154
+ */
155
+ createTimestampColumns(table: string): Promise<void>;
156
+ /**
157
+ * Create an index on one or more columns.
158
+ *
159
+ * Supports:
160
+ * - Regular column indexes
161
+ * - Expression-based indexes (e.g., `lower(email)`)
162
+ * - Covering indexes (INCLUDE clause)
163
+ * - Concurrent index creation (CONCURRENTLY keyword)
164
+ *
165
+ * @param table - Table name
166
+ * @param index - Index definition
167
+ */
168
+ createIndex(table: string, index: IndexDefinition): Promise<void>;
169
+ /**
170
+ * Drop an index.
171
+ *
172
+ * @param table - Table name
173
+ * @param indexNameOrColumns - Index name or columns
174
+ */
175
+ dropIndex(table: string, indexNameOrColumns: string | string[]): Promise<void>;
176
+ /**
177
+ * Create a unique index.
178
+ *
179
+ * @param table - Table name
180
+ * @param columns - Columns to include
181
+ * @param name - Optional index name
182
+ */
183
+ createUniqueIndex(table: string, columns: string[], name?: string): Promise<void>;
184
+ /**
185
+ * Drop a unique index.
186
+ *
187
+ * @param table - Table name
188
+ * @param columns - Columns in the index
189
+ */
190
+ dropUniqueIndex(table: string, columns: string[]): Promise<void>;
191
+ /**
192
+ * Create a full-text search index using GIN.
193
+ *
194
+ * @param table - Table name
195
+ * @param columns - Columns to index
196
+ * @param options - Full-text options
197
+ */
198
+ createFullTextIndex(table: string, columns: string[], options?: FullTextIndexOptions): Promise<void>;
199
+ /**
200
+ * Drop a full-text search index.
201
+ *
202
+ * @param table - Table name
203
+ * @param name - Index name
204
+ */
205
+ dropFullTextIndex(table: string, name: string): Promise<void>;
206
+ /**
207
+ * Create a geo-spatial index using GiST.
208
+ *
209
+ * @param table - Table name
210
+ * @param column - Geo column
211
+ * @param options - Geo index options
212
+ */
213
+ createGeoIndex(table: string, column: string, options?: GeoIndexOptions): Promise<void>;
214
+ /**
215
+ * Drop a geo-spatial index.
216
+ *
217
+ * @param table - Table name
218
+ * @param column - Geo column
219
+ */
220
+ dropGeoIndex(table: string, column: string): Promise<void>;
221
+ /**
222
+ * Create a vector search index (requires pgvector extension).
223
+ *
224
+ * @param table - Table name
225
+ * @param column - Vector column
226
+ * @param options - Vector index options
227
+ */
228
+ createVectorIndex(table: string, column: string, options: VectorIndexOptions): Promise<void>;
229
+ /**
230
+ * Drop a vector search index.
231
+ *
232
+ * @param table - Table name
233
+ * @param column - Vector column
234
+ */
235
+ dropVectorIndex(table: string, column: string): Promise<void>;
236
+ /**
237
+ * Create a TTL index (not natively supported in PostgreSQL).
238
+ *
239
+ * Note: PostgreSQL doesn't have native TTL indexes like MongoDB.
240
+ * This creates a partial index and requires a scheduled job for cleanup.
241
+ *
242
+ * @param table - Table name
243
+ * @param column - Date column
244
+ * @param expireAfterSeconds - Expiration time in seconds
245
+ */
246
+ createTTLIndex(table: string, column: string, expireAfterSeconds: number): Promise<void>;
247
+ /**
248
+ * Drop a TTL index.
249
+ *
250
+ * @param table - Table name
251
+ * @param column - Column with TTL index
252
+ */
253
+ dropTTLIndex(table: string, column: string): Promise<void>;
254
+ /**
255
+ * List all indexes on a table.
256
+ *
257
+ * @param table - Table name
258
+ * @returns Array of index metadata
259
+ */
260
+ listIndexes(table: string): Promise<TableIndexInformation[]>;
261
+ /**
262
+ * Check if a PostgreSQL extension is available on the database server.
263
+ *
264
+ * @param extension - Extension name (e.g., "vector")
265
+ */
266
+ isExtensionAvailable(extension: string): Promise<boolean>;
267
+ /**
268
+ * Get the official documentation or installation URL for a PostgreSQL extension.
269
+ *
270
+ * @param extension - Extension name
271
+ */
272
+ getExtensionDocsUrl(extension: string): string | undefined;
273
+ /**
274
+ * Add a foreign key constraint.
275
+ *
276
+ * @param table - Table name
277
+ * @param foreignKey - Foreign key definition
278
+ */
279
+ addForeignKey(table: string, foreignKey: ForeignKeyDefinition): Promise<void>;
280
+ /**
281
+ * Drop a foreign key constraint.
282
+ *
283
+ * @param table - Table name
284
+ * @param name - Constraint name
285
+ */
286
+ dropForeignKey(table: string, name: string): Promise<void>;
287
+ /**
288
+ * Add a primary key constraint.
289
+ *
290
+ * @param table - Table name
291
+ * @param columns - Primary key columns
292
+ */
293
+ addPrimaryKey(table: string, columns: string[]): Promise<void>;
294
+ /**
295
+ * Drop the primary key constraint.
296
+ *
297
+ * @param table - Table name
298
+ */
299
+ dropPrimaryKey(table: string): Promise<void>;
300
+ /**
301
+ * Add a CHECK constraint.
302
+ *
303
+ * @param table - Table name
304
+ * @param name - Constraint name
305
+ * @param expression - SQL CHECK expression
306
+ */
307
+ addCheck(table: string, name: string, expression: string): Promise<void>;
308
+ /**
309
+ * Drop a CHECK constraint.
310
+ *
311
+ * @param table - Table name
312
+ * @param name - Constraint name
313
+ */
314
+ dropCheck(table: string, name: string): Promise<void>;
315
+ /**
316
+ * Set schema validation (no-op for PostgreSQL).
317
+ *
318
+ * PostgreSQL uses column constraints instead.
319
+ */
320
+ setSchemaValidation(_table: string, _schema: object): Promise<void>;
321
+ /**
322
+ * Remove schema validation (no-op for PostgreSQL).
323
+ */
324
+ removeSchemaValidation(_table: string): Promise<void>;
325
+ /**
326
+ * Begin a transaction.
327
+ */
328
+ beginTransaction(): Promise<void>;
329
+ /**
330
+ * Commit the current transaction.
331
+ */
332
+ commit(): Promise<void>;
333
+ /**
334
+ * Rollback the current transaction.
335
+ */
336
+ rollback(): Promise<void>;
337
+ /**
338
+ * Whether transactions are supported.
339
+ */
340
+ supportsTransactions(): boolean;
341
+ /**
342
+ * Get the default transactional behavior for PostgreSQL.
343
+ *
344
+ * PostgreSQL supports transactional DDL operations, so migrations
345
+ * are wrapped in transactions by default for atomicity and safety.
346
+ *
347
+ * @returns true (PostgreSQL DDL is transactional)
348
+ */
349
+ getDefaultTransactional(): boolean;
350
+ /**
351
+ * Get the default UUID generation expression for PostgreSQL.
352
+ *
353
+ * Resolution order:
354
+ * 1. `migrationDefaults.uuidExpression` → raw expression (escape hatch)
355
+ * 2. `migrationDefaults.uuidStrategy` → mapped to PG function
356
+ * 3. Fallback → `gen_random_uuid()` (v4, PG 13+)
357
+ *
358
+ * @param migrationDefaults - Optional overrides from DataSource config
359
+ * @returns PostgreSQL SQL expression for UUID generation
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * driver.getUuidDefault(); // "gen_random_uuid()"
364
+ * driver.getUuidDefault({ uuidStrategy: "v7" }); // "uuidv7()"
365
+ * driver.getUuidDefault({ uuidExpression: "uuid_generate_v1mc()" }); // "uuid_generate_v1mc()"
366
+ * ```
367
+ */
368
+ getUuidDefault(migrationDefaults?: MigrationDefaults): string;
369
+ /**
370
+ * Execute raw operations with direct driver access.
371
+ *
372
+ * @param callback - Callback receiving the driver
373
+ */
374
+ raw<T>(callback: (connection: unknown) => Promise<T>): Promise<T>;
375
+ /**
376
+ * Execute a SQL statement.
377
+ *
378
+ * @param sql - SQL to execute
379
+ * @param params - Query parameters
380
+ */
381
+ private execute;
382
+ /**
383
+ * Map foreign key action to PostgreSQL syntax.
384
+ */
385
+ private mapForeignKeyAction;
386
+ /**
387
+ * Map PostgreSQL data type to ColumnType.
388
+ */
389
+ private mapPostgresTypeToColumnType;
390
+ }
391
+ //#endregion
392
+ export { PostgresMigrationDriver };
393
+ //# sourceMappingURL=postgres-migration-driver.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration-driver.d.mts","names":[],"sources":["../../../../../../../@warlock.js/cascade/src/drivers/postgres/postgres-migration-driver.ts"],"mappings":"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"}