ts-prorm-orm 1.1.0 → 1.2.0

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 +83 -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 +711 -0
  239. package/dist/index.js +19 -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,215 @@
1
+ /**
2
+ * Typed math-function builder API.
3
+ *
4
+ * Provides typed, autocomplete-friendly builders for common SQL math
5
+ * functions (`ROUND`, `CEIL`/`CEILING`, `FLOOR`, `POWER`, `MOD`, random
6
+ * number generation, `GREATEST`/`LEAST`, `TRUNC`/`TRUNCATE`, ...) across all
7
+ * 11 supported dialects, so callers never need to hand-write raw,
8
+ * dialect-specific SQL for these.
9
+ *
10
+ * This module is intentionally self-contained: it does not add any new
11
+ * dispatch branches to the shared SQL compiler. Every builder resolves
12
+ * directly to a final, dialect-correct SQL fragment string, which is then
13
+ * wrapped with the existing `literal()` helper from `src/operators.ts` so it
14
+ * slots into `attributes: [...]`, `where`, etc. exactly the way `fn()`/
15
+ * `col()`/`cast()` do today.
16
+ *
17
+ * Dialect quirks verified while building this (do not assume symmetry with
18
+ * Postgres/MySQL):
19
+ *
20
+ * - `RANDOM()`/`RAND()` do NOT uniformly return a float in `[0, 1)`:
21
+ * - mysql / mariadb / mssql / db2: `RAND()` -> float in [0, 1).
22
+ * - postgres / cockroachdb / redshift: `RANDOM()` -> float in [0, 1).
23
+ * - sqlite: `RANDOM()` returns a *signed 64-bit integer*
24
+ * (-2^63 .. 2^63-1), NOT a [0,1) float. It must be normalized.
25
+ * - snowflake: `RANDOM()` returns a random *64-bit integer* as well
26
+ * (not [0,1)); the documented way to get a uniform float is
27
+ * `UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`.
28
+ * - oracle: no `RANDOM()`/`RAND()` at all -- must use
29
+ * `DBMS_RANDOM.VALUE`.
30
+ * - clickhouse: `rand()` returns a `UInt32` (0 .. 2^32-1), NOT [0,1).
31
+ * The [0,1) equivalent is `randCanonical()`.
32
+ *
33
+ * - `CEIL` vs `CEILING`: T-SQL (mssql) has no `CEIL` function at all --
34
+ * only `CEILING`. All other dialects here accept `CEIL`.
35
+ *
36
+ * - `GREATEST`/`LEAST`: not supported natively before SQL Server 2022, so
37
+ * mssql gets a portable nested-`CASE` fallback here (works on every
38
+ * supported SQL Server version, not just 2022+). sqlite has no
39
+ * `GREATEST`/`LEAST` keywords either, but its scalar `MAX`/`MIN` (called
40
+ * with 2+ arguments) behave exactly like `GREATEST`/`LEAST`, so that is
41
+ * used instead.
42
+ *
43
+ * - `MOD`: mssql has no `MOD()` function -- only the `%` operator.
44
+ * clickhouse's function is named `modulo`, not `mod`.
45
+ *
46
+ * - `TRUNCATE`/`TRUNC`: MySQL/MariaDB use `TRUNCATE(value, decimals)`;
47
+ * Oracle/Postgres/CockroachDB/Redshift/DB2/Snowflake use
48
+ * `TRUNC(value, decimals)`; mssql has neither -- truncation is done via
49
+ * `ROUND(value, decimals, 1)` (the undocumented-looking-but-real third
50
+ * "truncate instead of round" argument of T-SQL's `ROUND`); sqlite's
51
+ * `trunc()` math-extension function only takes a single argument (no
52
+ * decimals), so a `TRUNC(value * 10^n) / 10^n` fallback is used when
53
+ * `decimals` is supplied.
54
+ *
55
+ * - ClickHouse function names are matched to ClickHouse's own lower-case
56
+ * documented spelling (`round`, `floor`, `ceil`, `abs`, `sign`, `pow`,
57
+ * `modulo`, `trunc`, `greatest`, `least`, `rand`, `randCanonical`) rather
58
+ * than upper-cased ANSI style, since not all of them have registered
59
+ * case-insensitive aliases.
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * import { round, power, random, greatest } from './query-builders/functions/math';
64
+ * import { col } from '../../operators';
65
+ *
66
+ * User.findAll({
67
+ * attributes: [
68
+ * [round('postgres', col('price'), 2), 'roundedPrice'],
69
+ * [power('postgres', col('base'), 2), 'squared'],
70
+ * [random('postgres'), 'rnd'],
71
+ * [greatest('mssql', col('a'), col('b'), 10), 'best'],
72
+ * ],
73
+ * });
74
+ * ```
75
+ */
76
+ import { type FnExpression, type ColExpression, type LiteralExpression } from '../../operators';
77
+ import type { Dialect } from '../../types/index';
78
+ /**
79
+ * Acceptable argument types for math-function builders: plain numbers/
80
+ * strings (treated as literal SQL values), or other typed expressions
81
+ * (`col()`, `fn()`, `literal()`).
82
+ */
83
+ export type SqlExpr = string | number | ColExpression | FnExpression | LiteralExpression | {
84
+ $literal: string;
85
+ };
86
+ /**
87
+ * `ROUND(value[, decimals])`
88
+ *
89
+ * ANSI-consistent across all 11 dialects: MySQL, MariaDB, Postgres, MSSQL,
90
+ * Oracle, SQLite (math-functions extension, 3.35+), CockroachDB, Redshift,
91
+ * DB2, Snowflake, and ClickHouse all accept an optional second `decimals`
92
+ * argument with the same semantics.
93
+ */
94
+ export declare function round(dialect: Dialect, expr: SqlExpr, decimals?: number): {
95
+ $literal: string;
96
+ };
97
+ /**
98
+ * `CEIL(value)` / `CEILING(value)`.
99
+ *
100
+ * mssql has no `CEIL` -- only `CEILING`. Every other dialect here accepts
101
+ * `CEIL` (ClickHouse spells it lower-case).
102
+ */
103
+ export declare function ceil(dialect: Dialect, expr: SqlExpr): {
104
+ $literal: string;
105
+ };
106
+ /**
107
+ * `FLOOR(value)`. Consistent naming across all 11 dialects.
108
+ */
109
+ export declare function floor(dialect: Dialect, expr: SqlExpr): {
110
+ $literal: string;
111
+ };
112
+ /**
113
+ * `POWER(base, exponent)`.
114
+ *
115
+ * Consistent across all 11 dialects (SQLite's math-functions extension
116
+ * registers both `pow` and `power` as synonyms; ClickHouse registers `pow`
117
+ * and `power` as synonyms too -- lower-cased here for ClickHouse).
118
+ */
119
+ export declare function power(dialect: Dialect, base: SqlExpr, exponent: SqlExpr): {
120
+ $literal: string;
121
+ };
122
+ /**
123
+ * `SQRT(value)`. Consistent naming across all 11 dialects.
124
+ */
125
+ export declare function sqrt(dialect: Dialect, expr: SqlExpr): {
126
+ $literal: string;
127
+ };
128
+ /**
129
+ * `ABS(value)`. Consistent naming across all 11 dialects.
130
+ */
131
+ export declare function abs(dialect: Dialect, expr: SqlExpr): {
132
+ $literal: string;
133
+ };
134
+ /**
135
+ * `SIGN(value)` -- returns -1/0/1.
136
+ *
137
+ * Every dialect here has a native `SIGN()` function EXCEPT sqlite, whose
138
+ * built-in math-functions extension does not include `sign` at all -- so a
139
+ * portable `CASE` expression is used for sqlite instead.
140
+ */
141
+ export declare function sign(dialect: Dialect, expr: SqlExpr): {
142
+ $literal: string;
143
+ };
144
+ /**
145
+ * `MOD(dividend, divisor)`.
146
+ *
147
+ * mssql has no `MOD()` function at all -- only the `%` operator, so mssql
148
+ * renders `(dividend % divisor)`. ClickHouse's function is named `modulo`
149
+ * (not `mod`). Every other dialect here has a native `MOD(a, b)` function.
150
+ */
151
+ export declare function mod(dialect: Dialect, dividend: SqlExpr, divisor: SqlExpr): {
152
+ $literal: string;
153
+ };
154
+ /**
155
+ * Random value in `[0, 1)`, using the REAL per-dialect function/expression
156
+ * (deliberately not assumed symmetric):
157
+ *
158
+ * - mysql / mariadb: `RAND()`
159
+ * - postgres / cockroachdb / redshift: `RANDOM()`
160
+ * - mssql: `RAND()`
161
+ * - oracle: `DBMS_RANDOM.VALUE` (no `RAND()`/`RANDOM()` exists in Oracle)
162
+ * - db2: `RAND()`
163
+ * - sqlite: `RANDOM()` returns a signed 64-bit *integer*, not a [0,1)
164
+ * float -- normalized here via `(0.5 + RANDOM() / 18446744073709551616.0)`.
165
+ * - snowflake: `RANDOM()` also returns a 64-bit integer, not [0,1) --
166
+ * normalized here via `UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`, which is
167
+ * Snowflake's documented way to get a uniform float.
168
+ * - clickhouse: `rand()` returns a `UInt32`, not [0,1) -- `randCanonical()`
169
+ * is ClickHouse's documented [0,1) float generator.
170
+ */
171
+ export declare function random(dialect: Dialect): {
172
+ $literal: string;
173
+ };
174
+ /**
175
+ * `GREATEST(v1, v2, ...)`.
176
+ *
177
+ * - mssql: no native `GREATEST` before SQL Server 2022 -- a portable nested
178
+ * `CASE` expression is used so it works on every supported SQL Server
179
+ * version (not just 2022+).
180
+ * - sqlite: no `GREATEST` keyword -- but scalar `MAX(v1, v2, ...)` (called
181
+ * with 2+ args) behaves exactly like `GREATEST`, so that is used instead.
182
+ * - every other dialect here has native `GREATEST(...)`.
183
+ */
184
+ export declare function greatest(dialect: Dialect, ...values: SqlExpr[]): {
185
+ $literal: string;
186
+ };
187
+ /**
188
+ * `LEAST(v1, v2, ...)`.
189
+ *
190
+ * Same quirks as {@link greatest}: mssql falls back to a nested `CASE`
191
+ * expression, sqlite uses scalar `MIN(v1, v2, ...)`.
192
+ */
193
+ export declare function least(dialect: Dialect, ...values: SqlExpr[]): {
194
+ $literal: string;
195
+ };
196
+ /**
197
+ * Truncate a value toward zero (no rounding), optionally to `decimals`
198
+ * decimal places.
199
+ *
200
+ * - mysql / mariadb: `TRUNCATE(value, decimals)` (function name is
201
+ * `TRUNCATE`, not `TRUNC`; decimals defaults to 0 when omitted).
202
+ * - oracle / postgres / cockroachdb / redshift / db2 / snowflake:
203
+ * `TRUNC(value, decimals)`.
204
+ * - mssql: no `TRUNC`/`TRUNCATE` function at all -- uses the (real, if
205
+ * obscure) third argument of T-SQL's `ROUND(value, decimals, function)`,
206
+ * where a non-zero third argument truncates instead of rounding:
207
+ * `ROUND(value, decimals, 1)`.
208
+ * - sqlite: the math-functions extension's `trunc(X)` only accepts a single
209
+ * argument (no decimals support) -- when `decimals` is supplied, a
210
+ * `TRUNC(value * 10^n) / 10^n` fallback is used.
211
+ * - clickhouse: `trunc(value, decimals)` (lower-case, 2-arg form supported).
212
+ */
213
+ export declare function truncate(dialect: Dialect, expr: SqlExpr, decimals?: number): {
214
+ $literal: string;
215
+ };
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Typed string-function builders.
3
+ *
4
+ * These helpers produce dialect-correct SQL fragments for common string
5
+ * operations (CONCAT, SUBSTRING, TRIM, padding, etc.) so callers never need
6
+ * to hand-write raw SQL for the handful of functions that genuinely differ
7
+ * between dialects (Postgres `||` vs `CONCAT()`, Oracle `SUBSTR` vs the
8
+ * standard `SUBSTRING`, MSSQL `LEN` vs `LENGTH`/`CHAR_LENGTH`, etc.)
9
+ *
10
+ * This module is intentionally self-contained: it does not modify
11
+ * `src/operators.ts` or `src/query-builders/sql-compiler.ts`. It only reads
12
+ * the `literal`, `ColExpression`, `FnExpression`, and `LiteralExpression`
13
+ * primitives from `../../operators` and returns plain `{ $literal: string }`
14
+ * values (via `literal()`) that can be dropped into `attributes`, `where`,
15
+ * etc. exactly like any other literal expression.
16
+ */
17
+ import { type ColExpression, type FnExpression, type LiteralExpression } from '../../operators';
18
+ import type { Dialect } from '../../types/index';
19
+ /**
20
+ * Column-like argument accepted by the string functions in this module.
21
+ *
22
+ * - A plain `string` is treated as a STRING LITERAL VALUE (it will be quoted
23
+ * and escaped, e.g. `'hello'`), NOT as a column name. To reference a
24
+ * column, wrap it with `col('columnName')`.
25
+ * - `ColExpression` (from `col()`), `FnExpression` (from `fn()`), and
26
+ * `LiteralExpression` (from `literalExpr()`) are rendered as SQL
27
+ * expressions/identifiers, not quoted as literal text.
28
+ */
29
+ export type SqlExpr = string | ColExpression | FnExpression | LiteralExpression;
30
+ /**
31
+ * String concatenation.
32
+ *
33
+ * - MySQL, MariaDB, MSSQL, Snowflake, ClickHouse: use the variadic
34
+ * `CONCAT(a, b, c, ...)` function (all support 2+ arguments).
35
+ * - Postgres, CockroachDB, Redshift, SQLite, Oracle, DB2: use the `||`
36
+ * operator. These dialects' `CONCAT()` function (where it exists at all)
37
+ * is limited to exactly 2 arguments (Oracle, DB2), so `||` is used
38
+ * uniformly for correctness with any number of parts. Postgres/CockroachDB/
39
+ * SQLite treat `||` as the idiomatic concatenation operator.
40
+ *
41
+ * @param parts - Column-like arguments (columns via `col()`, nested
42
+ * expressions via `fn()`, or literal string values as plain strings).
43
+ */
44
+ export declare function concat(dialect: Dialect, ...parts: SqlExpr[]): LiteralExpression & {
45
+ $literal: string;
46
+ };
47
+ /**
48
+ * Extract a substring.
49
+ *
50
+ * - Oracle, DB2, SQLite: use `SUBSTR(expr, start, length)`. SQLite has no
51
+ * built-in `SUBSTRING` function (only `substr`); Oracle/DB2 use `SUBSTR`
52
+ * as their canonical name (both also happen to accept the same argument
53
+ * order as the standard `SUBSTRING(expr, start, length)` form).
54
+ * - MSSQL: `SUBSTRING(expr, start, length)`, but MSSQL requires the length
55
+ * argument. When `length` is omitted, `LEN(expr)` is used as a safe upper
56
+ * bound so the result runs to the end of the string.
57
+ * - MySQL, MariaDB, Postgres, CockroachDB, Redshift, Snowflake, ClickHouse:
58
+ * `SUBSTRING(expr, start, length)` comma-argument form, length optional.
59
+ *
60
+ * @param expr - The column/expression to extract from.
61
+ * @param start - 1-based start position (SQL substring indices are 1-based).
62
+ * @param length - Optional number of characters to extract.
63
+ */
64
+ export declare function substring(dialect: Dialect, expr: SqlExpr, start: number, length?: number): LiteralExpression & {
65
+ $literal: string;
66
+ };
67
+ export interface TrimOptions {
68
+ /** Which side(s) to trim. Defaults to 'both'. */
69
+ side?: 'both' | 'leading' | 'trailing';
70
+ /** Characters to trim. Defaults to whitespace. */
71
+ chars?: string;
72
+ }
73
+ /**
74
+ * Trim whitespace (or specific characters) from a string.
75
+ *
76
+ * - Postgres, CockroachDB, Redshift, Oracle, DB2, Snowflake, MySQL, MariaDB,
77
+ * ClickHouse: support the standard
78
+ * `TRIM([BOTH|LEADING|TRAILING] [chars FROM] expr)` syntax.
79
+ * - SQLite: has no `[BOTH|LEADING|TRAILING] FROM` syntax; instead uses
80
+ * `trim(expr[, chars])` / `ltrim(expr[, chars])` / `rtrim(expr[, chars])`.
81
+ * - MSSQL: `TRIM` (2017+) only trims both sides; for one-sided trimming we
82
+ * fall back to `LTRIM`/`RTRIM`. Native `LTRIM`/`RTRIM` in MSSQL only
83
+ * support a `chars` argument starting with SQL Server 2022, so when
84
+ * `chars` is supplied on an older-compatible codepath it is still passed
85
+ * through (SQL Server will error at runtime on versions that don't
86
+ * support it — this is a documented MSSQL version limitation, not a
87
+ * limitation of this helper).
88
+ */
89
+ export declare function trim(dialect: Dialect, expr: SqlExpr, options?: TrimOptions): LiteralExpression & {
90
+ $literal: string;
91
+ };
92
+ /** Trim from the left only. Equivalent to `trim(dialect, expr, { side: 'leading' })`. */
93
+ export declare function ltrim(dialect: Dialect, expr: SqlExpr, chars?: string): LiteralExpression & {
94
+ $literal: string;
95
+ };
96
+ /** Trim from the right only. Equivalent to `trim(dialect, expr, { side: 'trailing' })`. */
97
+ export declare function rtrim(dialect: Dialect, expr: SqlExpr, chars?: string): LiteralExpression & {
98
+ $literal: string;
99
+ };
100
+ /**
101
+ * Uppercase a string. Identical (`UPPER(expr)`) across all 11 dialects.
102
+ */
103
+ export declare function upper(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
104
+ $literal: string;
105
+ };
106
+ /**
107
+ * Lowercase a string. Identical (`LOWER(expr)`) across all 11 dialects.
108
+ */
109
+ export declare function lower(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
110
+ $literal: string;
111
+ };
112
+ /**
113
+ * Get the character length of a string.
114
+ *
115
+ * - MySQL, MariaDB, Postgres, CockroachDB, DB2, Snowflake: use
116
+ * `CHAR_LENGTH(expr)`. This is deliberately chosen over `LENGTH()` on
117
+ * MySQL/MariaDB because `LENGTH()` there counts BYTES, which is wrong for
118
+ * multi-byte (e.g. UTF-8) text; `CHAR_LENGTH()` always counts characters.
119
+ * - MSSQL: has no `CHAR_LENGTH`/`LENGTH` function at all; uses `LEN(expr)`
120
+ * (already character-counting).
121
+ * - Redshift: uses `LEN(expr)`, its documented/idiomatic string-length
122
+ * function (Redshift's SQL dialect favors `LEN` even though it is
123
+ * Postgres-derived).
124
+ * - Oracle: uses `LENGTH(expr)` (Oracle has no `CHAR_LENGTH` keyword;
125
+ * `LENGTH` already counts characters for CHAR/VARCHAR2 data).
126
+ * - SQLite: uses `length(expr)`, which for TEXT values already counts
127
+ * characters, not bytes (SQLite has no separate `CHAR_LENGTH`).
128
+ * - ClickHouse: `length()` counts BYTES. For character-correct behavior
129
+ * with multi-byte text, `lengthUTF8(expr)` is used instead.
130
+ */
131
+ export declare function length(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
132
+ $literal: string;
133
+ };
134
+ /**
135
+ * Replace all occurrences of a substring.
136
+ * `REPLACE(expr, search, replacement)` is identical across all 11 dialects.
137
+ */
138
+ export declare function replace(dialect: Dialect, expr: SqlExpr, search: string, replacement: string): LiteralExpression & {
139
+ $literal: string;
140
+ };
141
+ /**
142
+ * Left-pad a string to a target length.
143
+ *
144
+ * - MySQL, MariaDB, Postgres, CockroachDB, Redshift, Oracle, Snowflake:
145
+ * native `LPAD(expr, length, pad)`.
146
+ * - ClickHouse: native `leftPad(expr, length, pad)`.
147
+ * - MSSQL: has no `LPAD`. Workaround using `RIGHT(REPLICATE(pad, length) +
148
+ * expr, length)` — replicate the pad string enough times to guarantee at
149
+ * least `length` characters, prepend it to `expr`, then take the
150
+ * rightmost `length` characters (matches LPAD's truncate-on-overflow
151
+ * semantics).
152
+ * - DB2: has no `LPAD` in Db2 for LUW. Workaround using a `CASE` expression:
153
+ * if the string is already >= target length, return it unchanged;
154
+ * otherwise prepend enough of the repeated pad string (via `REPEAT` +
155
+ * `SUBSTR`) to reach the target length.
156
+ * - SQLite: throws. SQLite has neither `LPAD` nor a `REPEAT` function, and
157
+ * there is no safe single-expression workaround without a recursive CTE,
158
+ * so this is not something a scalar SQL fragment can express correctly.
159
+ */
160
+ export declare function lpad(dialect: Dialect, expr: SqlExpr, targetLength: number, padString?: string): LiteralExpression & {
161
+ $literal: string;
162
+ };
163
+ /**
164
+ * Right-pad a string to a target length. See {@link lpad} for per-dialect
165
+ * notes; the same dialects that lack `LPAD` also lack `RPAD`.
166
+ */
167
+ export declare function rpad(dialect: Dialect, expr: SqlExpr, targetLength: number, padString?: string): LiteralExpression & {
168
+ $literal: string;
169
+ };
170
+ /**
171
+ * Split a string on a delimiter, returning an array/collection expression
172
+ * where the dialect has a real mechanism for it.
173
+ *
174
+ * - Postgres, CockroachDB: `STRING_TO_ARRAY(expr, delimiter)` -> `text[]`.
175
+ * - Redshift: `SPLIT_TO_ARRAY(expr, delimiter)` -> `SUPER` array (Redshift's
176
+ * SUPER-type based array support).
177
+ * - Snowflake: `SPLIT(expr, delimiter)` -> `ARRAY` (variant).
178
+ * - ClickHouse: `splitByString(delimiter, expr)` -> `Array(String)`. Note
179
+ * the argument order is reversed compared to the others (separator comes
180
+ * first in ClickHouse).
181
+ * - MySQL, MariaDB, MSSQL, Oracle, DB2, SQLite: throw. None of these have a
182
+ * clean way to produce an array/collection from a scalar expression:
183
+ * - MySQL/MariaDB have no array type at all (only `SUBSTRING_INDEX` for
184
+ * extracting a single part by position, which is a different contract).
185
+ * - MSSQL's `STRING_SPLIT` is a table-valued function usable only in a
186
+ * `FROM` clause, not as a scalar expression.
187
+ * - Oracle/DB2/SQLite have no built-in split-to-array function; producing
188
+ * one requires `CONNECT BY`/recursive CTE tricks that cannot be
189
+ * expressed as a single SQL fragment.
190
+ */
191
+ export declare function split(dialect: Dialect, expr: SqlExpr, delimiter: string): LiteralExpression & {
192
+ $literal: string;
193
+ };
194
+ /**
195
+ * Repeat a string N times.
196
+ *
197
+ * - MySQL, MariaDB, Postgres, CockroachDB, Redshift, DB2, Snowflake,
198
+ * ClickHouse: native `REPEAT(expr, n)` (ClickHouse: `repeat(expr, n)`).
199
+ * - MSSQL: has no `REPEAT`; uses `REPLICATE(expr, n)`, which is exactly
200
+ * equivalent.
201
+ * - Oracle: has no `REPEAT`. Workaround: `RPAD(expr, LENGTH(expr) * n,
202
+ * expr)` — `RPAD`'s first argument already contributes one copy of
203
+ * `expr`, and padding with `expr` itself out to `length(expr) * n`
204
+ * characters fills in the remaining `n - 1` copies, producing `expr`
205
+ * repeated exactly `n` times (requires `expr` to be non-empty, since
206
+ * Oracle treats `''` as `NULL`).
207
+ * - SQLite: throws. SQLite has no `REPEAT` function and no safe
208
+ * single-expression workaround (the zeroblob/hex tricks that exist are
209
+ * fragile and only work for single-character pad values).
210
+ */
211
+ export declare function repeat(dialect: Dialect, expr: SqlExpr, n: number): LiteralExpression & {
212
+ $literal: string;
213
+ };
214
+ /**
215
+ * Reverse a string.
216
+ *
217
+ * - MySQL, MariaDB, MSSQL, Postgres (9.1+), CockroachDB, Snowflake: native
218
+ * `REVERSE(expr)`.
219
+ * - ClickHouse: `reverse()` reverses BYTES, not characters, which breaks
220
+ * multi-byte text; `reverseUTF8(expr)` is used instead for correctness.
221
+ * - Oracle: no built-in `REVERSE` function for strings; there is no safe
222
+ * single-expression workaround (would require a hierarchical
223
+ * `CONNECT BY LEVEL` query), so this throws.
224
+ * - DB2: no built-in `REVERSE` scalar function in Db2 for LUW; throws for
225
+ * the same reason as Oracle.
226
+ * - Redshift: not present in Redshift's documented string-function list
227
+ * (Redshift's SQL dialect is derived from an old Postgres release that
228
+ * predates Postgres's `REVERSE`); throws rather than risk incorrect SQL.
229
+ * - SQLite: no built-in `REVERSE` function; throws.
230
+ */
231
+ export declare function reverse(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
232
+ $literal: string;
233
+ };
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Typed window-function builder API.
3
+ *
4
+ * Provides a fluent, chainable builder for SQL window functions
5
+ * (`OVER (PARTITION BY ... ORDER BY ... ROWS/RANGE BETWEEN ...)`) so callers
6
+ * never need to hand-write raw SQL strings for `ROW_NUMBER()`, `RANK()`,
7
+ * `LAG()`, `LEAD()`, and friends.
8
+ *
9
+ * This module is intentionally self-contained: it does not add any new
10
+ * dispatch branches to the shared SQL compiler. Every builder resolves
11
+ * directly to a final SQL fragment string, which is then wrapped with the
12
+ * existing `literalExpr()`/`literal()` helpers from `src/operators.ts` so it
13
+ * slots into `attributes: [...]` arrays exactly the way `fn()`/`col()`/
14
+ * `cast()` do today (see `attributeToSql()` / `processAttribute()` in
15
+ * `src/query-builders/sql-compiler.ts`, which both already know how to
16
+ * render `{ __type: 'literal', sql }` and `[expr, alias]` tuples).
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { rowNumber, rank, lag, sumOver } from './query-builders/functions/window';
21
+ * import { col } from '../../operators';
22
+ *
23
+ * User.findAll({
24
+ * attributes: [
25
+ * 'department',
26
+ * 'salary',
27
+ * rowNumber().partitionBy('department').orderBy('salary', 'DESC').as('rn'),
28
+ * rank().partitionBy(col('department')).orderBy(col('salary'), 'DESC').as('rnk'),
29
+ * lag(col('salary'), 1).partitionBy('department').orderBy('hireDate').as('prevSalary'),
30
+ * sumOver(col('salary'))
31
+ * .partitionBy('department')
32
+ * .orderBy('hireDate')
33
+ * .rows({ start: 'unboundedPreceding', end: 'currentRow' })
34
+ * .as('runningTotal'),
35
+ * ],
36
+ * });
37
+ * ```
38
+ */
39
+ import { type FnExpression, type ColExpression, type LiteralExpression } from '../../operators';
40
+ import { SortDirection } from '../../types';
41
+ /**
42
+ * Dialects that support ANSI-standard `OVER (...)` window function syntax.
43
+ * All of these are ANSI SQL:2003 window-function compatible in their modern
44
+ * versions:
45
+ * - mysql (8.0+), mariadb (10.2+): full support
46
+ * - postgres, cockroachdb, redshift: full support (Redshift/CockroachDB are
47
+ * Postgres-derived and share the same syntax)
48
+ * - mssql: full support since SQL Server 2012 (frame clauses since 2012)
49
+ * - oracle: full support (analytic functions), including RESPECT/IGNORE NULLS
50
+ * - sqlite: full support since 3.25.0 (2018)
51
+ * - db2: full support (OLAP specification)
52
+ * - snowflake: full support
53
+ * - clickhouse: full support since 21.3+ (contrary to older assumptions,
54
+ * ClickHouse does implement standard `OVER (...)` window functions, it's
55
+ * just historically been a later addition than in other engines)
56
+ */
57
+ export type WindowDialect = 'mysql' | 'mariadb' | 'postgres' | 'mssql' | 'oracle' | 'sqlite' | 'cockroachdb' | 'redshift' | 'db2' | 'snowflake' | 'clickhouse';
58
+ /**
59
+ * Sort direction for ORDER BY within a window definition.
60
+ *
61
+ * Accepts the shared {@link SortDirection} enum (re-exported from `../../types`)
62
+ * in addition to the raw `'ASC'` / `'DESC'` string literals, which remain fully
63
+ * supported for backward compatibility.
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * // Using raw string literals (still supported)
68
+ * rowNumber().partitionBy('department').orderBy('salary', 'DESC')
69
+ *
70
+ * // Using the SortDirection enum
71
+ * import { SortDirection } from 'prorm';
72
+ * rowNumber().partitionBy('department').orderBy('salary', SortDirection.DESC)
73
+ * ```
74
+ */
75
+ export type WindowOrderDirection = SortDirection | 'ASC' | 'DESC';
76
+ /**
77
+ * `NULLS FIRST` / `NULLS LAST` modifier, supported by most (not all) dialects.
78
+ *
79
+ * Companion enum {@link NullsOrder} is available for the `'FIRST' | 'LAST'`
80
+ * string-literal union below; raw string literals continue to work unchanged.
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * // Using raw string literals (still supported)
85
+ * rowNumber().orderBy('salary', 'DESC', 'LAST')
86
+ *
87
+ * // Using the NullsOrder enum
88
+ * import { NullsOrder } from './query-builders/functions/window';
89
+ * rowNumber().orderBy('salary', 'DESC', NullsOrder.LAST)
90
+ * ```
91
+ */
92
+ export declare enum NullsOrder {
93
+ FIRST = "FIRST",
94
+ LAST = "LAST"
95
+ }
96
+ export type WindowNulls = NullsOrder | 'FIRST' | 'LAST';
97
+ /**
98
+ * A frame boundary for ROWS/RANGE clauses.
99
+ * - 'unboundedPreceding' -> UNBOUNDED PRECEDING
100
+ * - 'unboundedFollowing' -> UNBOUNDED FOLLOWING
101
+ * - 'currentRow' -> CURRENT ROW
102
+ * - { preceding: n } -> n PRECEDING
103
+ * - { following: n } -> n FOLLOWING
104
+ */
105
+ export type WindowFrameBoundary = 'unboundedPreceding' | 'unboundedFollowing' | 'currentRow' | {
106
+ preceding: number;
107
+ } | {
108
+ following: number;
109
+ };
110
+ /** A ROWS/RANGE frame clause: `BETWEEN start AND end`. */
111
+ export interface WindowFrame {
112
+ start: WindowFrameBoundary;
113
+ end?: WindowFrameBoundary;
114
+ }
115
+ /**
116
+ * Acceptable argument types for window function calls, PARTITION BY, and
117
+ * ORDER BY entries: plain column names (strings), other typed expressions
118
+ * (`col()`, `fn()`, `literal()`), or raw numbers (e.g. offsets/defaults).
119
+ */
120
+ export type WindowArg = string | number | ColExpression | FnExpression | LiteralExpression | {
121
+ $literal: string;
122
+ } | null | undefined;
123
+ /**
124
+ * A chainable builder that accumulates PARTITION BY / ORDER BY / frame
125
+ * clauses for a single window function call and renders the final
126
+ * `FN(args) OVER (...)` SQL fragment.
127
+ */
128
+ export declare class WindowFunctionBuilder {
129
+ private readonly fnName;
130
+ private readonly fnArgs;
131
+ private partitions;
132
+ private orders;
133
+ private frameMode?;
134
+ private frame?;
135
+ private dialect?;
136
+ constructor(fnName: string, fnArgs?: WindowArg[]);
137
+ /**
138
+ * Set (or narrow) the target dialect. Only matters for the rare cases
139
+ * where OVER-clause syntax genuinely diverges (all listed dialects use the
140
+ * same ANSI-standard OVER syntax today, so this is mostly a documented
141
+ * escape hatch for future dialect-specific tweaks).
142
+ */
143
+ forDialect(dialect: WindowDialect): this;
144
+ /** Add one or more PARTITION BY columns/expressions. Repeatable/additive. */
145
+ partitionBy(...cols: WindowArg[]): this;
146
+ /**
147
+ * Add an ORDER BY entry to the window definition. Call multiple times to
148
+ * order by multiple columns; each call appends one entry.
149
+ */
150
+ orderBy(expr: WindowArg, direction?: WindowOrderDirection, nulls?: WindowNulls): this;
151
+ /** Set a ROWS frame clause, e.g. `ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`. */
152
+ rows(frame: WindowFrame): this;
153
+ /** Set a RANGE frame clause, e.g. `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`. */
154
+ range(frame: WindowFrame): this;
155
+ /** Render the `FN(args) OVER (...)` SQL fragment (no alias). */
156
+ toSQL(): string;
157
+ /**
158
+ * Terminal call: returns an `[expr, alias]` tuple compatible with the
159
+ * existing `attributes: [...]` pattern (see `attributeToSql()` /
160
+ * `attributeToSqlWithAlias()` in `sql-compiler.ts`, both of which already
161
+ * know how to render `[LiteralExpression, alias]` tuples without any core
162
+ * changes).
163
+ */
164
+ as(alias: string): [LiteralExpression, string];
165
+ /**
166
+ * Allow the builder to be used directly wherever a raw SQL literal is
167
+ * expected (e.g. passed straight into `literal()`-consuming positions)
168
+ * without requiring `.as(...)`.
169
+ */
170
+ toLiteral(): LiteralExpression;
171
+ }
172
+ /** `ROW_NUMBER() OVER (...)` */
173
+ export declare function rowNumber(): WindowFunctionBuilder;
174
+ /** `RANK() OVER (...)` */
175
+ export declare function rank(): WindowFunctionBuilder;
176
+ /** `DENSE_RANK() OVER (...)` */
177
+ export declare function denseRank(): WindowFunctionBuilder;
178
+ /** `PERCENT_RANK() OVER (...)` */
179
+ export declare function percentRank(): WindowFunctionBuilder;
180
+ /** `CUME_DIST() OVER (...)` */
181
+ export declare function cumeDist(): WindowFunctionBuilder;
182
+ /** `NTILE(buckets) OVER (...)` */
183
+ export declare function ntile(buckets: number): WindowFunctionBuilder;
184
+ /** `LAG(expr[, offset[, default]]) OVER (...)` */
185
+ export declare function lag(expr: WindowArg, offset?: number, defaultValue?: WindowArg): WindowFunctionBuilder;
186
+ /** `LEAD(expr[, offset[, default]]) OVER (...)` */
187
+ export declare function lead(expr: WindowArg, offset?: number, defaultValue?: WindowArg): WindowFunctionBuilder;
188
+ /** `FIRST_VALUE(expr) OVER (...)` */
189
+ export declare function firstValue(expr: WindowArg): WindowFunctionBuilder;
190
+ /** `LAST_VALUE(expr) OVER (...)` */
191
+ export declare function lastValue(expr: WindowArg): WindowFunctionBuilder;
192
+ /** `NTH_VALUE(expr, n) OVER (...)` */
193
+ export declare function nthValue(expr: WindowArg, n: number): WindowFunctionBuilder;
194
+ /** `SUM(expr) OVER (...)` */
195
+ export declare function sumOver(expr: WindowArg): WindowFunctionBuilder;
196
+ /** `AVG(expr) OVER (...)` */
197
+ export declare function avgOver(expr: WindowArg): WindowFunctionBuilder;
198
+ /** `COUNT(expr | *) OVER (...)` */
199
+ export declare function countOver(expr?: WindowArg): WindowFunctionBuilder;
200
+ /** `MIN(expr) OVER (...)` */
201
+ export declare function minOver(expr: WindowArg): WindowFunctionBuilder;
202
+ /** `MAX(expr) OVER (...)` */
203
+ export declare function maxOver(expr: WindowArg): WindowFunctionBuilder;
204
+ /**
205
+ * Generic escape hatch: build a window function call for any function name
206
+ * not covered by the named helpers above (e.g. dialect-specific analytic
207
+ * functions).
208
+ */
209
+ export declare function windowFn(fnName: string, ...args: WindowArg[]): WindowFunctionBuilder;