ts-prorm-orm 1.1.0 → 1.2.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 (460) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +713 -0
  239. package/dist/index.js +36 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,104 @@
1
+ /**
2
+ * CTE (Common Table Expression) Builder
3
+ * Provides an ORM-like way to build CTEs without raw SQL
4
+ */
5
+ import { FindOptions } from '../types';
6
+ export interface CTEColumn {
7
+ name: string;
8
+ type?: string;
9
+ }
10
+ /**
11
+ * Base CTE definition without raw SQL
12
+ */
13
+ export interface CTEDefinition {
14
+ /** Name of the CTE */
15
+ name: string;
16
+ /** Column definitions */
17
+ columns?: CTEColumn[];
18
+ /** Base case for recursive CTE - can be FindOptions or values */
19
+ baseCase?: FindOptions | Record<string, any>[];
20
+ /** Recursive case for recursive CTE */
21
+ recursiveCase?: FindOptions;
22
+ /** Non-recursive UNION part */
23
+ unionWith?: FindOptions;
24
+ /** Model class or table name */
25
+ model?: string | {
26
+ tableName?: string;
27
+ name?: string;
28
+ };
29
+ }
30
+ /**
31
+ * Recursive CTE options for hierarchical data
32
+ */
33
+ export interface RecursiveCTEOptions {
34
+ /** CTE name */
35
+ name: string;
36
+ /** Columns */
37
+ columns?: CTEColumn[];
38
+ /** Anchor/member - starting point */
39
+ anchor: FindOptions;
40
+ /** Recursive member - how to get children */
41
+ recursive: FindOptions;
42
+ /** Model class or table name for reference */
43
+ model?: string | {
44
+ tableName?: string;
45
+ name?: string;
46
+ };
47
+ /** Maximum recursion depth */
48
+ maxDepth?: number;
49
+ /** Sort order for results */
50
+ order?: any[];
51
+ }
52
+ export declare class CTEBuilder {
53
+ private ctes;
54
+ /**
55
+ * Add a simple CTE with a base query
56
+ * @example
57
+ * cte.add('active_users', { model: User, baseCase: { where: { active: true } } })
58
+ * cte.add('active_users', { model: 'users', baseCase: { where: { active: true } } })
59
+ */
60
+ add(name: string, options?: {
61
+ model?: string | {
62
+ tableName?: string;
63
+ name?: string;
64
+ };
65
+ columns?: CTEColumn[];
66
+ baseCase?: FindOptions;
67
+ }): CTEBuilder;
68
+ /**
69
+ * Add a recursive CTE for hierarchical data
70
+ * @example
71
+ * cte.addRecursive({
72
+ * name: 'org_chart',
73
+ * model: Employee,
74
+ * anchor: { where: { managerId: null } },
75
+ * recursive: { where: { '$org_chart.id$': { [Op.eq]: { [Op.col]: 'Employee.managerId' } } } }
76
+ * })
77
+ */
78
+ addRecursive(options: RecursiveCTEOptions): CTEBuilder;
79
+ /**
80
+ * Get all CTEs
81
+ */
82
+ getCTEs(): CTEDefinition[];
83
+ /**
84
+ * Get CTE names
85
+ */
86
+ getCTENames(): string[];
87
+ /**
88
+ * Build the WITH clause SQL
89
+ */
90
+ toSQL(dialect: any): string;
91
+ /**
92
+ * Clear all CTEs
93
+ */
94
+ clear(): void;
95
+ }
96
+ /**
97
+ * Create a new CTE builder
98
+ */
99
+ export declare function createCTEBuilder(): CTEBuilder;
100
+ declare const _default: {
101
+ CTEBuilder: typeof CTEBuilder;
102
+ createCTEBuilder: typeof createCTEBuilder;
103
+ };
104
+ export default _default;
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Typed aggregate-function builder API.
3
+ *
4
+ * `COUNT`/`SUM`/`AVG`/`MIN`/`MAX` are already reachable through the generic
5
+ * `fn('SUM', col('amount'))` pattern in `src/operators.ts` because those
6
+ * names are ANSI-identical across every dialect this ORM supports. This
7
+ * module fills the real gap: aggregate functions whose *name* (and in some
8
+ * cases clause placement) differs per dialect, most notably string
9
+ * aggregation (`GROUP_CONCAT` / `STRING_AGG` / `LISTAGG` / ClickHouse's
10
+ * array-based approach) and array aggregation (`ARRAY_AGG` / `JSON_ARRAYAGG`
11
+ * / `groupArray`).
12
+ *
13
+ * This module is intentionally self-contained: it does not add any new
14
+ * dispatch branches to the shared SQL compiler (`src/query-builders/sql-compiler.ts`)
15
+ * or touch `src/operators.ts`. Every builder function computes a final,
16
+ * dialect-correct SQL fragment string directly and wraps it with the
17
+ * existing `literalExpr()` helper from `src/operators.ts` so it slots into
18
+ * `attributes: [...]` arrays exactly the way `fn()`/`col()`/`cast()` do
19
+ * today (see `attributeToSql()` in `sql-compiler.ts`, which already knows
20
+ * how to render `{ __type: 'literal', sql }` and `[expr, alias]` tuples).
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { count, countDistinct, sum, stringAgg, arrayAgg } from './query-builders/functions/aggregate';
25
+ * import { col } from '../../operators';
26
+ *
27
+ * User.findAll({
28
+ * attributes: [
29
+ * 'department',
30
+ * [count('postgres'), 'total'],
31
+ * [countDistinct('postgres', col('email')), 'uniqueEmails'],
32
+ * [stringAgg('postgres', col('name'), ', ', { orderBy: 'name' }), 'names'],
33
+ * [arrayAgg('postgres', col('id')), 'ids'],
34
+ * ],
35
+ * group: ['department'],
36
+ * });
37
+ * ```
38
+ */
39
+ import { type FnExpression, type ColExpression, type LiteralExpression } from '../../operators';
40
+ import type { Dialect } from '../../types/index';
41
+ /**
42
+ * Acceptable argument types for aggregate function calls: plain column
43
+ * names (strings), other typed expressions (`col()`, `fn()`, `literal()`),
44
+ * or `undefined`/omitted (used for bare `COUNT()`/`COUNT(*)`).
45
+ */
46
+ export type SqlExpr = string | ColExpression | FnExpression | LiteralExpression;
47
+ /** A single ORDER BY entry, either a bare column name or `{ column, direction }`. */
48
+ export type AggOrderBy = string | {
49
+ column: string;
50
+ direction?: 'ASC' | 'DESC';
51
+ } | Array<string | {
52
+ column: string;
53
+ direction?: 'ASC' | 'DESC';
54
+ }>;
55
+ export interface StringAggOptions {
56
+ /** ORDER BY clause applied to the concatenation (single column, or array of columns). */
57
+ orderBy?: AggOrderBy;
58
+ /** Whether to deduplicate values before concatenating. */
59
+ distinct?: boolean;
60
+ }
61
+ export interface ArrayAggOptions {
62
+ /** ORDER BY clause applied to the aggregation (single column, or array of columns). */
63
+ orderBy?: AggOrderBy;
64
+ /** Whether to deduplicate values before aggregating. */
65
+ distinct?: boolean;
66
+ }
67
+ /**
68
+ * `COUNT(*)` / `COUNT(expr)` — identical ANSI syntax across all 11 dialects.
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * count('postgres') // -> COUNT(*)
73
+ * count('postgres', col('id')) // -> COUNT("id")
74
+ * ```
75
+ */
76
+ export declare function count(_dialect: Dialect, expr?: SqlExpr): LiteralExpression;
77
+ /**
78
+ * `COUNT(DISTINCT expr)`.
79
+ *
80
+ * Verified across all 11 dialects: MySQL, MariaDB, PostgreSQL, MSSQL,
81
+ * Oracle, SQLite, CockroachDB, Redshift, Db2, and Snowflake all support the
82
+ * exact ANSI `COUNT(DISTINCT expr)` syntax. ClickHouse also parses
83
+ * `COUNT(DISTINCT expr)` (it desugars to an internal uniq-exact
84
+ * implementation), though ClickHouse users may prefer the native
85
+ * `uniqExact(expr)` function for clarity/performance on very large
86
+ * cardinalities — that's a deliberate escape hatch, not a requirement, so
87
+ * `COUNT(DISTINCT expr)` is used here for consistency with the other
88
+ * dialects.
89
+ */
90
+ export declare function countDistinct(_dialect: Dialect, expr: SqlExpr): LiteralExpression;
91
+ /**
92
+ * `SUM(expr)` — identical everywhere. Note: SUM of an all-NULL group (or
93
+ * zero input rows) returns SQL NULL (not 0) in every one of these dialects,
94
+ * so callers should COALESCE(...) explicitly if a numeric default is
95
+ * required.
96
+ */
97
+ export declare function sum(_dialect: Dialect, expr: SqlExpr): LiteralExpression;
98
+ /**
99
+ * `AVG(expr)` — identical everywhere. Note: integer-typed columns are
100
+ * averaged as an exact/decimal type in PostgreSQL, MSSQL, Oracle, Db2, and
101
+ * Snowflake, but MySQL/MariaDB/SQLite/ClickHouse promote to floating point;
102
+ * cast explicitly (e.g. `cast(col('x'), 'DECIMAL(10,2)')`) if exact decimal
103
+ * averaging is required across dialects.
104
+ */
105
+ export declare function avg(_dialect: Dialect, expr: SqlExpr): LiteralExpression;
106
+ /** `MIN(expr)` — identical everywhere. */
107
+ export declare function min(_dialect: Dialect, expr: SqlExpr): LiteralExpression;
108
+ /** `MAX(expr)` — identical everywhere. */
109
+ export declare function max(_dialect: Dialect, expr: SqlExpr): LiteralExpression;
110
+ /**
111
+ * String aggregation (`GROUP_CONCAT` / `STRING_AGG` / `LISTAGG` / ClickHouse
112
+ * array-concat), dispatched per-dialect. This is the single most
113
+ * error-prone aggregate across dialects, so each branch below documents the
114
+ * exact verified syntax.
115
+ *
116
+ * - **MySQL / MariaDB**:
117
+ * `GROUP_CONCAT([DISTINCT] expr [ORDER BY col [ASC|DESC]] SEPARATOR 'delim')`
118
+ * Clause order is fixed: DISTINCT, then the expression, then ORDER BY,
119
+ * then SEPARATOR — SEPARATOR must come last and is a keyword, not a comma
120
+ * argument.
121
+ *
122
+ * - **SQLite**: `GROUP_CONCAT(expr, 'delim')` (2-argument form; the
123
+ * separator defaults to `,` if omitted). SQLite's GROUP_CONCAT does
124
+ * **not** support an `ORDER BY` clause inside the function call at all —
125
+ * if `options.orderBy` is passed for SQLite this throws, since silently
126
+ * ignoring it would produce non-deterministic ordering that looks
127
+ * intentional. Pre-sort via a subquery/CTE if ordering is required.
128
+ * SQLite's DISTINCT variant (`GROUP_CONCAT(DISTINCT expr)`) is supported
129
+ * but forces the default comma separator (a custom separator combined
130
+ * with DISTINCT is not supported by SQLite) — this also throws if both
131
+ * `distinct` and a non-default delimiter are requested together.
132
+ *
133
+ * - **PostgreSQL / CockroachDB**: `STRING_AGG([DISTINCT] expr, 'delim' [ORDER BY col [ASC|DESC]])`
134
+ * — the ORDER BY clause sits *inside* the same parentheses as the
135
+ * delimiter argument (no WITHIN GROUP).
136
+ *
137
+ * - **MSSQL**: `STRING_AGG(expr, 'delim') WITHIN GROUP (ORDER BY col [ASC|DESC])`
138
+ * — note this is a genuinely different clause *placement* than Postgres:
139
+ * the ORDER BY is a separate `WITHIN GROUP (...)` clause appended after
140
+ * the function call, not inline inside the argument list. MSSQL's
141
+ * `STRING_AGG` also does **not** support a `DISTINCT` argument at all
142
+ * (unlike Postgres) — this throws if `distinct: true` is requested.
143
+ *
144
+ * - **Oracle / Db2**: `LISTAGG([DISTINCT] expr, 'delim') WITHIN GROUP (ORDER BY col [ASC|DESC])`
145
+ * — same WITHIN GROUP placement as MSSQL. Oracle supports `DISTINCT`
146
+ * inside LISTAGG since 19c; Db2 LUW's LISTAGG also supports `DISTINCT`.
147
+ *
148
+ * - **Redshift**: `LISTAGG([DISTINCT] expr, 'delim') WITHIN GROUP (ORDER BY col [ASC|DESC])`
149
+ * — Redshift's aggregate string function has always been `LISTAGG`
150
+ * (matching Oracle/Db2 syntax), not `STRING_AGG`. AWS did add a
151
+ * Postgres-compatible `STRING_AGG` alias to Redshift more recently, but
152
+ * `LISTAGG` is the long-standing, universally-available, and
153
+ * ORDER-BY-capable form, so it's used here for correctness.
154
+ *
155
+ * - **Snowflake**: `LISTAGG([DISTINCT] expr, 'delim') WITHIN GROUP (ORDER BY col [ASC|DESC])`
156
+ * — Snowflake's string aggregation function is `LISTAGG` (Oracle-style),
157
+ * *not* `STRING_AGG` — Snowflake has no `STRING_AGG` function.
158
+ *
159
+ * - **ClickHouse**: no native `GROUP_CONCAT`/`STRING_AGG`/`LISTAGG`. The
160
+ * verified, version-portable idiom is
161
+ * `arrayStringConcat(groupArray(expr), 'delim')` (distinct:
162
+ * `arrayStringConcat(groupUniqArray(expr), 'delim')`). Newer ClickHouse
163
+ * releases (24.x+) also ship a MySQL-compatible `groupConcat(expr)`
164
+ * function, but `arrayStringConcat(groupArray(...), ...)` works on every
165
+ * supported version so it's used as the default here. ClickHouse's
166
+ * `groupArray` has no inline `ORDER BY` sub-clause (it preserves block
167
+ * processing order, not a guaranteed sort) — `options.orderBy` therefore
168
+ * throws for ClickHouse; pre-sort via a subquery if ordering matters.
169
+ */
170
+ export declare function stringAgg(dialect: Dialect, expr: SqlExpr, delimiter: string, options?: StringAggOptions): LiteralExpression;
171
+ /**
172
+ * Aggregate values into an array/JSON-array, dispatched per-dialect.
173
+ *
174
+ * - **PostgreSQL / CockroachDB**: native `ARRAY_AGG([DISTINCT] expr [ORDER BY col [ASC|DESC]])`.
175
+ * - **Snowflake**: native `ARRAY_AGG([DISTINCT] expr) [WITHIN GROUP (ORDER BY col [ASC|DESC])]`
176
+ * — Snowflake's ARRAY_AGG uses the same WITHIN GROUP placement as LISTAGG,
177
+ * not Postgres's inline ORDER BY.
178
+ * - **ClickHouse**: native `groupArray(expr)` (distinct: `groupUniqArray(expr)`);
179
+ * returns ClickHouse's native Array(T) type. No inline ORDER BY support
180
+ * (same limitation as `stringAgg`) — throws if `orderBy` is requested.
181
+ * - **MySQL (5.7.22+) / MariaDB (10.5+)**: no `ARRAY_AGG`, but both support
182
+ * the real `JSON_ARRAYAGG(expr)` function, used here as a JSON-array
183
+ * fallback. Neither dialect's `JSON_ARRAYAGG` supports `DISTINCT` or
184
+ * `ORDER BY` — both throw if requested.
185
+ * - **Oracle (12.2+) / Db2 (11.5+)**: no `ARRAY_AGG`, but both support the
186
+ * real SQL:2016 `JSON_ARRAYAGG(expr)` function, used as a JSON-array
187
+ * fallback here too. `DISTINCT`/`ORDER BY` throw (not supported by either
188
+ * engine's JSON_ARRAYAGG).
189
+ * - **SQLite**: no `ARRAY_AGG`, but has the real native `json_group_array(expr)`
190
+ * aggregate, used as the fallback. `DISTINCT`/`ORDER BY` throw (not
191
+ * supported by SQLite's json_group_array).
192
+ * - **MSSQL / Redshift**: no real array-aggregation concept and no reliable
193
+ * scalar-aggregate JSON-array equivalent (MSSQL's JSON array construction
194
+ * is via `FOR JSON PATH` on a full query shape, not an aggregate function
195
+ * usable inline in a SELECT list; Redshift has no JSON_ARRAYAGG). Both
196
+ * throw a clear "not supported" error rather than faking an unreliable
197
+ * workaround.
198
+ */
199
+ export declare function arrayAgg(dialect: Dialect, expr: SqlExpr, options?: ArrayAggOptions): LiteralExpression;
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Typed CASE WHEN ... THEN ... ELSE ... END expression builder.
3
+ *
4
+ * `CASE WHEN` is ANSI-standard SQL (SQL-92) and is supported identically,
5
+ * with no syntax variation, across every dialect this ORM targets:
6
+ * - mysql, mariadb: full support (searched + simple CASE)
7
+ * - postgres, cockroachdb, redshift: full support (Postgres-derived)
8
+ * - mssql: full support (T-SQL CASE is ANSI-compliant)
9
+ * - oracle: full support (in addition to the older DECODE() function,
10
+ * Oracle has supported standard CASE since 9i)
11
+ * - sqlite: full support
12
+ * - db2: full support
13
+ * - snowflake: full support
14
+ * - clickhouse: full support, including both the "searched" form
15
+ * (`CASE WHEN cond THEN a END`) and the "simple" form
16
+ * (`CASE expr WHEN val THEN a END`). ClickHouse also offers the
17
+ * `multiIf()`/`if()` functions as engine-native alternatives, but plain
18
+ * `CASE` works exactly as ANSI SQL specifies, so no dialect branching is
19
+ * required here (unlike window frame extensions or JSON path functions).
20
+ *
21
+ * This module is intentionally self-contained: it does not add any new
22
+ * dispatch branches to the shared SQL compiler (`src/query-builders/sql-compiler.ts`)
23
+ * or to `src/operators.ts`. Every builder resolves directly to a final SQL
24
+ * fragment string, which is then wrapped with the existing `literalExpr()`
25
+ * helper from `src/operators.ts` so it slots into `attributes: [...]` arrays
26
+ * exactly the way `fn()`/`col()`/`cast()`/the window-function builder do
27
+ * today (see `attributeToSql()` in `sql-compiler.ts`, which already knows
28
+ * how to render `{ __type: 'literal', sql }` and `[expr, alias]` tuples).
29
+ *
30
+ * Condition syntax: `.when()` on the searched-CASE builder (`caseWhen()`)
31
+ * accepts the SAME condition-object shape already used by `where:` clauses
32
+ * throughout this ORM (see `src/operators.ts`'s `Op` symbols and
33
+ * `src/query-builders/where-builder.ts`), e.g.:
34
+ *
35
+ * { age: { [Op.gte]: 18 } }
36
+ * { [Op.and]: [{ age: { [Op.gte]: 18 } }, { status: 'active' }] }
37
+ * { [Op.between]: [...] } // via a field key, see below
38
+ *
39
+ * rather than inventing a new mini-language. This keeps `caseWhen().when(...)`
40
+ * consistent with `Model.findAll({ where: ... })` conditions. A shorthand
41
+ * 3-arg form, `.when(column, operator, value, thenValue)`, is also supported
42
+ * for ergonomic simple comparisons (mirroring `Op.where(col, op, value)`).
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * import { caseWhen, caseOf } from './query-builders/functions/conditional';
47
+ * import { Op, col } from '../../operators';
48
+ *
49
+ * // Searched CASE (condition-object form, same shape as `where:`)
50
+ * User.findAll({
51
+ * attributes: [
52
+ * 'name',
53
+ * caseWhen()
54
+ * .when({ age: { [Op.gte]: 18 } }, 'adult')
55
+ * .when({ age: { [Op.gte]: 13 } }, 'teen')
56
+ * .else('child')
57
+ * .as('ageGroup'),
58
+ * ],
59
+ * });
60
+ *
61
+ * // Searched CASE (3-arg shorthand form)
62
+ * caseWhen().when('age', '>=', 18, 'adult').else('minor').as('ageGroup');
63
+ *
64
+ * // Simple CASE (CASE expr WHEN val THEN result ... END)
65
+ * caseOf(col('status'))
66
+ * .when('active', 1)
67
+ * .when('inactive', 0)
68
+ * .else(null)
69
+ * .as('statusFlag');
70
+ *
71
+ * // Nested CASE
72
+ * caseWhen()
73
+ * .when({ age: { [Op.gte]: 65 } }, 'senior')
74
+ * .else(caseWhen().when({ age: { [Op.gte]: 18 } }, 'adult').else('minor'))
75
+ * .as('category');
76
+ * ```
77
+ */
78
+ import { type FnExpression, type ColExpression, type LiteralExpression, type OperatorSymbol } from '../../operators';
79
+ /**
80
+ * Acceptable "value" arguments for THEN/ELSE results and simple-CASE
81
+ * WHEN-values: plain strings/numbers (escaped as SQL literals), `null`
82
+ * (rendered as SQL NULL), typed expressions (`col()`, `fn()`, `literal()`),
83
+ * or a nested CASE builder (`CaseBuilder`/`SimpleCaseBuilder`) so CASE
84
+ * expressions can be composed inside one another.
85
+ */
86
+ export type CaseValue = string | number | boolean | ColExpression | FnExpression | LiteralExpression | {
87
+ $literal: string;
88
+ } | CaseBuilder | SimpleCaseBuilder | null;
89
+ /**
90
+ * A condition accepted by `CaseBuilder.when()`. Uses the same shape as
91
+ * `where:` clause condition objects elsewhere in this ORM, e.g.:
92
+ * { age: { [Op.gte]: 18 } }
93
+ * { [Op.and]: [...] } / { $and: [...] }
94
+ * { status: 'active' } (implicit equality)
95
+ */
96
+ export type CaseCondition = Record<string | symbol, any>;
97
+ /**
98
+ * Fluent builder for a "searched" CASE expression:
99
+ * CASE WHEN cond1 THEN result1 WHEN cond2 THEN result2 ... ELSE else END
100
+ *
101
+ * Build with `caseWhen()`. Terminate with `.as(alias)` (for use directly in
102
+ * an `attributes: [...]` array) or `.toSQL()` / `.toLiteral()`.
103
+ */
104
+ export declare class CaseBuilder {
105
+ private clauses;
106
+ private elseSql;
107
+ private hasElse;
108
+ /**
109
+ * Add a `WHEN <condition> THEN <thenValue>` branch. Repeatable — call
110
+ * multiple times to add multiple branches, evaluated in order.
111
+ *
112
+ * Two call forms are supported:
113
+ * - `.when(conditionObject, thenValue)` — condition object using the
114
+ * same shape as `where:` clauses (`{ age: { [Op.gte]: 18 } }`, nested
115
+ * `Op.and`/`Op.or`, etc.)
116
+ * - `.when(column, operator, value, thenValue)` — ergonomic shorthand
117
+ * for a single comparison (mirrors `Op.where(col, op, value)`).
118
+ */
119
+ when(condition: CaseCondition, thenValue: CaseValue): this;
120
+ when(column: string, operator: string | OperatorSymbol, value: unknown, thenValue: CaseValue): this;
121
+ /** Set the `ELSE <value>` branch. Optional — omitting it yields an implicit SQL NULL. */
122
+ else(value: CaseValue): this;
123
+ /** Render the `CASE WHEN ... END` SQL fragment (no alias). */
124
+ toSQL(): string;
125
+ /**
126
+ * Terminal call: returns an `[expr, alias]` tuple compatible with the
127
+ * existing `attributes: [...]` pattern (see `attributeToSql()` in
128
+ * `sql-compiler.ts`, which already knows how to render
129
+ * `[LiteralExpression, alias]` tuples without any core changes).
130
+ */
131
+ as(alias: string): [LiteralExpression, string];
132
+ /** Use the builder directly wherever a raw SQL literal expression is expected. */
133
+ toLiteral(): LiteralExpression;
134
+ }
135
+ /**
136
+ * Fluent builder for a "simple" CASE expression:
137
+ * CASE expr WHEN val1 THEN result1 WHEN val2 THEN result2 ... ELSE else END
138
+ *
139
+ * Build with `caseOf(expr)`. Terminate with `.as(alias)` or `.toSQL()` /
140
+ * `.toLiteral()`.
141
+ */
142
+ export declare class SimpleCaseBuilder {
143
+ private readonly exprSql;
144
+ private clauses;
145
+ private elseSql;
146
+ private hasElse;
147
+ constructor(expr: CaseValue | string);
148
+ /**
149
+ * Add a `WHEN <value> THEN <result>` branch. Repeatable — call multiple
150
+ * times to add multiple branches, evaluated in order.
151
+ */
152
+ when(value: CaseValue, result: CaseValue): this;
153
+ /** Set the `ELSE <value>` branch. Optional — omitting it yields an implicit SQL NULL. */
154
+ else(value: CaseValue): this;
155
+ /** Render the `CASE expr WHEN ... END` SQL fragment (no alias). */
156
+ toSQL(): string;
157
+ /**
158
+ * Terminal call: returns an `[expr, alias]` tuple compatible with the
159
+ * existing `attributes: [...]` pattern.
160
+ */
161
+ as(alias: string): [LiteralExpression, string];
162
+ /** Use the builder directly wherever a raw SQL literal expression is expected. */
163
+ toLiteral(): LiteralExpression;
164
+ }
165
+ /**
166
+ * Start a "searched" CASE expression:
167
+ * CASE WHEN cond1 THEN result1 [WHEN cond2 THEN result2 ...] [ELSE else] END
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * caseWhen()
172
+ * .when({ age: { [Op.gte]: 18 } }, 'adult')
173
+ * .else('minor')
174
+ * .as('ageGroup')
175
+ * ```
176
+ */
177
+ export declare function caseWhen(): CaseBuilder;
178
+ /**
179
+ * Start a "simple" CASE expression:
180
+ * CASE expr WHEN val1 THEN result1 [WHEN val2 THEN result2 ...] [ELSE else] END
181
+ *
182
+ * @param expr - The expression being compared. A plain string is treated as
183
+ * a column name (identifier-escaped); pass `col('name')`, `fn(...)`, or
184
+ * `literal(...)` for other expression types.
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * caseOf('status')
189
+ * .when('active', 1)
190
+ * .when('inactive', 0)
191
+ * .else(null)
192
+ * .as('statusFlag')
193
+ * ```
194
+ */
195
+ export declare function caseOf(expr: CaseValue | string): SimpleCaseBuilder;