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,202 @@
1
+ /**
2
+ * Typed date/time function builder API.
3
+ *
4
+ * Date truncation, date arithmetic (add/subtract), date-difference, "current
5
+ * date/time" helpers, and best-effort date formatting differ WILDLY across
6
+ * the 11 SQL dialects this ORM supports (Postgres `DATE_TRUNC`, MySQL
7
+ * `DATE_ADD`/`DATEDIFF`, MSSQL `DATEADD`/`DATEDIFF`, Oracle `TRUNC`/
8
+ * `ADD_MONTHS`, SQLite `strftime`/`julianday`, etc). This module gives callers
9
+ * a single typed entry point per capability so they never have to hand-write
10
+ * dialect-specific SQL strings themselves.
11
+ *
12
+ * This module is intentionally self-contained, mirroring the approach taken
13
+ * in `src/query-builders/functions/window.ts`: it does NOT add any new
14
+ * dispatch branches to the shared SQL compiler (`src/query-builders/
15
+ * sql-compiler.ts`) or to `src/operators.ts`. Every function below computes
16
+ * a final, dialect-correct SQL fragment string directly and wraps it with the
17
+ * existing `literal()` helper from `src/operators.ts` so it slots into
18
+ * `attributes: [...]` / `where` clauses exactly the way `fn()`/`col()`/
19
+ * `cast()`/`extract()` do today.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { dateTrunc, dateAdd, dateDiff, now, formatDate } from './query-builders/functions/datetime';
24
+ * import { col } from '../../operators';
25
+ *
26
+ * User.findAll({
27
+ * attributes: [
28
+ * 'id',
29
+ * dateTrunc('postgres', 'month', col('createdAt')).as('signupMonth'),
30
+ * dateAdd('postgres', col('createdAt'), 30, 'day').as('trialEnds'),
31
+ * dateDiff('mysql', 'day', col('startDate'), col('endDate')).as('durationDays'),
32
+ * now('sqlite').as('rightNow'),
33
+ * formatDate('postgres', col('createdAt'), 'YYYY-MM-DD').as('createdAtStr'),
34
+ * ],
35
+ * });
36
+ * ```
37
+ */
38
+ import { type FnExpression, type ColExpression, type LiteralExpression } from '../../operators';
39
+ import type { Dialect } from '../../types/index';
40
+ /** Any value accepted where a date/time expression or column is expected. */
41
+ export type DateTimeArg = string | number | Date | ColExpression | FnExpression | LiteralExpression | {
42
+ $literal: string;
43
+ } | DateTimeExpression | null | undefined;
44
+ /**
45
+ * A wrapped, dialect-resolved SQL expression produced by the functions below.
46
+ * Renders through the same `{ $literal }` channel that `Op.literal()` /
47
+ * `literal()` already produce, so it can be used anywhere an attribute
48
+ * expression, WHERE value, or ORDER BY expression is accepted.
49
+ */
50
+ export interface DateTimeExpression {
51
+ __type: 'literal';
52
+ sql: string;
53
+ $literal: string;
54
+ /** Wrap this expression with an alias, returning an `[expr, alias]` tuple. */
55
+ as(alias: string): [DateTimeExpression, string];
56
+ }
57
+ export type DateTruncUnit = 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';
58
+ export type DateAddUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';
59
+ export type DateDiffUnit = 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';
60
+ /**
61
+ * Truncate a date/timestamp expression down to the start of the given unit
62
+ * boundary (year/quarter/month/week/day/hour/minute/second).
63
+ *
64
+ * Dialect notes:
65
+ * - postgres / cockroachdb / redshift: native `DATE_TRUNC('unit', expr)`.
66
+ * - mysql / mariadb: NO native DATE_TRUNC exists (verified) — built via
67
+ * `DATE_FORMAT`/string-concat + `STR_TO_DATE` workarounds.
68
+ * - mssql: uses `DATETRUNC(datepart, expr)`, added in SQL Server 2022. For
69
+ * older MSSQL versions there is no native equivalent; this targets modern
70
+ * SQL Server.
71
+ * - oracle: `TRUNC(expr, fmt)`. Oracle's TRUNC only truncates down to
72
+ * hour/minute ('HH24'/'MI'); truncating to 'second' is a no-op since DATE
73
+ * values already carry second precision, so `expr` is returned unchanged.
74
+ * - sqlite: no native function — built via `strftime()`/string-concat.
75
+ * - db2: no native DATE_TRUNC — built via `VARCHAR_FORMAT`/`TIMESTAMP_FORMAT`
76
+ * round-tripping (Db2's TO_CHAR/TO_DATE equivalents) plus `DAYOFWEEK()`
77
+ * for week truncation.
78
+ * - snowflake: native `DATE_TRUNC('unit', expr)`.
79
+ * - clickhouse: dedicated `toStartOfYear`/`toStartOfQuarter`/`toStartOfMonth`/
80
+ * `toStartOfWeek`/`toStartOfDay`/`toStartOfHour`/`toStartOfMinute`/
81
+ * `toStartOfSecond` functions (genuinely different function-per-unit API,
82
+ * not a single parameterized function).
83
+ */
84
+ export declare function dateTrunc(dialect: Dialect, unit: DateTruncUnit, expr: DateTimeArg): DateTimeExpression;
85
+ /**
86
+ * Add `amount` units of time to a date/timestamp expression.
87
+ * See dialect notes on {@link dateTrunc} / module doc for the general
88
+ * per-dialect divergence rationale; per-function notes:
89
+ * - postgres/cockroachdb: `expr + INTERVAL 'n unit'`.
90
+ * - redshift: `DATEADD(unit, n, expr)` (SQL-Server-style function, NOT interval
91
+ * arithmetic, despite being Postgres-derived).
92
+ * - mysql/mariadb: `DATE_ADD(expr, INTERVAL n UNIT)`.
93
+ * - mssql/snowflake: `DATEADD(unit, n, expr)`.
94
+ * - oracle: day-level uses plain `+`/`-` arithmetic (Oracle DATE math is in
95
+ * days); month/year use `ADD_MONTHS`; hour/minute/second are expressed as
96
+ * fractional-day arithmetic.
97
+ * - sqlite: `datetime(expr, '+n units')`.
98
+ * - db2: labeled-duration arithmetic, e.g. `expr + n DAYS`.
99
+ * - clickhouse: ANSI `expr + INTERVAL n UNIT`.
100
+ */
101
+ export declare function dateAdd(dialect: Dialect, expr: DateTimeArg, amount: number, unit: DateAddUnit): DateTimeExpression;
102
+ /**
103
+ * Subtract `amount` units of time from a date/timestamp expression.
104
+ * Equivalent to `dateAdd(dialect, expr, -amount, unit)` — see {@link dateAdd}
105
+ * for per-dialect SQL notes.
106
+ */
107
+ export declare function dateSub(dialect: Dialect, expr: DateTimeArg, amount: number, unit: DateAddUnit): DateTimeExpression;
108
+ /**
109
+ * Compute the difference between two date/timestamp expressions
110
+ * (`end - start`) expressed in the given unit.
111
+ *
112
+ * Dialect notes (this is the function with the widest genuine divergence):
113
+ * - mysql/mariadb: `TIMESTAMPDIFF(UNIT, start, end)` (native, all units).
114
+ * - mssql/snowflake: `DATEDIFF(unit, start, end)` (native, all units).
115
+ * - redshift: also has a genuine native `DATEDIFF(datepart, start, end)`
116
+ * function (SQL-Server-style), unlike Postgres which has no such function.
117
+ * - clickhouse: native `dateDiff('unit', start, end)`.
118
+ * - postgres/cockroachdb: NO native DATEDIFF — day uses date subtraction
119
+ * (`end::date - start::date`), sub-day units use
120
+ * `EXTRACT(EPOCH FROM (end - start))` scaled, and year/month are computed
121
+ * from `EXTRACT(YEAR/MONTH FROM ...)` components.
122
+ * - oracle: NO native DATEDIFF — DATE subtraction yields a day count
123
+ * (`TRUNC(end) - TRUNC(start)` for whole days, scaled for other sub-day
124
+ * units); month/year use `MONTHS_BETWEEN`.
125
+ * - sqlite: NO native DATEDIFF — built on `julianday()` differences (day and
126
+ * sub-day units) and `strftime('%Y'/'%m', ...)` component differences
127
+ * (month/year, since julianday-based month math is not calendar-exact).
128
+ * - db2: NO native DATEDIFF — built from `DAYS()` (whole-day difference) and
129
+ * `MIDNIGHT_SECONDS()` (intra-day seconds) for day/sub-day units, and
130
+ * `YEAR()`/`MONTH()` component differences for month/year.
131
+ */
132
+ export declare function dateDiff(dialect: Dialect, unit: DateDiffUnit, start: DateTimeArg, end: DateTimeArg): DateTimeExpression;
133
+ /**
134
+ * Current date-and-time (instant), dialect-appropriate.
135
+ * - mysql/mariadb: `NOW()`
136
+ * - postgres/cockroachdb/redshift: `NOW()`
137
+ * - mssql: `GETDATE()`
138
+ * - oracle: `SYSTIMESTAMP`
139
+ * - sqlite: `datetime('now')`
140
+ * - db2: `CURRENT TIMESTAMP` (special register, no parentheses)
141
+ * - snowflake: `CURRENT_TIMESTAMP()`
142
+ * - clickhouse: `now()`
143
+ */
144
+ export declare function now(dialect: Dialect): DateTimeExpression;
145
+ /**
146
+ * Current date (no time component), dialect-appropriate.
147
+ * - mysql/mariadb: `CURDATE()`
148
+ * - postgres/cockroachdb/redshift: `CURRENT_DATE`
149
+ * - mssql: `CAST(GETDATE() AS DATE)`
150
+ * - oracle: `TRUNC(SYSDATE)`
151
+ * - sqlite: `date('now')`
152
+ * - db2: `CURRENT DATE` (special register)
153
+ * - snowflake: `CURRENT_DATE()`
154
+ * - clickhouse: `today()`
155
+ */
156
+ export declare function currentDate(dialect: Dialect): DateTimeExpression;
157
+ /**
158
+ * Current timestamp (ANSI-standard spelling where available), dialect-appropriate.
159
+ * - mysql/mariadb/postgres/cockroachdb/redshift/db2: `CURRENT_TIMESTAMP`
160
+ * - mssql: `CURRENT_TIMESTAMP` (ANSI synonym for `GETDATE()`)
161
+ * - oracle: `CURRENT_TIMESTAMP` (session-timezone-aware; distinct from `SYSTIMESTAMP`)
162
+ * - sqlite: `CURRENT_TIMESTAMP` (SQLite keyword, UTC)
163
+ * - snowflake: `CURRENT_TIMESTAMP()`
164
+ * - clickhouse: `now()` (no distinct `CURRENT_TIMESTAMP`; `now()` is the canonical form)
165
+ */
166
+ export declare function currentTimestamp(dialect: Dialect): DateTimeExpression;
167
+ /**
168
+ * Format a date/timestamp expression as a string.
169
+ *
170
+ * IMPORTANT: format-token translation here is BEST-EFFORT for a common
171
+ * subset of tokens, NOT a full strftime-compatible formatting engine. Only
172
+ * the following tokens are recognized in the input `format` string (case
173
+ * sensitive, matched longest-first so e.g. `HH24` is not partially consumed
174
+ * by `HH`):
175
+ * - `YYYY` - 4-digit year
176
+ * - `MM` - 2-digit month (01-12)
177
+ * - `DD` - 2-digit day of month (01-31)
178
+ * - `HH24` - 2-digit hour, 24-hour clock (00-23)
179
+ * - `HH` - 2-digit hour, 12-hour clock (01-12)
180
+ * - `MI` - 2-digit minute (00-59)
181
+ * - `SS` - 2-digit second (00-59)
182
+ * Any other characters in `format` (literal separators like `-`, `/`, `:`,
183
+ * spaces, etc) are passed through unchanged, best-effort, per dialect.
184
+ *
185
+ * Dialect notes:
186
+ * - postgres/cockroachdb/redshift/oracle: `TO_CHAR(expr, format)` — these
187
+ * tokens map onto TO_CHAR's native template natively, so the format string
188
+ * passes through unchanged.
189
+ * - mysql/mariadb: `DATE_FORMAT(expr, format)`, tokens translated to `%Y`,
190
+ * `%m`, `%d`, `%H`, `%h`, `%i`, `%s`.
191
+ * - mssql: `FORMAT(expr, format)`, tokens translated to .NET-style `yyyy`,
192
+ * `MM`, `dd`, `HH`, `hh`, `mm`, `ss`.
193
+ * - sqlite: `strftime(format, expr)`, tokens translated to `%Y`, `%m`, `%d`,
194
+ * `%H`, `%I`, `%M`, `%S`.
195
+ * - db2: `VARCHAR_FORMAT(expr, format)` (Db2's TO_CHAR-equivalent); tokens
196
+ * pass through unchanged like Oracle/Postgres.
197
+ * - snowflake: `TO_VARCHAR(expr, format)`; tokens pass through unchanged.
198
+ * - clickhouse: `formatDateTime(expr, format)`, tokens translated to `%Y`,
199
+ * `%m`, `%d`, `%H`, `%I`, `%i`, `%S` (ClickHouse's directives are
200
+ * MySQL-`strftime`-like, notably using `%i` for minutes like MySQL).
201
+ */
202
+ export declare function formatDate(dialect: Dialect, expr: DateTimeArg, format: string): DateTimeExpression;
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Typed, cross-dialect full-text-SEARCH-QUERY API.
3
+ *
4
+ * Several dialect drivers in this ORM already expose native FULLTEXT
5
+ * *index creation* helpers (grep `createFulltextIndex` in
6
+ * `src/dialects/*​/index.ts`: mysql, mariadb, postgres, cockroachdb, mssql,
7
+ * oracle, sqlite, clickhouse all have one; db2/redshift throw a documented
8
+ * "not supported" error; snowflake is a documented no-op). What has been
9
+ * missing is a typed helper for the *query* side — the actual
10
+ * `MATCH() AGAINST()` / `@@ plainto_tsquery()` / `CONTAINS()` / `MATCH`
11
+ * predicate that goes in a `WHERE` (or `ORDER BY`, for relevance ranking).
12
+ * This module fills that gap.
13
+ *
14
+ * This module is intentionally self-contained: it does not add any new
15
+ * dispatch branches to `src/operators.ts`, `src/query-builders/sql-compiler.ts`,
16
+ * or any `src/dialects/**` file. Every function resolves directly to a final,
17
+ * dialect-correct SQL fragment string, which is then wrapped with the
18
+ * existing `literal()` helper from `src/operators.ts` (returns `{ $literal: sql }`,
19
+ * the same shape produced by `Op.literal(...)` and consumed throughout the
20
+ * where-builder/sql-compiler for raw-SQL escape hatches).
21
+ *
22
+ * IMPORTANT — verified limitation of the current WHERE-clause builder
23
+ * ---------------------------------------------------------------------
24
+ * `literal()`/`{ $literal }` is fully supported (and the recommended,
25
+ * documented way to inject raw SQL) when it is used as the *value* of a
26
+ * field/operator, e.g.:
27
+ * `where: { createdAt: { [Op.lt]: literal('NOW()') } }`
28
+ * However, at the time this module was written, `WhereBuilder`
29
+ * (`src/query-builders/where-builder.ts`) and the per-dialect
30
+ * `buildWhereClause()` implementations only support `{ $literal }` as an
31
+ * *operator value*; they do not currently accept a bare `{ $literal }` (or a
32
+ * plain raw-SQL string) as an entire standalone condition — whether at the
33
+ * top level of `where`, or nested inside `$and`/`Op.and`/`$or`/`Op.or`
34
+ * arrays. This was verified empirically: such conditions are silently
35
+ * dropped rather than raising an error (a pre-existing gap in the shared
36
+ * where-builder, not something this module can fix without editing that
37
+ * file, which is out of scope here).
38
+ *
39
+ * Because of that, the SQL fragments produced by `fullTextMatch()` /
40
+ * `fullTextRank()` are safe and correct to use:
41
+ * - directly in hand-built / raw SQL (`prorm.query(...)`), by reading
42
+ * `.$literal` off the returned value,
43
+ * - in `attributes: [...]` (SELECT) and `order: [...]` (ORDER BY) arrays,
44
+ * both of which DO correctly render raw literal SQL fragments today
45
+ * (verified against `sql-compiler.ts`'s `processAttributeValue()` and
46
+ * `order-limit-builder.ts`'s `buildOrderItem()`, which passes through
47
+ * plain strings/literal SQL unchanged).
48
+ * They are returned in the canonical `{ $literal: sql }` shape (rather than
49
+ * a bare string) so that call sites which build `where` conditions through
50
+ * `Op`-based helpers remain forward-compatible: if/when the WHERE-clause gap
51
+ * above is fixed, code using this module keeps working with no changes.
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * import { fullTextMatch, fullTextRank } from './query-builders/functions/fulltext';
56
+ *
57
+ * const match = fullTextMatch('mysql', ['title', 'body'], 'red widgets');
58
+ * // match.$literal === "MATCH(`title`, `body`) AGAINST('red widgets' IN NATURAL LANGUAGE MODE)"
59
+ *
60
+ * // Use for scoring/ordering (works today via ORDER BY / attributes):
61
+ * const rank = fullTextRank('postgres', 'body', 'red widgets');
62
+ * Article.findAll({
63
+ * attributes: ['id', 'title', [rank, 'relevance']],
64
+ * order: [[rank.$literal, 'DESC']],
65
+ * });
66
+ *
67
+ * // Use directly in a raw query for WHERE (recommended today):
68
+ * await prorm.query(
69
+ * `SELECT * FROM articles WHERE ${match.$literal}`
70
+ * );
71
+ * ```
72
+ */
73
+ import { type LiteralValue } from '../../operators';
74
+ import type { Dialect } from '../../types/index';
75
+ /**
76
+ * Search mode for `fullTextMatch()`.
77
+ * - 'natural' (default): natural-language / "find documents about this text" search.
78
+ * - 'boolean': operator-aware search (dialect-specific boolean/text-search
79
+ * operator syntax, e.g. MySQL boolean-mode `+word -word "phrase"`, MSSQL
80
+ * `CONTAINS`, Oracle Text `CONTAINS` operators).
81
+ * - 'phrase': exact-phrase search where the dialect has a distinct,
82
+ * better-suited construct for it (e.g. Postgres `websearch_to_tsquery`,
83
+ * MySQL boolean-mode quoted phrase, MSSQL/SQLite quoted phrase).
84
+ */
85
+ export type FullTextMatchMode = 'natural' | 'boolean' | 'phrase';
86
+ /**
87
+ * Companion enum for `FullTextMatchMode`. Provided for callers who prefer a
88
+ * typed enum over hand-written string literals (e.g. `FullTextSearchMode.Boolean`
89
+ * instead of `'boolean'`). The two are interchangeable: `FullTextSearchMode`'s
90
+ * members are assignable to `FullTextMatchMode` (and vice versa, since the
91
+ * enum is string-valued), and `FullTextMatchOptions.mode` accepts either.
92
+ * This is purely additive — no existing string-literal call sites need to
93
+ * change.
94
+ */
95
+ export declare enum FullTextSearchMode {
96
+ Natural = "natural",
97
+ Boolean = "boolean",
98
+ Phrase = "phrase"
99
+ }
100
+ export interface FullTextMatchOptions {
101
+ /** Search mode. Defaults to 'natural'. Accepts either the string-literal
102
+ * union (`'natural' | 'boolean' | 'phrase'`) or the companion
103
+ * `FullTextSearchMode` enum. */
104
+ mode?: FullTextMatchMode | FullTextSearchMode;
105
+ /**
106
+ * Text search configuration/language for dialects that use one
107
+ * (currently Postgres/CockroachDB `to_tsvector`/`plainto_tsquery`/
108
+ * `websearch_to_tsquery`). Defaults to `'english'`.
109
+ */
110
+ config?: string;
111
+ }
112
+ /**
113
+ * Columns argument accepted by every function in this module: a single
114
+ * column name, or an array of column names. Dotted `table.column` names are
115
+ * passed through as-is (quoted as a whole), matching the convention used by
116
+ * `col()` in `src/operators.ts`.
117
+ */
118
+ export type FullTextColumns = string | string[];
119
+ /**
120
+ * Build a dialect-correct full-text-search WHERE-predicate SQL fragment.
121
+ *
122
+ * Returns `{ $literal: sql }` (see module header for the supported/verified
123
+ * usage patterns for this shape).
124
+ *
125
+ * Per-dialect behavior:
126
+ * - mysql/mariadb: `MATCH(col1, col2) AGAINST('term' IN NATURAL LANGUAGE MODE | IN BOOLEAN MODE)`.
127
+ * `mode: 'phrase'` uses boolean mode with the term wrapped in `"..."` for
128
+ * an exact-phrase match (MySQL boolean-mode phrase syntax).
129
+ * NOTE: requires a `FULLTEXT` index on the given column(s) — see
130
+ * `createFulltextIndex()` in `src/dialects/mysql/index.ts` / `mariadb/index.ts`.
131
+ * - postgres/cockroachdb: `to_tsvector('english', col1 || ' ' || col2) @@ plainto_tsquery('english', 'term')`.
132
+ * `mode: 'phrase'` uses `websearch_to_tsquery` instead of `plainto_tsquery`
133
+ * for more natural, phrase-aware parsing (supports quoted phrases, `-`,
134
+ * `OR`). NOTE: works on any text column; a GIN index
135
+ * (`createFulltextIndex()`) is only needed for performance, not correctness.
136
+ * - mssql: `mode: 'natural'` (default) uses `FREETEXT(col, 'term')`;
137
+ * `mode: 'boolean'` / `mode: 'phrase'` uses `CONTAINS(col, 'term')`
138
+ * (phrase mode wraps the term in `"..."`, which is exact-phrase syntax
139
+ * for `CONTAINS`). NOTE: requires a full-text index/catalog — see
140
+ * `createFulltextIndex()` in `src/dialects/mssql/index.ts`.
141
+ * - oracle: `CONTAINS(col, 'term', 1) > 0` (Oracle Text). Multiple columns
142
+ * are OR-ed together, since Oracle Text indexes and scores one column at
143
+ * a time. NOTE: requires an Oracle Text index — see `createFulltextIndex()`
144
+ * in `src/dialects/oracle/index.ts`.
145
+ * - sqlite: `col MATCH 'term'`. STRUCTURAL REQUIREMENT (unlike every other
146
+ * dialect above): this only works against an FTS5 virtual table/column
147
+ * (see `createFulltextIndex()` / `createFTS5Table()` in
148
+ * `src/dialects/sqlite/index.ts`) — SQLite has no secondary full-text
149
+ * index you can bolt onto an ordinary table the way MySQL/Postgres/MSSQL
150
+ * do; the table itself must be an `fts5` virtual table.
151
+ * - clickhouse: uses `hasToken(col, 'term')` for a single-token exact
152
+ * match, or `multiSearchAny(col, ['term1', 'term2', ...])` when
153
+ * `searchTerm` contains multiple whitespace-separated words. Multiple
154
+ * columns are OR-ed together. See `createFulltextIndex()` (ClickHouse
155
+ * `ngrambf_v1`/`tokenbf_v1` index) in `src/dialects/clickhouse/index.ts`.
156
+ * - db2: THROWS. Db2's optional Text Search feature (Net Search Extender)
157
+ * has its own `CONTAINS`-like predicate syntax, but it could not be
158
+ * verified with confidence here, and `createFulltextIndex()` in
159
+ * `src/dialects/db2/index.ts` itself throws
160
+ * "Fulltext indexes are not supported in Db2 LUW (requires Net Search
161
+ * Extender)" — so there is no verified index-creation path to pair a
162
+ * query against either. Throwing here rather than guessing avoids
163
+ * shipping silently-wrong SQL.
164
+ * - snowflake: FALLBACK, not true full-text search. Snowflake has no
165
+ * Postgres-style `tsvector`/`tsquery` full-text search primitive (its
166
+ * closest offerings are Cortex Search / Search Optimization Service,
167
+ * which are not plain-SQL predicates); `createFulltextIndex()` in
168
+ * `src/dialects/snowflake/index.ts` is a documented no-op for the same
169
+ * reason. Falls back to `ILIKE '%term%'` (case-insensitive substring
170
+ * match — no tokenization, stemming, or relevance ranking).
171
+ * - redshift: FALLBACK, not true full-text search. Redshift (unlike
172
+ * Postgres, which it forked from) does not implement `tsvector`/`tsquery`;
173
+ * `createFulltextIndex()` in `src/dialects/redshift/index.ts` throws
174
+ * accordingly. Falls back to `ILIKE '%term%'`, same caveat as Snowflake.
175
+ *
176
+ * @param dialect - Target SQL dialect.
177
+ * @param columns - Column name, or array of column names, to search.
178
+ * @param searchTerm - The user's search text.
179
+ * @param options - `{ mode, config }`, see `FullTextMatchOptions`.
180
+ */
181
+ export declare function fullTextMatch(dialect: Dialect, columns: FullTextColumns, searchTerm: string, options?: FullTextMatchOptions): LiteralValue;
182
+ /**
183
+ * Build a dialect-correct full-text relevance-SCORE SQL expression, for use
184
+ * in `SELECT`/`attributes` or `ORDER BY`/`order` — NOT a boolean WHERE
185
+ * predicate (use `fullTextMatch()` for that).
186
+ *
187
+ * Returns `{ $literal: sql }`. This shape is safe to use directly in
188
+ * `attributes: [...]` and `order: [...]` today (see module header) —
189
+ * both channels render raw literal SQL fragments correctly, unlike
190
+ * the WHERE-clause builder.
191
+ *
192
+ * Support by dialect:
193
+ * - postgres/cockroachdb: `ts_rank(to_tsvector('english', col), plainto_tsquery('english', 'term'))`.
194
+ * - mysql/mariadb: `MATCH(col1, col2) AGAINST('term')` — in MySQL/MariaDB,
195
+ * using `MATCH() AGAINST()` outside of a boolean context (e.g. in
196
+ * `SELECT`/`ORDER BY`) naturally evaluates to the relevance score
197
+ * (a floating point number), so the same construct doubles as both a
198
+ * predicate (via `fullTextMatch`) and a score.
199
+ * - oracle: `SCORE(1)` (Oracle Text). REQUIRES a `CONTAINS(col, 'term', 1) > 0`
200
+ * predicate using the *same* label (`1`) to appear in the query's WHERE
201
+ * clause (e.g. from `fullTextMatch(dialect, col, term)`), per Oracle Text
202
+ * rules — `SCORE(n)` reads the score computed by the `CONTAINS` call
203
+ * labeled `n` elsewhere in the same query.
204
+ * - mssql, sqlite, clickhouse, db2, redshift, snowflake: THROWS. None of
205
+ * these has a genuine, verifiable relevance-scoring mechanism usable as
206
+ * a plain SQL expression:
207
+ * - mssql: `CONTAINS`/`FREETEXT` are boolean predicates only; ranked
208
+ * results require `CONTAINSTABLE`/`FREETEXTTABLE` (table-valued
209
+ * functions joined in, not an expression usable inline).
210
+ * - sqlite FTS5: ranking requires the `bm25()` auxiliary function,
211
+ * which (like MSSQL's *TABLE functions) can only be selected from
212
+ * the FTS5 virtual table itself, not expressed against an arbitrary
213
+ * base-table column the way `fullTextMatch()`'s column argument
214
+ * implies — so it does not fit this API's per-column shape.
215
+ * - clickhouse: `hasToken`/`multiSearchAny` return booleans; there is
216
+ * no built-in relevance score function.
217
+ * - db2/redshift/snowflake: no native full-text search at all (see
218
+ * `fullTextMatch()` docs above), so there is nothing to rank.
219
+ */
220
+ export declare function fullTextRank(dialect: Dialect, columns: FullTextColumns, searchTerm: string, options?: Pick<FullTextMatchOptions, 'config'>): LiteralValue;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Barrel export for the typed SQL function-builder library.
3
+ * Lets callers do `import { rowNumber, jsonExtract, fullTextMatch } from 'prorm'`
4
+ * instead of hand-writing raw SQL fragments.
5
+ *
6
+ * Explicit (not `export *`) because several of these modules independently
7
+ * declare their own local `SqlExpr` type alias (same shape, different
8
+ * files) - re-exporting all three under one name is ambiguous.
9
+ */
10
+ export { count, countDistinct, sum, avg, min, max, stringAgg, arrayAgg, type SqlExpr, type AggOrderBy, type StringAggOptions, type ArrayAggOptions, } from './aggregate';
11
+ export { CaseBuilder, SimpleCaseBuilder, caseWhen, caseOf, type CaseValue, type CaseCondition, } from './conditional';
12
+ export { dateTrunc, dateAdd, dateSub, dateDiff, now, currentDate, currentTimestamp, formatDate, type DateTimeArg, type DateTimeExpression, type DateTruncUnit, type DateAddUnit, type DateDiffUnit, } from './datetime';
13
+ export { fullTextMatch, fullTextRank, type FullTextMatchMode, type FullTextMatchOptions, type FullTextColumns, } from './fulltext';
14
+ export { jsonExtract, jsonContains, jsonHasKey, jsonKeys, jsonTypeOf, type JsonExprArg, type JsonExtractOptions, } from './json';
15
+ export { round, ceil, floor, power, sqrt, abs, sign, mod, random, greatest, least, truncate, type SqlExpr as MathSqlExpr, } from './math';
16
+ export { concat, substring, trim, ltrim, rtrim, upper, lower, length, replace, lpad, rpad, split, repeat, reverse, type TrimOptions, type SqlExpr as StringSqlExpr, } from './string';
17
+ export { WindowFunctionBuilder, rowNumber, rank, denseRank, percentRank, cumeDist, ntile, lag, lead, firstValue, lastValue, nthValue, sumOver, avgOver, countOver, minOver, maxOver, windowFn, NullsOrder, type WindowDialect, type WindowOrderDirection, type WindowNulls, type WindowFrameBoundary, type WindowFrame, type WindowArg, } from './window';
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Cross-dialect, typed JSON-path function API.
3
+ *
4
+ * This module lets callers pull a JSON field/path out of a JSON/JSONB column
5
+ * (or any expression producing one) as a first-class, typed SQL expression
6
+ * usable in `attributes` / `SELECT`, without ever having to hand-write raw
7
+ * SQL strings for it.
8
+ *
9
+ * It is intentionally self-contained: it does not rely on (or modify) the
10
+ * dialect classes in `src/dialects/**` or the compiler in
11
+ * `src/query-builders/sql-compiler.ts`. Instead it re-derives, per dialect,
12
+ * the exact SQL fragments that this codebase's own dialect-internal
13
+ * WHERE-clause JSON helpers already produce (see the JSDoc on each function
14
+ * below for the specific dialect file/method that was used as the source of
15
+ * truth), so behavior stays consistent with the rest of the ORM.
16
+ *
17
+ * All functions return a `{ $literal: string }` value (the same shape
18
+ * produced by `literal()` in `src/operators.ts`), so the result can be
19
+ * dropped directly into `attributes`, e.g.:
20
+ *
21
+ * ```ts
22
+ * User.findAll({
23
+ * attributes: ['id', [jsonExtract('postgres', 'data', 'address.city'), 'city']],
24
+ * });
25
+ * ```
26
+ */
27
+ import type { Dialect } from '../../types/index';
28
+ /** Anything that can be used as the "expression" argument to a json function. */
29
+ export type JsonExprArg = string | {
30
+ __type: 'col';
31
+ col: string;
32
+ } | {
33
+ __type: 'fn';
34
+ fn: string;
35
+ args: any[];
36
+ } | {
37
+ __type: 'literal';
38
+ sql: string;
39
+ } | {
40
+ $literal: string;
41
+ };
42
+ export interface JsonExtractOptions {
43
+ /**
44
+ * When true (the default), extract the value as text/scalar (the
45
+ * `->>`-equivalent). When false, extract as a JSON-typed sub-value (the
46
+ * `->`-equivalent), where the dialect distinguishes the two.
47
+ */
48
+ asText?: boolean;
49
+ }
50
+ /**
51
+ * Extract a value at a JSON path from `expr` as a typed, cross-dialect SQL
52
+ * expression usable in `attributes` / `SELECT`.
53
+ *
54
+ * Dialect syntax sources (matched against this codebase's existing internal
55
+ * dialect helpers where they exist):
56
+ * - mysql/mariadb: `src/dialects/{mysql,mariadb}/index.ts` `buildJsonExtract` ->
57
+ * `JSON_UNQUOTE(JSON_EXTRACT(col, '$.path'))` (asText) / `JSON_EXTRACT(col, '$.path')`.
58
+ * - mssql: `src/dialects/mssql/index.ts` `buildJsonExtract` ->
59
+ * `JSON_VALUE(col, '$.path')` (asText) / `JSON_QUERY(col, '$.path')`.
60
+ * - sqlite: `src/dialects/sqlite/index.ts` `buildJsonExtract` ->
61
+ * `CAST(json_extract(col, '$.path') AS TEXT)` (asText) / `json_extract(col, '$.path')`.
62
+ * - postgres/cockroachdb: `src/query-builders/where-builder.ts` `#>>`/`#>` handling ->
63
+ * `col #>> '{a,b}'` (asText) / `col #> '{a,b}'`.
64
+ * - oracle: Oracle SQL/JSON functions -> `JSON_VALUE(col, '$.path')` (asText) /
65
+ * `JSON_QUERY(col, '$.path')`.
66
+ * - snowflake: `src/dialects/snowflake/index.ts` `buildJsonQuery` -> `col:a.b::STRING`
67
+ * (asText) / `col:a.b` (VARIANT, non-text).
68
+ * - redshift: SUPER-type dot navigation (see `getDataTypeSql` mapping JSON/JSONB -> SUPER
69
+ * in `src/dialects/redshift/index.ts`) -> `CAST(col.a.b AS VARCHAR)` (asText) / `col.a.b`.
70
+ * - db2: Db2 JSON_VAL/JSON_QUERY path functions -> `JSON_VAL(col, 'a.b')` (asText) /
71
+ * `JSON_QUERY(col, '$.a.b')`.
72
+ * - clickhouse: `JSONExtractString(col, 'a', 'b')` (asText) / `JSONExtractRaw(col, 'a', 'b')`.
73
+ */
74
+ export declare function jsonExtract(dialect: Dialect, expr: JsonExprArg, path: string | string[], options?: JsonExtractOptions): {
75
+ $literal: string;
76
+ };
77
+ /**
78
+ * Does the JSON value in `expr` contain `value` (as a fragment/sub-document,
79
+ * or, where the dialect has no native containment predicate, as an exact
80
+ * equality check)?
81
+ *
82
+ * - mysql/mariadb: `JSON_CONTAINS(col, '<value-json>')` (matches
83
+ * `buildJsonContains` in `src/dialects/{mysql,mariadb}/index.ts`).
84
+ * - postgres/cockroachdb: native jsonb containment operator -> `col @> '<value-json>'::jsonb`.
85
+ * - sqlite: SQLite has no containment operator; mirrors the whole-document
86
+ * equality fallback used by `buildJsonContains` in
87
+ * `src/dialects/sqlite/index.ts` -> `col = '<value-json>'`.
88
+ * - mssql, oracle, snowflake, redshift, db2, clickhouse: none of these expose
89
+ * a native "does this JSON document contain this sub-fragment" predicate
90
+ * (as opposed to key existence or exact-path equality), so this throws a
91
+ * clear "not supported" error rather than emitting a plausible-looking but
92
+ * semantically wrong query.
93
+ */
94
+ export declare function jsonContains(dialect: Dialect, expr: JsonExprArg, value: unknown): {
95
+ $literal: string;
96
+ };
97
+ /**
98
+ * Does the JSON object in `expr` have the given top-level (or path-qualified,
99
+ * dotted) key?
100
+ *
101
+ * - mysql/mariadb: `JSON_CONTAINS_PATH(col, 'one', '$.key')` (matches
102
+ * `buildJsonHasKey` in `src/dialects/{mysql,mariadb}/index.ts`).
103
+ * - postgres/cockroachdb: native `?` key-existence operator -> `col ? 'key'`
104
+ * (top-level keys only, matching jsonb semantics).
105
+ * - sqlite: `json_extract(col, '$.key') IS NOT NULL` (matches
106
+ * `buildJsonHasKey` in `src/dialects/sqlite/index.ts`).
107
+ * - mssql: `JSON_VALUE(col, '$.key') IS NOT NULL` (standard SQL Server
108
+ * workaround pattern; note this cannot distinguish "key present with a
109
+ * JSON null value" from "key absent").
110
+ * - oracle: `JSON_EXISTS(col, '$.key')`.
111
+ * - snowflake: `ARRAY_CONTAINS('key'::VARIANT, OBJECT_KEYS(col))`.
112
+ * - redshift: SUPER dot-navigation returns SQL NULL for missing attributes,
113
+ * so `col.key IS NOT NULL` reliably detects key presence.
114
+ * - db2: `JSON_EXISTS(col, '$.key')` (Db2 11.5+ JSON path predicates).
115
+ * - clickhouse: `JSONHas(col, 'key')`.
116
+ */
117
+ export declare function jsonHasKey(dialect: Dialect, expr: JsonExprArg, key: string): {
118
+ $literal: string;
119
+ };
120
+ /**
121
+ * Get the list of top-level keys of a JSON object.
122
+ *
123
+ * - mysql/mariadb: `JSON_KEYS(col)` -> native, returns a JSON array of keys.
124
+ * - postgres/cockroachdb: `ARRAY(SELECT jsonb_object_keys(col))` -> a SQL
125
+ * text array of keys.
126
+ * - sqlite: `(SELECT json_group_array(key) FROM json_each(col))` -> a JSON
127
+ * array of keys, built from SQLite's own `json_each` table-valued function.
128
+ * - snowflake: `OBJECT_KEYS(col)` -> native, returns an ARRAY of keys.
129
+ * - clickhouse: `JSONExtractKeys(col)` -> native, returns an Array(String).
130
+ * - mssql: no native function returns a JSON/array value of keys inline;
131
+ * `OPENJSON` requires a derived table, so the closest inline expression is
132
+ * a scalar subquery producing a comma-separated string (NOT a JSON array):
133
+ * `(SELECT STRING_AGG([key], ',') FROM OPENJSON(col))`.
134
+ * - oracle, redshift, db2: throw "not supported" - none of these dialects
135
+ * expose a documented function/operator that enumerates JSON object keys
136
+ * as a value usable inline in a SELECT list, so faking one with a fragile
137
+ * workaround would be worse than a clear error.
138
+ */
139
+ export declare function jsonKeys(dialect: Dialect, expr: JsonExprArg): {
140
+ $literal: string;
141
+ };
142
+ /**
143
+ * Get the JSON value's type (object/array/string/number/boolean/null/...).
144
+ *
145
+ * - mysql/mariadb: `JSON_TYPE(col)` -> native.
146
+ * - postgres/cockroachdb: `jsonb_typeof(col)` -> native.
147
+ * - sqlite: `json_type(col)` -> native.
148
+ * - snowflake: `TYPEOF(col)` -> native (works on VARIANT).
149
+ * - clickhouse: `JSONType(col)` -> native.
150
+ * - mssql, oracle, redshift, db2: throw "not supported" - none of these
151
+ * expose a documented function that returns the JSON value's type as a
152
+ * string (SQL Server's `ISJSON(col, 'object'|'array')` only returns a
153
+ * boolean for two of the possible types, not a general type name).
154
+ */
155
+ export declare function jsonTypeOf(dialect: Dialect, expr: JsonExprArg): {
156
+ $literal: string;
157
+ };