@warlock.js/cascade 4.0.174 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1050) hide show
  1. package/README.md +6 -5
  2. package/bin/cascadejs +3 -0
  3. package/esm/cli/commands/migrate-export-sql.mjs +48 -0
  4. package/esm/cli/commands/migrate-export-sql.mjs.map +1 -0
  5. package/esm/cli/commands/migrate-list.mjs +26 -0
  6. package/esm/cli/commands/migrate-list.mjs.map +1 -0
  7. package/esm/cli/commands/migrate-rollback.mjs +50 -0
  8. package/esm/cli/commands/migrate-rollback.mjs.map +1 -0
  9. package/esm/cli/commands/migrate.mjs +65 -0
  10. package/esm/cli/commands/migrate.mjs.map +1 -0
  11. package/esm/cli/connection-from-env.mjs +181 -0
  12. package/esm/cli/connection-from-env.mjs.map +1 -0
  13. package/esm/cli/index.mjs +31 -0
  14. package/esm/cli/index.mjs.map +1 -0
  15. package/esm/cli/load-migrations.mjs +78 -0
  16. package/esm/cli/load-migrations.mjs.map +1 -0
  17. package/esm/cli/printers.mjs +57 -0
  18. package/esm/cli/printers.mjs.map +1 -0
  19. package/esm/cli/setup-logger.mjs +30 -0
  20. package/esm/cli/setup-logger.mjs.map +1 -0
  21. package/esm/cli/with-cli-connection.mjs +39 -0
  22. package/esm/cli/with-cli-connection.mjs.map +1 -0
  23. package/esm/cli.d.mts +1 -0
  24. package/esm/cli.mjs +26 -0
  25. package/esm/cli.mjs.map +1 -0
  26. package/esm/context/database-data-source-context.d.mts +32 -0
  27. package/esm/context/database-data-source-context.d.mts.map +1 -0
  28. package/esm/context/database-data-source-context.mjs +35 -0
  29. package/esm/context/database-data-source-context.mjs.map +1 -0
  30. package/esm/context/database-transaction-context.d.mts +38 -0
  31. package/esm/context/database-transaction-context.d.mts.map +1 -0
  32. package/esm/context/database-transaction-context.mjs +47 -0
  33. package/esm/context/database-transaction-context.mjs.map +1 -0
  34. package/esm/contracts/database-driver.contract.d.mts +443 -0
  35. package/esm/contracts/database-driver.contract.d.mts.map +1 -0
  36. package/esm/contracts/database-id-generator.contract.d.mts +109 -0
  37. package/esm/contracts/database-id-generator.contract.d.mts.map +1 -0
  38. package/esm/contracts/database-remover.contract.d.mts +108 -0
  39. package/esm/contracts/database-remover.contract.d.mts.map +1 -0
  40. package/esm/contracts/database-restorer.contract.d.mts +145 -0
  41. package/esm/contracts/database-restorer.contract.d.mts.map +1 -0
  42. package/esm/contracts/database-writer.contract.d.mts +123 -0
  43. package/esm/contracts/database-writer.contract.d.mts.map +1 -0
  44. package/esm/contracts/driver-blueprint.contract.d.mts +52 -0
  45. package/esm/contracts/driver-blueprint.contract.d.mts.map +1 -0
  46. package/esm/contracts/index.d.mts +9 -0
  47. package/esm/contracts/migration-driver.contract.d.mts +476 -0
  48. package/esm/contracts/migration-driver.contract.d.mts.map +1 -0
  49. package/esm/contracts/query-builder.contract.d.mts +1663 -0
  50. package/esm/contracts/query-builder.contract.d.mts.map +1 -0
  51. package/esm/contracts/sync-adapter.contract.d.mts +49 -0
  52. package/esm/contracts/sync-adapter.contract.d.mts.map +1 -0
  53. package/esm/data-source/data-source-registry.d.mts +111 -0
  54. package/esm/data-source/data-source-registry.d.mts.map +1 -0
  55. package/esm/data-source/data-source-registry.mjs +142 -0
  56. package/esm/data-source/data-source-registry.mjs.map +1 -0
  57. package/esm/data-source/data-source.d.mts +160 -0
  58. package/esm/data-source/data-source.d.mts.map +1 -0
  59. package/esm/data-source/data-source.mjs +87 -0
  60. package/esm/data-source/data-source.mjs.map +1 -0
  61. package/esm/database-dirty-tracker.d.mts +254 -0
  62. package/esm/database-dirty-tracker.d.mts.map +1 -0
  63. package/esm/database-dirty-tracker.mjs +356 -0
  64. package/esm/database-dirty-tracker.mjs.map +1 -0
  65. package/esm/drivers/mongodb/mongodb-blueprint.mjs +54 -0
  66. package/esm/drivers/mongodb/mongodb-blueprint.mjs.map +1 -0
  67. package/esm/drivers/mongodb/mongodb-driver.d.mts +334 -0
  68. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -0
  69. package/esm/drivers/mongodb/mongodb-driver.mjs +716 -0
  70. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -0
  71. package/esm/drivers/mongodb/mongodb-id-generator.d.mts +120 -0
  72. package/esm/drivers/mongodb/mongodb-id-generator.d.mts.map +1 -0
  73. package/esm/drivers/mongodb/mongodb-id-generator.mjs +141 -0
  74. package/esm/drivers/mongodb/mongodb-id-generator.mjs.map +1 -0
  75. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts +322 -0
  76. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts.map +1 -0
  77. package/esm/drivers/mongodb/mongodb-migration-driver.mjs +531 -0
  78. package/esm/drivers/mongodb/mongodb-migration-driver.mjs.map +1 -0
  79. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +1117 -0
  80. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -0
  81. package/esm/drivers/mongodb/mongodb-query-builder.mjs +1828 -0
  82. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -0
  83. package/esm/drivers/mongodb/mongodb-query-operations.d.mts +230 -0
  84. package/esm/drivers/mongodb/mongodb-query-operations.d.mts.map +1 -0
  85. package/esm/drivers/mongodb/mongodb-query-operations.mjs +275 -0
  86. package/esm/drivers/mongodb/mongodb-query-operations.mjs.map +1 -0
  87. package/esm/drivers/mongodb/mongodb-query-parser.d.mts +263 -0
  88. package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -0
  89. package/esm/drivers/mongodb/mongodb-query-parser.mjs +965 -0
  90. package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -0
  91. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts +78 -0
  92. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts.map +1 -0
  93. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs +118 -0
  94. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs.map +1 -0
  95. package/esm/drivers/mongodb/types.d.mts +43 -0
  96. package/esm/drivers/mongodb/types.d.mts.map +1 -0
  97. package/esm/drivers/postgres/index.d.mts +8 -0
  98. package/esm/drivers/postgres/index.mjs +9 -0
  99. package/esm/drivers/postgres/postgres-blueprint.d.mts +60 -0
  100. package/esm/drivers/postgres/postgres-blueprint.d.mts.map +1 -0
  101. package/esm/drivers/postgres/postgres-blueprint.mjs +105 -0
  102. package/esm/drivers/postgres/postgres-blueprint.mjs.map +1 -0
  103. package/esm/drivers/postgres/postgres-dialect.d.mts +144 -0
  104. package/esm/drivers/postgres/postgres-dialect.d.mts.map +1 -0
  105. package/esm/drivers/postgres/postgres-dialect.mjs +227 -0
  106. package/esm/drivers/postgres/postgres-dialect.mjs.map +1 -0
  107. package/esm/drivers/postgres/postgres-driver.d.mts +424 -0
  108. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -0
  109. package/esm/drivers/postgres/postgres-driver.mjs +845 -0
  110. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -0
  111. package/esm/drivers/postgres/postgres-migration-driver.d.mts +393 -0
  112. package/esm/drivers/postgres/postgres-migration-driver.d.mts.map +1 -0
  113. package/esm/drivers/postgres/postgres-migration-driver.mjs +760 -0
  114. package/esm/drivers/postgres/postgres-migration-driver.mjs.map +1 -0
  115. package/esm/drivers/postgres/postgres-query-builder.d.mts +399 -0
  116. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -0
  117. package/esm/drivers/postgres/postgres-query-builder.mjs +1105 -0
  118. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -0
  119. package/esm/drivers/postgres/postgres-query-parser.d.mts +351 -0
  120. package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -0
  121. package/esm/drivers/postgres/postgres-query-parser.mjs +796 -0
  122. package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -0
  123. package/esm/drivers/postgres/postgres-sql-serializer.mjs +260 -0
  124. package/esm/drivers/postgres/postgres-sql-serializer.mjs.map +1 -0
  125. package/esm/drivers/postgres/postgres-sync-adapter.d.mts +79 -0
  126. package/esm/drivers/postgres/postgres-sync-adapter.d.mts.map +1 -0
  127. package/esm/drivers/postgres/postgres-sync-adapter.mjs +162 -0
  128. package/esm/drivers/postgres/postgres-sync-adapter.mjs.map +1 -0
  129. package/esm/drivers/postgres/types.d.mts +105 -0
  130. package/esm/drivers/postgres/types.d.mts.map +1 -0
  131. package/esm/drivers/sql/sql-dialect.contract.d.mts +221 -0
  132. package/esm/drivers/sql/sql-dialect.contract.d.mts.map +1 -0
  133. package/esm/drivers/sql/sql-types.d.mts +150 -0
  134. package/esm/drivers/sql/sql-types.d.mts.map +1 -0
  135. package/esm/errors/missing-data-source.error.d.mts +25 -0
  136. package/esm/errors/missing-data-source.error.d.mts.map +1 -0
  137. package/esm/errors/missing-data-source.error.mjs +31 -0
  138. package/esm/errors/missing-data-source.error.mjs.map +1 -0
  139. package/esm/errors/transaction-rollback.error.d.mts +23 -0
  140. package/esm/errors/transaction-rollback.error.d.mts.map +1 -0
  141. package/esm/errors/transaction-rollback.error.mjs +29 -0
  142. package/esm/errors/transaction-rollback.error.mjs.map +1 -0
  143. package/esm/events/model-events.d.mts +234 -0
  144. package/esm/events/model-events.d.mts.map +1 -0
  145. package/esm/events/model-events.mjs +254 -0
  146. package/esm/events/model-events.mjs.map +1 -0
  147. package/esm/expressions/aggregate-expressions.d.mts +224 -0
  148. package/esm/expressions/aggregate-expressions.d.mts.map +1 -0
  149. package/esm/expressions/aggregate-expressions.mjs +232 -0
  150. package/esm/expressions/aggregate-expressions.mjs.map +1 -0
  151. package/esm/index.d.mts +67 -0
  152. package/esm/index.mjs +53 -0
  153. package/esm/migration/column-builder.d.mts +420 -0
  154. package/esm/migration/column-builder.d.mts.map +1 -0
  155. package/esm/migration/column-builder.mjs +532 -0
  156. package/esm/migration/column-builder.mjs.map +1 -0
  157. package/esm/migration/column-helpers.d.mts +280 -0
  158. package/esm/migration/column-helpers.d.mts.map +1 -0
  159. package/esm/migration/column-helpers.mjs +376 -0
  160. package/esm/migration/column-helpers.mjs.map +1 -0
  161. package/esm/migration/foreign-key-builder.d.mts +106 -0
  162. package/esm/migration/foreign-key-builder.d.mts.map +1 -0
  163. package/esm/migration/foreign-key-builder.mjs +126 -0
  164. package/esm/migration/foreign-key-builder.mjs.map +1 -0
  165. package/esm/migration/index.d.mts +6 -0
  166. package/esm/migration/index.mjs +7 -0
  167. package/esm/migration/migration-runner.d.mts +279 -0
  168. package/esm/migration/migration-runner.d.mts.map +1 -0
  169. package/esm/migration/migration-runner.mjs +662 -0
  170. package/esm/migration/migration-runner.mjs.map +1 -0
  171. package/esm/migration/migration.d.mts +2035 -0
  172. package/esm/migration/migration.d.mts.map +1 -0
  173. package/esm/migration/migration.mjs +2083 -0
  174. package/esm/migration/migration.mjs.map +1 -0
  175. package/esm/migration/sql-grammar.mjs +115 -0
  176. package/esm/migration/sql-grammar.mjs.map +1 -0
  177. package/esm/migration/sql-serializer.d.mts +26 -0
  178. package/esm/migration/sql-serializer.d.mts.map +1 -0
  179. package/esm/migration/sql-serializer.mjs +26 -0
  180. package/esm/migration/sql-serializer.mjs.map +1 -0
  181. package/esm/migration/types.d.mts +136 -0
  182. package/esm/migration/types.d.mts.map +1 -0
  183. package/esm/model/methods/accessor-methods.mjs +54 -0
  184. package/esm/model/methods/accessor-methods.mjs.map +1 -0
  185. package/esm/model/methods/delete-methods.mjs +16 -0
  186. package/esm/model/methods/delete-methods.mjs.map +1 -0
  187. package/esm/model/methods/dirty-methods.mjs +20 -0
  188. package/esm/model/methods/dirty-methods.mjs.map +1 -0
  189. package/esm/model/methods/hydration-methods.mjs +51 -0
  190. package/esm/model/methods/hydration-methods.mjs.map +1 -0
  191. package/esm/model/methods/instance-event-methods.mjs +22 -0
  192. package/esm/model/methods/instance-event-methods.mjs.map +1 -0
  193. package/esm/model/methods/meta-methods.mjs +36 -0
  194. package/esm/model/methods/meta-methods.mjs.map +1 -0
  195. package/esm/model/methods/pivot-methods.mjs +48 -0
  196. package/esm/model/methods/pivot-methods.mjs.map +1 -0
  197. package/esm/model/methods/query-methods.mjs +121 -0
  198. package/esm/model/methods/query-methods.mjs.map +1 -0
  199. package/esm/model/methods/restore-methods.mjs +16 -0
  200. package/esm/model/methods/restore-methods.mjs.map +1 -0
  201. package/esm/model/methods/scope-methods.mjs +20 -0
  202. package/esm/model/methods/scope-methods.mjs.map +1 -0
  203. package/esm/model/methods/serialization-methods.mjs +20 -0
  204. package/esm/model/methods/serialization-methods.mjs.map +1 -0
  205. package/esm/model/methods/static-event-methods.mjs +37 -0
  206. package/esm/model/methods/static-event-methods.mjs.map +1 -0
  207. package/esm/model/methods/write-methods.mjs +69 -0
  208. package/esm/model/methods/write-methods.mjs.map +1 -0
  209. package/esm/model/model.d.mts +1778 -0
  210. package/esm/model/model.d.mts.map +1 -0
  211. package/esm/model/model.mjs +1762 -0
  212. package/esm/model/model.mjs.map +1 -0
  213. package/esm/model/model.types.d.mts +47 -0
  214. package/esm/model/model.types.d.mts.map +1 -0
  215. package/esm/model/register-model.d.mts +140 -0
  216. package/esm/model/register-model.d.mts.map +1 -0
  217. package/esm/model/register-model.mjs +175 -0
  218. package/esm/model/register-model.mjs.map +1 -0
  219. package/esm/model/relation-decorators.d.mts +88 -0
  220. package/esm/model/relation-decorators.d.mts.map +1 -0
  221. package/esm/model/relation-decorators.mjs +191 -0
  222. package/esm/model/relation-decorators.mjs.map +1 -0
  223. package/esm/operations/database.d.mts +46 -0
  224. package/esm/operations/database.d.mts.map +1 -0
  225. package/esm/operations/database.mjs +40 -0
  226. package/esm/operations/database.mjs.map +1 -0
  227. package/esm/operations/index.d.mts +2 -0
  228. package/esm/operations/index.mjs +4 -0
  229. package/esm/operations/migrations.d.mts +71 -0
  230. package/esm/operations/migrations.d.mts.map +1 -0
  231. package/esm/operations/migrations.mjs +70 -0
  232. package/esm/operations/migrations.mjs.map +1 -0
  233. package/esm/query-builder/query-builder.d.mts +564 -0
  234. package/esm/query-builder/query-builder.d.mts.map +1 -0
  235. package/esm/query-builder/query-builder.mjs +1097 -0
  236. package/esm/query-builder/query-builder.mjs.map +1 -0
  237. package/esm/relations/index.d.mts +4 -0
  238. package/esm/relations/index.mjs +5 -0
  239. package/esm/relations/key-conventions.mjs +119 -0
  240. package/esm/relations/key-conventions.mjs.map +1 -0
  241. package/esm/relations/pivot-operations.d.mts +155 -0
  242. package/esm/relations/pivot-operations.d.mts.map +1 -0
  243. package/esm/relations/pivot-operations.mjs +232 -0
  244. package/esm/relations/pivot-operations.mjs.map +1 -0
  245. package/esm/relations/relation-hydrator.d.mts +55 -0
  246. package/esm/relations/relation-hydrator.d.mts.map +1 -0
  247. package/esm/relations/relation-hydrator.mjs +52 -0
  248. package/esm/relations/relation-hydrator.mjs.map +1 -0
  249. package/esm/relations/relation-loader.d.mts +190 -0
  250. package/esm/relations/relation-loader.d.mts.map +1 -0
  251. package/esm/relations/relation-loader.mjs +416 -0
  252. package/esm/relations/relation-loader.mjs.map +1 -0
  253. package/esm/relations/types.d.mts +317 -0
  254. package/esm/relations/types.d.mts.map +1 -0
  255. package/esm/remover/database-remover.d.mts +104 -0
  256. package/esm/remover/database-remover.d.mts.map +1 -0
  257. package/esm/remover/database-remover.mjs +174 -0
  258. package/esm/remover/database-remover.mjs.map +1 -0
  259. package/esm/restorer/database-restorer.d.mts +135 -0
  260. package/esm/restorer/database-restorer.d.mts.map +1 -0
  261. package/esm/restorer/database-restorer.mjs +316 -0
  262. package/esm/restorer/database-restorer.mjs.map +1 -0
  263. package/esm/sql-database-dirty-tracker.d.mts +17 -0
  264. package/esm/sql-database-dirty-tracker.d.mts.map +1 -0
  265. package/esm/sql-database-dirty-tracker.mjs +20 -0
  266. package/esm/sql-database-dirty-tracker.mjs.map +1 -0
  267. package/esm/sync/model-events.mjs +46 -0
  268. package/esm/sync/model-events.mjs.map +1 -0
  269. package/esm/sync/model-sync-operation.d.mts +159 -0
  270. package/esm/sync/model-sync-operation.d.mts.map +1 -0
  271. package/esm/sync/model-sync-operation.mjs +257 -0
  272. package/esm/sync/model-sync-operation.mjs.map +1 -0
  273. package/esm/sync/model-sync.d.mts +126 -0
  274. package/esm/sync/model-sync.d.mts.map +1 -0
  275. package/esm/sync/model-sync.mjs +157 -0
  276. package/esm/sync/model-sync.mjs.map +1 -0
  277. package/esm/sync/sync-context.d.mts +69 -0
  278. package/esm/sync/sync-context.d.mts.map +1 -0
  279. package/esm/sync/sync-context.mjs +95 -0
  280. package/esm/sync/sync-context.mjs.map +1 -0
  281. package/esm/sync/sync-manager.d.mts +213 -0
  282. package/esm/sync/sync-manager.d.mts.map +1 -0
  283. package/esm/sync/sync-manager.mjs +597 -0
  284. package/esm/sync/sync-manager.mjs.map +1 -0
  285. package/esm/sync/types.d.mts +215 -0
  286. package/esm/sync/types.d.mts.map +1 -0
  287. package/esm/types.d.mts +423 -0
  288. package/esm/types.d.mts.map +1 -0
  289. package/esm/utils/connect-to-database.d.mts +328 -0
  290. package/esm/utils/connect-to-database.d.mts.map +1 -0
  291. package/esm/utils/connect-to-database.mjs +130 -0
  292. package/esm/utils/connect-to-database.mjs.map +1 -0
  293. package/esm/utils/database-writer.utils.d.mts +18 -0
  294. package/esm/utils/database-writer.utils.d.mts.map +1 -0
  295. package/esm/utils/database-writer.utils.mjs +25 -0
  296. package/esm/utils/database-writer.utils.mjs.map +1 -0
  297. package/esm/utils/define-model.d.mts +185 -0
  298. package/esm/utils/define-model.d.mts.map +1 -0
  299. package/esm/utils/define-model.mjs +105 -0
  300. package/esm/utils/define-model.mjs.map +1 -0
  301. package/esm/utils/is-valid-date-value.mjs +22 -0
  302. package/esm/utils/is-valid-date-value.mjs.map +1 -0
  303. package/esm/utils/once-connected.d.mts +150 -0
  304. package/esm/utils/once-connected.d.mts.map +1 -0
  305. package/esm/utils/once-connected.mjs +203 -0
  306. package/esm/utils/once-connected.mjs.map +1 -0
  307. package/esm/validation/database-seal-plugins.d.mts +1 -0
  308. package/esm/validation/database-seal-plugins.mjs +11 -0
  309. package/esm/validation/database-seal-plugins.mjs.map +1 -0
  310. package/esm/validation/database-writer-validation-error.d.mts +101 -0
  311. package/esm/validation/database-writer-validation-error.d.mts.map +1 -0
  312. package/esm/validation/database-writer-validation-error.mjs +153 -0
  313. package/esm/validation/database-writer-validation-error.mjs.map +1 -0
  314. package/esm/validation/index.d.mts +2 -0
  315. package/esm/validation/index.mjs +4 -0
  316. package/esm/validation/mutators/embed-mutator.mjs +26 -0
  317. package/esm/validation/mutators/embed-mutator.mjs.map +1 -0
  318. package/esm/validation/plugins/database-rules-plugin.d.mts +28 -0
  319. package/esm/validation/plugins/database-rules-plugin.d.mts.map +1 -0
  320. package/esm/validation/plugins/database-rules-plugin.mjs +43 -0
  321. package/esm/validation/plugins/database-rules-plugin.mjs.map +1 -0
  322. package/esm/validation/plugins/embed-validator-plugin.d.mts +17 -0
  323. package/esm/validation/plugins/embed-validator-plugin.d.mts.map +1 -0
  324. package/esm/validation/plugins/embed-validator-plugin.mjs +20 -0
  325. package/esm/validation/plugins/embed-validator-plugin.mjs.map +1 -0
  326. package/esm/validation/rules/database-model-rule.mjs +32 -0
  327. package/esm/validation/rules/database-model-rule.mjs.map +1 -0
  328. package/esm/validation/rules/exists-rule.mjs +29 -0
  329. package/esm/validation/rules/exists-rule.mjs.map +1 -0
  330. package/esm/validation/rules/unique-rule.mjs +43 -0
  331. package/esm/validation/rules/unique-rule.mjs.map +1 -0
  332. package/esm/validation/transformers/embed-model-transformer.mjs +17 -0
  333. package/esm/validation/transformers/embed-model-transformer.mjs.map +1 -0
  334. package/esm/validation/types.d.mts +43 -0
  335. package/esm/validation/types.d.mts.map +1 -0
  336. package/esm/validation/validators/embed-validator.d.mts +25 -0
  337. package/esm/validation/validators/embed-validator.d.mts.map +1 -0
  338. package/esm/validation/validators/embed-validator.mjs +42 -0
  339. package/esm/validation/validators/embed-validator.mjs.map +1 -0
  340. package/esm/writer/database-writer.d.mts +178 -0
  341. package/esm/writer/database-writer.d.mts.map +1 -0
  342. package/esm/writer/database-writer.mjs +317 -0
  343. package/esm/writer/database-writer.mjs.map +1 -0
  344. package/llms-full.txt +2027 -0
  345. package/llms.txt +23 -0
  346. package/package.json +60 -51
  347. package/skills/README.md +65 -0
  348. package/skills/aggregate-data/SKILL.md +102 -0
  349. package/skills/cascade-basics/SKILL.md +93 -0
  350. package/skills/configure-delete-strategy/SKILL.md +126 -0
  351. package/skills/define-model/SKILL.md +170 -0
  352. package/skills/define-relations/SKILL.md +171 -0
  353. package/skills/manage-data-sources/SKILL.md +140 -0
  354. package/skills/manage-transactions/SKILL.md +118 -0
  355. package/skills/paginate-results/SKILL.md +122 -0
  356. package/skills/perform-atomic-ops/SKILL.md +98 -0
  357. package/skills/query-data/SKILL.md +168 -0
  358. package/skills/run-cascade-cli/SKILL.md +125 -0
  359. package/skills/search-by-vector/SKILL.md +127 -0
  360. package/skills/subscribe-to-model-events/SKILL.md +148 -0
  361. package/skills/track-changes/SKILL.md +109 -0
  362. package/skills/write-migration/SKILL.md +144 -0
  363. package/cjs/context/database-data-source-context.d.ts +0 -29
  364. package/cjs/context/database-data-source-context.d.ts.map +0 -1
  365. package/cjs/context/database-data-source-context.js +0 -28
  366. package/cjs/context/database-data-source-context.js.map +0 -1
  367. package/cjs/context/database-transaction-context.d.ts +0 -35
  368. package/cjs/context/database-transaction-context.d.ts.map +0 -1
  369. package/cjs/context/database-transaction-context.js +0 -40
  370. package/cjs/context/database-transaction-context.js.map +0 -1
  371. package/cjs/contracts/database-driver.contract.d.ts +0 -450
  372. package/cjs/contracts/database-driver.contract.d.ts.map +0 -1
  373. package/cjs/contracts/database-id-generator.contract.d.ts +0 -109
  374. package/cjs/contracts/database-id-generator.contract.d.ts.map +0 -1
  375. package/cjs/contracts/database-remover.contract.d.ts +0 -104
  376. package/cjs/contracts/database-remover.contract.d.ts.map +0 -1
  377. package/cjs/contracts/database-restorer.contract.d.ts +0 -143
  378. package/cjs/contracts/database-restorer.contract.d.ts.map +0 -1
  379. package/cjs/contracts/database-writer.contract.d.ts +0 -119
  380. package/cjs/contracts/database-writer.contract.d.ts.map +0 -1
  381. package/cjs/contracts/driver-blueprint.contract.d.ts +0 -49
  382. package/cjs/contracts/driver-blueprint.contract.d.ts.map +0 -1
  383. package/cjs/contracts/index.d.ts +0 -10
  384. package/cjs/contracts/index.d.ts.map +0 -1
  385. package/cjs/contracts/migration-driver.contract.d.ts +0 -522
  386. package/cjs/contracts/migration-driver.contract.d.ts.map +0 -1
  387. package/cjs/contracts/query-builder.contract.d.ts +0 -1609
  388. package/cjs/contracts/query-builder.contract.d.ts.map +0 -1
  389. package/cjs/contracts/sync-adapter.contract.d.ts +0 -58
  390. package/cjs/contracts/sync-adapter.contract.d.ts.map +0 -1
  391. package/cjs/data-source/data-source-registry.d.ts +0 -108
  392. package/cjs/data-source/data-source-registry.d.ts.map +0 -1
  393. package/cjs/data-source/data-source-registry.js +0 -145
  394. package/cjs/data-source/data-source-registry.js.map +0 -1
  395. package/cjs/data-source/data-source.d.ts +0 -147
  396. package/cjs/data-source/data-source.d.ts.map +0 -1
  397. package/cjs/data-source/data-source.js +0 -83
  398. package/cjs/data-source/data-source.js.map +0 -1
  399. package/cjs/database-dirty-tracker.d.ts +0 -252
  400. package/cjs/database-dirty-tracker.d.ts.map +0 -1
  401. package/cjs/database-dirty-tracker.js +0 -386
  402. package/cjs/database-dirty-tracker.js.map +0 -1
  403. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
  404. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
  405. package/cjs/drivers/mongodb/mongodb-blueprint.js +0 -51
  406. package/cjs/drivers/mongodb/mongodb-blueprint.js.map +0 -1
  407. package/cjs/drivers/mongodb/mongodb-driver.d.ts +0 -325
  408. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
  409. package/cjs/drivers/mongodb/mongodb-driver.js +0 -845
  410. package/cjs/drivers/mongodb/mongodb-driver.js.map +0 -1
  411. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
  412. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
  413. package/cjs/drivers/mongodb/mongodb-id-generator.js +0 -149
  414. package/cjs/drivers/mongodb/mongodb-id-generator.js.map +0 -1
  415. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
  416. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
  417. package/cjs/drivers/mongodb/mongodb-migration-driver.js +0 -666
  418. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
  419. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
  420. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
  421. package/cjs/drivers/mongodb/mongodb-query-builder.js +0 -1988
  422. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +0 -1
  423. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
  424. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
  425. package/cjs/drivers/mongodb/mongodb-query-operations.js +0 -270
  426. package/cjs/drivers/mongodb/mongodb-query-operations.js.map +0 -1
  427. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
  428. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
  429. package/cjs/drivers/mongodb/mongodb-query-parser.js +0 -1351
  430. package/cjs/drivers/mongodb/mongodb-query-parser.js.map +0 -1
  431. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
  432. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
  433. package/cjs/drivers/mongodb/mongodb-sync-adapter.js +0 -146
  434. package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
  435. package/cjs/drivers/mongodb/types.d.ts +0 -43
  436. package/cjs/drivers/mongodb/types.d.ts.map +0 -1
  437. package/cjs/drivers/postgres/index.d.ts +0 -16
  438. package/cjs/drivers/postgres/index.d.ts.map +0 -1
  439. package/cjs/drivers/postgres/postgres-blueprint.d.ts +0 -64
  440. package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
  441. package/cjs/drivers/postgres/postgres-blueprint.js +0 -121
  442. package/cjs/drivers/postgres/postgres-blueprint.js.map +0 -1
  443. package/cjs/drivers/postgres/postgres-dialect.d.ts +0 -136
  444. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +0 -1
  445. package/cjs/drivers/postgres/postgres-dialect.js +0 -268
  446. package/cjs/drivers/postgres/postgres-dialect.js.map +0 -1
  447. package/cjs/drivers/postgres/postgres-driver.d.ts +0 -432
  448. package/cjs/drivers/postgres/postgres-driver.d.ts.map +0 -1
  449. package/cjs/drivers/postgres/postgres-driver.js +0 -1008
  450. package/cjs/drivers/postgres/postgres-driver.js.map +0 -1
  451. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +0 -397
  452. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
  453. package/cjs/drivers/postgres/postgres-migration-driver.js +0 -900
  454. package/cjs/drivers/postgres/postgres-migration-driver.js.map +0 -1
  455. package/cjs/drivers/postgres/postgres-query-builder.d.ts +0 -254
  456. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
  457. package/cjs/drivers/postgres/postgres-query-builder.js +0 -933
  458. package/cjs/drivers/postgres/postgres-query-builder.js.map +0 -1
  459. package/cjs/drivers/postgres/postgres-query-parser.d.ts +0 -328
  460. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
  461. package/cjs/drivers/postgres/postgres-query-parser.js +0 -868
  462. package/cjs/drivers/postgres/postgres-query-parser.js.map +0 -1
  463. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
  464. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
  465. package/cjs/drivers/postgres/postgres-sql-serializer.js +0 -400
  466. package/cjs/drivers/postgres/postgres-sql-serializer.js.map +0 -1
  467. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
  468. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
  469. package/cjs/drivers/postgres/postgres-sync-adapter.js +0 -204
  470. package/cjs/drivers/postgres/postgres-sync-adapter.js.map +0 -1
  471. package/cjs/drivers/postgres/types.d.ts +0 -144
  472. package/cjs/drivers/postgres/types.d.ts.map +0 -1
  473. package/cjs/drivers/sql/index.d.ts +0 -10
  474. package/cjs/drivers/sql/index.d.ts.map +0 -1
  475. package/cjs/drivers/sql/sql-dialect.contract.d.ts +0 -204
  476. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
  477. package/cjs/drivers/sql/sql-types.d.ts +0 -202
  478. package/cjs/drivers/sql/sql-types.d.ts.map +0 -1
  479. package/cjs/errors/missing-data-source.error.d.ts +0 -22
  480. package/cjs/errors/missing-data-source.error.d.ts.map +0 -1
  481. package/cjs/errors/missing-data-source.error.js +0 -29
  482. package/cjs/errors/missing-data-source.error.js.map +0 -1
  483. package/cjs/errors/transaction-rollback.error.d.ts +0 -20
  484. package/cjs/errors/transaction-rollback.error.d.ts.map +0 -1
  485. package/cjs/errors/transaction-rollback.error.js +0 -27
  486. package/cjs/errors/transaction-rollback.error.js.map +0 -1
  487. package/cjs/events/model-events.d.ts +0 -231
  488. package/cjs/events/model-events.d.ts.map +0 -1
  489. package/cjs/events/model-events.js +0 -259
  490. package/cjs/events/model-events.js.map +0 -1
  491. package/cjs/expressions/aggregate-expressions.d.ts +0 -215
  492. package/cjs/expressions/aggregate-expressions.d.ts.map +0 -1
  493. package/cjs/expressions/aggregate-expressions.js +0 -221
  494. package/cjs/expressions/aggregate-expressions.js.map +0 -1
  495. package/cjs/expressions/index.d.ts +0 -2
  496. package/cjs/expressions/index.d.ts.map +0 -1
  497. package/cjs/index.d.ts +0 -45
  498. package/cjs/index.d.ts.map +0 -1
  499. package/cjs/index.js +0 -1
  500. package/cjs/index.js.map +0 -1
  501. package/cjs/migration/column-builder.d.ts +0 -417
  502. package/cjs/migration/column-builder.d.ts.map +0 -1
  503. package/cjs/migration/column-builder.js +0 -586
  504. package/cjs/migration/column-builder.js.map +0 -1
  505. package/cjs/migration/column-helpers.d.ts +0 -275
  506. package/cjs/migration/column-helpers.d.ts.map +0 -1
  507. package/cjs/migration/column-helpers.js +0 -389
  508. package/cjs/migration/column-helpers.js.map +0 -1
  509. package/cjs/migration/foreign-key-builder.d.ts +0 -103
  510. package/cjs/migration/foreign-key-builder.d.ts.map +0 -1
  511. package/cjs/migration/foreign-key-builder.js +0 -121
  512. package/cjs/migration/foreign-key-builder.js.map +0 -1
  513. package/cjs/migration/index.d.ts +0 -7
  514. package/cjs/migration/index.d.ts.map +0 -1
  515. package/cjs/migration/migration-runner.d.ts +0 -278
  516. package/cjs/migration/migration-runner.d.ts.map +0 -1
  517. package/cjs/migration/migration-runner.js +0 -815
  518. package/cjs/migration/migration-runner.js.map +0 -1
  519. package/cjs/migration/migration.d.ts +0 -1988
  520. package/cjs/migration/migration.d.ts.map +0 -1
  521. package/cjs/migration/migration.js +0 -2162
  522. package/cjs/migration/migration.js.map +0 -1
  523. package/cjs/migration/sql-grammar.d.ts +0 -61
  524. package/cjs/migration/sql-grammar.d.ts.map +0 -1
  525. package/cjs/migration/sql-grammar.js +0 -164
  526. package/cjs/migration/sql-grammar.js.map +0 -1
  527. package/cjs/migration/sql-serializer.d.ts +0 -22
  528. package/cjs/migration/sql-serializer.d.ts.map +0 -1
  529. package/cjs/migration/sql-serializer.js +0 -26
  530. package/cjs/migration/sql-serializer.js.map +0 -1
  531. package/cjs/migration/types.d.ts +0 -155
  532. package/cjs/migration/types.d.ts.map +0 -1
  533. package/cjs/model/methods/accessor-methods.d.ts +0 -13
  534. package/cjs/model/methods/accessor-methods.d.ts.map +0 -1
  535. package/cjs/model/methods/accessor-methods.js +0 -51
  536. package/cjs/model/methods/accessor-methods.js.map +0 -1
  537. package/cjs/model/methods/delete-methods.d.ts +0 -10
  538. package/cjs/model/methods/delete-methods.d.ts.map +0 -1
  539. package/cjs/model/methods/delete-methods.js +0 -10
  540. package/cjs/model/methods/delete-methods.js.map +0 -1
  541. package/cjs/model/methods/dirty-methods.d.ts +0 -10
  542. package/cjs/model/methods/dirty-methods.d.ts.map +0 -1
  543. package/cjs/model/methods/dirty-methods.js +0 -15
  544. package/cjs/model/methods/dirty-methods.js.map +0 -1
  545. package/cjs/model/methods/hydration-methods.d.ts +0 -10
  546. package/cjs/model/methods/hydration-methods.d.ts.map +0 -1
  547. package/cjs/model/methods/hydration-methods.js +0 -57
  548. package/cjs/model/methods/hydration-methods.js.map +0 -1
  549. package/cjs/model/methods/instance-event-methods.d.ts +0 -7
  550. package/cjs/model/methods/instance-event-methods.d.ts.map +0 -1
  551. package/cjs/model/methods/instance-event-methods.js +0 -15
  552. package/cjs/model/methods/instance-event-methods.js.map +0 -1
  553. package/cjs/model/methods/meta-methods.d.ts +0 -7
  554. package/cjs/model/methods/meta-methods.d.ts.map +0 -1
  555. package/cjs/model/methods/meta-methods.js +0 -78
  556. package/cjs/model/methods/meta-methods.js.map +0 -1
  557. package/cjs/model/methods/query-methods.d.ts +0 -24
  558. package/cjs/model/methods/query-methods.d.ts.map +0 -1
  559. package/cjs/model/methods/query-methods.js +0 -164
  560. package/cjs/model/methods/query-methods.js.map +0 -1
  561. package/cjs/model/methods/restore-methods.d.ts +0 -10
  562. package/cjs/model/methods/restore-methods.d.ts.map +0 -1
  563. package/cjs/model/methods/restore-methods.js +0 -13
  564. package/cjs/model/methods/restore-methods.js.map +0 -1
  565. package/cjs/model/methods/scope-methods.d.ts +0 -7
  566. package/cjs/model/methods/scope-methods.d.ts.map +0 -1
  567. package/cjs/model/methods/scope-methods.js +0 -15
  568. package/cjs/model/methods/scope-methods.js.map +0 -1
  569. package/cjs/model/methods/serialization-methods.d.ts +0 -3
  570. package/cjs/model/methods/serialization-methods.d.ts.map +0 -1
  571. package/cjs/model/methods/serialization-methods.js +0 -27
  572. package/cjs/model/methods/serialization-methods.js.map +0 -1
  573. package/cjs/model/methods/static-event-methods.d.ts +0 -9
  574. package/cjs/model/methods/static-event-methods.d.ts.map +0 -1
  575. package/cjs/model/methods/static-event-methods.js +0 -29
  576. package/cjs/model/methods/static-event-methods.js.map +0 -1
  577. package/cjs/model/methods/write-methods.d.ts +0 -10
  578. package/cjs/model/methods/write-methods.d.ts.map +0 -1
  579. package/cjs/model/methods/write-methods.js +0 -52
  580. package/cjs/model/methods/write-methods.js.map +0 -1
  581. package/cjs/model/model.d.ts +0 -1647
  582. package/cjs/model/model.d.ts.map +0 -1
  583. package/cjs/model/model.js +0 -1657
  584. package/cjs/model/model.js.map +0 -1
  585. package/cjs/model/model.types.d.ts +0 -44
  586. package/cjs/model/model.types.d.ts.map +0 -1
  587. package/cjs/model/register-model.d.ts +0 -81
  588. package/cjs/model/register-model.d.ts.map +0 -1
  589. package/cjs/model/register-model.js +0 -94
  590. package/cjs/model/register-model.js.map +0 -1
  591. package/cjs/query-builder/query-builder.d.ts +0 -556
  592. package/cjs/query-builder/query-builder.d.ts.map +0 -1
  593. package/cjs/query-builder/query-builder.js +0 -1070
  594. package/cjs/query-builder/query-builder.js.map +0 -1
  595. package/cjs/relations/helpers.d.ts +0 -156
  596. package/cjs/relations/helpers.d.ts.map +0 -1
  597. package/cjs/relations/helpers.js +0 -202
  598. package/cjs/relations/helpers.js.map +0 -1
  599. package/cjs/relations/index.d.ts +0 -35
  600. package/cjs/relations/index.d.ts.map +0 -1
  601. package/cjs/relations/pivot-operations.d.ts +0 -160
  602. package/cjs/relations/pivot-operations.d.ts.map +0 -1
  603. package/cjs/relations/pivot-operations.js +0 -293
  604. package/cjs/relations/pivot-operations.js.map +0 -1
  605. package/cjs/relations/relation-hydrator.d.ts +0 -68
  606. package/cjs/relations/relation-hydrator.d.ts.map +0 -1
  607. package/cjs/relations/relation-hydrator.js +0 -81
  608. package/cjs/relations/relation-hydrator.js.map +0 -1
  609. package/cjs/relations/relation-loader.d.ts +0 -194
  610. package/cjs/relations/relation-loader.d.ts.map +0 -1
  611. package/cjs/relations/relation-loader.js +0 -466
  612. package/cjs/relations/relation-loader.js.map +0 -1
  613. package/cjs/relations/types.d.ts +0 -306
  614. package/cjs/relations/types.d.ts.map +0 -1
  615. package/cjs/remover/database-remover.d.ts +0 -100
  616. package/cjs/remover/database-remover.d.ts.map +0 -1
  617. package/cjs/remover/database-remover.js +0 -214
  618. package/cjs/remover/database-remover.js.map +0 -1
  619. package/cjs/restorer/database-restorer.d.ts +0 -131
  620. package/cjs/restorer/database-restorer.d.ts.map +0 -1
  621. package/cjs/restorer/database-restorer.js +0 -434
  622. package/cjs/restorer/database-restorer.js.map +0 -1
  623. package/cjs/sql-database-dirty-tracker.d.ts +0 -13
  624. package/cjs/sql-database-dirty-tracker.d.ts.map +0 -1
  625. package/cjs/sql-database-dirty-tracker.js +0 -14
  626. package/cjs/sql-database-dirty-tracker.js.map +0 -1
  627. package/cjs/sync/index.d.ts +0 -12
  628. package/cjs/sync/index.d.ts.map +0 -1
  629. package/cjs/sync/model-events.d.ts +0 -62
  630. package/cjs/sync/model-events.d.ts.map +0 -1
  631. package/cjs/sync/model-events.js +0 -49
  632. package/cjs/sync/model-events.js.map +0 -1
  633. package/cjs/sync/model-sync-operation.d.ts +0 -163
  634. package/cjs/sync/model-sync-operation.d.ts.map +0 -1
  635. package/cjs/sync/model-sync-operation.js +0 -292
  636. package/cjs/sync/model-sync-operation.js.map +0 -1
  637. package/cjs/sync/model-sync.d.ts +0 -130
  638. package/cjs/sync/model-sync.d.ts.map +0 -1
  639. package/cjs/sync/model-sync.js +0 -178
  640. package/cjs/sync/model-sync.js.map +0 -1
  641. package/cjs/sync/sync-context.d.ts +0 -70
  642. package/cjs/sync/sync-context.d.ts.map +0 -1
  643. package/cjs/sync/sync-context.js +0 -101
  644. package/cjs/sync/sync-context.js.map +0 -1
  645. package/cjs/sync/sync-manager.d.ts +0 -213
  646. package/cjs/sync/sync-manager.d.ts.map +0 -1
  647. package/cjs/sync/sync-manager.js +0 -689
  648. package/cjs/sync/sync-manager.js.map +0 -1
  649. package/cjs/sync/types.d.ts +0 -289
  650. package/cjs/sync/types.d.ts.map +0 -1
  651. package/cjs/test-migrations/test-enhanced-features.migration.d.ts +0 -15
  652. package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
  653. package/cjs/types.d.ts +0 -371
  654. package/cjs/types.d.ts.map +0 -1
  655. package/cjs/utils/connect-to-database.d.ts +0 -307
  656. package/cjs/utils/connect-to-database.d.ts.map +0 -1
  657. package/cjs/utils/connect-to-database.js +0 -130
  658. package/cjs/utils/connect-to-database.js.map +0 -1
  659. package/cjs/utils/database-writer.utils.d.ts +0 -15
  660. package/cjs/utils/database-writer.utils.d.ts.map +0 -1
  661. package/cjs/utils/database-writer.utils.js +0 -14
  662. package/cjs/utils/database-writer.utils.js.map +0 -1
  663. package/cjs/utils/define-model.js +0 -100
  664. package/cjs/utils/define-model.js.map +0 -1
  665. package/cjs/utils/is-valid-date-value.d.ts +0 -5
  666. package/cjs/utils/is-valid-date-value.d.ts.map +0 -1
  667. package/cjs/utils/is-valid-date-value.js +0 -25
  668. package/cjs/utils/is-valid-date-value.js.map +0 -1
  669. package/cjs/utils/once-connected.d.ts +0 -146
  670. package/cjs/utils/once-connected.d.ts.map +0 -1
  671. package/cjs/utils/once-connected.js +0 -251
  672. package/cjs/utils/once-connected.js.map +0 -1
  673. package/cjs/validation/database-seal-plugins.d.ts +0 -12
  674. package/cjs/validation/database-seal-plugins.d.ts.map +0 -1
  675. package/cjs/validation/database-seal-plugins.js +0 -1
  676. package/cjs/validation/database-seal-plugins.js.map +0 -1
  677. package/cjs/validation/database-writer-validation-error.d.ts +0 -97
  678. package/cjs/validation/database-writer-validation-error.d.ts.map +0 -1
  679. package/cjs/validation/database-writer-validation-error.js +0 -160
  680. package/cjs/validation/database-writer-validation-error.js.map +0 -1
  681. package/cjs/validation/index.d.ts +0 -3
  682. package/cjs/validation/index.d.ts.map +0 -1
  683. package/cjs/validation/mutators/embed-mutator.d.ts +0 -9
  684. package/cjs/validation/mutators/embed-mutator.d.ts.map +0 -1
  685. package/cjs/validation/mutators/embed-mutator.js +0 -33
  686. package/cjs/validation/mutators/embed-mutator.js.map +0 -1
  687. package/cjs/validation/plugins/embed-validator-plugin.d.ts +0 -24
  688. package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
  689. package/cjs/validation/plugins/embed-validator-plugin.js +0 -18
  690. package/cjs/validation/plugins/embed-validator-plugin.js.map +0 -1
  691. package/cjs/validation/rules/database-model-rule.d.ts +0 -7
  692. package/cjs/validation/rules/database-model-rule.d.ts.map +0 -1
  693. package/cjs/validation/rules/database-model-rule.js +0 -27
  694. package/cjs/validation/rules/database-model-rule.js.map +0 -1
  695. package/cjs/validation/transformers/embed-model-transformer.d.ts +0 -3
  696. package/cjs/validation/transformers/embed-model-transformer.d.ts.map +0 -1
  697. package/cjs/validation/transformers/embed-model-transformer.js +0 -18
  698. package/cjs/validation/transformers/embed-model-transformer.js.map +0 -1
  699. package/cjs/validation/validators/embed-validator.d.ts +0 -21
  700. package/cjs/validation/validators/embed-validator.d.ts.map +0 -1
  701. package/cjs/validation/validators/embed-validator.js +0 -43
  702. package/cjs/validation/validators/embed-validator.js.map +0 -1
  703. package/cjs/writer/database-writer.d.ts +0 -174
  704. package/cjs/writer/database-writer.d.ts.map +0 -1
  705. package/cjs/writer/database-writer.js +0 -400
  706. package/cjs/writer/database-writer.js.map +0 -1
  707. package/esm/context/database-data-source-context.d.ts +0 -29
  708. package/esm/context/database-data-source-context.d.ts.map +0 -1
  709. package/esm/context/database-data-source-context.js +0 -28
  710. package/esm/context/database-data-source-context.js.map +0 -1
  711. package/esm/context/database-transaction-context.d.ts +0 -35
  712. package/esm/context/database-transaction-context.d.ts.map +0 -1
  713. package/esm/context/database-transaction-context.js +0 -40
  714. package/esm/context/database-transaction-context.js.map +0 -1
  715. package/esm/contracts/database-driver.contract.d.ts +0 -450
  716. package/esm/contracts/database-driver.contract.d.ts.map +0 -1
  717. package/esm/contracts/database-id-generator.contract.d.ts +0 -109
  718. package/esm/contracts/database-id-generator.contract.d.ts.map +0 -1
  719. package/esm/contracts/database-remover.contract.d.ts +0 -104
  720. package/esm/contracts/database-remover.contract.d.ts.map +0 -1
  721. package/esm/contracts/database-restorer.contract.d.ts +0 -143
  722. package/esm/contracts/database-restorer.contract.d.ts.map +0 -1
  723. package/esm/contracts/database-writer.contract.d.ts +0 -119
  724. package/esm/contracts/database-writer.contract.d.ts.map +0 -1
  725. package/esm/contracts/driver-blueprint.contract.d.ts +0 -49
  726. package/esm/contracts/driver-blueprint.contract.d.ts.map +0 -1
  727. package/esm/contracts/index.d.ts +0 -10
  728. package/esm/contracts/index.d.ts.map +0 -1
  729. package/esm/contracts/migration-driver.contract.d.ts +0 -522
  730. package/esm/contracts/migration-driver.contract.d.ts.map +0 -1
  731. package/esm/contracts/query-builder.contract.d.ts +0 -1609
  732. package/esm/contracts/query-builder.contract.d.ts.map +0 -1
  733. package/esm/contracts/sync-adapter.contract.d.ts +0 -58
  734. package/esm/contracts/sync-adapter.contract.d.ts.map +0 -1
  735. package/esm/data-source/data-source-registry.d.ts +0 -108
  736. package/esm/data-source/data-source-registry.d.ts.map +0 -1
  737. package/esm/data-source/data-source-registry.js +0 -145
  738. package/esm/data-source/data-source-registry.js.map +0 -1
  739. package/esm/data-source/data-source.d.ts +0 -147
  740. package/esm/data-source/data-source.d.ts.map +0 -1
  741. package/esm/data-source/data-source.js +0 -83
  742. package/esm/data-source/data-source.js.map +0 -1
  743. package/esm/database-dirty-tracker.d.ts +0 -252
  744. package/esm/database-dirty-tracker.d.ts.map +0 -1
  745. package/esm/database-dirty-tracker.js +0 -386
  746. package/esm/database-dirty-tracker.js.map +0 -1
  747. package/esm/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
  748. package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
  749. package/esm/drivers/mongodb/mongodb-blueprint.js +0 -51
  750. package/esm/drivers/mongodb/mongodb-blueprint.js.map +0 -1
  751. package/esm/drivers/mongodb/mongodb-driver.d.ts +0 -325
  752. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
  753. package/esm/drivers/mongodb/mongodb-driver.js +0 -845
  754. package/esm/drivers/mongodb/mongodb-driver.js.map +0 -1
  755. package/esm/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
  756. package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
  757. package/esm/drivers/mongodb/mongodb-id-generator.js +0 -149
  758. package/esm/drivers/mongodb/mongodb-id-generator.js.map +0 -1
  759. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
  760. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
  761. package/esm/drivers/mongodb/mongodb-migration-driver.js +0 -666
  762. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
  763. package/esm/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
  764. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
  765. package/esm/drivers/mongodb/mongodb-query-builder.js +0 -1988
  766. package/esm/drivers/mongodb/mongodb-query-builder.js.map +0 -1
  767. package/esm/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
  768. package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
  769. package/esm/drivers/mongodb/mongodb-query-operations.js +0 -270
  770. package/esm/drivers/mongodb/mongodb-query-operations.js.map +0 -1
  771. package/esm/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
  772. package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
  773. package/esm/drivers/mongodb/mongodb-query-parser.js +0 -1351
  774. package/esm/drivers/mongodb/mongodb-query-parser.js.map +0 -1
  775. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
  776. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
  777. package/esm/drivers/mongodb/mongodb-sync-adapter.js +0 -146
  778. package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
  779. package/esm/drivers/mongodb/types.d.ts +0 -43
  780. package/esm/drivers/mongodb/types.d.ts.map +0 -1
  781. package/esm/drivers/postgres/index.d.ts +0 -16
  782. package/esm/drivers/postgres/index.d.ts.map +0 -1
  783. package/esm/drivers/postgres/postgres-blueprint.d.ts +0 -64
  784. package/esm/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
  785. package/esm/drivers/postgres/postgres-blueprint.js +0 -121
  786. package/esm/drivers/postgres/postgres-blueprint.js.map +0 -1
  787. package/esm/drivers/postgres/postgres-dialect.d.ts +0 -136
  788. package/esm/drivers/postgres/postgres-dialect.d.ts.map +0 -1
  789. package/esm/drivers/postgres/postgres-dialect.js +0 -268
  790. package/esm/drivers/postgres/postgres-dialect.js.map +0 -1
  791. package/esm/drivers/postgres/postgres-driver.d.ts +0 -432
  792. package/esm/drivers/postgres/postgres-driver.d.ts.map +0 -1
  793. package/esm/drivers/postgres/postgres-driver.js +0 -1008
  794. package/esm/drivers/postgres/postgres-driver.js.map +0 -1
  795. package/esm/drivers/postgres/postgres-migration-driver.d.ts +0 -397
  796. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
  797. package/esm/drivers/postgres/postgres-migration-driver.js +0 -900
  798. package/esm/drivers/postgres/postgres-migration-driver.js.map +0 -1
  799. package/esm/drivers/postgres/postgres-query-builder.d.ts +0 -254
  800. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
  801. package/esm/drivers/postgres/postgres-query-builder.js +0 -933
  802. package/esm/drivers/postgres/postgres-query-builder.js.map +0 -1
  803. package/esm/drivers/postgres/postgres-query-parser.d.ts +0 -328
  804. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
  805. package/esm/drivers/postgres/postgres-query-parser.js +0 -868
  806. package/esm/drivers/postgres/postgres-query-parser.js.map +0 -1
  807. package/esm/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
  808. package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
  809. package/esm/drivers/postgres/postgres-sql-serializer.js +0 -400
  810. package/esm/drivers/postgres/postgres-sql-serializer.js.map +0 -1
  811. package/esm/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
  812. package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
  813. package/esm/drivers/postgres/postgres-sync-adapter.js +0 -204
  814. package/esm/drivers/postgres/postgres-sync-adapter.js.map +0 -1
  815. package/esm/drivers/postgres/types.d.ts +0 -144
  816. package/esm/drivers/postgres/types.d.ts.map +0 -1
  817. package/esm/drivers/sql/index.d.ts +0 -10
  818. package/esm/drivers/sql/index.d.ts.map +0 -1
  819. package/esm/drivers/sql/sql-dialect.contract.d.ts +0 -204
  820. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
  821. package/esm/drivers/sql/sql-types.d.ts +0 -202
  822. package/esm/drivers/sql/sql-types.d.ts.map +0 -1
  823. package/esm/errors/missing-data-source.error.d.ts +0 -22
  824. package/esm/errors/missing-data-source.error.d.ts.map +0 -1
  825. package/esm/errors/missing-data-source.error.js +0 -29
  826. package/esm/errors/missing-data-source.error.js.map +0 -1
  827. package/esm/errors/transaction-rollback.error.d.ts +0 -20
  828. package/esm/errors/transaction-rollback.error.d.ts.map +0 -1
  829. package/esm/errors/transaction-rollback.error.js +0 -27
  830. package/esm/errors/transaction-rollback.error.js.map +0 -1
  831. package/esm/events/model-events.d.ts +0 -231
  832. package/esm/events/model-events.d.ts.map +0 -1
  833. package/esm/events/model-events.js +0 -259
  834. package/esm/events/model-events.js.map +0 -1
  835. package/esm/expressions/aggregate-expressions.d.ts +0 -215
  836. package/esm/expressions/aggregate-expressions.d.ts.map +0 -1
  837. package/esm/expressions/aggregate-expressions.js +0 -221
  838. package/esm/expressions/aggregate-expressions.js.map +0 -1
  839. package/esm/expressions/index.d.ts +0 -2
  840. package/esm/expressions/index.d.ts.map +0 -1
  841. package/esm/index.d.ts +0 -45
  842. package/esm/index.d.ts.map +0 -1
  843. package/esm/index.js +0 -1
  844. package/esm/index.js.map +0 -1
  845. package/esm/migration/column-builder.d.ts +0 -417
  846. package/esm/migration/column-builder.d.ts.map +0 -1
  847. package/esm/migration/column-builder.js +0 -586
  848. package/esm/migration/column-builder.js.map +0 -1
  849. package/esm/migration/column-helpers.d.ts +0 -275
  850. package/esm/migration/column-helpers.d.ts.map +0 -1
  851. package/esm/migration/column-helpers.js +0 -389
  852. package/esm/migration/column-helpers.js.map +0 -1
  853. package/esm/migration/foreign-key-builder.d.ts +0 -103
  854. package/esm/migration/foreign-key-builder.d.ts.map +0 -1
  855. package/esm/migration/foreign-key-builder.js +0 -121
  856. package/esm/migration/foreign-key-builder.js.map +0 -1
  857. package/esm/migration/index.d.ts +0 -7
  858. package/esm/migration/index.d.ts.map +0 -1
  859. package/esm/migration/migration-runner.d.ts +0 -278
  860. package/esm/migration/migration-runner.d.ts.map +0 -1
  861. package/esm/migration/migration-runner.js +0 -815
  862. package/esm/migration/migration-runner.js.map +0 -1
  863. package/esm/migration/migration.d.ts +0 -1988
  864. package/esm/migration/migration.d.ts.map +0 -1
  865. package/esm/migration/migration.js +0 -2162
  866. package/esm/migration/migration.js.map +0 -1
  867. package/esm/migration/sql-grammar.d.ts +0 -61
  868. package/esm/migration/sql-grammar.d.ts.map +0 -1
  869. package/esm/migration/sql-grammar.js +0 -164
  870. package/esm/migration/sql-grammar.js.map +0 -1
  871. package/esm/migration/sql-serializer.d.ts +0 -22
  872. package/esm/migration/sql-serializer.d.ts.map +0 -1
  873. package/esm/migration/sql-serializer.js +0 -26
  874. package/esm/migration/sql-serializer.js.map +0 -1
  875. package/esm/migration/types.d.ts +0 -155
  876. package/esm/migration/types.d.ts.map +0 -1
  877. package/esm/model/methods/accessor-methods.d.ts +0 -13
  878. package/esm/model/methods/accessor-methods.d.ts.map +0 -1
  879. package/esm/model/methods/accessor-methods.js +0 -51
  880. package/esm/model/methods/accessor-methods.js.map +0 -1
  881. package/esm/model/methods/delete-methods.d.ts +0 -10
  882. package/esm/model/methods/delete-methods.d.ts.map +0 -1
  883. package/esm/model/methods/delete-methods.js +0 -10
  884. package/esm/model/methods/delete-methods.js.map +0 -1
  885. package/esm/model/methods/dirty-methods.d.ts +0 -10
  886. package/esm/model/methods/dirty-methods.d.ts.map +0 -1
  887. package/esm/model/methods/dirty-methods.js +0 -15
  888. package/esm/model/methods/dirty-methods.js.map +0 -1
  889. package/esm/model/methods/hydration-methods.d.ts +0 -10
  890. package/esm/model/methods/hydration-methods.d.ts.map +0 -1
  891. package/esm/model/methods/hydration-methods.js +0 -57
  892. package/esm/model/methods/hydration-methods.js.map +0 -1
  893. package/esm/model/methods/instance-event-methods.d.ts +0 -7
  894. package/esm/model/methods/instance-event-methods.d.ts.map +0 -1
  895. package/esm/model/methods/instance-event-methods.js +0 -15
  896. package/esm/model/methods/instance-event-methods.js.map +0 -1
  897. package/esm/model/methods/meta-methods.d.ts +0 -7
  898. package/esm/model/methods/meta-methods.d.ts.map +0 -1
  899. package/esm/model/methods/meta-methods.js +0 -78
  900. package/esm/model/methods/meta-methods.js.map +0 -1
  901. package/esm/model/methods/query-methods.d.ts +0 -24
  902. package/esm/model/methods/query-methods.d.ts.map +0 -1
  903. package/esm/model/methods/query-methods.js +0 -164
  904. package/esm/model/methods/query-methods.js.map +0 -1
  905. package/esm/model/methods/restore-methods.d.ts +0 -10
  906. package/esm/model/methods/restore-methods.d.ts.map +0 -1
  907. package/esm/model/methods/restore-methods.js +0 -13
  908. package/esm/model/methods/restore-methods.js.map +0 -1
  909. package/esm/model/methods/scope-methods.d.ts +0 -7
  910. package/esm/model/methods/scope-methods.d.ts.map +0 -1
  911. package/esm/model/methods/scope-methods.js +0 -15
  912. package/esm/model/methods/scope-methods.js.map +0 -1
  913. package/esm/model/methods/serialization-methods.d.ts +0 -3
  914. package/esm/model/methods/serialization-methods.d.ts.map +0 -1
  915. package/esm/model/methods/serialization-methods.js +0 -27
  916. package/esm/model/methods/serialization-methods.js.map +0 -1
  917. package/esm/model/methods/static-event-methods.d.ts +0 -9
  918. package/esm/model/methods/static-event-methods.d.ts.map +0 -1
  919. package/esm/model/methods/static-event-methods.js +0 -29
  920. package/esm/model/methods/static-event-methods.js.map +0 -1
  921. package/esm/model/methods/write-methods.d.ts +0 -10
  922. package/esm/model/methods/write-methods.d.ts.map +0 -1
  923. package/esm/model/methods/write-methods.js +0 -52
  924. package/esm/model/methods/write-methods.js.map +0 -1
  925. package/esm/model/model.d.ts +0 -1647
  926. package/esm/model/model.d.ts.map +0 -1
  927. package/esm/model/model.js +0 -1657
  928. package/esm/model/model.js.map +0 -1
  929. package/esm/model/model.types.d.ts +0 -44
  930. package/esm/model/model.types.d.ts.map +0 -1
  931. package/esm/model/register-model.d.ts +0 -81
  932. package/esm/model/register-model.d.ts.map +0 -1
  933. package/esm/model/register-model.js +0 -94
  934. package/esm/model/register-model.js.map +0 -1
  935. package/esm/query-builder/query-builder.d.ts +0 -556
  936. package/esm/query-builder/query-builder.d.ts.map +0 -1
  937. package/esm/query-builder/query-builder.js +0 -1070
  938. package/esm/query-builder/query-builder.js.map +0 -1
  939. package/esm/relations/helpers.d.ts +0 -156
  940. package/esm/relations/helpers.d.ts.map +0 -1
  941. package/esm/relations/helpers.js +0 -202
  942. package/esm/relations/helpers.js.map +0 -1
  943. package/esm/relations/index.d.ts +0 -35
  944. package/esm/relations/index.d.ts.map +0 -1
  945. package/esm/relations/pivot-operations.d.ts +0 -160
  946. package/esm/relations/pivot-operations.d.ts.map +0 -1
  947. package/esm/relations/pivot-operations.js +0 -293
  948. package/esm/relations/pivot-operations.js.map +0 -1
  949. package/esm/relations/relation-hydrator.d.ts +0 -68
  950. package/esm/relations/relation-hydrator.d.ts.map +0 -1
  951. package/esm/relations/relation-hydrator.js +0 -81
  952. package/esm/relations/relation-hydrator.js.map +0 -1
  953. package/esm/relations/relation-loader.d.ts +0 -194
  954. package/esm/relations/relation-loader.d.ts.map +0 -1
  955. package/esm/relations/relation-loader.js +0 -466
  956. package/esm/relations/relation-loader.js.map +0 -1
  957. package/esm/relations/types.d.ts +0 -306
  958. package/esm/relations/types.d.ts.map +0 -1
  959. package/esm/remover/database-remover.d.ts +0 -100
  960. package/esm/remover/database-remover.d.ts.map +0 -1
  961. package/esm/remover/database-remover.js +0 -214
  962. package/esm/remover/database-remover.js.map +0 -1
  963. package/esm/restorer/database-restorer.d.ts +0 -131
  964. package/esm/restorer/database-restorer.d.ts.map +0 -1
  965. package/esm/restorer/database-restorer.js +0 -434
  966. package/esm/restorer/database-restorer.js.map +0 -1
  967. package/esm/sql-database-dirty-tracker.d.ts +0 -13
  968. package/esm/sql-database-dirty-tracker.d.ts.map +0 -1
  969. package/esm/sql-database-dirty-tracker.js +0 -14
  970. package/esm/sql-database-dirty-tracker.js.map +0 -1
  971. package/esm/sync/index.d.ts +0 -12
  972. package/esm/sync/index.d.ts.map +0 -1
  973. package/esm/sync/model-events.d.ts +0 -62
  974. package/esm/sync/model-events.d.ts.map +0 -1
  975. package/esm/sync/model-events.js +0 -49
  976. package/esm/sync/model-events.js.map +0 -1
  977. package/esm/sync/model-sync-operation.d.ts +0 -163
  978. package/esm/sync/model-sync-operation.d.ts.map +0 -1
  979. package/esm/sync/model-sync-operation.js +0 -292
  980. package/esm/sync/model-sync-operation.js.map +0 -1
  981. package/esm/sync/model-sync.d.ts +0 -130
  982. package/esm/sync/model-sync.d.ts.map +0 -1
  983. package/esm/sync/model-sync.js +0 -178
  984. package/esm/sync/model-sync.js.map +0 -1
  985. package/esm/sync/sync-context.d.ts +0 -70
  986. package/esm/sync/sync-context.d.ts.map +0 -1
  987. package/esm/sync/sync-context.js +0 -101
  988. package/esm/sync/sync-context.js.map +0 -1
  989. package/esm/sync/sync-manager.d.ts +0 -213
  990. package/esm/sync/sync-manager.d.ts.map +0 -1
  991. package/esm/sync/sync-manager.js +0 -689
  992. package/esm/sync/sync-manager.js.map +0 -1
  993. package/esm/sync/types.d.ts +0 -289
  994. package/esm/sync/types.d.ts.map +0 -1
  995. package/esm/test-migrations/test-enhanced-features.migration.d.ts +0 -15
  996. package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
  997. package/esm/types.d.ts +0 -371
  998. package/esm/types.d.ts.map +0 -1
  999. package/esm/utils/connect-to-database.d.ts +0 -307
  1000. package/esm/utils/connect-to-database.d.ts.map +0 -1
  1001. package/esm/utils/connect-to-database.js +0 -130
  1002. package/esm/utils/connect-to-database.js.map +0 -1
  1003. package/esm/utils/database-writer.utils.d.ts +0 -15
  1004. package/esm/utils/database-writer.utils.d.ts.map +0 -1
  1005. package/esm/utils/database-writer.utils.js +0 -14
  1006. package/esm/utils/database-writer.utils.js.map +0 -1
  1007. package/esm/utils/define-model.js +0 -100
  1008. package/esm/utils/define-model.js.map +0 -1
  1009. package/esm/utils/is-valid-date-value.d.ts +0 -5
  1010. package/esm/utils/is-valid-date-value.d.ts.map +0 -1
  1011. package/esm/utils/is-valid-date-value.js +0 -25
  1012. package/esm/utils/is-valid-date-value.js.map +0 -1
  1013. package/esm/utils/once-connected.d.ts +0 -146
  1014. package/esm/utils/once-connected.d.ts.map +0 -1
  1015. package/esm/utils/once-connected.js +0 -251
  1016. package/esm/utils/once-connected.js.map +0 -1
  1017. package/esm/validation/database-seal-plugins.d.ts +0 -12
  1018. package/esm/validation/database-seal-plugins.d.ts.map +0 -1
  1019. package/esm/validation/database-seal-plugins.js +0 -1
  1020. package/esm/validation/database-seal-plugins.js.map +0 -1
  1021. package/esm/validation/database-writer-validation-error.d.ts +0 -97
  1022. package/esm/validation/database-writer-validation-error.d.ts.map +0 -1
  1023. package/esm/validation/database-writer-validation-error.js +0 -160
  1024. package/esm/validation/database-writer-validation-error.js.map +0 -1
  1025. package/esm/validation/index.d.ts +0 -3
  1026. package/esm/validation/index.d.ts.map +0 -1
  1027. package/esm/validation/mutators/embed-mutator.d.ts +0 -9
  1028. package/esm/validation/mutators/embed-mutator.d.ts.map +0 -1
  1029. package/esm/validation/mutators/embed-mutator.js +0 -33
  1030. package/esm/validation/mutators/embed-mutator.js.map +0 -1
  1031. package/esm/validation/plugins/embed-validator-plugin.d.ts +0 -24
  1032. package/esm/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
  1033. package/esm/validation/plugins/embed-validator-plugin.js +0 -18
  1034. package/esm/validation/plugins/embed-validator-plugin.js.map +0 -1
  1035. package/esm/validation/rules/database-model-rule.d.ts +0 -7
  1036. package/esm/validation/rules/database-model-rule.d.ts.map +0 -1
  1037. package/esm/validation/rules/database-model-rule.js +0 -27
  1038. package/esm/validation/rules/database-model-rule.js.map +0 -1
  1039. package/esm/validation/transformers/embed-model-transformer.d.ts +0 -3
  1040. package/esm/validation/transformers/embed-model-transformer.d.ts.map +0 -1
  1041. package/esm/validation/transformers/embed-model-transformer.js +0 -18
  1042. package/esm/validation/transformers/embed-model-transformer.js.map +0 -1
  1043. package/esm/validation/validators/embed-validator.d.ts +0 -21
  1044. package/esm/validation/validators/embed-validator.d.ts.map +0 -1
  1045. package/esm/validation/validators/embed-validator.js +0 -43
  1046. package/esm/validation/validators/embed-validator.js.map +0 -1
  1047. package/esm/writer/database-writer.d.ts +0 -174
  1048. package/esm/writer/database-writer.d.ts.map +0 -1
  1049. package/esm/writer/database-writer.js +0 -400
  1050. package/esm/writer/database-writer.js.map +0 -1
@@ -0,0 +1,1663 @@
1
+ import { GlobalScopeDefinition, LocalScopeCallback } from "../model/model.types.mjs";
2
+ //#region ../../@warlock.js/cascade/src/contracts/query-builder.contract.d.ts
3
+ /**
4
+ * Ordering direction supported by query builders.
5
+ */
6
+ type OrderDirection = "asc" | "desc";
7
+ /**
8
+ * Options describing a relationship join.
9
+ */
10
+ type JoinOptions = {
11
+ /** Target table or collection. */table: string; /** Local field used in the join condition. */
12
+ localField?: string; /** Operator used in the join condition (defaults to equality). */
13
+ operator?: string; /** Foreign field used in the join condition. */
14
+ foreignField?: string; /** Join type. */
15
+ type?: "inner" | "left" | "right" | "full" | "cross"; /** Optional alias for the joined relation. */
16
+ alias?: string; /** Driver-specific options (e.g. Mongo pipeline). */
17
+ options?: Record<string, unknown>; /** Projection overrides for the joined relation. */
18
+ select?: string[]; /** Extra join conditions expressed as key/value pairs. */
19
+ conditions?: Record<string, unknown>; /** Driver specific pipeline/clauses for advanced joins. */
20
+ pipeline?: unknown[];
21
+ };
22
+ /**
23
+ * Pagination result returned by paginate helpers.
24
+ */
25
+ type PaginationResult<T> = {
26
+ data: T[];
27
+ pagination: {
28
+ total: number;
29
+ page: number;
30
+ limit: number;
31
+ pages: number;
32
+ };
33
+ };
34
+ /**
35
+ * Cursor pagination result.
36
+ */
37
+ type CursorPaginationResult<T> = {
38
+ data: T[];
39
+ pagination: {
40
+ hasMore: boolean;
41
+ hasPrev?: boolean;
42
+ nextCursor?: unknown;
43
+ prevCursor?: unknown;
44
+ };
45
+ };
46
+ /**
47
+ * Chunk callback signature.
48
+ */
49
+ type ChunkCallback<T> = (rows: T[], chunkIndex: number) => Promise<boolean | void> | boolean | void;
50
+ /**
51
+ * Cursor pagination options.
52
+ */
53
+ type CursorPaginationOptions = {
54
+ cursor?: unknown;
55
+ direction?: "next" | "prev";
56
+ limit: number;
57
+ column?: string;
58
+ };
59
+ /**
60
+ * Standard pagination options.
61
+ */
62
+ type PaginationOptions = {
63
+ page?: number;
64
+ limit?: number;
65
+ };
66
+ /**
67
+ * Supported comparison operators.
68
+ */
69
+ type WhereOperator = "=" | "!=" | ">" | ">=" | "<" | "<=" | "in" | "notIn" | "between" | "notBetween" | "like" | "notLike" | "startsWith" | "notStartsWith" | "endsWith" | "notEndsWith" | "exists" | string;
70
+ type WhereObject = Record<string, unknown>;
71
+ /**
72
+ * Callback-based predicate definition.
73
+ */
74
+ type WhereCallback<T> = (builder: QueryBuilderContract<T>) => unknown;
75
+ /**
76
+ * Group-by payload supporting strings, arrays, or driver specific objects.
77
+ */
78
+ type GroupByInput = string | string[] | Record<string, unknown> | Array<Record<string, unknown>>;
79
+ /**
80
+ * Having clause payload.
81
+ */
82
+ type HavingInput = Record<string, unknown> | [field: string, value: unknown] | [field: string, operator: WhereOperator, value: unknown];
83
+ /**
84
+ * Raw expression payload for projection/order/group extensions.
85
+ */
86
+ type RawExpression = string | Record<string, unknown> | unknown;
87
+ /**
88
+ * Driver-agnostic representation of a parsed query.
89
+ *
90
+ * Each driver populates only the fields it understands:
91
+ *
92
+ * - **SQL/CQL/Cypher** drivers → `query` + `bindings`
93
+ * - **MongoDB** → `pipeline`
94
+ * - **Elasticsearch** → `pipeline` (JSON DSL body)
95
+ * - **DynamoDB / Redis / custom** → `native`
96
+ *
97
+ * @example
98
+ * // PostgreSQL result:
99
+ * { query: "SELECT * FROM users WHERE id = $1", bindings: [42] }
100
+ *
101
+ * // MongoDB result:
102
+ * { pipeline: [{ $match: { status: "active" } }, { $limit: 10 }] }
103
+ */
104
+ type DriverQuery = {
105
+ /** Text-based query string: SQL, CQL, Cypher, etc. */query?: string; /** Positional or named parameter bindings for the text query. */
106
+ bindings?: unknown[]; /** Document pipeline: MongoDB aggregation stages, Elasticsearch DSL body, etc. */
107
+ pipeline?: unknown[]; /** Full escape hatch for drivers that don't fit any shape above. */
108
+ native?: unknown;
109
+ };
110
+ /**
111
+ * Contract that all query builders must implement for building queries in a
112
+ * database-agnostic way. This interface provides a fluent, chainable API
113
+ * for constructing complex database queries.
114
+ *
115
+ * @template T - The type of records returned by the query
116
+ */
117
+ interface QueryBuilderContract<T = unknown> {
118
+ /**
119
+ * Table name
120
+ */
121
+ table: string;
122
+ /**
123
+ * Hydrate records after fetching is done successfully
124
+ * Add hydrate callback function
125
+ */
126
+ hydrate(callback: (data: any, index: number) => any): this;
127
+ /**
128
+ * Register a callback to be invoked before query execution.
129
+ * Allows modification of the query before it runs.
130
+ * @returns Unsubscribe function to remove the callback
131
+ */
132
+ onFetching(callback: (query: this) => void | Promise<void>): () => void;
133
+ /**
134
+ * Register a callback to be invoked after records are fetched but before hydration.
135
+ * Receives raw records from the database.
136
+ * @returns Unsubscribe function to remove the callback
137
+ */
138
+ onHydrating(callback: (records: any[], context: any) => void | Promise<void>): () => void;
139
+ /**
140
+ * Register a callback to be invoked after records are fetched and hydrated.
141
+ * Receives hydrated model instances.
142
+ * @returns Unsubscribe function to remove the callback
143
+ */
144
+ onFetched(callback: (records: any[], context: any) => void | Promise<void>): () => void;
145
+ /**
146
+ * Pending global scopes to be applied before query execution.
147
+ * Passed from Model.query() and applied in execute().
148
+ */
149
+ pendingGlobalScopes?: Map<string, GlobalScopeDefinition>;
150
+ /**
151
+ * Available local scopes that can be manually applied.
152
+ * Passed from Model.query() for opt-in usage.
153
+ */
154
+ availableLocalScopes?: Map<string, LocalScopeCallback>;
155
+ /**
156
+ * Set of global scope names that have been disabled.
157
+ */
158
+ disabledGlobalScopes?: Set<string>;
159
+ /**
160
+ * Flag indicating whether scopes have been applied.
161
+ */
162
+ scopesApplied?: boolean;
163
+ /**
164
+ * Map of relations to eagerly load.
165
+ * Keys are relation names, values are either:
166
+ * - `true` for simple loading
167
+ * - A callback to customize the related query
168
+ */
169
+ eagerLoadRelations?: Map<string, boolean | ((query: QueryBuilderContract) => void)>;
170
+ /**
171
+ * Map of count expressions to emit alongside each result row.
172
+ *
173
+ * Keyed by **output column alias** (default `${relationName}Count`,
174
+ * customisable via the `as <alias>` shorthand or the object value form).
175
+ * Aliasing by output column lets the same relation appear multiple times
176
+ * under different filters.
177
+ *
178
+ * Populated by `withCount()`. Consumed by the driver subclass at execute
179
+ * time to emit per-row count expressions.
180
+ */
181
+ countRelations?: Map<string, {
182
+ /** Relation name as declared on the model — used to resolve the relation definition. */relation: string; /** Operations recorded inside a constraint callback (where* filters only). */
183
+ constraintOps?: unknown[];
184
+ }>;
185
+ /**
186
+ * Map of relations to load via JOIN (single query).
187
+ * Keys are relation names, values contain join configuration.
188
+ */
189
+ joinRelations?: Map<string, {
190
+ alias: string;
191
+ type: "belongsTo" | "hasOne" | "hasMany";
192
+ model?: any;
193
+ localKey?: string;
194
+ foreignKey?: string;
195
+ ownerKey?: string;
196
+ parentPath?: string | null;
197
+ relationName?: string;
198
+ parentModel?: any;
199
+ select?: string[];
200
+ }>;
201
+ /**
202
+ * Relation definitions from the model class.
203
+ * Used by joinWith() to determine how to join tables.
204
+ */
205
+ relationDefinitions?: Record<string, any>;
206
+ /**
207
+ * Model class reference for resolving related models.
208
+ */
209
+ modelClass?: any;
210
+ /**
211
+ * Load relations using database JOINs in a single query.
212
+ *
213
+ * Unlike `with()` which uses separate queries, `joinWith()` uses
214
+ * LEFT JOIN (SQL) or $lookup (MongoDB) to fetch related data
215
+ * in a single query. The related data is hydrated into proper
216
+ * model instances and attached to the main model.
217
+ *
218
+ * Best for: belongsTo and hasOne relations where you need
219
+ * efficient single-query loading.
220
+ *
221
+ * @param relation - Relation name to load via JOIN
222
+ * @returns Query builder for chaining
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * // Single relation
227
+ * const post = await Post.joinWith("author").first();
228
+ * console.log(post.author); // User model instance
229
+ * console.log(post.data); // { id, title, authorId } - no author data
230
+ *
231
+ * // Multiple relations
232
+ * const post = await Post.joinWith("author", "category").first();
233
+ * ```
234
+ */
235
+ joinWith(...relations: string[]): this;
236
+ /**
237
+ * Disable one or more global scopes for this query.
238
+ *
239
+ * @param scopeNames - Names of scopes to disable
240
+ * @returns Query builder for chaining
241
+ *
242
+ * @example
243
+ * ```typescript
244
+ * // Disable tenant scope for admin queries
245
+ * await User.query().withoutGlobalScope('tenant').get();
246
+ *
247
+ * // Disable multiple scopes
248
+ * await User.query().withoutGlobalScope('tenant', 'softDelete').get();
249
+ * ```
250
+ */
251
+ withoutGlobalScope(...scopeNames: string[]): this;
252
+ /**
253
+ * Disable all global scopes for this query.
254
+ *
255
+ * @returns Query builder for chaining
256
+ *
257
+ * @example
258
+ * ```typescript
259
+ * // Get all users including soft-deleted and from all tenants
260
+ * await User.query().withoutGlobalScopes().get();
261
+ * ```
262
+ */
263
+ withoutGlobalScopes(): this;
264
+ /**
265
+ * Apply a local scope to this query.
266
+ *
267
+ * @param scopeName - Name of the scope to apply
268
+ * @returns Query builder for chaining
269
+ * @throws Error if scope not found
270
+ *
271
+ * @example
272
+ * ```typescript
273
+ * // Apply 'active' scope
274
+ * await User.query().scope('active').get();
275
+ *
276
+ * // Chain multiple scopes
277
+ * await User.query().scope('active').scope('admins').get();
278
+ * ```
279
+ */
280
+ scope(scopeName: string, ...args: any[]): this;
281
+ /**
282
+ * Add a where clause to the query.
283
+ *
284
+ * @example
285
+ * // Simple equality
286
+ * query.where('age', 18)
287
+ *
288
+ * // With operator
289
+ * query.where('age', '>', 18)
290
+ *
291
+ * // Object-based
292
+ * query.where({ age: 18, isActive: true })
293
+ *
294
+ * // Callback-based
295
+ * query.where(q => q.where('age', '>', 18).orWhere('role', 'admin'))
296
+ */
297
+ where(field: string, value: unknown): this;
298
+ where(field: string, operator: WhereOperator, value: unknown): this;
299
+ where(conditions: WhereObject): this;
300
+ where(callback: WhereCallback<T>): this;
301
+ /**
302
+ * Add a raw where clause expressed in the native query language.
303
+ *
304
+ * @example
305
+ * query.whereRaw({ $expr: { $gt: ["$stock", "$reserved"] } })
306
+ * query.whereRaw("this.age > ?", [30])
307
+ */
308
+ whereRaw(expression: RawExpression, bindings?: unknown[]): this;
309
+ /**
310
+ * Add a raw OR where clause expressed in the native query language.
311
+ *
312
+ * @example
313
+ * query.orWhereRaw({ $where: "this.isAdmin === true" })
314
+ */
315
+ orWhereRaw(expression: RawExpression, bindings?: unknown[]): this;
316
+ /**
317
+ * Compare two columns/fields directly.
318
+ *
319
+ * @example
320
+ * query.whereColumn('stock', '>', 'reserved')
321
+ */
322
+ whereColumn(first: string, operator: WhereOperator, second: string): this;
323
+ /**
324
+ * Compare two columns/fields directly using OR logic.
325
+ *
326
+ * @example
327
+ * query.orWhereColumn('startDate', '<', 'endDate')
328
+ */
329
+ orWhereColumn(first: string, operator: WhereOperator, second: string): this;
330
+ /**
331
+ * Compare multiple column pairs at once.
332
+ *
333
+ * @example
334
+ * query.whereColumns([
335
+ * ['price', '>', 'discountPrice'],
336
+ * ['stock', '>=', 'reserved'],
337
+ * ])
338
+ */
339
+ whereColumns(comparisons: Array<[left: string, operator: WhereOperator, right: string]>): this;
340
+ /**
341
+ * Ensure a value falls between two other column values.
342
+ *
343
+ * @example
344
+ * query.whereBetweenColumns('age', 'minAge', 'maxAge')
345
+ */
346
+ whereBetweenColumns(field: string, lowerColumn: string, upperColumn: string): this;
347
+ /**
348
+ * Constrain a field to a specific date (time portion ignored).
349
+ *
350
+ * @example
351
+ * query.whereDate('createdAt', '2024-05-01')
352
+ */
353
+ whereDate(field: string, value: Date | string): this;
354
+ /**
355
+ * Require a field to match a given date exactly.
356
+ */
357
+ whereDateEquals(field: string, value: Date | string): this;
358
+ /**
359
+ * Require a field to be before the given date.
360
+ */
361
+ whereDateBefore(field: string, value: Date | string): this;
362
+ /**
363
+ * Require a field to be after the given date.
364
+ */
365
+ whereDateAfter(field: string, value: Date | string): this;
366
+ /**
367
+ * Constrain a field to match a specific time.
368
+ *
369
+ * @example
370
+ * query.whereTime('opensAt', '08:00')
371
+ */
372
+ whereTime(field: string, value: string): this;
373
+ /**
374
+ * Constrain the day-of-month extracted from a date field.
375
+ */
376
+ whereDay(field: string, value: number): this;
377
+ /**
378
+ * Constrain the month extracted from a date field.
379
+ */
380
+ whereMonth(field: string, value: number): this;
381
+ /**
382
+ * Constrain the year extracted from a date field.
383
+ */
384
+ whereYear(field: string, value: number): this;
385
+ /**
386
+ * Ensure a JSON/array path contains the given value.
387
+ */
388
+ whereJsonContains(path: string, value: unknown): this;
389
+ /**
390
+ * Ensure a JSON/array path does not contain the given value.
391
+ */
392
+ whereJsonDoesntContain(path: string, value: unknown): this;
393
+ /**
394
+ * Ensure a JSON/array path exists.
395
+ */
396
+ whereJsonContainsKey(path: string): this;
397
+ /**
398
+ * Constrain the length of a JSON/array path.
399
+ *
400
+ * @example
401
+ * query.whereJsonLength('tags', '>', 3)
402
+ */
403
+ whereJsonLength(path: string, operator: WhereOperator, value: number): this;
404
+ /**
405
+ * Ensure a JSON path resolves to an array.
406
+ */
407
+ whereJsonIsArray(path: string): this;
408
+ /**
409
+ * Ensure a JSON path resolves to an object.
410
+ */
411
+ whereJsonIsObject(path: string): this;
412
+ /**
413
+ * Constrain the length of an array field.
414
+ *
415
+ * @example
416
+ * query.whereArrayLength('roles', '>=', 2)
417
+ */
418
+ whereArrayLength(field: string, operator: WhereOperator, value: number): this;
419
+ /**
420
+ * Shortcut for filtering by the primary key.
421
+ */
422
+ whereId(value: string | number): this;
423
+ /**
424
+ * Shortcut for filtering by multiple primary keys.
425
+ */
426
+ whereIds(values: Array<string | number>): this;
427
+ /**
428
+ * Shortcut for UUID-based identifiers.
429
+ */
430
+ whereUuid(value: string): this;
431
+ /**
432
+ * Shortcut for ULID-based identifiers.
433
+ */
434
+ whereUlid(value: string): this;
435
+ /**
436
+ * Perform a full-text search across the specified fields.
437
+ */
438
+ whereFullText(fields: string | string[], query: string): this;
439
+ /**
440
+ * Apply a full-text OR clause.
441
+ */
442
+ orWhereFullText(fields: string | string[], query: string): this;
443
+ /**
444
+ * Convenience alias for simple text searches.
445
+ */
446
+ whereSearch(field: string, query: string): this;
447
+ /**
448
+ * Negate a nested callback block.
449
+ */
450
+ whereNot(callback: WhereCallback<T>): this;
451
+ /**
452
+ * Negate a nested callback block with OR logic.
453
+ */
454
+ orWhereNot(callback: WhereCallback<T>): this;
455
+ /**
456
+ * Apply a nested existence check.
457
+ *
458
+ * @example
459
+ * query.whereExists(q => q.where('status', 'active'))
460
+ * query.whereExists('optionalField')
461
+ */
462
+ whereExists(callback: WhereCallback<T>): this;
463
+ /**
464
+ * Apply a nested non-existence check.
465
+ *
466
+ * @example
467
+ * query.whereNotExists(q => q.where('status', 'inactive'))
468
+ * query.whereNotExists('deletedAt')
469
+ */
470
+ whereNotExists(callback: WhereCallback<T>): this;
471
+ /**
472
+ * Add an OR where clause to the query.
473
+ *
474
+ * @example
475
+ * query.where('role', 'admin').orWhere('role', 'moderator')
476
+ */
477
+ orWhere(field: string, value: unknown): this;
478
+ orWhere(field: string, operator: WhereOperator, value: unknown): this;
479
+ orWhere(conditions: WhereObject): this;
480
+ orWhere(callback: WhereCallback<T>): this;
481
+ /**
482
+ * Add a where IN clause to the query.
483
+ *
484
+ * @example
485
+ * query.whereIn('status', ['active', 'pending'])
486
+ */
487
+ whereIn(field: string, values: unknown[]): this;
488
+ /**
489
+ * Add a where NOT IN clause to the query.
490
+ *
491
+ * @example
492
+ * query.whereNotIn('status', ['deleted', 'archived'])
493
+ */
494
+ whereNotIn(field: string, values: unknown[]): this;
495
+ /**
496
+ * Constrain the field to be NULL.
497
+ *
498
+ * @example
499
+ * query.whereNull('deletedAt')
500
+ */
501
+ whereNull(field: string): this;
502
+ /**
503
+ * Constrain the field to be NOT NULL.
504
+ *
505
+ * @example
506
+ * query.whereNotNull('email')
507
+ */
508
+ whereNotNull(field: string): this;
509
+ /**
510
+ * Constrain the field to be between the given range (inclusive).
511
+ *
512
+ * @example
513
+ * query.whereBetween('age', [18, 65])
514
+ */
515
+ whereBetween(field: string, range: [unknown, unknown]): this;
516
+ /**
517
+ * Constrain the field to be outside the given range.
518
+ *
519
+ * @example
520
+ * query.whereNotBetween('age', [18, 65])
521
+ */
522
+ whereNotBetween(field: string, range: [unknown, unknown]): this;
523
+ /**
524
+ * Apply pattern matching (case-insensitive) for the given field.
525
+ *
526
+ * @example
527
+ * query.whereLike('name', '%john%')
528
+ */
529
+ whereLike(field: string, pattern: RegExp | string): this;
530
+ /**
531
+ * Apply pattern exclusion (case-insensitive) for the given field.
532
+ *
533
+ * @example
534
+ * query.whereNotLike('email', '%@spam.com')
535
+ */
536
+ whereNotLike(field: string, pattern: string): this;
537
+ /**
538
+ * Constrain the field to start with the given value.
539
+ *
540
+ * @example
541
+ * query.whereStartsWith('name', 'John')
542
+ */
543
+ whereStartsWith(field: string, value: string | number): this;
544
+ /**
545
+ * Constrain the field to not start with the given value.
546
+ *
547
+ * @example
548
+ * query.whereNotStartsWith('name', 'Admin')
549
+ */
550
+ whereNotStartsWith(field: string, value: string | number): this;
551
+ /**
552
+ * Constrain the field to end with the given value.
553
+ *
554
+ * @example
555
+ * query.whereEndsWith('email', '@example.com')
556
+ */
557
+ whereEndsWith(field: string, value: string | number): this;
558
+ /**
559
+ * Constrain the field to not end with the given value.
560
+ *
561
+ * @example
562
+ * query.whereNotEndsWith('email', '@spam.com')
563
+ */
564
+ whereNotEndsWith(field: string, value: string | number): this;
565
+ /**
566
+ * Constrain the date field to be between the given range.
567
+ *
568
+ * @example
569
+ * query.whereDateBetween('createdAt', [startDate, endDate])
570
+ */
571
+ whereDateBetween(field: string, range: [Date, Date]): this;
572
+ /**
573
+ * Constrain the date field to not be between the given range.
574
+ *
575
+ * @example
576
+ * query.whereDateNotBetween('createdAt', [startDate, endDate])
577
+ */
578
+ whereDateNotBetween(field: string, range: [Date, Date]): this;
579
+ /**
580
+ * Check that a field exists (MongoDB-specific).
581
+ *
582
+ * @example
583
+ * query.whereExists('optionalField')
584
+ */
585
+ whereExists(field: string): this;
586
+ /**
587
+ * Check that a field does not exist (MongoDB-specific).
588
+ *
589
+ * @example
590
+ * query.whereNotExists('optionalField')
591
+ */
592
+ whereNotExists(field: string): this;
593
+ /**
594
+ * Constrain an array/collection field by size.
595
+ *
596
+ * @example
597
+ * // Exact size
598
+ * query.whereSize('tags', 3)
599
+ *
600
+ * // With operator
601
+ * query.whereSize('tags', '>', 0)
602
+ */
603
+ whereSize(field: string, size: number): this;
604
+ whereSize(field: string, operator: ">" | ">=" | "=" | "<" | "<=", size: number): this;
605
+ /**
606
+ * Perform a full-text search (driver-specific implementation).
607
+ *
608
+ * @example
609
+ * query.textSearch('javascript tutorial', { language: 'en' })
610
+ */
611
+ textSearch(query: string, filters?: WhereObject): this;
612
+ /**
613
+ * Constrain an array field to contain the given value.
614
+ * Optionally match by a specific key within array of objects.
615
+ *
616
+ * @example
617
+ * // Simple array
618
+ * query.whereArrayContains('tags', 'javascript')
619
+ *
620
+ * // Array of objects
621
+ * query.whereArrayContains('items', 'laptop', 'name')
622
+ */
623
+ whereArrayContains(field: string, value: unknown, key?: string): this;
624
+ /**
625
+ * Constrain an array field to not contain the given value.
626
+ *
627
+ * @example
628
+ * query.whereArrayNotContains('tags', 'deprecated')
629
+ */
630
+ whereArrayNotContains(field: string, value: unknown, key?: string): this;
631
+ /**
632
+ * Constrain an array field to contain the value OR be empty.
633
+ *
634
+ * @example
635
+ * query.whereArrayHasOrEmpty('permissions', 'admin')
636
+ */
637
+ whereArrayHasOrEmpty(field: string, value: unknown, key?: string): this;
638
+ /**
639
+ * Constrain an array field to not contain the value OR be empty.
640
+ *
641
+ * @example
642
+ * query.whereArrayNotHaveOrEmpty('blockedUsers', userId)
643
+ */
644
+ whereArrayNotHaveOrEmpty(field: string, value: unknown, key?: string): this;
645
+ /**
646
+ * Specify the columns/fields to be selected.
647
+ *
648
+ * @example
649
+ * query.select(['name', 'email', 'age'])
650
+ */
651
+ select(fields: string[]): this;
652
+ select(fields: Record<string, 0 | 1 | boolean>): this;
653
+ select(...fields: Array<string | string[]>): this;
654
+ select(...args: Array<string | string[]>): this;
655
+ /**
656
+ * Select a field with an alias.
657
+ *
658
+ * @example
659
+ * query.selectAs('name', 'fullName')
660
+ */
661
+ selectAs(field: string, alias: string): this;
662
+ /**
663
+ * Add a raw selection/projection expression.
664
+ *
665
+ * @example
666
+ * query.selectRaw({ total: { $sum: "$items.price" } })
667
+ */
668
+ selectRaw(expression: RawExpression, bindings?: unknown[]): this;
669
+ /**
670
+ * Add multiple raw selections at once.
671
+ *
672
+ * @example
673
+ * query.selectRawMany([
674
+ * { alias: "firstName", expression: "$profile.name.first" },
675
+ * { alias: "isAdult", expression: { $gte: ["$age", 18] } },
676
+ * ])
677
+ */
678
+ selectRawMany(definitions: Array<{
679
+ alias: string;
680
+ expression: RawExpression;
681
+ bindings?: unknown[];
682
+ }>): this;
683
+ /**
684
+ * Inject a sub-select expression under the given alias.
685
+ *
686
+ * @example
687
+ * query.selectSub({ $sum: "$items.price" }, "itemsTotal")
688
+ */
689
+ selectSub(expression: RawExpression, alias: string): this;
690
+ /**
691
+ * Add a sub-select expression without clearing previous selects.
692
+ */
693
+ addSelectSub(expression: RawExpression, alias: string): this;
694
+ /**
695
+ * Add a simple aggregate expression to the projection.
696
+ *
697
+ * @example
698
+ * query.selectAggregate("items.price", "sum", "itemsTotal")
699
+ */
700
+ selectAggregate(field: string, aggregate: "sum" | "avg" | "min" | "max" | "count" | "first" | "last", alias: string): this;
701
+ /**
702
+ * Project whether the given field exists.
703
+ *
704
+ * @example
705
+ * query.selectExists("deletedAt", "isDeleted")
706
+ */
707
+ selectExists(field: string, alias: string): this;
708
+ /**
709
+ * Project the number of items in an array field.
710
+ *
711
+ * @example
712
+ * query.selectCount("permissions", "permissionsCount")
713
+ */
714
+ selectCount(field: string, alias: string): this;
715
+ /**
716
+ * Build CASE / switch like conditions in the projection.
717
+ *
718
+ * @example
719
+ * query.selectCase(
720
+ * [
721
+ * { when: { $eq: ["$status", "active"] }, then: "Active" },
722
+ * { when: { $eq: ["$status", "pending"] }, then: "Pending" },
723
+ * ],
724
+ * "Unknown",
725
+ * "statusLabel",
726
+ * )
727
+ */
728
+ selectCase(cases: Array<{
729
+ when: RawExpression;
730
+ then: RawExpression | unknown;
731
+ }>, otherwise: RawExpression | unknown, alias: string): this;
732
+ /**
733
+ * Convenience helper for single condition CASE statements.
734
+ *
735
+ * @example
736
+ * query.selectWhen({ $gt: ["$age", 18] }, "Adult", "Minor", "ageLabel")
737
+ */
738
+ selectWhen(condition: RawExpression, thenValue: RawExpression | unknown, elseValue: RawExpression | unknown, alias: string): this;
739
+ /**
740
+ * Allow direct access to the driver projection object for advanced cases.
741
+ *
742
+ * @example
743
+ * query.selectDriverProjection(projection => {
744
+ * projection.score = { $meta: "textScore" };
745
+ * })
746
+ */
747
+ selectDriverProjection(callback: (projection: Record<string, unknown>) => void): this;
748
+ /**
749
+ * Project a nested JSON path under a new alias.
750
+ *
751
+ * @example
752
+ * query.selectJson("settings->theme", "theme")
753
+ */
754
+ selectJson(path: string, alias?: string): this;
755
+ /**
756
+ * Apply a raw expression to a JSON path.
757
+ *
758
+ * @example
759
+ * query.selectJsonRaw("stats->views", { $ifNull: ["$stats.views", 0] }, "views")
760
+ */
761
+ selectJsonRaw(path: string, expression: RawExpression, alias: string): this;
762
+ /**
763
+ * Exclude a nested JSON path from the projection.
764
+ */
765
+ deselectJson(path: string): this;
766
+ /**
767
+ * Compute concatenated string fields.
768
+ *
769
+ * @example
770
+ * query.selectConcat(["$firstName", " ", "$lastName"], "fullName")
771
+ */
772
+ selectConcat(fields: Array<string | RawExpression>, alias: string): this;
773
+ /**
774
+ * Coalesce a list of values, returning the first non-null entry.
775
+ *
776
+ * @example
777
+ * query.selectCoalesce(["$nickname", "$name"], "displayName")
778
+ */
779
+ selectCoalesce(fields: Array<string | RawExpression>, alias: string): this;
780
+ /**
781
+ * Attach window function output to the projection.
782
+ *
783
+ * @example
784
+ * query.selectWindow({
785
+ * partitionBy: "$category",
786
+ * sortBy: { createdAt: 1 },
787
+ * output: { rank: { $denseRank: {} } },
788
+ * })
789
+ */
790
+ selectWindow(spec: RawExpression): this;
791
+ /**
792
+ * Exclude the given fields from the projection.
793
+ *
794
+ * @example
795
+ * query.deselect(['password', 'token'])
796
+ */
797
+ deselect(fields: string[]): this;
798
+ /**
799
+ * Reset the projection to its default state.
800
+ */
801
+ clearSelect(): this;
802
+ /**
803
+ * Alias for clearSelect() - keeps all fields.
804
+ */
805
+ selectAll(): this;
806
+ /**
807
+ * Restore the default projection (all columns).
808
+ */
809
+ selectDefault(): this;
810
+ /**
811
+ * Mark the query as distinct values for the given fields.
812
+ *
813
+ * @example
814
+ * query.distinctValues('category')
815
+ * query.distinctValues(['category', 'status'])
816
+ */
817
+ distinctValues(fields?: string | string[]): this;
818
+ /**
819
+ * Add additional select fields to the existing projection.
820
+ *
821
+ * @example
822
+ * query.select(['name', 'email']).addSelect(['age'])
823
+ */
824
+ addSelect(fields: string[]): this;
825
+ /**
826
+ * Add a join clause to the query.
827
+ *
828
+ * Performs an INNER JOIN by default. Use leftJoin/rightJoin for outer joins.
829
+ *
830
+ * - **SQL**: Translates to `INNER JOIN table ON localField = foreignField`
831
+ * - **MongoDB**: Translates to `$lookup` aggregation stage
832
+ *
833
+ * @param table - The table/collection to join
834
+ * @param localField - The field from the current table
835
+ * @param foreignField - The field from the joined table
836
+ * @returns Query builder for chaining
837
+ *
838
+ * @example
839
+ * ```typescript
840
+ * // Simple join
841
+ * query.join('profiles', 'id', 'userId');
842
+ *
843
+ * // With options
844
+ * query.join({
845
+ * table: 'profiles',
846
+ * localField: 'id',
847
+ * foreignField: 'userId',
848
+ * alias: 'profile',
849
+ * select: ['bio', 'avatar']
850
+ * });
851
+ * ```
852
+ */
853
+ join(table: string, localField: string, foreignField: string): this;
854
+ join(options: JoinOptions): this;
855
+ /**
856
+ * Add a LEFT JOIN clause to the query.
857
+ *
858
+ * Returns all records from the left table, and matched records from the right.
859
+ * If no match, NULL values are returned for right table columns.
860
+ *
861
+ * - **SQL**: Translates to `LEFT JOIN table ON localField = foreignField`
862
+ * - **MongoDB**: Translates to `$lookup` (always behaves like LEFT JOIN)
863
+ *
864
+ * @param table - The table/collection to join
865
+ * @param localField - The field from the current table
866
+ * @param foreignField - The field from the joined table
867
+ * @returns Query builder for chaining
868
+ *
869
+ * @example
870
+ * ```typescript
871
+ * // Get users with their optional profiles
872
+ * query.leftJoin('profiles', 'id', 'userId');
873
+ * ```
874
+ */
875
+ leftJoin(table: string, localField: string, foreignField: string): this;
876
+ leftJoin(options: JoinOptions): this;
877
+ /**
878
+ * Add a RIGHT JOIN clause to the query.
879
+ *
880
+ * Returns all records from the right table, and matched records from the left.
881
+ * If no match, NULL values are returned for left table columns.
882
+ *
883
+ * - **SQL**: Translates to `RIGHT JOIN table ON localField = foreignField`
884
+ * - **MongoDB**: Not directly supported; may throw or emulate
885
+ *
886
+ * @param table - The table/collection to join
887
+ * @param localField - The field from the current table
888
+ * @param foreignField - The field from the joined table
889
+ * @returns Query builder for chaining
890
+ *
891
+ * @example
892
+ * ```typescript
893
+ * // Get all profiles with their users (if any)
894
+ * query.rightJoin('profiles', 'id', 'userId');
895
+ * ```
896
+ */
897
+ rightJoin(table: string, localField: string, foreignField: string): this;
898
+ rightJoin(options: JoinOptions): this;
899
+ /**
900
+ * Add an INNER JOIN clause to the query.
901
+ *
902
+ * Returns only records that have matching values in both tables.
903
+ * Alias for join() with explicit intent.
904
+ *
905
+ * - **SQL**: Translates to `INNER JOIN table ON localField = foreignField`
906
+ * - **MongoDB**: Translates to `$lookup` + `$match` to filter unmatched
907
+ *
908
+ * @param table - The table/collection to join
909
+ * @param localField - The field from the current table
910
+ * @param foreignField - The field from the joined table
911
+ * @returns Query builder for chaining
912
+ *
913
+ * @example
914
+ * ```typescript
915
+ * // Get only users that have profiles
916
+ * query.innerJoin('profiles', 'id', 'userId');
917
+ * ```
918
+ */
919
+ innerJoin(table: string, localField: string, foreignField: string): this;
920
+ innerJoin(options: JoinOptions): this;
921
+ /**
922
+ * Add a FULL OUTER JOIN clause to the query.
923
+ *
924
+ * Returns all records when there is a match in either table.
925
+ * NULL values for non-matching rows on either side.
926
+ *
927
+ * - **SQL**: Translates to `FULL OUTER JOIN table ON localField = foreignField`
928
+ * - **MongoDB**: Not supported; throws error
929
+ *
930
+ * @param table - The table/collection to join
931
+ * @param localField - The field from the current table
932
+ * @param foreignField - The field from the joined table
933
+ * @returns Query builder for chaining
934
+ *
935
+ * @example
936
+ * ```typescript
937
+ * query.fullJoin('profiles', 'id', 'userId');
938
+ * ```
939
+ */
940
+ fullJoin(table: string, localField: string, foreignField: string): this;
941
+ fullJoin(options: JoinOptions): this;
942
+ /**
943
+ * Add a CROSS JOIN clause to the query.
944
+ *
945
+ * Returns the Cartesian product of both tables (every combination).
946
+ * Use with caution as this can produce very large result sets.
947
+ *
948
+ * - **SQL**: Translates to `CROSS JOIN table`
949
+ * - **MongoDB**: Not supported; throws error
950
+ *
951
+ * @param table - The table/collection to cross join
952
+ * @returns Query builder for chaining
953
+ *
954
+ * @example
955
+ * ```typescript
956
+ * // Get all combinations of products and colors
957
+ * query.crossJoin('colors');
958
+ * ```
959
+ */
960
+ crossJoin(table: string): this;
961
+ /**
962
+ * Add a raw JOIN clause using native query syntax.
963
+ *
964
+ * Allows full control over the JOIN expression for complex scenarios.
965
+ *
966
+ * - **SQL**: Passed directly to the query
967
+ * - **MongoDB**: Passed as raw `$lookup` pipeline stage
968
+ *
969
+ * @param expression - Raw JOIN expression in driver's native syntax
970
+ * @param bindings - Optional parameter bindings for SQL placeholders
971
+ * @returns Query builder for chaining
972
+ *
973
+ * @example
974
+ * ```typescript
975
+ * // SQL raw join
976
+ * query.joinRaw('LEFT JOIN profiles ON profiles.user_id = users.id AND profiles.active = $1', [true]);
977
+ *
978
+ * // MongoDB raw $lookup
979
+ * query.joinRaw({
980
+ * $lookup: {
981
+ * from: 'profiles',
982
+ * let: { userId: '$_id' },
983
+ * pipeline: [{ $match: { $expr: { $eq: ['$userId', '$$userId'] } } }],
984
+ * as: 'profile'
985
+ * }
986
+ * });
987
+ * ```
988
+ */
989
+ joinRaw(expression: RawExpression, bindings?: unknown[]): this;
990
+ /**
991
+ * Eagerly load one or more relations with the query results.
992
+ *
993
+ * Relations are loaded in separate optimized queries to prevent N+1 problems.
994
+ * The loaded relations are attached to each model instance.
995
+ *
996
+ * @param relation - Single relation name to load
997
+ * @returns Query builder for chaining
998
+ *
999
+ * @example
1000
+ * ```typescript
1001
+ * // Load single relation
1002
+ * const user = await User.query().with("posts").find(1);
1003
+ * console.log(user.posts); // Post[]
1004
+ *
1005
+ * // Load multiple relations
1006
+ * const user = await User.query().with("posts", "organization").find(1);
1007
+ *
1008
+ * // Load nested relations
1009
+ * const user = await User.query().with("posts.comments.author").find(1);
1010
+ * ```
1011
+ */
1012
+ with(relation: string): this;
1013
+ /**
1014
+ * Eagerly load multiple relations.
1015
+ *
1016
+ * @param relations - Relation names to load
1017
+ * @returns Query builder for chaining
1018
+ */
1019
+ with(...relations: string[]): this;
1020
+ /**
1021
+ * Eagerly load a relation with a constraint callback.
1022
+ *
1023
+ * The callback receives the relation query builder, allowing you to
1024
+ * add conditions, ordering, or limits to the related query.
1025
+ *
1026
+ * @param relation - Relation name to load
1027
+ * @param constraint - Callback to configure the relation query
1028
+ * @returns Query builder for chaining
1029
+ *
1030
+ * @example
1031
+ * ```typescript
1032
+ * const user = await User.query()
1033
+ * .with("posts", (query) => {
1034
+ * query.where("isPublished", true)
1035
+ * .orderBy("createdAt", "desc")
1036
+ * .limit(5);
1037
+ * })
1038
+ * .find(1);
1039
+ * ```
1040
+ */
1041
+ with(relation: string, constraint: (query: QueryBuilderContract) => void): this;
1042
+ /**
1043
+ * Eagerly load multiple relations with constraints.
1044
+ *
1045
+ * Pass an object where keys are relation names and values are either:
1046
+ * - `true` to load without constraints
1047
+ * - A callback function to configure the relation query
1048
+ *
1049
+ * @param relations - Object mapping relation names to constraints
1050
+ * @returns Query builder for chaining
1051
+ *
1052
+ * @example
1053
+ * ```typescript
1054
+ * const user = await User.query()
1055
+ * .with({
1056
+ * posts: (query) => query.where("isPublished", true),
1057
+ * organization: true,
1058
+ * roles: (query) => query.orderBy("priority"),
1059
+ * })
1060
+ * .find(1);
1061
+ * ```
1062
+ */
1063
+ with(relations: Record<string, boolean | ((query: QueryBuilderContract) => void)>): this;
1064
+ /**
1065
+ * Add a count of a related model as a virtual field on each result row.
1066
+ *
1067
+ * Default output alias is `${relationName}Count`. Use the
1068
+ * `"name as alias"` shorthand to pick a custom alias.
1069
+ *
1070
+ * @param relation - Single relation name (optionally with `as <alias>`)
1071
+ * @returns Query builder for chaining
1072
+ *
1073
+ * @example
1074
+ * ```typescript
1075
+ * const users = await User.query().withCount("posts").get();
1076
+ * console.log(users[0].postsCount); // number
1077
+ *
1078
+ * // Custom alias
1079
+ * await User.query().withCount("posts as totalPosts").get();
1080
+ * ```
1081
+ */
1082
+ withCount(relation: string): this;
1083
+ /**
1084
+ * Add counts for multiple relations at once.
1085
+ *
1086
+ * @param relations - Relation names (each may include `as <alias>`)
1087
+ * @returns Query builder for chaining
1088
+ *
1089
+ * @example
1090
+ * ```typescript
1091
+ * await User.query()
1092
+ * .withCount("posts", "comments", "followers")
1093
+ * .get();
1094
+ * ```
1095
+ */
1096
+ withCount(...relations: string[]): this;
1097
+ /**
1098
+ * Add counts for multiple relations passed as an array.
1099
+ *
1100
+ * @param relations - Array of relation names (each may include `as <alias>`)
1101
+ *
1102
+ * @example
1103
+ * ```typescript
1104
+ * await User.query().withCount(["posts", "comments"]).get();
1105
+ * ```
1106
+ */
1107
+ withCount(relations: string[]): this;
1108
+ /**
1109
+ * Add counts with optional per-relation constraints or alias overrides.
1110
+ *
1111
+ * Keys are relation names, optionally with `as <alias>` shorthand to
1112
+ * override the default `${relationName}Count` output column name. Values
1113
+ * may be:
1114
+ * - `true` — count the relation with no extra constraints
1115
+ * - A string — overrides the alias (equivalent to using `as` in the key)
1116
+ * - A callback — applies where-clauses inside the count subquery. Other
1117
+ * operations (`orderBy`, `limit`, etc.) have no meaning in COUNT and
1118
+ * are silently dropped.
1119
+ *
1120
+ * To count the same relation more than once under different aliases, use
1121
+ * the `as <alias>` form in the key so each entry is unique.
1122
+ *
1123
+ * @example
1124
+ * ```typescript
1125
+ * await Post.query()
1126
+ * .withCount({
1127
+ * comments: true, // -> commentsCount
1128
+ * "comments as approvedCount": (q) => q.where("approved", true),
1129
+ * tags: "tagCount", // -> tagCount
1130
+ * })
1131
+ * .get();
1132
+ * ```
1133
+ */
1134
+ withCount(relations: Record<string, true | string | ((query: QueryBuilderContract) => void)>): this;
1135
+ /**
1136
+ * Filter results to only those that have related models.
1137
+ *
1138
+ * @param relation - Relation name to check
1139
+ * @returns Query builder for chaining
1140
+ *
1141
+ * @example
1142
+ * ```typescript
1143
+ * // Get users who have at least one post
1144
+ * const usersWithPosts = await User.query().has("posts").get();
1145
+ * ```
1146
+ */
1147
+ has(relation: string): this;
1148
+ /**
1149
+ * Filter results based on the count of related models.
1150
+ *
1151
+ * @param relation - Relation name to check
1152
+ * @param operator - Comparison operator
1153
+ * @param count - Number to compare against
1154
+ * @returns Query builder for chaining
1155
+ *
1156
+ * @example
1157
+ * ```typescript
1158
+ * // Get users with at least 5 posts
1159
+ * const prolificUsers = await User.query().has("posts", ">=", 5).get();
1160
+ *
1161
+ * // Get users with exactly 3 roles
1162
+ * const users = await User.query().has("roles", "=", 3).get();
1163
+ * ```
1164
+ */
1165
+ has(relation: string, operator: string, count: number): this;
1166
+ /**
1167
+ * Filter results that have related models matching specific conditions.
1168
+ *
1169
+ * @param relation - Relation name to check
1170
+ * @param callback - Callback to define conditions on the related query
1171
+ * @returns Query builder for chaining
1172
+ *
1173
+ * @example
1174
+ * ```typescript
1175
+ * // Get users with published posts
1176
+ * const users = await User.query()
1177
+ * .whereHas("posts", (query) => {
1178
+ * query.where("isPublished", true);
1179
+ * })
1180
+ * .get();
1181
+ *
1182
+ * // Get users with posts in a specific category
1183
+ * const users = await User.query()
1184
+ * .whereHas("posts", (query) => {
1185
+ * query.where("categoryId", categoryId);
1186
+ * })
1187
+ * .get();
1188
+ * ```
1189
+ */
1190
+ whereHas(relation: string, callback: (query: QueryBuilderContract) => void): this;
1191
+ /**
1192
+ * OR-joined variant of `whereHas`.
1193
+ *
1194
+ * @param relation - Relation name to check
1195
+ * @param callback - Callback to define conditions on the related query
1196
+ *
1197
+ * @example
1198
+ * ```typescript
1199
+ * await User.query()
1200
+ * .where("role", "admin")
1201
+ * .orWhereHas("posts", (query) => query.where("isFeatured", true))
1202
+ * .get();
1203
+ * ```
1204
+ */
1205
+ orWhereHas(relation: string, callback: (query: QueryBuilderContract) => void): this;
1206
+ /**
1207
+ * Filter results that don't have any related models.
1208
+ *
1209
+ * @param relation - Relation name to check
1210
+ * @returns Query builder for chaining
1211
+ *
1212
+ * @example
1213
+ * ```typescript
1214
+ * // Get users without any posts
1215
+ * const usersWithoutPosts = await User.query().doesntHave("posts").get();
1216
+ * ```
1217
+ */
1218
+ doesntHave(relation: string): this;
1219
+ /**
1220
+ * Filter results that don't have related models matching specific conditions.
1221
+ *
1222
+ * @param relation - Relation name to check
1223
+ * @param callback - Callback to define conditions on the related query
1224
+ * @returns Query builder for chaining
1225
+ *
1226
+ * @example
1227
+ * ```typescript
1228
+ * // Get users without any published posts
1229
+ * const users = await User.query()
1230
+ * .whereDoesntHave("posts", (query) => {
1231
+ * query.where("isPublished", true);
1232
+ * })
1233
+ * .get();
1234
+ * ```
1235
+ */
1236
+ whereDoesntHave(relation: string, callback: (query: QueryBuilderContract) => void): this;
1237
+ /**
1238
+ * Order results by the specified field and direction.
1239
+ *
1240
+ * @example
1241
+ * query.orderBy('createdAt', 'desc')
1242
+ * query.orderBy({ id: 'asc', age: 'desc' })
1243
+ */
1244
+ orderBy(field: string, direction?: OrderDirection): this;
1245
+ orderBy(fields: Record<string, OrderDirection>): this;
1246
+ /**
1247
+ * Order results descending by the specified field (shortcut).
1248
+ *
1249
+ * @example
1250
+ * query.orderByDesc('createdAt')
1251
+ */
1252
+ orderByDesc(field: string): this;
1253
+ /**
1254
+ * Order results using a raw expression.
1255
+ *
1256
+ * @example
1257
+ * query.orderByRaw('RANDOM()')
1258
+ */
1259
+ orderByRaw(expression: RawExpression, bindings?: unknown[]): this;
1260
+ /**
1261
+ * Order results randomly.
1262
+ *
1263
+ * @example
1264
+ * query.orderByRandom(100)
1265
+ */
1266
+ orderByRandom(limit: number): this;
1267
+ /**
1268
+ * Order by the latest records using a timestamp column (descending).
1269
+ * Defaults to 'createdAt'.
1270
+ *
1271
+ * @example
1272
+ * query.latest() // orderBy('createdAt', 'desc')
1273
+ * query.latest('updatedAt') // orderBy('updatedAt', 'desc')
1274
+ */
1275
+ latest(column?: string): Promise<T[]>;
1276
+ /**
1277
+ * Order by the oldest records using a timestamp column (ascending).
1278
+ * Defaults to 'createdAt'.
1279
+ *
1280
+ * @example
1281
+ * query.oldest() // orderBy('createdAt', 'asc')
1282
+ */
1283
+ oldest(column?: string): this;
1284
+ /**
1285
+ * Limit the number of results.
1286
+ *
1287
+ * @example
1288
+ * query.limit(10)
1289
+ */
1290
+ limit(value: number): this;
1291
+ /**
1292
+ * Skip the specified number of results (alias for offset).
1293
+ *
1294
+ * @example
1295
+ * query.skip(20)
1296
+ */
1297
+ skip(value: number): this;
1298
+ /**
1299
+ * Skip the specified number of results.
1300
+ *
1301
+ * @example
1302
+ * query.offset(20)
1303
+ */
1304
+ offset(value: number): this;
1305
+ /**
1306
+ * Alias for limit() - take the first N results.
1307
+ *
1308
+ * @example
1309
+ * query.take(5)
1310
+ */
1311
+ take(value: number): this;
1312
+ /**
1313
+ * Apply cursor pagination hints.
1314
+ *
1315
+ * @example
1316
+ * query.cursor({ after: lastId })
1317
+ */
1318
+ cursor(after?: unknown, before?: unknown): this;
1319
+ /**
1320
+ * Group results by the given fields.
1321
+ *
1322
+ * @example
1323
+ * query.groupBy('category')
1324
+ * query.groupBy(['category', 'status'])
1325
+ */
1326
+ groupBy(fields: GroupByInput): this;
1327
+ /**
1328
+ * Group results by the given fields with aggregate operations.
1329
+ *
1330
+ * This method allows you to group documents and compute aggregates in a single
1331
+ * operation. It accepts abstract aggregate expressions (from $agg helpers) or
1332
+ * raw database-specific expressions.
1333
+ *
1334
+ * @param fields - Field(s) to group by
1335
+ * @param aggregates - Aggregate operations to perform
1336
+ *
1337
+ * @example
1338
+ * ```typescript
1339
+ * import { $agg } from '@warlock.js/cascade';
1340
+ *
1341
+ * // Using abstract expressions (works for all databases)
1342
+ * query.groupBy("type", {
1343
+ * count: $agg.count(),
1344
+ * total: $agg.sum("duration"),
1345
+ * avg: $agg.avg("rating")
1346
+ * });
1347
+ *
1348
+ * // Using raw expressions (database-specific)
1349
+ * // MongoDB:
1350
+ * query.groupBy("type", {
1351
+ * count: { $sum: 1 },
1352
+ * total: { $sum: "$duration" }
1353
+ * });
1354
+ *
1355
+ * // SQL (future):
1356
+ * query.groupBy("type", {
1357
+ * count: "COUNT(*)",
1358
+ * total: "SUM(duration)"
1359
+ * });
1360
+ * ```
1361
+ */
1362
+ groupBy(fields: GroupByInput, aggregates: Record<string, RawExpression>): this;
1363
+ /**
1364
+ * Apply raw grouping expressions.
1365
+ *
1366
+ * @example
1367
+ * query.groupByRaw('DATE(createdAt)')
1368
+ */
1369
+ groupByRaw(expression: RawExpression, bindings?: unknown[]): this;
1370
+ /**
1371
+ * Apply having clause to aggregated results.
1372
+ *
1373
+ * @example
1374
+ * query.groupBy('category').having('count', '>', 10)
1375
+ */
1376
+ having(field: string, value: unknown): this;
1377
+ having(field: string, operator: WhereOperator, value: unknown): this;
1378
+ having(condition: HavingInput): this;
1379
+ /**
1380
+ * Apply raw having clause to aggregated results.
1381
+ *
1382
+ * @example
1383
+ * query.havingRaw('COUNT(*) > ?', [10])
1384
+ */
1385
+ havingRaw(expression: RawExpression, bindings?: unknown[]): this;
1386
+ /**
1387
+ * Join another table/collection using a structured payload.
1388
+ *
1389
+ * @example
1390
+ * query.join({
1391
+ * table: 'posts',
1392
+ * localField: 'userId',
1393
+ * foreignField: 'authorId',
1394
+ * type: 'left'
1395
+ * })
1396
+ */
1397
+ join(options: JoinOptions): this;
1398
+ /**
1399
+ * Add driver-specific raw modifications to the query.
1400
+ *
1401
+ * @example
1402
+ * query.raw(nativeQuery => {
1403
+ * // Modify native query object
1404
+ * return nativeQuery;
1405
+ * })
1406
+ */
1407
+ raw(builder: (native: unknown) => unknown): this;
1408
+ /**
1409
+ * Extend the query builder with driver-specific extensions.
1410
+ *
1411
+ * @example
1412
+ * query.extend('mongoAggregation', { $match: { ... } })
1413
+ */
1414
+ extend<R>(extension: string, ...args: unknown[]): R;
1415
+ /**
1416
+ * Clone the current query builder instance.
1417
+ *
1418
+ * @example
1419
+ * const baseQuery = User.query().where('isActive', true);
1420
+ * const adminQuery = baseQuery.clone().where('role', 'admin');
1421
+ */
1422
+ clone(): this;
1423
+ /**
1424
+ * Tap into the query builder for debugging or side effects without
1425
+ * breaking the fluent chain.
1426
+ *
1427
+ * @example
1428
+ * query.where('age', '>', 18).tap(q => console.log(q.parse())).get()
1429
+ */
1430
+ tap(callback: (builder: this) => void): this;
1431
+ /**
1432
+ * Conditionally apply a callback to the query.
1433
+ *
1434
+ * @example
1435
+ * query.when(searchTerm, (q, term) => q.whereLike('name', term))
1436
+ */
1437
+ when<V>(condition: V | boolean | (() => boolean), callback: (builder: this, value: V) => void, otherwise?: (builder: this) => void): this;
1438
+ /**
1439
+ * Execute the query and return all matching records.
1440
+ *
1441
+ * @example
1442
+ * const users = await User.query().where('isActive', true).get();
1443
+ */
1444
+ get<Output = T>(): Promise<Output[]>;
1445
+ /**
1446
+ * Execute the query and return the first matching record.
1447
+ *
1448
+ * @example
1449
+ * const user = await User.query().where('email', 'john@example.com').first();
1450
+ */
1451
+ first<Output = T>(): Promise<Output | null>;
1452
+ /**
1453
+ * Execute the query and return the first matching record or throw an error.
1454
+ *
1455
+ * @throws {Error} If no record is found
1456
+ * @example
1457
+ * const user = await User.query().where('id', 123).firstOrFail();
1458
+ */
1459
+ firstOrFail<Output = T>(): Promise<Output>;
1460
+ /**
1461
+ * Configure query to retrieve the last record.
1462
+ *
1463
+ * @example
1464
+ * const lastUser = await User.query().last().first();
1465
+ */
1466
+ last<Output = T>(field?: string): Promise<Output | null>;
1467
+ /**
1468
+ * Count the records matching the query.
1469
+ *
1470
+ * @example
1471
+ * const total = await User.query().where('isActive', true).count();
1472
+ */
1473
+ count(): Promise<number>;
1474
+ /**
1475
+ * Aggregate sum for the given field.
1476
+ *
1477
+ * @example
1478
+ * const total = await Order.query().sum('amount');
1479
+ */
1480
+ sum(field: string): Promise<number>;
1481
+ /**
1482
+ * Aggregate average for the given field.
1483
+ *
1484
+ * @example
1485
+ * const avgAge = await User.query().avg('age');
1486
+ */
1487
+ avg(field: string): Promise<number>;
1488
+ /**
1489
+ * Aggregate minimum for the given field.
1490
+ *
1491
+ * @example
1492
+ * const minPrice = await Product.query().min('price');
1493
+ */
1494
+ min(field: string): Promise<number>;
1495
+ /**
1496
+ * Aggregate maximum for the given field.
1497
+ *
1498
+ * @example
1499
+ * const maxPrice = await Product.query().max('price');
1500
+ */
1501
+ max(field: string): Promise<number>;
1502
+ /**
1503
+ * Retrieve distinct values for a field.
1504
+ * @param field - The field to get distinct values from
1505
+ * @returns an array of distinct values
1506
+ *
1507
+ * @example
1508
+ * const categories = await Product.query().distinct('category');
1509
+ */
1510
+ distinct<T = unknown>(field: string): Promise<T[]>;
1511
+ /**
1512
+ * Retrieve a list of values for the given field.
1513
+ *
1514
+ * @example
1515
+ * const names = await User.query().pluck('name');
1516
+ */
1517
+ pluck(field: string): Promise<unknown[]>;
1518
+ /**
1519
+ * Retrieve a single scalar value for the given field from the first record.
1520
+ *
1521
+ * @example
1522
+ * const email = await User.query().where('id', 123).value('email');
1523
+ */
1524
+ value<T = unknown>(field: string): Promise<T | null>;
1525
+ /**
1526
+ * Determine if any record matches the current query.
1527
+ *
1528
+ * @example
1529
+ * const hasActiveUsers = await User.query().where('isActive', true).exists();
1530
+ */
1531
+ exists(): Promise<boolean>;
1532
+ /**
1533
+ * Determine if no records match the current query.
1534
+ *
1535
+ * @example
1536
+ * const noAdmins = await User.query().where('role', 'admin').doesntExist();
1537
+ */
1538
+ notExists(): Promise<boolean>;
1539
+ /**
1540
+ * Count distinct values for the given field.
1541
+ *
1542
+ * @example
1543
+ * const uniqueCategories = await Product.query().countDistinct('category');
1544
+ */
1545
+ countDistinct(field: string): Promise<number>;
1546
+ /**
1547
+ * Increment a field's value by the given amount.
1548
+ *
1549
+ * @returns the new value
1550
+ * @example
1551
+ * await User.query().where('id', 123).increment('loginCount', 1);
1552
+ */
1553
+ increment(field: string, amount?: number): Promise<number>;
1554
+ /**
1555
+ * Decrement a field's value by the given amount.
1556
+ *
1557
+ * @returns the new value
1558
+ * @example
1559
+ * await Product.query().where('id', 456).decrement('stock', 5);
1560
+ */
1561
+ decrement(field: string, amount?: number): Promise<number>;
1562
+ /**
1563
+ * Increment a field's value by the given amount for all matching documents.
1564
+ * @param field - The field to increment
1565
+ * @param amount - The amount to increment by (default: 1)
1566
+ * @returns the number of documents modified
1567
+ */
1568
+ incrementMany(field: string, amount?: number): Promise<number>;
1569
+ /**
1570
+ * Decrement a field's value by the given amount for all matching documents.
1571
+ * @param field - The field to decrement
1572
+ * @param amount - The amount to decrement by (default: 1)
1573
+ * @returns the number of documents modified
1574
+ */
1575
+ decrementMany(field: string, amount?: number): Promise<number>;
1576
+ /**
1577
+ * Iterate through results in chunks, executing the callback for each chunk.
1578
+ * Return false from the callback to stop iteration.
1579
+ *
1580
+ * @example
1581
+ * await User.query().chunk(100, async (users, index) => {
1582
+ * await processUsers(users);
1583
+ * // Return false to stop
1584
+ * });
1585
+ */
1586
+ chunk(size: number, callback: ChunkCallback<T>): Promise<void>;
1587
+ /**
1588
+ * Paginate the results with standard page/limit pagination.
1589
+ *
1590
+ * @example
1591
+ * const result = await User.query().paginate({ page: 1, limit: 10 });
1592
+ * // { data: [...], total: 100, page: 1, limit: 10, pages: 10 }
1593
+ */
1594
+ paginate(options: PaginationOptions): Promise<PaginationResult<T>>;
1595
+ /**
1596
+ * Paginate using cursor-based strategy for better performance.
1597
+ *
1598
+ * @example
1599
+ * const result = await User.query().cursorPaginate({ limit: 10, cursor: lastId });
1600
+ * // { data: [...], hasMore: true, nextCursor: '...' }
1601
+ */
1602
+ cursorPaginate(options: CursorPaginationOptions): Promise<CursorPaginationResult<T>>;
1603
+ /**
1604
+ * Return the driver-native query representation without executing it.
1605
+ * SQL drivers populate `query` + `bindings`; MongoDB populates `pipeline`;
1606
+ * exotic drivers use `native`.
1607
+ *
1608
+ * @example
1609
+ * // PostgreSQL:
1610
+ * const { query, bindings } = builder.parse();
1611
+ * console.log(query, bindings);
1612
+ *
1613
+ * // MongoDB:
1614
+ * const { pipeline } = builder.parse();
1615
+ * console.log(pipeline); // [{ $match: { age: { $gt: 18 } } }, ...]
1616
+ */
1617
+ parse(): DriverQuery;
1618
+ /**
1619
+ * Returns a formatted string representation of the query pipeline | SQL string.
1620
+ * @returns A formatted string representation of the pipeline|SQL string
1621
+ */
1622
+ pretty(): string;
1623
+ /**
1624
+ * Ask the underlying driver to explain the query execution plan.
1625
+ *
1626
+ * @example
1627
+ * const plan = await query.explain();
1628
+ */
1629
+ explain(): Promise<unknown>;
1630
+ /**
1631
+ * Nearest-neighbour vector similarity search.
1632
+ *
1633
+ * Simultaneously:
1634
+ * 1. Adds `1 - (column <=> $n::vector) AS score` to the SELECT clause
1635
+ * so the similarity value is available on every returned row.
1636
+ * 2. Adds `ORDER BY column <=> $n::vector` so the database can use
1637
+ * the vector index (IVFFlat / HNSW) rather than doing a sequential scan.
1638
+ *
1639
+ * The two expressions MUST reference the same embedding literal so pgvector
1640
+ * plans the nearest-neighbour scan correctly. Calling `.orderBy()` on the
1641
+ * alias afterwards would break index usage.
1642
+ *
1643
+ * Drivers that do not support vector search (e.g. MongoDB without Atlas)
1644
+ * should throw an `UnsupportedOperationError`.
1645
+ *
1646
+ * @param column - Name of the vector column (e.g. `"embedding"`)
1647
+ * @param embedding - Query embedding as a plain number array
1648
+ * @param alias - Alias for the similarity score column (default: `"score"`)
1649
+ *
1650
+ * @example
1651
+ * ```typescript
1652
+ * const results = await Vector.query()
1653
+ * .where({ organization_id: "org-123", content_type: "summary" })
1654
+ * .similarTo("embedding", queryEmbedding)
1655
+ * .limit(5)
1656
+ * .get<VectorRow & { score: number }>();
1657
+ * ```
1658
+ */
1659
+ similarTo(column: string, embedding: number[], alias?: string): this;
1660
+ }
1661
+ //#endregion
1662
+ export { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, DriverQuery, GroupByInput, HavingInput, JoinOptions, OrderDirection, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression, WhereCallback, WhereObject, WhereOperator };
1663
+ //# sourceMappingURL=query-builder.contract.d.mts.map