@warlock.js/cascade 4.0.174 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1050) hide show
  1. package/README.md +6 -5
  2. package/bin/cascadejs +3 -0
  3. package/esm/cli/commands/migrate-export-sql.mjs +48 -0
  4. package/esm/cli/commands/migrate-export-sql.mjs.map +1 -0
  5. package/esm/cli/commands/migrate-list.mjs +26 -0
  6. package/esm/cli/commands/migrate-list.mjs.map +1 -0
  7. package/esm/cli/commands/migrate-rollback.mjs +50 -0
  8. package/esm/cli/commands/migrate-rollback.mjs.map +1 -0
  9. package/esm/cli/commands/migrate.mjs +65 -0
  10. package/esm/cli/commands/migrate.mjs.map +1 -0
  11. package/esm/cli/connection-from-env.mjs +181 -0
  12. package/esm/cli/connection-from-env.mjs.map +1 -0
  13. package/esm/cli/index.mjs +31 -0
  14. package/esm/cli/index.mjs.map +1 -0
  15. package/esm/cli/load-migrations.mjs +78 -0
  16. package/esm/cli/load-migrations.mjs.map +1 -0
  17. package/esm/cli/printers.mjs +57 -0
  18. package/esm/cli/printers.mjs.map +1 -0
  19. package/esm/cli/setup-logger.mjs +30 -0
  20. package/esm/cli/setup-logger.mjs.map +1 -0
  21. package/esm/cli/with-cli-connection.mjs +39 -0
  22. package/esm/cli/with-cli-connection.mjs.map +1 -0
  23. package/esm/cli.d.mts +1 -0
  24. package/esm/cli.mjs +26 -0
  25. package/esm/cli.mjs.map +1 -0
  26. package/esm/context/database-data-source-context.d.mts +32 -0
  27. package/esm/context/database-data-source-context.d.mts.map +1 -0
  28. package/esm/context/database-data-source-context.mjs +35 -0
  29. package/esm/context/database-data-source-context.mjs.map +1 -0
  30. package/esm/context/database-transaction-context.d.mts +38 -0
  31. package/esm/context/database-transaction-context.d.mts.map +1 -0
  32. package/esm/context/database-transaction-context.mjs +47 -0
  33. package/esm/context/database-transaction-context.mjs.map +1 -0
  34. package/esm/contracts/database-driver.contract.d.mts +443 -0
  35. package/esm/contracts/database-driver.contract.d.mts.map +1 -0
  36. package/esm/contracts/database-id-generator.contract.d.mts +109 -0
  37. package/esm/contracts/database-id-generator.contract.d.mts.map +1 -0
  38. package/esm/contracts/database-remover.contract.d.mts +108 -0
  39. package/esm/contracts/database-remover.contract.d.mts.map +1 -0
  40. package/esm/contracts/database-restorer.contract.d.mts +145 -0
  41. package/esm/contracts/database-restorer.contract.d.mts.map +1 -0
  42. package/esm/contracts/database-writer.contract.d.mts +123 -0
  43. package/esm/contracts/database-writer.contract.d.mts.map +1 -0
  44. package/esm/contracts/driver-blueprint.contract.d.mts +52 -0
  45. package/esm/contracts/driver-blueprint.contract.d.mts.map +1 -0
  46. package/esm/contracts/index.d.mts +9 -0
  47. package/esm/contracts/migration-driver.contract.d.mts +476 -0
  48. package/esm/contracts/migration-driver.contract.d.mts.map +1 -0
  49. package/esm/contracts/query-builder.contract.d.mts +1663 -0
  50. package/esm/contracts/query-builder.contract.d.mts.map +1 -0
  51. package/esm/contracts/sync-adapter.contract.d.mts +49 -0
  52. package/esm/contracts/sync-adapter.contract.d.mts.map +1 -0
  53. package/esm/data-source/data-source-registry.d.mts +111 -0
  54. package/esm/data-source/data-source-registry.d.mts.map +1 -0
  55. package/esm/data-source/data-source-registry.mjs +142 -0
  56. package/esm/data-source/data-source-registry.mjs.map +1 -0
  57. package/esm/data-source/data-source.d.mts +160 -0
  58. package/esm/data-source/data-source.d.mts.map +1 -0
  59. package/esm/data-source/data-source.mjs +87 -0
  60. package/esm/data-source/data-source.mjs.map +1 -0
  61. package/esm/database-dirty-tracker.d.mts +254 -0
  62. package/esm/database-dirty-tracker.d.mts.map +1 -0
  63. package/esm/database-dirty-tracker.mjs +356 -0
  64. package/esm/database-dirty-tracker.mjs.map +1 -0
  65. package/esm/drivers/mongodb/mongodb-blueprint.mjs +54 -0
  66. package/esm/drivers/mongodb/mongodb-blueprint.mjs.map +1 -0
  67. package/esm/drivers/mongodb/mongodb-driver.d.mts +334 -0
  68. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -0
  69. package/esm/drivers/mongodb/mongodb-driver.mjs +716 -0
  70. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -0
  71. package/esm/drivers/mongodb/mongodb-id-generator.d.mts +120 -0
  72. package/esm/drivers/mongodb/mongodb-id-generator.d.mts.map +1 -0
  73. package/esm/drivers/mongodb/mongodb-id-generator.mjs +141 -0
  74. package/esm/drivers/mongodb/mongodb-id-generator.mjs.map +1 -0
  75. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts +322 -0
  76. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts.map +1 -0
  77. package/esm/drivers/mongodb/mongodb-migration-driver.mjs +531 -0
  78. package/esm/drivers/mongodb/mongodb-migration-driver.mjs.map +1 -0
  79. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +1117 -0
  80. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -0
  81. package/esm/drivers/mongodb/mongodb-query-builder.mjs +1828 -0
  82. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -0
  83. package/esm/drivers/mongodb/mongodb-query-operations.d.mts +230 -0
  84. package/esm/drivers/mongodb/mongodb-query-operations.d.mts.map +1 -0
  85. package/esm/drivers/mongodb/mongodb-query-operations.mjs +275 -0
  86. package/esm/drivers/mongodb/mongodb-query-operations.mjs.map +1 -0
  87. package/esm/drivers/mongodb/mongodb-query-parser.d.mts +263 -0
  88. package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -0
  89. package/esm/drivers/mongodb/mongodb-query-parser.mjs +965 -0
  90. package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -0
  91. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts +78 -0
  92. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts.map +1 -0
  93. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs +118 -0
  94. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs.map +1 -0
  95. package/esm/drivers/mongodb/types.d.mts +43 -0
  96. package/esm/drivers/mongodb/types.d.mts.map +1 -0
  97. package/esm/drivers/postgres/index.d.mts +8 -0
  98. package/esm/drivers/postgres/index.mjs +9 -0
  99. package/esm/drivers/postgres/postgres-blueprint.d.mts +60 -0
  100. package/esm/drivers/postgres/postgres-blueprint.d.mts.map +1 -0
  101. package/esm/drivers/postgres/postgres-blueprint.mjs +105 -0
  102. package/esm/drivers/postgres/postgres-blueprint.mjs.map +1 -0
  103. package/esm/drivers/postgres/postgres-dialect.d.mts +144 -0
  104. package/esm/drivers/postgres/postgres-dialect.d.mts.map +1 -0
  105. package/esm/drivers/postgres/postgres-dialect.mjs +227 -0
  106. package/esm/drivers/postgres/postgres-dialect.mjs.map +1 -0
  107. package/esm/drivers/postgres/postgres-driver.d.mts +424 -0
  108. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -0
  109. package/esm/drivers/postgres/postgres-driver.mjs +845 -0
  110. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -0
  111. package/esm/drivers/postgres/postgres-migration-driver.d.mts +393 -0
  112. package/esm/drivers/postgres/postgres-migration-driver.d.mts.map +1 -0
  113. package/esm/drivers/postgres/postgres-migration-driver.mjs +760 -0
  114. package/esm/drivers/postgres/postgres-migration-driver.mjs.map +1 -0
  115. package/esm/drivers/postgres/postgres-query-builder.d.mts +399 -0
  116. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -0
  117. package/esm/drivers/postgres/postgres-query-builder.mjs +1105 -0
  118. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -0
  119. package/esm/drivers/postgres/postgres-query-parser.d.mts +351 -0
  120. package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -0
  121. package/esm/drivers/postgres/postgres-query-parser.mjs +796 -0
  122. package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -0
  123. package/esm/drivers/postgres/postgres-sql-serializer.mjs +260 -0
  124. package/esm/drivers/postgres/postgres-sql-serializer.mjs.map +1 -0
  125. package/esm/drivers/postgres/postgres-sync-adapter.d.mts +79 -0
  126. package/esm/drivers/postgres/postgres-sync-adapter.d.mts.map +1 -0
  127. package/esm/drivers/postgres/postgres-sync-adapter.mjs +162 -0
  128. package/esm/drivers/postgres/postgres-sync-adapter.mjs.map +1 -0
  129. package/esm/drivers/postgres/types.d.mts +105 -0
  130. package/esm/drivers/postgres/types.d.mts.map +1 -0
  131. package/esm/drivers/sql/sql-dialect.contract.d.mts +221 -0
  132. package/esm/drivers/sql/sql-dialect.contract.d.mts.map +1 -0
  133. package/esm/drivers/sql/sql-types.d.mts +150 -0
  134. package/esm/drivers/sql/sql-types.d.mts.map +1 -0
  135. package/esm/errors/missing-data-source.error.d.mts +25 -0
  136. package/esm/errors/missing-data-source.error.d.mts.map +1 -0
  137. package/esm/errors/missing-data-source.error.mjs +31 -0
  138. package/esm/errors/missing-data-source.error.mjs.map +1 -0
  139. package/esm/errors/transaction-rollback.error.d.mts +23 -0
  140. package/esm/errors/transaction-rollback.error.d.mts.map +1 -0
  141. package/esm/errors/transaction-rollback.error.mjs +29 -0
  142. package/esm/errors/transaction-rollback.error.mjs.map +1 -0
  143. package/esm/events/model-events.d.mts +234 -0
  144. package/esm/events/model-events.d.mts.map +1 -0
  145. package/esm/events/model-events.mjs +254 -0
  146. package/esm/events/model-events.mjs.map +1 -0
  147. package/esm/expressions/aggregate-expressions.d.mts +224 -0
  148. package/esm/expressions/aggregate-expressions.d.mts.map +1 -0
  149. package/esm/expressions/aggregate-expressions.mjs +232 -0
  150. package/esm/expressions/aggregate-expressions.mjs.map +1 -0
  151. package/esm/index.d.mts +67 -0
  152. package/esm/index.mjs +53 -0
  153. package/esm/migration/column-builder.d.mts +420 -0
  154. package/esm/migration/column-builder.d.mts.map +1 -0
  155. package/esm/migration/column-builder.mjs +532 -0
  156. package/esm/migration/column-builder.mjs.map +1 -0
  157. package/esm/migration/column-helpers.d.mts +280 -0
  158. package/esm/migration/column-helpers.d.mts.map +1 -0
  159. package/esm/migration/column-helpers.mjs +376 -0
  160. package/esm/migration/column-helpers.mjs.map +1 -0
  161. package/esm/migration/foreign-key-builder.d.mts +106 -0
  162. package/esm/migration/foreign-key-builder.d.mts.map +1 -0
  163. package/esm/migration/foreign-key-builder.mjs +126 -0
  164. package/esm/migration/foreign-key-builder.mjs.map +1 -0
  165. package/esm/migration/index.d.mts +6 -0
  166. package/esm/migration/index.mjs +7 -0
  167. package/esm/migration/migration-runner.d.mts +279 -0
  168. package/esm/migration/migration-runner.d.mts.map +1 -0
  169. package/esm/migration/migration-runner.mjs +662 -0
  170. package/esm/migration/migration-runner.mjs.map +1 -0
  171. package/esm/migration/migration.d.mts +2035 -0
  172. package/esm/migration/migration.d.mts.map +1 -0
  173. package/esm/migration/migration.mjs +2083 -0
  174. package/esm/migration/migration.mjs.map +1 -0
  175. package/esm/migration/sql-grammar.mjs +115 -0
  176. package/esm/migration/sql-grammar.mjs.map +1 -0
  177. package/esm/migration/sql-serializer.d.mts +26 -0
  178. package/esm/migration/sql-serializer.d.mts.map +1 -0
  179. package/esm/migration/sql-serializer.mjs +26 -0
  180. package/esm/migration/sql-serializer.mjs.map +1 -0
  181. package/esm/migration/types.d.mts +136 -0
  182. package/esm/migration/types.d.mts.map +1 -0
  183. package/esm/model/methods/accessor-methods.mjs +54 -0
  184. package/esm/model/methods/accessor-methods.mjs.map +1 -0
  185. package/esm/model/methods/delete-methods.mjs +16 -0
  186. package/esm/model/methods/delete-methods.mjs.map +1 -0
  187. package/esm/model/methods/dirty-methods.mjs +20 -0
  188. package/esm/model/methods/dirty-methods.mjs.map +1 -0
  189. package/esm/model/methods/hydration-methods.mjs +51 -0
  190. package/esm/model/methods/hydration-methods.mjs.map +1 -0
  191. package/esm/model/methods/instance-event-methods.mjs +22 -0
  192. package/esm/model/methods/instance-event-methods.mjs.map +1 -0
  193. package/esm/model/methods/meta-methods.mjs +36 -0
  194. package/esm/model/methods/meta-methods.mjs.map +1 -0
  195. package/esm/model/methods/pivot-methods.mjs +48 -0
  196. package/esm/model/methods/pivot-methods.mjs.map +1 -0
  197. package/esm/model/methods/query-methods.mjs +121 -0
  198. package/esm/model/methods/query-methods.mjs.map +1 -0
  199. package/esm/model/methods/restore-methods.mjs +16 -0
  200. package/esm/model/methods/restore-methods.mjs.map +1 -0
  201. package/esm/model/methods/scope-methods.mjs +20 -0
  202. package/esm/model/methods/scope-methods.mjs.map +1 -0
  203. package/esm/model/methods/serialization-methods.mjs +20 -0
  204. package/esm/model/methods/serialization-methods.mjs.map +1 -0
  205. package/esm/model/methods/static-event-methods.mjs +37 -0
  206. package/esm/model/methods/static-event-methods.mjs.map +1 -0
  207. package/esm/model/methods/write-methods.mjs +69 -0
  208. package/esm/model/methods/write-methods.mjs.map +1 -0
  209. package/esm/model/model.d.mts +1778 -0
  210. package/esm/model/model.d.mts.map +1 -0
  211. package/esm/model/model.mjs +1762 -0
  212. package/esm/model/model.mjs.map +1 -0
  213. package/esm/model/model.types.d.mts +47 -0
  214. package/esm/model/model.types.d.mts.map +1 -0
  215. package/esm/model/register-model.d.mts +140 -0
  216. package/esm/model/register-model.d.mts.map +1 -0
  217. package/esm/model/register-model.mjs +175 -0
  218. package/esm/model/register-model.mjs.map +1 -0
  219. package/esm/model/relation-decorators.d.mts +88 -0
  220. package/esm/model/relation-decorators.d.mts.map +1 -0
  221. package/esm/model/relation-decorators.mjs +191 -0
  222. package/esm/model/relation-decorators.mjs.map +1 -0
  223. package/esm/operations/database.d.mts +46 -0
  224. package/esm/operations/database.d.mts.map +1 -0
  225. package/esm/operations/database.mjs +40 -0
  226. package/esm/operations/database.mjs.map +1 -0
  227. package/esm/operations/index.d.mts +2 -0
  228. package/esm/operations/index.mjs +4 -0
  229. package/esm/operations/migrations.d.mts +71 -0
  230. package/esm/operations/migrations.d.mts.map +1 -0
  231. package/esm/operations/migrations.mjs +70 -0
  232. package/esm/operations/migrations.mjs.map +1 -0
  233. package/esm/query-builder/query-builder.d.mts +564 -0
  234. package/esm/query-builder/query-builder.d.mts.map +1 -0
  235. package/esm/query-builder/query-builder.mjs +1097 -0
  236. package/esm/query-builder/query-builder.mjs.map +1 -0
  237. package/esm/relations/index.d.mts +4 -0
  238. package/esm/relations/index.mjs +5 -0
  239. package/esm/relations/key-conventions.mjs +119 -0
  240. package/esm/relations/key-conventions.mjs.map +1 -0
  241. package/esm/relations/pivot-operations.d.mts +155 -0
  242. package/esm/relations/pivot-operations.d.mts.map +1 -0
  243. package/esm/relations/pivot-operations.mjs +232 -0
  244. package/esm/relations/pivot-operations.mjs.map +1 -0
  245. package/esm/relations/relation-hydrator.d.mts +55 -0
  246. package/esm/relations/relation-hydrator.d.mts.map +1 -0
  247. package/esm/relations/relation-hydrator.mjs +52 -0
  248. package/esm/relations/relation-hydrator.mjs.map +1 -0
  249. package/esm/relations/relation-loader.d.mts +190 -0
  250. package/esm/relations/relation-loader.d.mts.map +1 -0
  251. package/esm/relations/relation-loader.mjs +416 -0
  252. package/esm/relations/relation-loader.mjs.map +1 -0
  253. package/esm/relations/types.d.mts +317 -0
  254. package/esm/relations/types.d.mts.map +1 -0
  255. package/esm/remover/database-remover.d.mts +104 -0
  256. package/esm/remover/database-remover.d.mts.map +1 -0
  257. package/esm/remover/database-remover.mjs +174 -0
  258. package/esm/remover/database-remover.mjs.map +1 -0
  259. package/esm/restorer/database-restorer.d.mts +135 -0
  260. package/esm/restorer/database-restorer.d.mts.map +1 -0
  261. package/esm/restorer/database-restorer.mjs +316 -0
  262. package/esm/restorer/database-restorer.mjs.map +1 -0
  263. package/esm/sql-database-dirty-tracker.d.mts +17 -0
  264. package/esm/sql-database-dirty-tracker.d.mts.map +1 -0
  265. package/esm/sql-database-dirty-tracker.mjs +20 -0
  266. package/esm/sql-database-dirty-tracker.mjs.map +1 -0
  267. package/esm/sync/model-events.mjs +46 -0
  268. package/esm/sync/model-events.mjs.map +1 -0
  269. package/esm/sync/model-sync-operation.d.mts +159 -0
  270. package/esm/sync/model-sync-operation.d.mts.map +1 -0
  271. package/esm/sync/model-sync-operation.mjs +257 -0
  272. package/esm/sync/model-sync-operation.mjs.map +1 -0
  273. package/esm/sync/model-sync.d.mts +126 -0
  274. package/esm/sync/model-sync.d.mts.map +1 -0
  275. package/esm/sync/model-sync.mjs +157 -0
  276. package/esm/sync/model-sync.mjs.map +1 -0
  277. package/esm/sync/sync-context.d.mts +69 -0
  278. package/esm/sync/sync-context.d.mts.map +1 -0
  279. package/esm/sync/sync-context.mjs +95 -0
  280. package/esm/sync/sync-context.mjs.map +1 -0
  281. package/esm/sync/sync-manager.d.mts +213 -0
  282. package/esm/sync/sync-manager.d.mts.map +1 -0
  283. package/esm/sync/sync-manager.mjs +597 -0
  284. package/esm/sync/sync-manager.mjs.map +1 -0
  285. package/esm/sync/types.d.mts +215 -0
  286. package/esm/sync/types.d.mts.map +1 -0
  287. package/esm/types.d.mts +423 -0
  288. package/esm/types.d.mts.map +1 -0
  289. package/esm/utils/connect-to-database.d.mts +328 -0
  290. package/esm/utils/connect-to-database.d.mts.map +1 -0
  291. package/esm/utils/connect-to-database.mjs +130 -0
  292. package/esm/utils/connect-to-database.mjs.map +1 -0
  293. package/esm/utils/database-writer.utils.d.mts +18 -0
  294. package/esm/utils/database-writer.utils.d.mts.map +1 -0
  295. package/esm/utils/database-writer.utils.mjs +25 -0
  296. package/esm/utils/database-writer.utils.mjs.map +1 -0
  297. package/esm/utils/define-model.d.mts +185 -0
  298. package/esm/utils/define-model.d.mts.map +1 -0
  299. package/esm/utils/define-model.mjs +105 -0
  300. package/esm/utils/define-model.mjs.map +1 -0
  301. package/esm/utils/is-valid-date-value.mjs +22 -0
  302. package/esm/utils/is-valid-date-value.mjs.map +1 -0
  303. package/esm/utils/once-connected.d.mts +150 -0
  304. package/esm/utils/once-connected.d.mts.map +1 -0
  305. package/esm/utils/once-connected.mjs +203 -0
  306. package/esm/utils/once-connected.mjs.map +1 -0
  307. package/esm/validation/database-seal-plugins.d.mts +1 -0
  308. package/esm/validation/database-seal-plugins.mjs +11 -0
  309. package/esm/validation/database-seal-plugins.mjs.map +1 -0
  310. package/esm/validation/database-writer-validation-error.d.mts +101 -0
  311. package/esm/validation/database-writer-validation-error.d.mts.map +1 -0
  312. package/esm/validation/database-writer-validation-error.mjs +153 -0
  313. package/esm/validation/database-writer-validation-error.mjs.map +1 -0
  314. package/esm/validation/index.d.mts +2 -0
  315. package/esm/validation/index.mjs +4 -0
  316. package/esm/validation/mutators/embed-mutator.mjs +26 -0
  317. package/esm/validation/mutators/embed-mutator.mjs.map +1 -0
  318. package/esm/validation/plugins/database-rules-plugin.d.mts +28 -0
  319. package/esm/validation/plugins/database-rules-plugin.d.mts.map +1 -0
  320. package/esm/validation/plugins/database-rules-plugin.mjs +43 -0
  321. package/esm/validation/plugins/database-rules-plugin.mjs.map +1 -0
  322. package/esm/validation/plugins/embed-validator-plugin.d.mts +17 -0
  323. package/esm/validation/plugins/embed-validator-plugin.d.mts.map +1 -0
  324. package/esm/validation/plugins/embed-validator-plugin.mjs +20 -0
  325. package/esm/validation/plugins/embed-validator-plugin.mjs.map +1 -0
  326. package/esm/validation/rules/database-model-rule.mjs +32 -0
  327. package/esm/validation/rules/database-model-rule.mjs.map +1 -0
  328. package/esm/validation/rules/exists-rule.mjs +29 -0
  329. package/esm/validation/rules/exists-rule.mjs.map +1 -0
  330. package/esm/validation/rules/unique-rule.mjs +43 -0
  331. package/esm/validation/rules/unique-rule.mjs.map +1 -0
  332. package/esm/validation/transformers/embed-model-transformer.mjs +17 -0
  333. package/esm/validation/transformers/embed-model-transformer.mjs.map +1 -0
  334. package/esm/validation/types.d.mts +43 -0
  335. package/esm/validation/types.d.mts.map +1 -0
  336. package/esm/validation/validators/embed-validator.d.mts +25 -0
  337. package/esm/validation/validators/embed-validator.d.mts.map +1 -0
  338. package/esm/validation/validators/embed-validator.mjs +42 -0
  339. package/esm/validation/validators/embed-validator.mjs.map +1 -0
  340. package/esm/writer/database-writer.d.mts +178 -0
  341. package/esm/writer/database-writer.d.mts.map +1 -0
  342. package/esm/writer/database-writer.mjs +317 -0
  343. package/esm/writer/database-writer.mjs.map +1 -0
  344. package/llms-full.txt +2027 -0
  345. package/llms.txt +23 -0
  346. package/package.json +60 -51
  347. package/skills/README.md +65 -0
  348. package/skills/aggregate-data/SKILL.md +102 -0
  349. package/skills/cascade-basics/SKILL.md +93 -0
  350. package/skills/configure-delete-strategy/SKILL.md +126 -0
  351. package/skills/define-model/SKILL.md +170 -0
  352. package/skills/define-relations/SKILL.md +171 -0
  353. package/skills/manage-data-sources/SKILL.md +140 -0
  354. package/skills/manage-transactions/SKILL.md +118 -0
  355. package/skills/paginate-results/SKILL.md +122 -0
  356. package/skills/perform-atomic-ops/SKILL.md +98 -0
  357. package/skills/query-data/SKILL.md +168 -0
  358. package/skills/run-cascade-cli/SKILL.md +125 -0
  359. package/skills/search-by-vector/SKILL.md +127 -0
  360. package/skills/subscribe-to-model-events/SKILL.md +148 -0
  361. package/skills/track-changes/SKILL.md +109 -0
  362. package/skills/write-migration/SKILL.md +144 -0
  363. package/cjs/context/database-data-source-context.d.ts +0 -29
  364. package/cjs/context/database-data-source-context.d.ts.map +0 -1
  365. package/cjs/context/database-data-source-context.js +0 -28
  366. package/cjs/context/database-data-source-context.js.map +0 -1
  367. package/cjs/context/database-transaction-context.d.ts +0 -35
  368. package/cjs/context/database-transaction-context.d.ts.map +0 -1
  369. package/cjs/context/database-transaction-context.js +0 -40
  370. package/cjs/context/database-transaction-context.js.map +0 -1
  371. package/cjs/contracts/database-driver.contract.d.ts +0 -450
  372. package/cjs/contracts/database-driver.contract.d.ts.map +0 -1
  373. package/cjs/contracts/database-id-generator.contract.d.ts +0 -109
  374. package/cjs/contracts/database-id-generator.contract.d.ts.map +0 -1
  375. package/cjs/contracts/database-remover.contract.d.ts +0 -104
  376. package/cjs/contracts/database-remover.contract.d.ts.map +0 -1
  377. package/cjs/contracts/database-restorer.contract.d.ts +0 -143
  378. package/cjs/contracts/database-restorer.contract.d.ts.map +0 -1
  379. package/cjs/contracts/database-writer.contract.d.ts +0 -119
  380. package/cjs/contracts/database-writer.contract.d.ts.map +0 -1
  381. package/cjs/contracts/driver-blueprint.contract.d.ts +0 -49
  382. package/cjs/contracts/driver-blueprint.contract.d.ts.map +0 -1
  383. package/cjs/contracts/index.d.ts +0 -10
  384. package/cjs/contracts/index.d.ts.map +0 -1
  385. package/cjs/contracts/migration-driver.contract.d.ts +0 -522
  386. package/cjs/contracts/migration-driver.contract.d.ts.map +0 -1
  387. package/cjs/contracts/query-builder.contract.d.ts +0 -1609
  388. package/cjs/contracts/query-builder.contract.d.ts.map +0 -1
  389. package/cjs/contracts/sync-adapter.contract.d.ts +0 -58
  390. package/cjs/contracts/sync-adapter.contract.d.ts.map +0 -1
  391. package/cjs/data-source/data-source-registry.d.ts +0 -108
  392. package/cjs/data-source/data-source-registry.d.ts.map +0 -1
  393. package/cjs/data-source/data-source-registry.js +0 -145
  394. package/cjs/data-source/data-source-registry.js.map +0 -1
  395. package/cjs/data-source/data-source.d.ts +0 -147
  396. package/cjs/data-source/data-source.d.ts.map +0 -1
  397. package/cjs/data-source/data-source.js +0 -83
  398. package/cjs/data-source/data-source.js.map +0 -1
  399. package/cjs/database-dirty-tracker.d.ts +0 -252
  400. package/cjs/database-dirty-tracker.d.ts.map +0 -1
  401. package/cjs/database-dirty-tracker.js +0 -386
  402. package/cjs/database-dirty-tracker.js.map +0 -1
  403. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
  404. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
  405. package/cjs/drivers/mongodb/mongodb-blueprint.js +0 -51
  406. package/cjs/drivers/mongodb/mongodb-blueprint.js.map +0 -1
  407. package/cjs/drivers/mongodb/mongodb-driver.d.ts +0 -325
  408. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
  409. package/cjs/drivers/mongodb/mongodb-driver.js +0 -845
  410. package/cjs/drivers/mongodb/mongodb-driver.js.map +0 -1
  411. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
  412. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
  413. package/cjs/drivers/mongodb/mongodb-id-generator.js +0 -149
  414. package/cjs/drivers/mongodb/mongodb-id-generator.js.map +0 -1
  415. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
  416. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
  417. package/cjs/drivers/mongodb/mongodb-migration-driver.js +0 -666
  418. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
  419. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
  420. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
  421. package/cjs/drivers/mongodb/mongodb-query-builder.js +0 -1988
  422. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +0 -1
  423. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
  424. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
  425. package/cjs/drivers/mongodb/mongodb-query-operations.js +0 -270
  426. package/cjs/drivers/mongodb/mongodb-query-operations.js.map +0 -1
  427. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
  428. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
  429. package/cjs/drivers/mongodb/mongodb-query-parser.js +0 -1351
  430. package/cjs/drivers/mongodb/mongodb-query-parser.js.map +0 -1
  431. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
  432. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
  433. package/cjs/drivers/mongodb/mongodb-sync-adapter.js +0 -146
  434. package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
  435. package/cjs/drivers/mongodb/types.d.ts +0 -43
  436. package/cjs/drivers/mongodb/types.d.ts.map +0 -1
  437. package/cjs/drivers/postgres/index.d.ts +0 -16
  438. package/cjs/drivers/postgres/index.d.ts.map +0 -1
  439. package/cjs/drivers/postgres/postgres-blueprint.d.ts +0 -64
  440. package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
  441. package/cjs/drivers/postgres/postgres-blueprint.js +0 -121
  442. package/cjs/drivers/postgres/postgres-blueprint.js.map +0 -1
  443. package/cjs/drivers/postgres/postgres-dialect.d.ts +0 -136
  444. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +0 -1
  445. package/cjs/drivers/postgres/postgres-dialect.js +0 -268
  446. package/cjs/drivers/postgres/postgres-dialect.js.map +0 -1
  447. package/cjs/drivers/postgres/postgres-driver.d.ts +0 -432
  448. package/cjs/drivers/postgres/postgres-driver.d.ts.map +0 -1
  449. package/cjs/drivers/postgres/postgres-driver.js +0 -1008
  450. package/cjs/drivers/postgres/postgres-driver.js.map +0 -1
  451. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +0 -397
  452. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
  453. package/cjs/drivers/postgres/postgres-migration-driver.js +0 -900
  454. package/cjs/drivers/postgres/postgres-migration-driver.js.map +0 -1
  455. package/cjs/drivers/postgres/postgres-query-builder.d.ts +0 -254
  456. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
  457. package/cjs/drivers/postgres/postgres-query-builder.js +0 -933
  458. package/cjs/drivers/postgres/postgres-query-builder.js.map +0 -1
  459. package/cjs/drivers/postgres/postgres-query-parser.d.ts +0 -328
  460. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
  461. package/cjs/drivers/postgres/postgres-query-parser.js +0 -868
  462. package/cjs/drivers/postgres/postgres-query-parser.js.map +0 -1
  463. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
  464. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
  465. package/cjs/drivers/postgres/postgres-sql-serializer.js +0 -400
  466. package/cjs/drivers/postgres/postgres-sql-serializer.js.map +0 -1
  467. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
  468. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
  469. package/cjs/drivers/postgres/postgres-sync-adapter.js +0 -204
  470. package/cjs/drivers/postgres/postgres-sync-adapter.js.map +0 -1
  471. package/cjs/drivers/postgres/types.d.ts +0 -144
  472. package/cjs/drivers/postgres/types.d.ts.map +0 -1
  473. package/cjs/drivers/sql/index.d.ts +0 -10
  474. package/cjs/drivers/sql/index.d.ts.map +0 -1
  475. package/cjs/drivers/sql/sql-dialect.contract.d.ts +0 -204
  476. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
  477. package/cjs/drivers/sql/sql-types.d.ts +0 -202
  478. package/cjs/drivers/sql/sql-types.d.ts.map +0 -1
  479. package/cjs/errors/missing-data-source.error.d.ts +0 -22
  480. package/cjs/errors/missing-data-source.error.d.ts.map +0 -1
  481. package/cjs/errors/missing-data-source.error.js +0 -29
  482. package/cjs/errors/missing-data-source.error.js.map +0 -1
  483. package/cjs/errors/transaction-rollback.error.d.ts +0 -20
  484. package/cjs/errors/transaction-rollback.error.d.ts.map +0 -1
  485. package/cjs/errors/transaction-rollback.error.js +0 -27
  486. package/cjs/errors/transaction-rollback.error.js.map +0 -1
  487. package/cjs/events/model-events.d.ts +0 -231
  488. package/cjs/events/model-events.d.ts.map +0 -1
  489. package/cjs/events/model-events.js +0 -259
  490. package/cjs/events/model-events.js.map +0 -1
  491. package/cjs/expressions/aggregate-expressions.d.ts +0 -215
  492. package/cjs/expressions/aggregate-expressions.d.ts.map +0 -1
  493. package/cjs/expressions/aggregate-expressions.js +0 -221
  494. package/cjs/expressions/aggregate-expressions.js.map +0 -1
  495. package/cjs/expressions/index.d.ts +0 -2
  496. package/cjs/expressions/index.d.ts.map +0 -1
  497. package/cjs/index.d.ts +0 -45
  498. package/cjs/index.d.ts.map +0 -1
  499. package/cjs/index.js +0 -1
  500. package/cjs/index.js.map +0 -1
  501. package/cjs/migration/column-builder.d.ts +0 -417
  502. package/cjs/migration/column-builder.d.ts.map +0 -1
  503. package/cjs/migration/column-builder.js +0 -586
  504. package/cjs/migration/column-builder.js.map +0 -1
  505. package/cjs/migration/column-helpers.d.ts +0 -275
  506. package/cjs/migration/column-helpers.d.ts.map +0 -1
  507. package/cjs/migration/column-helpers.js +0 -389
  508. package/cjs/migration/column-helpers.js.map +0 -1
  509. package/cjs/migration/foreign-key-builder.d.ts +0 -103
  510. package/cjs/migration/foreign-key-builder.d.ts.map +0 -1
  511. package/cjs/migration/foreign-key-builder.js +0 -121
  512. package/cjs/migration/foreign-key-builder.js.map +0 -1
  513. package/cjs/migration/index.d.ts +0 -7
  514. package/cjs/migration/index.d.ts.map +0 -1
  515. package/cjs/migration/migration-runner.d.ts +0 -278
  516. package/cjs/migration/migration-runner.d.ts.map +0 -1
  517. package/cjs/migration/migration-runner.js +0 -815
  518. package/cjs/migration/migration-runner.js.map +0 -1
  519. package/cjs/migration/migration.d.ts +0 -1988
  520. package/cjs/migration/migration.d.ts.map +0 -1
  521. package/cjs/migration/migration.js +0 -2162
  522. package/cjs/migration/migration.js.map +0 -1
  523. package/cjs/migration/sql-grammar.d.ts +0 -61
  524. package/cjs/migration/sql-grammar.d.ts.map +0 -1
  525. package/cjs/migration/sql-grammar.js +0 -164
  526. package/cjs/migration/sql-grammar.js.map +0 -1
  527. package/cjs/migration/sql-serializer.d.ts +0 -22
  528. package/cjs/migration/sql-serializer.d.ts.map +0 -1
  529. package/cjs/migration/sql-serializer.js +0 -26
  530. package/cjs/migration/sql-serializer.js.map +0 -1
  531. package/cjs/migration/types.d.ts +0 -155
  532. package/cjs/migration/types.d.ts.map +0 -1
  533. package/cjs/model/methods/accessor-methods.d.ts +0 -13
  534. package/cjs/model/methods/accessor-methods.d.ts.map +0 -1
  535. package/cjs/model/methods/accessor-methods.js +0 -51
  536. package/cjs/model/methods/accessor-methods.js.map +0 -1
  537. package/cjs/model/methods/delete-methods.d.ts +0 -10
  538. package/cjs/model/methods/delete-methods.d.ts.map +0 -1
  539. package/cjs/model/methods/delete-methods.js +0 -10
  540. package/cjs/model/methods/delete-methods.js.map +0 -1
  541. package/cjs/model/methods/dirty-methods.d.ts +0 -10
  542. package/cjs/model/methods/dirty-methods.d.ts.map +0 -1
  543. package/cjs/model/methods/dirty-methods.js +0 -15
  544. package/cjs/model/methods/dirty-methods.js.map +0 -1
  545. package/cjs/model/methods/hydration-methods.d.ts +0 -10
  546. package/cjs/model/methods/hydration-methods.d.ts.map +0 -1
  547. package/cjs/model/methods/hydration-methods.js +0 -57
  548. package/cjs/model/methods/hydration-methods.js.map +0 -1
  549. package/cjs/model/methods/instance-event-methods.d.ts +0 -7
  550. package/cjs/model/methods/instance-event-methods.d.ts.map +0 -1
  551. package/cjs/model/methods/instance-event-methods.js +0 -15
  552. package/cjs/model/methods/instance-event-methods.js.map +0 -1
  553. package/cjs/model/methods/meta-methods.d.ts +0 -7
  554. package/cjs/model/methods/meta-methods.d.ts.map +0 -1
  555. package/cjs/model/methods/meta-methods.js +0 -78
  556. package/cjs/model/methods/meta-methods.js.map +0 -1
  557. package/cjs/model/methods/query-methods.d.ts +0 -24
  558. package/cjs/model/methods/query-methods.d.ts.map +0 -1
  559. package/cjs/model/methods/query-methods.js +0 -164
  560. package/cjs/model/methods/query-methods.js.map +0 -1
  561. package/cjs/model/methods/restore-methods.d.ts +0 -10
  562. package/cjs/model/methods/restore-methods.d.ts.map +0 -1
  563. package/cjs/model/methods/restore-methods.js +0 -13
  564. package/cjs/model/methods/restore-methods.js.map +0 -1
  565. package/cjs/model/methods/scope-methods.d.ts +0 -7
  566. package/cjs/model/methods/scope-methods.d.ts.map +0 -1
  567. package/cjs/model/methods/scope-methods.js +0 -15
  568. package/cjs/model/methods/scope-methods.js.map +0 -1
  569. package/cjs/model/methods/serialization-methods.d.ts +0 -3
  570. package/cjs/model/methods/serialization-methods.d.ts.map +0 -1
  571. package/cjs/model/methods/serialization-methods.js +0 -27
  572. package/cjs/model/methods/serialization-methods.js.map +0 -1
  573. package/cjs/model/methods/static-event-methods.d.ts +0 -9
  574. package/cjs/model/methods/static-event-methods.d.ts.map +0 -1
  575. package/cjs/model/methods/static-event-methods.js +0 -29
  576. package/cjs/model/methods/static-event-methods.js.map +0 -1
  577. package/cjs/model/methods/write-methods.d.ts +0 -10
  578. package/cjs/model/methods/write-methods.d.ts.map +0 -1
  579. package/cjs/model/methods/write-methods.js +0 -52
  580. package/cjs/model/methods/write-methods.js.map +0 -1
  581. package/cjs/model/model.d.ts +0 -1647
  582. package/cjs/model/model.d.ts.map +0 -1
  583. package/cjs/model/model.js +0 -1657
  584. package/cjs/model/model.js.map +0 -1
  585. package/cjs/model/model.types.d.ts +0 -44
  586. package/cjs/model/model.types.d.ts.map +0 -1
  587. package/cjs/model/register-model.d.ts +0 -81
  588. package/cjs/model/register-model.d.ts.map +0 -1
  589. package/cjs/model/register-model.js +0 -94
  590. package/cjs/model/register-model.js.map +0 -1
  591. package/cjs/query-builder/query-builder.d.ts +0 -556
  592. package/cjs/query-builder/query-builder.d.ts.map +0 -1
  593. package/cjs/query-builder/query-builder.js +0 -1070
  594. package/cjs/query-builder/query-builder.js.map +0 -1
  595. package/cjs/relations/helpers.d.ts +0 -156
  596. package/cjs/relations/helpers.d.ts.map +0 -1
  597. package/cjs/relations/helpers.js +0 -202
  598. package/cjs/relations/helpers.js.map +0 -1
  599. package/cjs/relations/index.d.ts +0 -35
  600. package/cjs/relations/index.d.ts.map +0 -1
  601. package/cjs/relations/pivot-operations.d.ts +0 -160
  602. package/cjs/relations/pivot-operations.d.ts.map +0 -1
  603. package/cjs/relations/pivot-operations.js +0 -293
  604. package/cjs/relations/pivot-operations.js.map +0 -1
  605. package/cjs/relations/relation-hydrator.d.ts +0 -68
  606. package/cjs/relations/relation-hydrator.d.ts.map +0 -1
  607. package/cjs/relations/relation-hydrator.js +0 -81
  608. package/cjs/relations/relation-hydrator.js.map +0 -1
  609. package/cjs/relations/relation-loader.d.ts +0 -194
  610. package/cjs/relations/relation-loader.d.ts.map +0 -1
  611. package/cjs/relations/relation-loader.js +0 -466
  612. package/cjs/relations/relation-loader.js.map +0 -1
  613. package/cjs/relations/types.d.ts +0 -306
  614. package/cjs/relations/types.d.ts.map +0 -1
  615. package/cjs/remover/database-remover.d.ts +0 -100
  616. package/cjs/remover/database-remover.d.ts.map +0 -1
  617. package/cjs/remover/database-remover.js +0 -214
  618. package/cjs/remover/database-remover.js.map +0 -1
  619. package/cjs/restorer/database-restorer.d.ts +0 -131
  620. package/cjs/restorer/database-restorer.d.ts.map +0 -1
  621. package/cjs/restorer/database-restorer.js +0 -434
  622. package/cjs/restorer/database-restorer.js.map +0 -1
  623. package/cjs/sql-database-dirty-tracker.d.ts +0 -13
  624. package/cjs/sql-database-dirty-tracker.d.ts.map +0 -1
  625. package/cjs/sql-database-dirty-tracker.js +0 -14
  626. package/cjs/sql-database-dirty-tracker.js.map +0 -1
  627. package/cjs/sync/index.d.ts +0 -12
  628. package/cjs/sync/index.d.ts.map +0 -1
  629. package/cjs/sync/model-events.d.ts +0 -62
  630. package/cjs/sync/model-events.d.ts.map +0 -1
  631. package/cjs/sync/model-events.js +0 -49
  632. package/cjs/sync/model-events.js.map +0 -1
  633. package/cjs/sync/model-sync-operation.d.ts +0 -163
  634. package/cjs/sync/model-sync-operation.d.ts.map +0 -1
  635. package/cjs/sync/model-sync-operation.js +0 -292
  636. package/cjs/sync/model-sync-operation.js.map +0 -1
  637. package/cjs/sync/model-sync.d.ts +0 -130
  638. package/cjs/sync/model-sync.d.ts.map +0 -1
  639. package/cjs/sync/model-sync.js +0 -178
  640. package/cjs/sync/model-sync.js.map +0 -1
  641. package/cjs/sync/sync-context.d.ts +0 -70
  642. package/cjs/sync/sync-context.d.ts.map +0 -1
  643. package/cjs/sync/sync-context.js +0 -101
  644. package/cjs/sync/sync-context.js.map +0 -1
  645. package/cjs/sync/sync-manager.d.ts +0 -213
  646. package/cjs/sync/sync-manager.d.ts.map +0 -1
  647. package/cjs/sync/sync-manager.js +0 -689
  648. package/cjs/sync/sync-manager.js.map +0 -1
  649. package/cjs/sync/types.d.ts +0 -289
  650. package/cjs/sync/types.d.ts.map +0 -1
  651. package/cjs/test-migrations/test-enhanced-features.migration.d.ts +0 -15
  652. package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
  653. package/cjs/types.d.ts +0 -371
  654. package/cjs/types.d.ts.map +0 -1
  655. package/cjs/utils/connect-to-database.d.ts +0 -307
  656. package/cjs/utils/connect-to-database.d.ts.map +0 -1
  657. package/cjs/utils/connect-to-database.js +0 -130
  658. package/cjs/utils/connect-to-database.js.map +0 -1
  659. package/cjs/utils/database-writer.utils.d.ts +0 -15
  660. package/cjs/utils/database-writer.utils.d.ts.map +0 -1
  661. package/cjs/utils/database-writer.utils.js +0 -14
  662. package/cjs/utils/database-writer.utils.js.map +0 -1
  663. package/cjs/utils/define-model.js +0 -100
  664. package/cjs/utils/define-model.js.map +0 -1
  665. package/cjs/utils/is-valid-date-value.d.ts +0 -5
  666. package/cjs/utils/is-valid-date-value.d.ts.map +0 -1
  667. package/cjs/utils/is-valid-date-value.js +0 -25
  668. package/cjs/utils/is-valid-date-value.js.map +0 -1
  669. package/cjs/utils/once-connected.d.ts +0 -146
  670. package/cjs/utils/once-connected.d.ts.map +0 -1
  671. package/cjs/utils/once-connected.js +0 -251
  672. package/cjs/utils/once-connected.js.map +0 -1
  673. package/cjs/validation/database-seal-plugins.d.ts +0 -12
  674. package/cjs/validation/database-seal-plugins.d.ts.map +0 -1
  675. package/cjs/validation/database-seal-plugins.js +0 -1
  676. package/cjs/validation/database-seal-plugins.js.map +0 -1
  677. package/cjs/validation/database-writer-validation-error.d.ts +0 -97
  678. package/cjs/validation/database-writer-validation-error.d.ts.map +0 -1
  679. package/cjs/validation/database-writer-validation-error.js +0 -160
  680. package/cjs/validation/database-writer-validation-error.js.map +0 -1
  681. package/cjs/validation/index.d.ts +0 -3
  682. package/cjs/validation/index.d.ts.map +0 -1
  683. package/cjs/validation/mutators/embed-mutator.d.ts +0 -9
  684. package/cjs/validation/mutators/embed-mutator.d.ts.map +0 -1
  685. package/cjs/validation/mutators/embed-mutator.js +0 -33
  686. package/cjs/validation/mutators/embed-mutator.js.map +0 -1
  687. package/cjs/validation/plugins/embed-validator-plugin.d.ts +0 -24
  688. package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
  689. package/cjs/validation/plugins/embed-validator-plugin.js +0 -18
  690. package/cjs/validation/plugins/embed-validator-plugin.js.map +0 -1
  691. package/cjs/validation/rules/database-model-rule.d.ts +0 -7
  692. package/cjs/validation/rules/database-model-rule.d.ts.map +0 -1
  693. package/cjs/validation/rules/database-model-rule.js +0 -27
  694. package/cjs/validation/rules/database-model-rule.js.map +0 -1
  695. package/cjs/validation/transformers/embed-model-transformer.d.ts +0 -3
  696. package/cjs/validation/transformers/embed-model-transformer.d.ts.map +0 -1
  697. package/cjs/validation/transformers/embed-model-transformer.js +0 -18
  698. package/cjs/validation/transformers/embed-model-transformer.js.map +0 -1
  699. package/cjs/validation/validators/embed-validator.d.ts +0 -21
  700. package/cjs/validation/validators/embed-validator.d.ts.map +0 -1
  701. package/cjs/validation/validators/embed-validator.js +0 -43
  702. package/cjs/validation/validators/embed-validator.js.map +0 -1
  703. package/cjs/writer/database-writer.d.ts +0 -174
  704. package/cjs/writer/database-writer.d.ts.map +0 -1
  705. package/cjs/writer/database-writer.js +0 -400
  706. package/cjs/writer/database-writer.js.map +0 -1
  707. package/esm/context/database-data-source-context.d.ts +0 -29
  708. package/esm/context/database-data-source-context.d.ts.map +0 -1
  709. package/esm/context/database-data-source-context.js +0 -28
  710. package/esm/context/database-data-source-context.js.map +0 -1
  711. package/esm/context/database-transaction-context.d.ts +0 -35
  712. package/esm/context/database-transaction-context.d.ts.map +0 -1
  713. package/esm/context/database-transaction-context.js +0 -40
  714. package/esm/context/database-transaction-context.js.map +0 -1
  715. package/esm/contracts/database-driver.contract.d.ts +0 -450
  716. package/esm/contracts/database-driver.contract.d.ts.map +0 -1
  717. package/esm/contracts/database-id-generator.contract.d.ts +0 -109
  718. package/esm/contracts/database-id-generator.contract.d.ts.map +0 -1
  719. package/esm/contracts/database-remover.contract.d.ts +0 -104
  720. package/esm/contracts/database-remover.contract.d.ts.map +0 -1
  721. package/esm/contracts/database-restorer.contract.d.ts +0 -143
  722. package/esm/contracts/database-restorer.contract.d.ts.map +0 -1
  723. package/esm/contracts/database-writer.contract.d.ts +0 -119
  724. package/esm/contracts/database-writer.contract.d.ts.map +0 -1
  725. package/esm/contracts/driver-blueprint.contract.d.ts +0 -49
  726. package/esm/contracts/driver-blueprint.contract.d.ts.map +0 -1
  727. package/esm/contracts/index.d.ts +0 -10
  728. package/esm/contracts/index.d.ts.map +0 -1
  729. package/esm/contracts/migration-driver.contract.d.ts +0 -522
  730. package/esm/contracts/migration-driver.contract.d.ts.map +0 -1
  731. package/esm/contracts/query-builder.contract.d.ts +0 -1609
  732. package/esm/contracts/query-builder.contract.d.ts.map +0 -1
  733. package/esm/contracts/sync-adapter.contract.d.ts +0 -58
  734. package/esm/contracts/sync-adapter.contract.d.ts.map +0 -1
  735. package/esm/data-source/data-source-registry.d.ts +0 -108
  736. package/esm/data-source/data-source-registry.d.ts.map +0 -1
  737. package/esm/data-source/data-source-registry.js +0 -145
  738. package/esm/data-source/data-source-registry.js.map +0 -1
  739. package/esm/data-source/data-source.d.ts +0 -147
  740. package/esm/data-source/data-source.d.ts.map +0 -1
  741. package/esm/data-source/data-source.js +0 -83
  742. package/esm/data-source/data-source.js.map +0 -1
  743. package/esm/database-dirty-tracker.d.ts +0 -252
  744. package/esm/database-dirty-tracker.d.ts.map +0 -1
  745. package/esm/database-dirty-tracker.js +0 -386
  746. package/esm/database-dirty-tracker.js.map +0 -1
  747. package/esm/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
  748. package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
  749. package/esm/drivers/mongodb/mongodb-blueprint.js +0 -51
  750. package/esm/drivers/mongodb/mongodb-blueprint.js.map +0 -1
  751. package/esm/drivers/mongodb/mongodb-driver.d.ts +0 -325
  752. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
  753. package/esm/drivers/mongodb/mongodb-driver.js +0 -845
  754. package/esm/drivers/mongodb/mongodb-driver.js.map +0 -1
  755. package/esm/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
  756. package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
  757. package/esm/drivers/mongodb/mongodb-id-generator.js +0 -149
  758. package/esm/drivers/mongodb/mongodb-id-generator.js.map +0 -1
  759. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
  760. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
  761. package/esm/drivers/mongodb/mongodb-migration-driver.js +0 -666
  762. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
  763. package/esm/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
  764. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
  765. package/esm/drivers/mongodb/mongodb-query-builder.js +0 -1988
  766. package/esm/drivers/mongodb/mongodb-query-builder.js.map +0 -1
  767. package/esm/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
  768. package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
  769. package/esm/drivers/mongodb/mongodb-query-operations.js +0 -270
  770. package/esm/drivers/mongodb/mongodb-query-operations.js.map +0 -1
  771. package/esm/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
  772. package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
  773. package/esm/drivers/mongodb/mongodb-query-parser.js +0 -1351
  774. package/esm/drivers/mongodb/mongodb-query-parser.js.map +0 -1
  775. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
  776. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
  777. package/esm/drivers/mongodb/mongodb-sync-adapter.js +0 -146
  778. package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
  779. package/esm/drivers/mongodb/types.d.ts +0 -43
  780. package/esm/drivers/mongodb/types.d.ts.map +0 -1
  781. package/esm/drivers/postgres/index.d.ts +0 -16
  782. package/esm/drivers/postgres/index.d.ts.map +0 -1
  783. package/esm/drivers/postgres/postgres-blueprint.d.ts +0 -64
  784. package/esm/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
  785. package/esm/drivers/postgres/postgres-blueprint.js +0 -121
  786. package/esm/drivers/postgres/postgres-blueprint.js.map +0 -1
  787. package/esm/drivers/postgres/postgres-dialect.d.ts +0 -136
  788. package/esm/drivers/postgres/postgres-dialect.d.ts.map +0 -1
  789. package/esm/drivers/postgres/postgres-dialect.js +0 -268
  790. package/esm/drivers/postgres/postgres-dialect.js.map +0 -1
  791. package/esm/drivers/postgres/postgres-driver.d.ts +0 -432
  792. package/esm/drivers/postgres/postgres-driver.d.ts.map +0 -1
  793. package/esm/drivers/postgres/postgres-driver.js +0 -1008
  794. package/esm/drivers/postgres/postgres-driver.js.map +0 -1
  795. package/esm/drivers/postgres/postgres-migration-driver.d.ts +0 -397
  796. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
  797. package/esm/drivers/postgres/postgres-migration-driver.js +0 -900
  798. package/esm/drivers/postgres/postgres-migration-driver.js.map +0 -1
  799. package/esm/drivers/postgres/postgres-query-builder.d.ts +0 -254
  800. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
  801. package/esm/drivers/postgres/postgres-query-builder.js +0 -933
  802. package/esm/drivers/postgres/postgres-query-builder.js.map +0 -1
  803. package/esm/drivers/postgres/postgres-query-parser.d.ts +0 -328
  804. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
  805. package/esm/drivers/postgres/postgres-query-parser.js +0 -868
  806. package/esm/drivers/postgres/postgres-query-parser.js.map +0 -1
  807. package/esm/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
  808. package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
  809. package/esm/drivers/postgres/postgres-sql-serializer.js +0 -400
  810. package/esm/drivers/postgres/postgres-sql-serializer.js.map +0 -1
  811. package/esm/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
  812. package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
  813. package/esm/drivers/postgres/postgres-sync-adapter.js +0 -204
  814. package/esm/drivers/postgres/postgres-sync-adapter.js.map +0 -1
  815. package/esm/drivers/postgres/types.d.ts +0 -144
  816. package/esm/drivers/postgres/types.d.ts.map +0 -1
  817. package/esm/drivers/sql/index.d.ts +0 -10
  818. package/esm/drivers/sql/index.d.ts.map +0 -1
  819. package/esm/drivers/sql/sql-dialect.contract.d.ts +0 -204
  820. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
  821. package/esm/drivers/sql/sql-types.d.ts +0 -202
  822. package/esm/drivers/sql/sql-types.d.ts.map +0 -1
  823. package/esm/errors/missing-data-source.error.d.ts +0 -22
  824. package/esm/errors/missing-data-source.error.d.ts.map +0 -1
  825. package/esm/errors/missing-data-source.error.js +0 -29
  826. package/esm/errors/missing-data-source.error.js.map +0 -1
  827. package/esm/errors/transaction-rollback.error.d.ts +0 -20
  828. package/esm/errors/transaction-rollback.error.d.ts.map +0 -1
  829. package/esm/errors/transaction-rollback.error.js +0 -27
  830. package/esm/errors/transaction-rollback.error.js.map +0 -1
  831. package/esm/events/model-events.d.ts +0 -231
  832. package/esm/events/model-events.d.ts.map +0 -1
  833. package/esm/events/model-events.js +0 -259
  834. package/esm/events/model-events.js.map +0 -1
  835. package/esm/expressions/aggregate-expressions.d.ts +0 -215
  836. package/esm/expressions/aggregate-expressions.d.ts.map +0 -1
  837. package/esm/expressions/aggregate-expressions.js +0 -221
  838. package/esm/expressions/aggregate-expressions.js.map +0 -1
  839. package/esm/expressions/index.d.ts +0 -2
  840. package/esm/expressions/index.d.ts.map +0 -1
  841. package/esm/index.d.ts +0 -45
  842. package/esm/index.d.ts.map +0 -1
  843. package/esm/index.js +0 -1
  844. package/esm/index.js.map +0 -1
  845. package/esm/migration/column-builder.d.ts +0 -417
  846. package/esm/migration/column-builder.d.ts.map +0 -1
  847. package/esm/migration/column-builder.js +0 -586
  848. package/esm/migration/column-builder.js.map +0 -1
  849. package/esm/migration/column-helpers.d.ts +0 -275
  850. package/esm/migration/column-helpers.d.ts.map +0 -1
  851. package/esm/migration/column-helpers.js +0 -389
  852. package/esm/migration/column-helpers.js.map +0 -1
  853. package/esm/migration/foreign-key-builder.d.ts +0 -103
  854. package/esm/migration/foreign-key-builder.d.ts.map +0 -1
  855. package/esm/migration/foreign-key-builder.js +0 -121
  856. package/esm/migration/foreign-key-builder.js.map +0 -1
  857. package/esm/migration/index.d.ts +0 -7
  858. package/esm/migration/index.d.ts.map +0 -1
  859. package/esm/migration/migration-runner.d.ts +0 -278
  860. package/esm/migration/migration-runner.d.ts.map +0 -1
  861. package/esm/migration/migration-runner.js +0 -815
  862. package/esm/migration/migration-runner.js.map +0 -1
  863. package/esm/migration/migration.d.ts +0 -1988
  864. package/esm/migration/migration.d.ts.map +0 -1
  865. package/esm/migration/migration.js +0 -2162
  866. package/esm/migration/migration.js.map +0 -1
  867. package/esm/migration/sql-grammar.d.ts +0 -61
  868. package/esm/migration/sql-grammar.d.ts.map +0 -1
  869. package/esm/migration/sql-grammar.js +0 -164
  870. package/esm/migration/sql-grammar.js.map +0 -1
  871. package/esm/migration/sql-serializer.d.ts +0 -22
  872. package/esm/migration/sql-serializer.d.ts.map +0 -1
  873. package/esm/migration/sql-serializer.js +0 -26
  874. package/esm/migration/sql-serializer.js.map +0 -1
  875. package/esm/migration/types.d.ts +0 -155
  876. package/esm/migration/types.d.ts.map +0 -1
  877. package/esm/model/methods/accessor-methods.d.ts +0 -13
  878. package/esm/model/methods/accessor-methods.d.ts.map +0 -1
  879. package/esm/model/methods/accessor-methods.js +0 -51
  880. package/esm/model/methods/accessor-methods.js.map +0 -1
  881. package/esm/model/methods/delete-methods.d.ts +0 -10
  882. package/esm/model/methods/delete-methods.d.ts.map +0 -1
  883. package/esm/model/methods/delete-methods.js +0 -10
  884. package/esm/model/methods/delete-methods.js.map +0 -1
  885. package/esm/model/methods/dirty-methods.d.ts +0 -10
  886. package/esm/model/methods/dirty-methods.d.ts.map +0 -1
  887. package/esm/model/methods/dirty-methods.js +0 -15
  888. package/esm/model/methods/dirty-methods.js.map +0 -1
  889. package/esm/model/methods/hydration-methods.d.ts +0 -10
  890. package/esm/model/methods/hydration-methods.d.ts.map +0 -1
  891. package/esm/model/methods/hydration-methods.js +0 -57
  892. package/esm/model/methods/hydration-methods.js.map +0 -1
  893. package/esm/model/methods/instance-event-methods.d.ts +0 -7
  894. package/esm/model/methods/instance-event-methods.d.ts.map +0 -1
  895. package/esm/model/methods/instance-event-methods.js +0 -15
  896. package/esm/model/methods/instance-event-methods.js.map +0 -1
  897. package/esm/model/methods/meta-methods.d.ts +0 -7
  898. package/esm/model/methods/meta-methods.d.ts.map +0 -1
  899. package/esm/model/methods/meta-methods.js +0 -78
  900. package/esm/model/methods/meta-methods.js.map +0 -1
  901. package/esm/model/methods/query-methods.d.ts +0 -24
  902. package/esm/model/methods/query-methods.d.ts.map +0 -1
  903. package/esm/model/methods/query-methods.js +0 -164
  904. package/esm/model/methods/query-methods.js.map +0 -1
  905. package/esm/model/methods/restore-methods.d.ts +0 -10
  906. package/esm/model/methods/restore-methods.d.ts.map +0 -1
  907. package/esm/model/methods/restore-methods.js +0 -13
  908. package/esm/model/methods/restore-methods.js.map +0 -1
  909. package/esm/model/methods/scope-methods.d.ts +0 -7
  910. package/esm/model/methods/scope-methods.d.ts.map +0 -1
  911. package/esm/model/methods/scope-methods.js +0 -15
  912. package/esm/model/methods/scope-methods.js.map +0 -1
  913. package/esm/model/methods/serialization-methods.d.ts +0 -3
  914. package/esm/model/methods/serialization-methods.d.ts.map +0 -1
  915. package/esm/model/methods/serialization-methods.js +0 -27
  916. package/esm/model/methods/serialization-methods.js.map +0 -1
  917. package/esm/model/methods/static-event-methods.d.ts +0 -9
  918. package/esm/model/methods/static-event-methods.d.ts.map +0 -1
  919. package/esm/model/methods/static-event-methods.js +0 -29
  920. package/esm/model/methods/static-event-methods.js.map +0 -1
  921. package/esm/model/methods/write-methods.d.ts +0 -10
  922. package/esm/model/methods/write-methods.d.ts.map +0 -1
  923. package/esm/model/methods/write-methods.js +0 -52
  924. package/esm/model/methods/write-methods.js.map +0 -1
  925. package/esm/model/model.d.ts +0 -1647
  926. package/esm/model/model.d.ts.map +0 -1
  927. package/esm/model/model.js +0 -1657
  928. package/esm/model/model.js.map +0 -1
  929. package/esm/model/model.types.d.ts +0 -44
  930. package/esm/model/model.types.d.ts.map +0 -1
  931. package/esm/model/register-model.d.ts +0 -81
  932. package/esm/model/register-model.d.ts.map +0 -1
  933. package/esm/model/register-model.js +0 -94
  934. package/esm/model/register-model.js.map +0 -1
  935. package/esm/query-builder/query-builder.d.ts +0 -556
  936. package/esm/query-builder/query-builder.d.ts.map +0 -1
  937. package/esm/query-builder/query-builder.js +0 -1070
  938. package/esm/query-builder/query-builder.js.map +0 -1
  939. package/esm/relations/helpers.d.ts +0 -156
  940. package/esm/relations/helpers.d.ts.map +0 -1
  941. package/esm/relations/helpers.js +0 -202
  942. package/esm/relations/helpers.js.map +0 -1
  943. package/esm/relations/index.d.ts +0 -35
  944. package/esm/relations/index.d.ts.map +0 -1
  945. package/esm/relations/pivot-operations.d.ts +0 -160
  946. package/esm/relations/pivot-operations.d.ts.map +0 -1
  947. package/esm/relations/pivot-operations.js +0 -293
  948. package/esm/relations/pivot-operations.js.map +0 -1
  949. package/esm/relations/relation-hydrator.d.ts +0 -68
  950. package/esm/relations/relation-hydrator.d.ts.map +0 -1
  951. package/esm/relations/relation-hydrator.js +0 -81
  952. package/esm/relations/relation-hydrator.js.map +0 -1
  953. package/esm/relations/relation-loader.d.ts +0 -194
  954. package/esm/relations/relation-loader.d.ts.map +0 -1
  955. package/esm/relations/relation-loader.js +0 -466
  956. package/esm/relations/relation-loader.js.map +0 -1
  957. package/esm/relations/types.d.ts +0 -306
  958. package/esm/relations/types.d.ts.map +0 -1
  959. package/esm/remover/database-remover.d.ts +0 -100
  960. package/esm/remover/database-remover.d.ts.map +0 -1
  961. package/esm/remover/database-remover.js +0 -214
  962. package/esm/remover/database-remover.js.map +0 -1
  963. package/esm/restorer/database-restorer.d.ts +0 -131
  964. package/esm/restorer/database-restorer.d.ts.map +0 -1
  965. package/esm/restorer/database-restorer.js +0 -434
  966. package/esm/restorer/database-restorer.js.map +0 -1
  967. package/esm/sql-database-dirty-tracker.d.ts +0 -13
  968. package/esm/sql-database-dirty-tracker.d.ts.map +0 -1
  969. package/esm/sql-database-dirty-tracker.js +0 -14
  970. package/esm/sql-database-dirty-tracker.js.map +0 -1
  971. package/esm/sync/index.d.ts +0 -12
  972. package/esm/sync/index.d.ts.map +0 -1
  973. package/esm/sync/model-events.d.ts +0 -62
  974. package/esm/sync/model-events.d.ts.map +0 -1
  975. package/esm/sync/model-events.js +0 -49
  976. package/esm/sync/model-events.js.map +0 -1
  977. package/esm/sync/model-sync-operation.d.ts +0 -163
  978. package/esm/sync/model-sync-operation.d.ts.map +0 -1
  979. package/esm/sync/model-sync-operation.js +0 -292
  980. package/esm/sync/model-sync-operation.js.map +0 -1
  981. package/esm/sync/model-sync.d.ts +0 -130
  982. package/esm/sync/model-sync.d.ts.map +0 -1
  983. package/esm/sync/model-sync.js +0 -178
  984. package/esm/sync/model-sync.js.map +0 -1
  985. package/esm/sync/sync-context.d.ts +0 -70
  986. package/esm/sync/sync-context.d.ts.map +0 -1
  987. package/esm/sync/sync-context.js +0 -101
  988. package/esm/sync/sync-context.js.map +0 -1
  989. package/esm/sync/sync-manager.d.ts +0 -213
  990. package/esm/sync/sync-manager.d.ts.map +0 -1
  991. package/esm/sync/sync-manager.js +0 -689
  992. package/esm/sync/sync-manager.js.map +0 -1
  993. package/esm/sync/types.d.ts +0 -289
  994. package/esm/sync/types.d.ts.map +0 -1
  995. package/esm/test-migrations/test-enhanced-features.migration.d.ts +0 -15
  996. package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
  997. package/esm/types.d.ts +0 -371
  998. package/esm/types.d.ts.map +0 -1
  999. package/esm/utils/connect-to-database.d.ts +0 -307
  1000. package/esm/utils/connect-to-database.d.ts.map +0 -1
  1001. package/esm/utils/connect-to-database.js +0 -130
  1002. package/esm/utils/connect-to-database.js.map +0 -1
  1003. package/esm/utils/database-writer.utils.d.ts +0 -15
  1004. package/esm/utils/database-writer.utils.d.ts.map +0 -1
  1005. package/esm/utils/database-writer.utils.js +0 -14
  1006. package/esm/utils/database-writer.utils.js.map +0 -1
  1007. package/esm/utils/define-model.js +0 -100
  1008. package/esm/utils/define-model.js.map +0 -1
  1009. package/esm/utils/is-valid-date-value.d.ts +0 -5
  1010. package/esm/utils/is-valid-date-value.d.ts.map +0 -1
  1011. package/esm/utils/is-valid-date-value.js +0 -25
  1012. package/esm/utils/is-valid-date-value.js.map +0 -1
  1013. package/esm/utils/once-connected.d.ts +0 -146
  1014. package/esm/utils/once-connected.d.ts.map +0 -1
  1015. package/esm/utils/once-connected.js +0 -251
  1016. package/esm/utils/once-connected.js.map +0 -1
  1017. package/esm/validation/database-seal-plugins.d.ts +0 -12
  1018. package/esm/validation/database-seal-plugins.d.ts.map +0 -1
  1019. package/esm/validation/database-seal-plugins.js +0 -1
  1020. package/esm/validation/database-seal-plugins.js.map +0 -1
  1021. package/esm/validation/database-writer-validation-error.d.ts +0 -97
  1022. package/esm/validation/database-writer-validation-error.d.ts.map +0 -1
  1023. package/esm/validation/database-writer-validation-error.js +0 -160
  1024. package/esm/validation/database-writer-validation-error.js.map +0 -1
  1025. package/esm/validation/index.d.ts +0 -3
  1026. package/esm/validation/index.d.ts.map +0 -1
  1027. package/esm/validation/mutators/embed-mutator.d.ts +0 -9
  1028. package/esm/validation/mutators/embed-mutator.d.ts.map +0 -1
  1029. package/esm/validation/mutators/embed-mutator.js +0 -33
  1030. package/esm/validation/mutators/embed-mutator.js.map +0 -1
  1031. package/esm/validation/plugins/embed-validator-plugin.d.ts +0 -24
  1032. package/esm/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
  1033. package/esm/validation/plugins/embed-validator-plugin.js +0 -18
  1034. package/esm/validation/plugins/embed-validator-plugin.js.map +0 -1
  1035. package/esm/validation/rules/database-model-rule.d.ts +0 -7
  1036. package/esm/validation/rules/database-model-rule.d.ts.map +0 -1
  1037. package/esm/validation/rules/database-model-rule.js +0 -27
  1038. package/esm/validation/rules/database-model-rule.js.map +0 -1
  1039. package/esm/validation/transformers/embed-model-transformer.d.ts +0 -3
  1040. package/esm/validation/transformers/embed-model-transformer.d.ts.map +0 -1
  1041. package/esm/validation/transformers/embed-model-transformer.js +0 -18
  1042. package/esm/validation/transformers/embed-model-transformer.js.map +0 -1
  1043. package/esm/validation/validators/embed-validator.d.ts +0 -21
  1044. package/esm/validation/validators/embed-validator.d.ts.map +0 -1
  1045. package/esm/validation/validators/embed-validator.js +0 -43
  1046. package/esm/validation/validators/embed-validator.js.map +0 -1
  1047. package/esm/writer/database-writer.d.ts +0 -174
  1048. package/esm/writer/database-writer.d.ts.map +0 -1
  1049. package/esm/writer/database-writer.js +0 -400
  1050. package/esm/writer/database-writer.js.map +0 -1
@@ -0,0 +1,965 @@
1
+ import { isAggregateExpression } from "../../expressions/aggregate-expressions.mjs";
2
+ import { colors } from "@mongez/copper";
3
+
4
+ //#region ../../@warlock.js/cascade/src/drivers/mongodb/mongodb-query-parser.ts
5
+ /**
6
+ * Parses query builder operations into MongoDB aggregation pipeline.
7
+ *
8
+ * This parser is responsible for converting the abstract operations collected
9
+ * by the query builder into a concrete MongoDB aggregation pipeline. It handles
10
+ * intelligent grouping of mergeable operations (like multiple where clauses)
11
+ * into single pipeline stages for optimal performance.
12
+ */
13
+ var MongoQueryParser = class {
14
+ /**
15
+ * The MongoDB collection being queried.
16
+ */
17
+ collection;
18
+ /**
19
+ * The ordered list of operations to parse.
20
+ */
21
+ operations;
22
+ /**
23
+ * Factory for creating sub-builders (used when resolving callbacks).
24
+ */
25
+ createSubBuilder;
26
+ /**
27
+ * Track group field names for automatic _id renaming.
28
+ * Maps pipeline index to field names.
29
+ */
30
+ groupFieldNames = /* @__PURE__ */ new Map();
31
+ /**
32
+ * Create a new MongoDB query parser.
33
+ *
34
+ * @param options - Configuration options for the parser
35
+ */
36
+ constructor(options) {
37
+ this.collection = options.collection;
38
+ this.operations = options.operations;
39
+ this.createSubBuilder = options.createSubBuilder;
40
+ }
41
+ /**
42
+ * Parse the operations into a MongoDB aggregation pipeline.
43
+ *
44
+ * This method intelligently groups mergeable operations (e.g., multiple where
45
+ * clauses) into single pipeline stages while maintaining the correct execution
46
+ * order for non-mergeable operations.
47
+ *
48
+ * @returns The MongoDB aggregation pipeline
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const parser = new MongoQueryParser({ collection, operations });
53
+ * const pipeline = parser.parse();
54
+ * // [
55
+ * // { $match: { status: 'active', age: { $gt: 18 } } },
56
+ * // { $sort: { createdAt: -1 } },
57
+ * // { $limit: 10 }
58
+ * // ]
59
+ * ```
60
+ */
61
+ parse() {
62
+ const pipeline = [];
63
+ let currentStage = null;
64
+ let currentBuffer = [];
65
+ for (const op of this.operations) if (op.mergeable && op.stage === currentStage) currentBuffer.push(op);
66
+ else {
67
+ if (currentBuffer.length > 0) {
68
+ const builtStage = this.buildStage(currentStage, currentBuffer);
69
+ if (builtStage) {
70
+ const stageIndex = pipeline.length;
71
+ pipeline.push(builtStage);
72
+ this.trackGroupFieldNames(currentStage, currentBuffer, stageIndex);
73
+ }
74
+ currentBuffer = [];
75
+ }
76
+ if (op.mergeable) {
77
+ currentStage = op.stage;
78
+ currentBuffer.push(op);
79
+ } else {
80
+ const builtStage = this.buildStage(op.stage, [op]);
81
+ if (builtStage) {
82
+ const stageIndex = pipeline.length;
83
+ pipeline.push(builtStage);
84
+ this.trackGroupFieldNames(op.stage, [op], stageIndex);
85
+ }
86
+ currentStage = null;
87
+ }
88
+ }
89
+ if (currentBuffer.length > 0) {
90
+ const builtStage = this.buildStage(currentStage, currentBuffer);
91
+ if (builtStage) {
92
+ const stageIndex = pipeline.length;
93
+ pipeline.push(builtStage);
94
+ this.trackGroupFieldNames(currentStage, currentBuffer, stageIndex);
95
+ }
96
+ }
97
+ return this.postProcessGroupStages(pipeline);
98
+ }
99
+ /**
100
+ * Track field names for group stages that need _id renaming.
101
+ */
102
+ trackGroupFieldNames(stage, operations, stageIndex) {
103
+ if (stage === "$group") {
104
+ const op = operations[0];
105
+ if (op.type === "groupByWithAggregates" && op.data.fields) {
106
+ const fieldNames = this.extractGroupFieldNames(op.data.fields);
107
+ if (fieldNames) this.groupFieldNames.set(stageIndex, fieldNames);
108
+ }
109
+ }
110
+ }
111
+ /**
112
+ * Post-process pipeline to rename _id fields after $group stages.
113
+ *
114
+ * This automatically renames MongoDB's `_id` field to the actual field name(s)
115
+ * used for grouping, making the results more intuitive.
116
+ *
117
+ * @param pipeline - The aggregation pipeline
118
+ * @returns The processed pipeline
119
+ */
120
+ postProcessGroupStages(pipeline) {
121
+ const processed = [];
122
+ for (let i = 0; i < pipeline.length; i++) {
123
+ const stage = pipeline[i];
124
+ if (stage.$group && this.groupFieldNames.has(i)) {
125
+ const fieldNames = this.groupFieldNames.get(i);
126
+ processed.push(stage);
127
+ const projection = {};
128
+ if (typeof fieldNames === "string") projection[fieldNames] = "$_id";
129
+ else if (Array.isArray(fieldNames) && fieldNames.length > 0) for (const fieldName of fieldNames) projection[fieldName] = `$_id.${fieldName}`;
130
+ const aggregateFields = Object.keys(stage.$group).filter((key) => key !== "_id");
131
+ for (const field of aggregateFields) projection[field] = 1;
132
+ if (Object.keys(projection).length > 0) {
133
+ projection._id = 0;
134
+ processed.push({ $project: projection });
135
+ }
136
+ } else processed.push(stage);
137
+ }
138
+ return processed;
139
+ }
140
+ /**
141
+ * Convert the parsed pipeline to a pretty-printed string for debugging.
142
+ *
143
+ * This method formats the MongoDB aggregation pipeline in a human-readable
144
+ * way, making it easier to understand and debug complex queries.
145
+ *
146
+ * @returns A formatted string representation of the pipeline
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const parser = new MongoQueryParser({ collection, operations });
151
+ * console.log(parser.toPrettyString());
152
+ * // Output:
153
+ * // MongoDB Aggregation Pipeline:
154
+ * // ════════════════════════════
155
+ * // Stage 1: $match
156
+ * // status: "active"
157
+ * // age: { $gt: 18 }
158
+ * //
159
+ * // Stage 2: $sort
160
+ * // createdAt: -1
161
+ * ```
162
+ */
163
+ toPrettyString() {
164
+ const pipeline = this.parse();
165
+ if (pipeline.length === 0) return "MongoDB Aggregation Pipeline: (empty)";
166
+ let output = "MongoDB Aggregation Pipeline:\n";
167
+ output += "═".repeat(50) + "\n";
168
+ pipeline.forEach((stage, index) => {
169
+ const stageName = Object.keys(stage)[0];
170
+ const stageData = stage[stageName];
171
+ if (index > 0) output += "\n";
172
+ output += `Stage ${index + 1}: ${colors.redBright(stageName)}\n`;
173
+ output += this.formatStageData(stageData, 2);
174
+ });
175
+ return output;
176
+ }
177
+ /**
178
+ * Format stage data with proper indentation.
179
+ *
180
+ * @param data - The stage data to format
181
+ * @param indent - The indentation level
182
+ * @returns Formatted string
183
+ */
184
+ formatStageData(data, indent = 0) {
185
+ const spaces = " ".repeat(indent);
186
+ if (typeof data !== "object" || data === null) return `${spaces}${JSON.stringify(data)}\n`;
187
+ if (Array.isArray(data)) {
188
+ if (data.length === 0) return `${spaces}[]`;
189
+ let result = "";
190
+ data.forEach((item, index) => {
191
+ result += `${spaces}[${colors.magenta(index)}]:\n`;
192
+ result += this.formatStageData(item, indent + 2);
193
+ });
194
+ return result;
195
+ }
196
+ let result = "";
197
+ Object.entries(data).forEach(([key, value]) => {
198
+ const coloredKey = key.startsWith("$") ? colors.magentaBright(key) : colors.blue(key);
199
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
200
+ result += `${spaces}${coloredKey}:\n`;
201
+ result += this.formatStageData(value, indent + 2);
202
+ } else if (Array.isArray(value)) {
203
+ result += `${spaces}${coloredKey}:\n`;
204
+ result += this.formatStageData(value, indent + 2);
205
+ } else {
206
+ const formattedValue = typeof value === "number" ? colors.yellowBright(value) : typeof value === "boolean" ? colors.cyanBright(value.toString()) : typeof value === "string" ? colors.greenBright(JSON.stringify(value)) : colors.greenBright(String(value));
207
+ result += `${spaces}${coloredKey}: ${formattedValue}\n`;
208
+ }
209
+ });
210
+ return result.endsWith("\n") ? result : `${result}\n`;
211
+ }
212
+ /**
213
+ * Build a single pipeline stage from a group of operations.
214
+ *
215
+ * @param stage - The pipeline stage type
216
+ * @param operations - The operations to build the stage from
217
+ * @returns The built pipeline stage or null if no stage should be added
218
+ */
219
+ buildStage(stage, operations) {
220
+ switch (stage) {
221
+ case "$match": return this.buildMatchStage(operations);
222
+ case "$project": return this.buildProjectStage(operations);
223
+ case "$sort": return this.buildSortStage(operations);
224
+ case "$group": return this.buildGroupStage(operations);
225
+ case "$lookup": return this.buildLookupStage(operations);
226
+ case "$limit": return { $limit: operations[0].data.value };
227
+ case "$skip": return { $skip: operations[0].data.value };
228
+ case "$setWindowFields": return { $setWindowFields: operations[0].data.spec };
229
+ default: return null;
230
+ }
231
+ }
232
+ /**
233
+ * Build a $match stage from where operations.
234
+ *
235
+ * Query building strategy:
236
+ * - Top-level where() + orWhere() = Pure OR
237
+ * - Use callbacks for AND + OR grouping
238
+ *
239
+ * @param operations - The where operations
240
+ * @returns The $match stage or null
241
+ */
242
+ buildMatchStage(operations) {
243
+ const andFilter = {};
244
+ const orClauses = [];
245
+ const pendingSimpleWhere = [];
246
+ let topLevelOrMode = false;
247
+ const pushOr = (clause) => {
248
+ if (!clause) return;
249
+ if (this.isPureOrCondition(clause)) {
250
+ orClauses.push(...clause.$or);
251
+ return;
252
+ }
253
+ if (Array.isArray(clause)) {
254
+ orClauses.push(...clause);
255
+ return;
256
+ }
257
+ orClauses.push(clause);
258
+ };
259
+ const mergeAnd = (condition) => {
260
+ if (!condition) return;
261
+ Object.entries(condition).forEach(([key, value]) => {
262
+ if (key === "$or") {
263
+ pushOr(value);
264
+ return;
265
+ }
266
+ if (value && typeof value === "object" && !Array.isArray(value) && andFilter[key] && typeof andFilter[key] === "object" && !Array.isArray(andFilter[key])) andFilter[key] = {
267
+ ...andFilter[key],
268
+ ...value
269
+ };
270
+ else andFilter[key] = value;
271
+ });
272
+ };
273
+ const queueSimpleWhere = (condition) => {
274
+ if (!condition) return;
275
+ if (topLevelOrMode) pushOr(condition);
276
+ else pendingSimpleWhere.push(condition);
277
+ };
278
+ const enterTopLevelOrMode = () => {
279
+ if (topLevelOrMode) return;
280
+ topLevelOrMode = true;
281
+ while (pendingSimpleWhere.length > 0) {
282
+ const condition = pendingSimpleWhere.shift();
283
+ if (condition) pushOr(condition);
284
+ }
285
+ };
286
+ const flushPendingSimpleWhere = () => {
287
+ if (pendingSimpleWhere.length === 0) return;
288
+ if (topLevelOrMode) pendingSimpleWhere.forEach(pushOr);
289
+ else pendingSimpleWhere.forEach(mergeAnd);
290
+ pendingSimpleWhere.length = 0;
291
+ };
292
+ for (const op of operations) {
293
+ if (op.type === "where:callback" || op.type === "orWhere:callback") {
294
+ flushPendingSimpleWhere();
295
+ const callbackCondition = this.buildCallbackCondition(op.data);
296
+ if (!callbackCondition) continue;
297
+ if (op.type === "orWhere:callback" || topLevelOrMode && !this.isPureOrCondition(callbackCondition) || this.isPureOrCondition(callbackCondition)) {
298
+ if (op.type === "orWhere:callback") enterTopLevelOrMode();
299
+ pushOr(callbackCondition);
300
+ } else mergeAnd(callbackCondition);
301
+ continue;
302
+ }
303
+ if (op.type === "where:object") {
304
+ queueSimpleWhere(op.data);
305
+ continue;
306
+ }
307
+ if (op.type === "where:not" || op.type === "orWhere:not" || op.type === "where:exists" || op.type === "where:notExists") {
308
+ const negated = op.type === "where:not" || op.type === "where:notExists";
309
+ const nested = this.buildCallbackCondition(op.data.callback);
310
+ if (nested) {
311
+ const condition = negated ? { $nor: [nested] } : nested;
312
+ if (op.type.startsWith("orWhere")) {
313
+ enterTopLevelOrMode();
314
+ pushOr(condition);
315
+ } else queueSimpleWhere(condition);
316
+ }
317
+ continue;
318
+ }
319
+ if (op.type === "orWhere:object") {
320
+ enterTopLevelOrMode();
321
+ pushOr(op.data);
322
+ continue;
323
+ }
324
+ const condition = this.buildWhereCondition(op);
325
+ if (!condition) continue;
326
+ if (op.type.startsWith("orWhere")) {
327
+ enterTopLevelOrMode();
328
+ pushOr(condition);
329
+ } else queueSimpleWhere(condition);
330
+ }
331
+ flushPendingSimpleWhere();
332
+ const hasAnd = Object.keys(andFilter).length > 0;
333
+ const hasOr = orClauses.length > 0;
334
+ if (!hasAnd && !hasOr) return null;
335
+ const match = {};
336
+ if (hasAnd) Object.assign(match, andFilter);
337
+ if (hasOr) match.$or = orClauses;
338
+ return { $match: match };
339
+ }
340
+ isPureOrCondition(condition) {
341
+ return condition && typeof condition === "object" && !Array.isArray(condition) && Object.keys(condition).length === 1 && Array.isArray(condition.$or);
342
+ }
343
+ /**
344
+ * Build a condition from a callback-based where clause.
345
+ * Creates a sub-builder, executes the callback, and extracts the conditions.
346
+ * If callback has orWhere, all conditions become OR.
347
+ *
348
+ * @param callback - The callback function
349
+ * @returns The built condition or null
350
+ */
351
+ buildCallbackCondition(callback) {
352
+ const subBuilder = this.createSubBuilder();
353
+ callback(subBuilder);
354
+ const matchOps = subBuilder.operations.filter((op) => op.stage === "$match");
355
+ if (matchOps.length === 0) return null;
356
+ const andFilter = {};
357
+ const orClauses = [];
358
+ const hasInternalOr = matchOps.some((op) => op.type.startsWith("orWhere"));
359
+ const pushOr = (clause) => {
360
+ if (!clause) return;
361
+ if (this.isPureOrCondition(clause)) {
362
+ orClauses.push(...clause.$or);
363
+ return;
364
+ }
365
+ orClauses.push(clause);
366
+ };
367
+ if (hasInternalOr) {
368
+ for (const op of matchOps) {
369
+ if (op.type === "where:callback" || op.type === "orWhere:callback") {
370
+ const nestedCondition = this.buildCallbackCondition(op.data);
371
+ if (nestedCondition) pushOr(nestedCondition);
372
+ continue;
373
+ }
374
+ if (op.type === "where:object" || op.type === "orWhere:object") {
375
+ pushOr(op.data);
376
+ continue;
377
+ }
378
+ const condition = this.buildWhereCondition(op);
379
+ if (condition) pushOr(condition);
380
+ }
381
+ return orClauses.length > 0 ? { $or: orClauses } : null;
382
+ }
383
+ for (const op of matchOps) if (op.type === "where:callback") {
384
+ const nestedCondition = this.buildCallbackCondition(op.data);
385
+ if (nestedCondition) Object.assign(andFilter, nestedCondition);
386
+ } else if (op.type === "where:object") Object.assign(andFilter, op.data);
387
+ else {
388
+ const condition = this.buildWhereCondition(op);
389
+ if (condition) Object.assign(andFilter, condition);
390
+ }
391
+ return Object.keys(andFilter).length > 0 ? andFilter : null;
392
+ }
393
+ /**
394
+ * Build a MongoDB filter condition from a where operation.
395
+ *
396
+ * @param op - The operation to build
397
+ * @returns The MongoDB filter condition
398
+ */
399
+ buildWhereCondition(op) {
400
+ const { field, operator, value } = op.data;
401
+ switch (op.type) {
402
+ case "where":
403
+ case "orWhere": return this.buildOperatorCondition(field, operator, value);
404
+ case "whereIn": return { [field]: { $in: value || op.data.values } };
405
+ case "whereNotIn": return { [field]: { $nin: value || op.data.values } };
406
+ case "whereNull": return { [field]: null };
407
+ case "whereNotNull": return { [field]: { $ne: null } };
408
+ case "whereBetween": return { [field]: {
409
+ $gte: op.data.range[0],
410
+ $lte: op.data.range[1]
411
+ } };
412
+ case "whereNotBetween": return { [field]: { $not: {
413
+ $gte: op.data.range[0],
414
+ $lte: op.data.range[1]
415
+ } } };
416
+ case "whereLike": {
417
+ const pattern = typeof op.data.pattern === "string" ? op.data.pattern : op.data.pattern.source;
418
+ return { [field]: {
419
+ $regex: pattern,
420
+ $options: "i"
421
+ } };
422
+ }
423
+ case "whereNotLike": {
424
+ const notPattern = typeof op.data.pattern === "string" ? op.data.pattern : op.data.pattern.source;
425
+ return { [field]: { $not: {
426
+ $regex: notPattern,
427
+ $options: "i"
428
+ } } };
429
+ }
430
+ case "whereStartsWith": return { [field]: {
431
+ $regex: `^${op.data.value}`,
432
+ $options: "i"
433
+ } };
434
+ case "whereNotStartsWith": return { [field]: { $not: {
435
+ $regex: `^${op.data.value}`,
436
+ $options: "i"
437
+ } } };
438
+ case "whereEndsWith": return { [field]: {
439
+ $regex: `${op.data.value}$`,
440
+ $options: "i"
441
+ } };
442
+ case "whereNotEndsWith": return { [field]: { $not: {
443
+ $regex: `${op.data.value}$`,
444
+ $options: "i"
445
+ } } };
446
+ case "whereExists": return { [field]: { $exists: true } };
447
+ case "whereNotExists": return { [field]: { $exists: false } };
448
+ case "whereSize": if (op.data.operator === "=") return { [field]: { $size: op.data.size } };
449
+ else return { $expr: { [this.getMongoOperator(op.data.operator)]: [{ $size: `$${field}` }, op.data.size] } };
450
+ case "textSearch": return {
451
+ $text: { $search: op.data.query },
452
+ ...op.data.filters || {}
453
+ };
454
+ case "whereRaw":
455
+ case "orWhereRaw": return this.resolveRawExpression(op.data.expression, op.data.bindings);
456
+ case "whereColumn":
457
+ case "orWhereColumn": return this.buildColumnComparison(op.data.first, op.data.operator, op.data.second);
458
+ case "whereBetweenColumns": return this.buildBetweenColumnsCondition(op.data.field, op.data.lowerColumn, op.data.upperColumn);
459
+ case "whereDate":
460
+ case "whereDateEquals": return this.buildDateEqualityCondition(op.data.field, op.data.value);
461
+ case "whereDateBefore": return this.buildDateBeforeCondition(op.data.field, op.data.value);
462
+ case "whereDateAfter": return this.buildDateAfterCondition(op.data.field, op.data.value);
463
+ case "whereTime": return this.buildTimeCondition(op.data.field, op.data.value);
464
+ case "whereDay": return this.buildDatePartCondition(op.data.field, "$dayOfMonth", op.data.value);
465
+ case "whereMonth": return this.buildDatePartCondition(op.data.field, "$month", op.data.value);
466
+ case "whereYear": return this.buildDatePartCondition(op.data.field, "$year", op.data.value);
467
+ case "whereJsonContains": return this.buildJsonContainsCondition(op.data.path, op.data.value);
468
+ case "whereJsonDoesntContain": return this.buildJsonDoesntContainCondition(op.data.path, op.data.value);
469
+ case "whereJsonContainsKey": return this.buildJsonContainsKeyCondition(op.data.path);
470
+ case "whereJsonLength": return this.buildJsonLengthCondition(op.data.path, op.data.operator, op.data.value);
471
+ case "whereJsonIsArray": return this.buildJsonTypeCondition(op.data.path, "array");
472
+ case "whereJsonIsObject": return this.buildJsonTypeCondition(op.data.path, "object");
473
+ case "whereArrayLength": return this.buildArrayLengthCondition(op.data.field, op.data.operator, op.data.value);
474
+ case "whereFullText":
475
+ case "orWhereFullText": return { $text: { $search: op.data.query } };
476
+ case "whereSearch": return { [op.data.field]: {
477
+ $regex: op.data.query,
478
+ $options: "i"
479
+ } };
480
+ case "where:not":
481
+ case "orWhere:not": {
482
+ const nestedNot = this.buildCallbackCondition(op.data.callback);
483
+ return nestedNot ? { $nor: [nestedNot] } : null;
484
+ }
485
+ case "where:exists": return this.buildCallbackCondition(op.data.callback);
486
+ case "where:notExists": {
487
+ const nestedExists = this.buildCallbackCondition(op.data.callback);
488
+ return nestedExists ? { $nor: [nestedExists] } : null;
489
+ }
490
+ case "whereArrayContains": if (op.data.key) return { [field]: { $elemMatch: { [op.data.key]: op.data.value } } };
491
+ else return { [field]: op.data.value };
492
+ default: return null;
493
+ }
494
+ }
495
+ /**
496
+ * Build a condition based on the operator.
497
+ *
498
+ * @param field - The field name
499
+ * @param operator - The comparison operator
500
+ * @param value - The value to compare
501
+ * @returns The MongoDB filter condition
502
+ */
503
+ buildOperatorCondition(field, operator, value) {
504
+ switch (operator) {
505
+ case "=": return { [field]: value };
506
+ case "!=": return { [field]: { $ne: value } };
507
+ case ">": return { [field]: { $gt: value } };
508
+ case ">=": return { [field]: { $gte: value } };
509
+ case "<": return { [field]: { $lt: value } };
510
+ case "<=": return { [field]: { $lte: value } };
511
+ default: return { [field]: value };
512
+ }
513
+ }
514
+ /**
515
+ * Get MongoDB operator from comparison operator.
516
+ *
517
+ * @param operator - The comparison operator
518
+ * @returns The MongoDB operator
519
+ */
520
+ getMongoOperator(operator) {
521
+ return {
522
+ "=": "$eq",
523
+ "!=": "$ne",
524
+ ">": "$gt",
525
+ ">=": "$gte",
526
+ "<": "$lt",
527
+ "<=": "$lte"
528
+ }[operator] || "$eq";
529
+ }
530
+ resolveRawExpression(expression, bindings) {
531
+ if (typeof expression === "string") return { $where: this.bindRawString(expression, bindings) };
532
+ if (typeof expression === "object" && expression !== null) return expression;
533
+ return null;
534
+ }
535
+ bindRawString(expression, bindings) {
536
+ if (!bindings || bindings.length === 0) return expression;
537
+ let index = 0;
538
+ return expression.replace(/\?/g, () => {
539
+ const value = bindings[index++];
540
+ return value === void 0 ? "?" : JSON.stringify(value);
541
+ });
542
+ }
543
+ buildColumnComparison(first, operator, second) {
544
+ return { $expr: { [this.getMongoOperator(operator)]: [this.wrapColumn(first), this.wrapColumn(second)] } };
545
+ }
546
+ buildBetweenColumnsCondition(field, lower, upper) {
547
+ return { $expr: { $and: [{ $gte: [this.wrapColumn(field), this.wrapColumn(lower)] }, { $lte: [this.wrapColumn(field), this.wrapColumn(upper)] }] } };
548
+ }
549
+ wrapColumn(column) {
550
+ return column.startsWith("$") ? column : `$${column}`;
551
+ }
552
+ buildDateEqualityCondition(field, value) {
553
+ const target = this.normalizeDateInput(value);
554
+ const start = this.startOfDay(target);
555
+ const end = this.endOfDay(target);
556
+ return { [field]: {
557
+ $gte: start,
558
+ $lte: end
559
+ } };
560
+ }
561
+ buildDateBeforeCondition(field, value) {
562
+ const target = this.startOfDay(this.normalizeDateInput(value));
563
+ return { [field]: { $lt: target } };
564
+ }
565
+ buildDateAfterCondition(field, value) {
566
+ const target = this.endOfDay(this.normalizeDateInput(value));
567
+ return { [field]: { $gt: target } };
568
+ }
569
+ buildTimeCondition(field, value) {
570
+ return { $expr: { $eq: [{ $dateToString: {
571
+ format: "%H:%M",
572
+ date: `$${field}`
573
+ } }, value] } };
574
+ }
575
+ buildDatePartCondition(field, operator, value) {
576
+ return { $expr: { $eq: [{ [operator]: `$${field}` }, value] } };
577
+ }
578
+ buildJsonContainsCondition(path, value) {
579
+ const fieldPath = this.normalizePath(path);
580
+ if (Array.isArray(value)) return { [fieldPath]: { $all: value } };
581
+ return { [fieldPath]: value };
582
+ }
583
+ buildJsonDoesntContainCondition(path, value) {
584
+ const fieldPath = this.normalizePath(path);
585
+ const values = Array.isArray(value) ? value : [value];
586
+ return { [fieldPath]: { $nin: values } };
587
+ }
588
+ buildJsonContainsKeyCondition(path) {
589
+ return { [this.normalizePath(path)]: { $exists: true } };
590
+ }
591
+ buildJsonLengthCondition(path, operator, value) {
592
+ return { $expr: { [this.getMongoOperator(operator)]: [{ $size: { $ifNull: [`$${this.normalizePath(path)}`, []] } }, value] } };
593
+ }
594
+ buildJsonTypeCondition(path, type) {
595
+ return { $expr: { $eq: [{ $type: `$${this.normalizePath(path)}` }, type] } };
596
+ }
597
+ buildArrayLengthCondition(field, operator, value) {
598
+ return { $expr: { [this.getMongoOperator(operator)]: [{ $size: { $ifNull: [`$${field}`, []] } }, value] } };
599
+ }
600
+ normalizeDateInput(value) {
601
+ if (value instanceof Date) return value;
602
+ const parsed = new Date(value);
603
+ if (Number.isNaN(parsed.getTime())) throw new Error(`Invalid date value: ${value}`);
604
+ return parsed;
605
+ }
606
+ startOfDay(date) {
607
+ const copy = new Date(date);
608
+ copy.setHours(0, 0, 0, 0);
609
+ return copy;
610
+ }
611
+ endOfDay(date) {
612
+ const copy = new Date(date);
613
+ copy.setHours(23, 59, 59, 999);
614
+ return copy;
615
+ }
616
+ normalizePath(path) {
617
+ return path.replace(/->/g, ".");
618
+ }
619
+ applyProjectionFields(projection, fields, value) {
620
+ for (const field of fields) projection[field] = value;
621
+ }
622
+ /**
623
+ * Apply projection object with aliases and inclusion/exclusion.
624
+ * @param projection - The projection object to modify
625
+ * @param projectionObj - The projection specification
626
+ */
627
+ applyProjectionObject(projection, projectionObj) {
628
+ for (const [field, value] of Object.entries(projectionObj)) {
629
+ if (typeof value === "boolean") {
630
+ projection[field] = value ? 1 : 0;
631
+ continue;
632
+ }
633
+ if (typeof value === "number") {
634
+ projection[field] = value;
635
+ continue;
636
+ }
637
+ if (typeof value === "string") {
638
+ projection[value] = `$${field}`;
639
+ continue;
640
+ }
641
+ if (typeof value === "object" && value !== null) {
642
+ projection[field] = value;
643
+ continue;
644
+ }
645
+ projection[field] = 1;
646
+ }
647
+ }
648
+ applyRawProjection(projection, expression, bindings) {
649
+ const resolved = this.resolveProjectionExpression(expression, bindings);
650
+ if (!resolved) return;
651
+ if (typeof resolved === "object" && resolved !== null && !Array.isArray(resolved)) Object.assign(projection, resolved);
652
+ }
653
+ resolveProjectionExpression(expression, bindings) {
654
+ if (typeof expression === "string") {
655
+ const source = bindings && expression.includes("?") ? this.bindRawString(expression, bindings) : expression;
656
+ if (source.startsWith(":")) return source.slice(1);
657
+ return this.normalizeFieldReference(source);
658
+ }
659
+ if (typeof expression === "object" && expression !== null && !(expression instanceof Date)) return expression;
660
+ if (typeof expression === "number" || typeof expression === "boolean") return expression;
661
+ return expression;
662
+ }
663
+ normalizeFieldReference(value) {
664
+ if (typeof value === "string") {
665
+ if (value.startsWith(":")) return value.slice(1);
666
+ if (value.startsWith("$")) return value;
667
+ if (!/^[a-zA-Z0-9_.]+$/.test(value)) return value;
668
+ return `$${value}`;
669
+ }
670
+ return value;
671
+ }
672
+ buildAggregateProjection(field, aggregate) {
673
+ if (aggregate === "count") return this.buildArraySizeExpression(field);
674
+ const operator = {
675
+ sum: "$sum",
676
+ avg: "$avg",
677
+ min: "$min",
678
+ max: "$max",
679
+ first: "$first",
680
+ last: "$last"
681
+ }[aggregate];
682
+ if (!operator) return null;
683
+ return { [operator]: this.normalizeFieldReference(field) };
684
+ }
685
+ buildExistsProjection(field) {
686
+ return { $ne: [{ $type: `$${field}` }, "missing"] };
687
+ }
688
+ buildArraySizeExpression(field) {
689
+ return { $size: { $ifNull: [`$${field}`, []] } };
690
+ }
691
+ buildCaseExpression(cases, otherwise) {
692
+ return { $switch: {
693
+ branches: cases.map((item) => ({
694
+ case: this.resolveProjectionExpression(item.when),
695
+ then: this.resolveLiteralOrExpression(item.then)
696
+ })),
697
+ default: this.resolveLiteralOrExpression(otherwise)
698
+ } };
699
+ }
700
+ buildCondExpression(condition, thenValue, elseValue) {
701
+ return { $cond: [
702
+ this.resolveProjectionExpression(condition),
703
+ this.resolveLiteralOrExpression(thenValue),
704
+ this.resolveLiteralOrExpression(elseValue)
705
+ ] };
706
+ }
707
+ /**
708
+ * Resolve a value as a literal (if it's a plain string) or as an expression.
709
+ * Used for `then`/`default` values in CASE/WHEN expressions.
710
+ */
711
+ resolveLiteralOrExpression(value) {
712
+ if (typeof value === "string" && value.startsWith("$")) return value;
713
+ if (typeof value === "string") return value;
714
+ return this.resolveProjectionExpression(value);
715
+ }
716
+ inferJsonAlias(path) {
717
+ const segments = this.normalizePath(path).split(".");
718
+ return segments[segments.length - 1];
719
+ }
720
+ buildConcatExpression(values) {
721
+ return { $concat: values.map((value) => this.normalizeFieldReference(value)) };
722
+ }
723
+ buildCoalesceExpression(values) {
724
+ if (values.length === 0) return null;
725
+ let expression = this.normalizeFieldReference(values[values.length - 1]);
726
+ for (let index = values.length - 2; index >= 0; index--) expression = { $ifNull: [this.normalizeFieldReference(values[index]), expression] };
727
+ return expression;
728
+ }
729
+ /**
730
+ * Build a $project stage from select operations.
731
+ *
732
+ * @param operations - The select operations
733
+ * @returns The $project stage or null
734
+ */
735
+ buildProjectStage(operations) {
736
+ if (operations.length === 0) return null;
737
+ const projection = {};
738
+ const driverCallbacks = [];
739
+ for (const op of operations) switch (op.type) {
740
+ case "select":
741
+ if (op.data.projection) this.applyProjectionObject(projection, op.data.projection);
742
+ else if (op.data.fields) this.applyProjectionFields(projection, op.data.fields, 1);
743
+ break;
744
+ case "deselect":
745
+ this.applyProjectionFields(projection, op.data.fields, 0);
746
+ break;
747
+ case "addSelect":
748
+ this.applyProjectionFields(projection, op.data.fields, 1);
749
+ break;
750
+ case "selectRaw":
751
+ this.applyRawProjection(projection, op.data.expression, op.data.bindings);
752
+ break;
753
+ case "selectSub":
754
+ case "addSelectSub": {
755
+ const expr = this.resolveProjectionExpression(op.data.expression, op.data.bindings);
756
+ if (expr !== void 0) projection[op.data.alias] = expr;
757
+ break;
758
+ }
759
+ case "selectAggregate":
760
+ projection[op.data.alias] = this.buildAggregateProjection(op.data.field, op.data.aggregate);
761
+ break;
762
+ case "selectExists":
763
+ projection[op.data.alias] = this.buildExistsProjection(op.data.field);
764
+ break;
765
+ case "selectCount":
766
+ projection[op.data.alias] = this.buildArraySizeExpression(op.data.field);
767
+ break;
768
+ case "selectCase":
769
+ projection[op.data.alias] = this.buildCaseExpression(op.data.cases, op.data.otherwise);
770
+ break;
771
+ case "selectWhen":
772
+ projection[op.data.alias] = this.buildCondExpression(op.data.condition, op.data.thenValue, op.data.elseValue);
773
+ break;
774
+ case "selectDriverProjection":
775
+ driverCallbacks.push(op.data.callback);
776
+ break;
777
+ case "selectJson": {
778
+ const alias = op.data.alias ?? this.inferJsonAlias(op.data.path);
779
+ projection[alias] = this.normalizeFieldReference(`$${this.normalizePath(op.data.path)}`);
780
+ break;
781
+ }
782
+ case "selectJsonRaw":
783
+ projection[op.data.alias] = this.resolveProjectionExpression(op.data.expression);
784
+ break;
785
+ case "deselectJson":
786
+ projection[this.normalizePath(op.data.path)] = 0;
787
+ break;
788
+ case "selectConcat":
789
+ projection[op.data.alias] = this.buildConcatExpression(op.data.fields);
790
+ break;
791
+ case "selectCoalesce":
792
+ projection[op.data.alias] = this.buildCoalesceExpression(op.data.fields);
793
+ break;
794
+ default: break;
795
+ }
796
+ for (const callback of driverCallbacks) callback(projection);
797
+ return Object.keys(projection).length > 0 ? { $project: projection } : null;
798
+ }
799
+ /**
800
+ * Build a $sort stage from order operations.
801
+ *
802
+ * @param operations - The order operations
803
+ * @returns The $sort stage or null
804
+ */
805
+ buildSortStage(operations) {
806
+ const sort = {};
807
+ for (const op of operations) switch (op.type) {
808
+ case "orderBy":
809
+ sort[op.data.field] = op.data.direction === "asc" ? 1 : -1;
810
+ break;
811
+ case "orderByRandom": return { $sample: { size: op.data.limit } };
812
+ case "orderByRaw": break;
813
+ }
814
+ return Object.keys(sort).length > 0 ? { $sort: sort } : null;
815
+ }
816
+ /**
817
+ * Build a $group stage from group operations.
818
+ *
819
+ * @param operations - The group operations
820
+ * @returns The $group stage or null
821
+ */
822
+ buildGroupStage(operations) {
823
+ const op = operations[0];
824
+ switch (op.type) {
825
+ case "groupBy": {
826
+ const stage = this.buildGroupByStage(op.data.fields);
827
+ if (stage) return stage;
828
+ break;
829
+ }
830
+ case "groupByWithAggregates": {
831
+ const stage = this.buildGroupByWithAggregatesStage(op.data.fields, op.data.aggregates);
832
+ if (stage) return stage;
833
+ break;
834
+ }
835
+ case "groupByRaw": {
836
+ const expression = op.data.expression;
837
+ if (expression && typeof expression === "object") return { $group: expression };
838
+ if (expression) return { $group: { _id: expression } };
839
+ break;
840
+ }
841
+ case "distinct": {
842
+ const stage = this.buildGroupByStage(op.data.fields);
843
+ if (stage) return stage;
844
+ break;
845
+ }
846
+ default: break;
847
+ }
848
+ return null;
849
+ }
850
+ buildGroupByStage(fields) {
851
+ const groupId = this.buildGroupId(fields);
852
+ if (!groupId) return null;
853
+ return { $group: { _id: groupId } };
854
+ }
855
+ /**
856
+ * Build a $group stage with aggregates from group operations.
857
+ *
858
+ * @param fields - Fields to group by
859
+ * @param aggregates - Aggregate operations (abstract or raw)
860
+ * @returns The $group stage or null
861
+ */
862
+ buildGroupByWithAggregatesStage(fields, aggregates) {
863
+ const groupId = this.buildGroupId(fields);
864
+ if (!groupId) return null;
865
+ const groupStage = { _id: groupId };
866
+ for (const [alias, expression] of Object.entries(aggregates)) if (isAggregateExpression(expression)) groupStage[alias] = this.translateAggregateExpression(expression);
867
+ else groupStage[alias] = expression;
868
+ return { $group: groupStage };
869
+ }
870
+ /**
871
+ * Extract field names from GroupByInput for renaming _id.
872
+ *
873
+ * @param fields - The grouping fields
874
+ * @returns Field name(s) to use for renaming _id
875
+ */
876
+ extractGroupFieldNames(fields) {
877
+ if (typeof fields === "string") return fields;
878
+ if (Array.isArray(fields)) {
879
+ if (fields.every((field) => typeof field === "string")) return fields;
880
+ return null;
881
+ }
882
+ if (typeof fields === "object" && fields !== null) return Object.keys(fields);
883
+ return null;
884
+ }
885
+ /**
886
+ * Translate an abstract aggregate expression to MongoDB format.
887
+ *
888
+ * @param expr - Abstract aggregate expression
889
+ * @returns MongoDB aggregation expression
890
+ */
891
+ translateAggregateExpression(expr) {
892
+ switch (expr.__agg) {
893
+ case "count": return { $sum: 1 };
894
+ case "sum":
895
+ if (!expr.__field) throw new Error("Sum aggregate requires a field name");
896
+ return { $sum: `$${expr.__field}` };
897
+ case "avg":
898
+ if (!expr.__field) throw new Error("Average aggregate requires a field name");
899
+ return { $avg: `$${expr.__field}` };
900
+ case "min":
901
+ if (!expr.__field) throw new Error("Min aggregate requires a field name");
902
+ return { $min: `$${expr.__field}` };
903
+ case "max":
904
+ if (!expr.__field) throw new Error("Max aggregate requires a field name");
905
+ return { $max: `$${expr.__field}` };
906
+ case "first":
907
+ if (!expr.__field) throw new Error("First aggregate requires a field name");
908
+ return { $first: `$${expr.__field}` };
909
+ case "last":
910
+ if (!expr.__field) throw new Error("Last aggregate requires a field name");
911
+ return { $last: `$${expr.__field}` };
912
+ case "distinct":
913
+ if (!expr.__field) throw new Error("Distinct aggregate requires a field name");
914
+ return { $distinct: `$${expr.__field}` };
915
+ case "floor":
916
+ if (!expr.__field) throw new Error("Floor aggregate requires a field name");
917
+ return { $floor: `$${expr.__field}` };
918
+ default: throw new Error(`Unknown aggregate function: ${expr.__agg}`);
919
+ }
920
+ }
921
+ buildGroupId(fields) {
922
+ if (!fields) return null;
923
+ if (typeof fields === "string") return `$${fields}`;
924
+ if (Array.isArray(fields)) {
925
+ if (fields.length === 0) return null;
926
+ if (fields.every((field) => typeof field === "string")) {
927
+ const result = {};
928
+ for (const field of fields) result[field] = `$${field}`;
929
+ return result;
930
+ }
931
+ return fields.reduce((acc, item) => ({
932
+ ...acc,
933
+ ...item
934
+ }), {});
935
+ }
936
+ if (typeof fields === "object") {
937
+ const normalized = {};
938
+ Object.entries(fields).forEach(([key, value]) => {
939
+ if (typeof value === "string" && !value.startsWith("$")) normalized[key] = `$${value}`;
940
+ else normalized[key] = value;
941
+ });
942
+ return normalized;
943
+ }
944
+ return null;
945
+ }
946
+ /**
947
+ * Build a $lookup stage from join operations.
948
+ *
949
+ * @param operations - The join operations
950
+ * @returns The $lookup stage or null
951
+ */
952
+ buildLookupStage(operations) {
953
+ const options = operations[0].data;
954
+ return { $lookup: {
955
+ from: options.table,
956
+ localField: options.localField,
957
+ foreignField: options.foreignField,
958
+ as: options.alias || options.table
959
+ } };
960
+ }
961
+ };
962
+
963
+ //#endregion
964
+ export { MongoQueryParser };
965
+ //# sourceMappingURL=mongodb-query-parser.mjs.map