ts-prorm-orm 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +713 -0
  239. package/dist/index.js +36 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Trino (formerly PrestoSQL) dialect implementation for the TypeScript ORM.
3
+ *
4
+ * Trino is a distributed, federated SQL query engine. It is *not* a storage
5
+ * engine of its own: it runs ANSI SQL over pluggable connectors (Hive, Iceberg,
6
+ * MySQL, PostgreSQL, Kafka, ...). Because its SQL surface is ANSI-flavored and
7
+ * it quotes identifiers with double quotes (like PostgreSQL), this dialect
8
+ * extends {@link PostgresDialect} and overrides only where Trino differs.
9
+ *
10
+ * Key differences from PostgreSQL that this dialect implements:
11
+ *
12
+ * - **Default port 8080.** Trino's HTTP/query port is 8080, not 5432.
13
+ * The constructor injects it via `super({ port: 8080, ...config })`.
14
+ *
15
+ * - **Three-part table names: `catalog.schema.table`.** A Trino table lives in
16
+ * a connector *catalog* and a *schema*. When a `catalog` is configured (and,
17
+ * optionally, a default `schema`), {@link TrinoDialect.quoteTable} emits the
18
+ * fully-qualified `"catalog"."schema"."table"` form. Without a catalog it
19
+ * falls back to the PostgreSQL `schema.table` behavior.
20
+ *
21
+ * - **Connector table properties via `WITH (...)`.** `CREATE TABLE ... WITH
22
+ * (format = 'ORC', partitioning = ARRAY['col'])` configures the underlying
23
+ * connector (file format, partitioning, bucketing, ...). Exposed through
24
+ * {@link TrinoTableOptions} (`format`, `partitioning`, `tableProperties`).
25
+ *
26
+ * - **`CREATE TABLE AS SELECT` (CTAS).** Trino's primary way to materialize a
27
+ * table from a query. Exposed via {@link TrinoDialect.buildCreateTableAsSelectSQL}
28
+ * (sync SQL builder) and {@link TrinoDialect.createTableAsSelect} (executes it).
29
+ *
30
+ * - **No PRIMARY KEY / FOREIGN KEY / UNIQUE enforcement.** Trino does not
31
+ * support (or enforce) key constraints — `CREATE TABLE` here omits any
32
+ * `PRIMARY KEY`, `FOREIGN KEY`, or `UNIQUE` clause entirely. Constraint
33
+ * metadata on columns/tables is ignored for DDL purposes.
34
+ *
35
+ * - **No AUTO_INCREMENT / identity / sequences.** Trino has no
36
+ * SERIAL/BIGSERIAL/IDENTITY. Surrogate keys are *not* auto-generated;
37
+ * application code (or the source connector) must supply key values. The
38
+ * `autoIncrement` column flag is ignored.
39
+ *
40
+ * - **Type mapping.** Trino uses unbounded `VARCHAR` (no length required),
41
+ * `DOUBLE` (not `DOUBLE PRECISION`), `BOOLEAN`, and `TIMESTAMP`. See
42
+ * {@link TrinoDialect.getDataTypeSql}.
43
+ */
44
+ import { PostgresDialect, PostgresDialectOptions } from '../postgres/index';
45
+ import { ColumnDefinition, TableOptions, DropTableOptions, InsertOptions, UpdateOptions, DeleteOptions, UpsertQueryOptions, IndexOptions, IndexDefinition, DropIndexOptions } from '../dialect';
46
+ import { DataType, WhereOptions } from '../../types';
47
+ /**
48
+ * Trino-specific connection options. Adds a connector `catalog` and default
49
+ * `schema` on top of the PostgreSQL options; both feed the three-part naming
50
+ * in {@link TrinoDialect.quoteTable}.
51
+ */
52
+ export interface TrinoDialectOptions extends PostgresDialectOptions {
53
+ /** Connector catalog (e.g. `'hive'`, `'iceberg'`). Enables `catalog.schema.table` naming. */
54
+ catalog?: string;
55
+ /** Default schema used when a query/table doesn't specify one. */
56
+ schema?: string;
57
+ }
58
+ /**
59
+ * Trino connector table properties, emitted as `CREATE TABLE ... WITH (...)`.
60
+ */
61
+ export interface TrinoTableOptions extends TableOptions {
62
+ /** Storage file format, e.g. `'ORC'`, `'PARQUET'`, `'AVRO'`. Emits `format = '...'`. */
63
+ format?: string;
64
+ /** Partitioning columns, emitted as `partitioning = ARRAY['col1', 'col2']`. */
65
+ partitioning?: string[];
66
+ /** Arbitrary additional connector properties, emitted as `key = value` (strings are quoted). */
67
+ tableProperties?: Record<string, string | number | boolean>;
68
+ /** Schema override for this specific table. */
69
+ schema?: string;
70
+ }
71
+ /**
72
+ * Options for {@link TrinoDialect.buildCreateTableAsSelectSQL} / createTableAsSelect.
73
+ */
74
+ export interface TrinoCTASOptions extends TrinoTableOptions {
75
+ /** Emit `WITH NO DATA` to create the table structure without copying rows. */
76
+ withNoData?: boolean;
77
+ }
78
+ /**
79
+ * Trino / PrestoSQL federated query engine dialect. Extends {@link PostgresDialect}
80
+ * (ANSI SQL, double-quoted identifiers) and overrides Trino-specific behavior.
81
+ */
82
+ export declare class TrinoDialect extends PostgresDialect {
83
+ readonly name = "trino";
84
+ /** Configured connector catalog (undefined => fall back to PG-style naming). */
85
+ protected readonly trinoCatalog?: string;
86
+ /** Configured default schema for three-part naming. */
87
+ protected readonly trinoSchema?: string;
88
+ constructor(config: TrinoDialectOptions);
89
+ /**
90
+ * Quote a table name. When a connector catalog is configured, emit the Trino
91
+ * three-part `"catalog"."schema"."table"` form; otherwise defer to the
92
+ * PostgreSQL `schema.table` behavior.
93
+ */
94
+ quoteTable(tableName: string, schema?: string): string;
95
+ /**
96
+ * Map a data type to Trino SQL. Trino uses unbounded `VARCHAR`, `DOUBLE`,
97
+ * `BOOLEAN`, and `TIMESTAMP`, and has no SERIAL/identity types.
98
+ */
99
+ getDataTypeSql(dataType: DataType): string;
100
+ /**
101
+ * Build a column definition fragment for Trino DDL. PRIMARY KEY, UNIQUE,
102
+ * FOREIGN KEY (references) and auto-increment are intentionally NOT emitted —
103
+ * Trino neither supports nor enforces them.
104
+ */
105
+ protected getTrinoColumnDefinitionSql(columnName: string, definition: ColumnDefinition): string;
106
+ /**
107
+ * Build the `WITH (...)` connector-properties clause (or '' when there are
108
+ * no properties). Handles `format`, `partitioning`, and `tableProperties`.
109
+ */
110
+ protected buildTablePropertiesClause(options?: TrinoTableOptions): string;
111
+ /**
112
+ * Build (synchronously) a Trino `CREATE TABLE` statement. Omits all key
113
+ * constraints (PK/FK/UNIQUE) and appends connector `WITH (...)` properties.
114
+ */
115
+ buildCreateTableSQL(tableName: string, columns: Record<string, ColumnDefinition>, options?: TrinoTableOptions): string;
116
+ /**
117
+ * Build (synchronously) a Trino `CREATE TABLE ... AS SELECT` (CTAS) statement.
118
+ *
119
+ * @param tableName - Name of the table to create.
120
+ * @param selectQuery - The `SELECT ...` query (raw SQL) to populate it from.
121
+ * @param options - Connector properties and CTAS options.
122
+ */
123
+ buildCreateTableAsSelectSQL(tableName: string, selectQuery: string, options?: TrinoCTASOptions): string;
124
+ /**
125
+ * Create a table in Trino. Overrides the PostgreSQL implementation to omit
126
+ * key constraints and support connector `WITH (...)` properties.
127
+ */
128
+ createTable(tableName: string, columns: Record<string, ColumnDefinition>, options?: TrinoTableOptions): Promise<void>;
129
+ /**
130
+ * Execute a `CREATE TABLE AS SELECT` (CTAS) statement.
131
+ */
132
+ createTableAsSelect(tableName: string, selectQuery: string, options?: TrinoCTASOptions): Promise<void>;
133
+ /**
134
+ * Drop a table. Trino's `DROP TABLE` supports `IF EXISTS` but has no
135
+ * `CASCADE` (there are no dependent constraints to cascade).
136
+ */
137
+ dropTable(tableName: string, options?: DropTableOptions): Promise<void>;
138
+ /**
139
+ * Add a column. Uses the Trino column-definition builder (no constraints /
140
+ * default / SERIAL) and the catalog-qualified table name.
141
+ */
142
+ addColumn(tableName: string, columnName: string, definition: ColumnDefinition): Promise<void>;
143
+ /**
144
+ * Remove a column. `ALTER TABLE ... DROP COLUMN` with catalog-qualified name.
145
+ */
146
+ removeColumn(tableName: string, columnName: string): Promise<void>;
147
+ buildLimitOffset(limit?: number | string, offset?: number | string): string;
148
+ /**
149
+ * Build an INSERT query. Trino form: `INSERT INTO t (cols) VALUES (...)`.
150
+ * No `RETURNING`. Trino has no `ON CONFLICT`, but it DOES support the ANSI
151
+ * `MERGE INTO` statement (on connectors that implement row-level writes, e.g.
152
+ * Iceberg/Delta/Hive-ACID), so an `upsert` request is routed to
153
+ * {@link TrinoDialect.buildUpsertMergeQuery} rather than forcing the caller to hand-
154
+ * write raw SQL. `conflictFields` is required to build the MERGE `ON` clause.
155
+ */
156
+ buildInsertQuery(tableName: string, values: Record<string, unknown>, options?: InsertOptions): {
157
+ sql: string;
158
+ values: unknown[];
159
+ };
160
+ /**
161
+ * Build an upsert. Trino has no PostgreSQL-style `INSERT ... ON CONFLICT`, but
162
+ * it does implement the ANSI SQL `MERGE INTO` statement, which is the correct,
163
+ * connector-native way to express an upsert on connectors that support
164
+ * row-level writes (Iceberg, Delta, Hive ACID, and the JDBC connectors).
165
+ * Delegates to {@link TrinoDialect.buildUpsertMergeQuery} so no raw SQL is required.
166
+ */
167
+ buildUpsertQuery(tableName: string, values: Record<string, unknown>, options?: UpsertQueryOptions): {
168
+ sql: string;
169
+ values: unknown[];
170
+ };
171
+ /**
172
+ * Build a Trino `MERGE INTO` statement implementing a single-row upsert.
173
+ *
174
+ * MERGE INTO "cat"."sch"."t" AS t
175
+ * USING (VALUES (?, ?)) AS s ("id", "name")
176
+ * ON t."id" = s."id"
177
+ * WHEN MATCHED THEN UPDATE SET "name" = s."name"
178
+ * WHEN NOT MATCHED THEN INSERT ("id", "name") VALUES (s."id", s."name")
179
+ *
180
+ * The source row is presented as an inline `(VALUES (...)) AS s (cols)`
181
+ * relation. Rows are matched on `conflictFields` (required — Trino has no
182
+ * primary/unique key metadata to infer them from); matched rows update every
183
+ * non-key column (or the explicit `updateOnDuplicate` list) and unmatched
184
+ * rows are inserted. Actual execution requires a connector that supports
185
+ * `MERGE`/row-level writes.
186
+ *
187
+ * @param tableName - Target table (catalog-qualified via {@link quoteTable}).
188
+ * @param values - Column/value pairs for the row to upsert.
189
+ * @param options - `conflictFields` (required) picks the `ON` key columns;
190
+ * `updateOnDuplicate` restricts the WHEN MATCHED update set; `schema`
191
+ * overrides the default schema for the target table.
192
+ */
193
+ buildUpsertMergeQuery(tableName: string, values: Record<string, unknown>, options?: {
194
+ conflictFields?: string[];
195
+ updateOnDuplicate?: string[];
196
+ schema?: string;
197
+ }): {
198
+ sql: string;
199
+ values: unknown[];
200
+ };
201
+ /**
202
+ * Build an UPDATE query. No `RETURNING`, no `LIMIT` (Trino supports neither
203
+ * on UPDATE). Actual UPDATE support is connector-dependent at run time.
204
+ */
205
+ buildUpdateQuery(tableName: string, values: Record<string, unknown>, where: WhereOptions, _options?: UpdateOptions): {
206
+ sql: string;
207
+ values: unknown[];
208
+ };
209
+ /**
210
+ * Build a DELETE query. No `RETURNING`, no `LIMIT`. Trino has no `TRUNCATE`,
211
+ * so a `truncate` request degrades to an unqualified `DELETE FROM t`. Actual
212
+ * DELETE support is connector-dependent at run time.
213
+ */
214
+ buildDeleteQuery(tableName: string, where: WhereOptions, options?: DeleteOptions): {
215
+ sql: string;
216
+ values: unknown[];
217
+ };
218
+ private noIndexes;
219
+ addIndex(_tableName: string, _indexName: string, _fields?: string[], _options?: IndexOptions): Promise<void>;
220
+ createIndex(_tableName: string, _indexDef: IndexDefinition): Promise<void>;
221
+ removeIndex(_tableName: string, _indexName: string): Promise<void>;
222
+ dropIndex(_tableName: string, _indexName: string, _options?: DropIndexOptions): Promise<void>;
223
+ createPartialIndex(_tableName: string, _indexName: string, _fields: string[], _where: string, _options?: IndexOptions): Promise<void>;
224
+ createExpressionIndex(_tableName: string, _indexName: string, _expression: string, _options?: IndexOptions): Promise<void>;
225
+ }
226
+ /**
227
+ * Create a new Trino dialect instance.
228
+ */
229
+ export declare function createTrinoDialect(options?: TrinoDialectOptions): TrinoDialect;
230
+ export default TrinoDialect;
@@ -301,13 +301,19 @@ class TrinoDialect extends index_1.PostgresDialect {
301
301
  // ==========================================================================
302
302
  /**
303
303
  * Build an INSERT query. Trino form: `INSERT INTO t (cols) VALUES (...)`.
304
- * No `RETURNING` and no `ON CONFLICT`/upsert requesting an upsert throws.
304
+ * No `RETURNING`. Trino has no `ON CONFLICT`, but it DOES support the ANSI
305
+ * `MERGE INTO` statement (on connectors that implement row-level writes, e.g.
306
+ * Iceberg/Delta/Hive-ACID), so an `upsert` request is routed to
307
+ * {@link TrinoDialect.buildUpsertMergeQuery} rather than forcing the caller to hand-
308
+ * write raw SQL. `conflictFields` is required to build the MERGE `ON` clause.
305
309
  */
306
310
  buildInsertQuery(tableName, values, options) {
307
311
  if (options?.upsert) {
308
- throw new Error('Trino does not support upsert / ON CONFLICT. Trino has no primary-key or ' +
309
- 'unique constraints to conflict on. Use INSERT, or MERGE (on connectors ' +
310
- 'that support it) issued as raw SQL.');
312
+ return this.buildUpsertMergeQuery(tableName, values, {
313
+ conflictFields: options.conflictFields,
314
+ updateOnDuplicate: options.updateOnDuplicate,
315
+ schema: options.schema,
316
+ });
311
317
  }
312
318
  const columns = Object.keys(values);
313
319
  const processedValues = [];
@@ -330,13 +336,82 @@ class TrinoDialect extends index_1.PostgresDialect {
330
336
  return { sql, values: processedValues };
331
337
  }
332
338
  /**
333
- * Trino has no upsert. Kept explicit so callers get a clear error instead of
334
- * inheriting PostgreSQL's `INSERT ... ON CONFLICT` (invalid in Trino).
339
+ * Build an upsert. Trino has no PostgreSQL-style `INSERT ... ON CONFLICT`, but
340
+ * it does implement the ANSI SQL `MERGE INTO` statement, which is the correct,
341
+ * connector-native way to express an upsert on connectors that support
342
+ * row-level writes (Iceberg, Delta, Hive ACID, and the JDBC connectors).
343
+ * Delegates to {@link TrinoDialect.buildUpsertMergeQuery} so no raw SQL is required.
335
344
  */
336
- buildUpsertQuery(_tableName, _values, _options) {
337
- throw new Error('Trino does not support upsert / ON CONFLICT. Trino has no primary-key or ' +
338
- 'unique constraints to conflict on. Use INSERT, or MERGE (on connectors ' +
339
- 'that support it) issued as raw SQL.');
345
+ buildUpsertQuery(tableName, values, options) {
346
+ return this.buildUpsertMergeQuery(tableName, values, {
347
+ conflictFields: options?.conflictFields,
348
+ updateOnDuplicate: options?.updateOnDuplicate,
349
+ schema: options?.schema,
350
+ });
351
+ }
352
+ /**
353
+ * Build a Trino `MERGE INTO` statement implementing a single-row upsert.
354
+ *
355
+ * MERGE INTO "cat"."sch"."t" AS t
356
+ * USING (VALUES (?, ?)) AS s ("id", "name")
357
+ * ON t."id" = s."id"
358
+ * WHEN MATCHED THEN UPDATE SET "name" = s."name"
359
+ * WHEN NOT MATCHED THEN INSERT ("id", "name") VALUES (s."id", s."name")
360
+ *
361
+ * The source row is presented as an inline `(VALUES (...)) AS s (cols)`
362
+ * relation. Rows are matched on `conflictFields` (required — Trino has no
363
+ * primary/unique key metadata to infer them from); matched rows update every
364
+ * non-key column (or the explicit `updateOnDuplicate` list) and unmatched
365
+ * rows are inserted. Actual execution requires a connector that supports
366
+ * `MERGE`/row-level writes.
367
+ *
368
+ * @param tableName - Target table (catalog-qualified via {@link quoteTable}).
369
+ * @param values - Column/value pairs for the row to upsert.
370
+ * @param options - `conflictFields` (required) picks the `ON` key columns;
371
+ * `updateOnDuplicate` restricts the WHEN MATCHED update set; `schema`
372
+ * overrides the default schema for the target table.
373
+ */
374
+ buildUpsertMergeQuery(tableName, values, options) {
375
+ const conflictFields = options?.conflictFields;
376
+ if (!conflictFields || conflictFields.length === 0) {
377
+ throw new Error('Trino MERGE (upsert) requires explicit `conflictFields` to build the ON clause. ' +
378
+ 'Trino has no primary-key/unique metadata to infer the match key from.');
379
+ }
380
+ const columns = Object.keys(values);
381
+ if (columns.length === 0) {
382
+ throw new Error('buildUpsertMergeQuery requires at least one column to upsert.');
383
+ }
384
+ const processedValues = [];
385
+ let paramIndex = 1;
386
+ const sourceExprs = columns.map((col) => {
387
+ const value = values[col];
388
+ if (value instanceof prorm_1.Literal) {
389
+ return value.val;
390
+ }
391
+ processedValues.push(value);
392
+ return `$${paramIndex++}`;
393
+ });
394
+ const sourceCols = columns.map((c) => this.escapeId(c)).join(', ');
395
+ const onClause = conflictFields
396
+ .map((c) => `t.${this.escapeId(c)} = s.${this.escapeId(c)}`)
397
+ .join(' AND ');
398
+ const conflictSet = new Set(conflictFields);
399
+ const updateFields = (options?.updateOnDuplicate && options.updateOnDuplicate.length > 0
400
+ ? options.updateOnDuplicate
401
+ : columns).filter((c) => !conflictSet.has(c));
402
+ let sql = `MERGE INTO ${this.quoteTable(tableName, options?.schema)} AS t` +
403
+ ` USING (VALUES (${sourceExprs.join(', ')})) AS s (${sourceCols})` +
404
+ ` ON ${onClause}`;
405
+ if (updateFields.length > 0) {
406
+ const setClause = updateFields
407
+ .map((c) => `${this.escapeId(c)} = s.${this.escapeId(c)}`)
408
+ .join(', ');
409
+ sql += ` WHEN MATCHED THEN UPDATE SET ${setClause}`;
410
+ }
411
+ const insertCols = columns.map((c) => this.escapeId(c)).join(', ');
412
+ const insertVals = columns.map((c) => `s.${this.escapeId(c)}`).join(', ');
413
+ sql += ` WHEN NOT MATCHED THEN INSERT (${insertCols}) VALUES (${insertVals})`;
414
+ return { sql, values: processedValues };
340
415
  }
341
416
  /**
342
417
  * Build an UPDATE query. No `RETURNING`, no `LIMIT` (Trino supports neither
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Turso / libSQL dialect implementation.
3
+ *
4
+ * Turso is a hosted libSQL service; libSQL itself is a SQLite-compatible
5
+ * fork, so the SQL this dialect generates (DDL, JSON helpers, upsert
6
+ * syntax, LIMIT/OFFSET pagination, etc.) is identical to `SQLiteDialect`'s.
7
+ * Rather than duplicate ~90 pure SQL-generation methods, this class
8
+ * extends `SQLiteDialect` and overrides only the pieces that depend on the
9
+ * driver: connection lifecycle, query execution, streaming, and
10
+ * transactions. `SQLiteDialect` reaches those through its own `private`
11
+ * fields, which subclasses can't touch, so this class keeps entirely
12
+ * separate connection/transaction state and never touches the parent's.
13
+ *
14
+ * The `@libsql/client` driver works identically for a local embedded
15
+ * replica (`file:` / `:memory:` URLs) and a remote Turso database
16
+ * (`libsql:`/`https:` URLs with an `authToken`), unlike `better-sqlite3`
17
+ * which is local-only — that's the whole point of this dialect existing
18
+ * separately from `SQLiteDialect`.
19
+ */
20
+ import { type Client } from '@libsql/client';
21
+ import { SQLiteDialect } from '../sqlite/index';
22
+ import { DialectOptions } from '../dialect';
23
+ import { Transaction, TransactionOptions, QueryResult, QueryOptions, StreamOptions } from '../../types';
24
+ import { Readable } from 'stream';
25
+ import { StreamableDialect } from '../query-stream-helper';
26
+ export interface TursoDialectOptions extends DialectOptions {
27
+ /**
28
+ * Database URL. Use `libsql://<db>.turso.io` (or `https://...`) for a
29
+ * hosted Turso database, `file:./local.db` for a local libSQL file, or
30
+ * `:memory:` for an in-memory database.
31
+ */
32
+ url?: string;
33
+ /** Auth token for a hosted Turso database. Not needed for `file:`/`:memory:`. */
34
+ authToken?: string;
35
+ /** Encryption key for an encrypted local database file. */
36
+ encryptionKey?: string;
37
+ /** URL of a remote database to sync an embedded replica against. */
38
+ syncUrl?: string;
39
+ /** Sync interval in seconds when `syncUrl` is set. */
40
+ syncInterval?: number;
41
+ }
42
+ /**
43
+ * Turso / libSQL dialect. See the module-level doc comment for why this
44
+ * extends `SQLiteDialect` instead of implementing `Dialect` from scratch.
45
+ */
46
+ export declare class TursoDialect extends SQLiteDialect implements StreamableDialect {
47
+ readonly name = "turso";
48
+ readonly library = "@libsql/client";
49
+ private client;
50
+ private _tursoConnected;
51
+ private tursoConfig;
52
+ private tursoTransactionDepth;
53
+ constructor(config: TursoDialectOptions);
54
+ connect(): Promise<void>;
55
+ disconnect(): Promise<void>;
56
+ getConnection(): Client | null;
57
+ isConnected(): boolean;
58
+ /**
59
+ * `SQLiteAdvanced` (the parent class's `.advanced` getter) drives
60
+ * better-sqlite3's synchronous `Database` API directly, which the
61
+ * `@libsql/client` connection this dialect wraps doesn't expose.
62
+ */
63
+ get advanced(): never;
64
+ query(sql: string, options?: QueryOptions): Promise<QueryResult>;
65
+ /**
66
+ * `@libsql/client` has no native server-side cursor — `execute()` always
67
+ * returns the full result set — so this uses the same generic
68
+ * LIMIT/OFFSET-paginated fallback the other non-cursor dialects use
69
+ * (`buildLimitOffset()` is inherited unchanged from `SQLiteDialect`,
70
+ * since libSQL's pagination syntax is identical to SQLite's).
71
+ */
72
+ queryStream(sql: string, options?: StreamOptions): Readable;
73
+ private toLibsqlArgs;
74
+ private rowToObject;
75
+ getDatabaseVersion(): Promise<string>;
76
+ /**
77
+ * The parent runs setter PRAGMAs through better-sqlite3's synchronous
78
+ * `exec()` (which TursoDialect has no handle for — `this.connection` is
79
+ * always null here). Route them through the async libSQL driver instead so
80
+ * table-rebuild paths (e.g. addForeignKey's `PRAGMA foreign_keys=OFF/ON`)
81
+ * actually take effect over the wire.
82
+ */
83
+ protected setPragma(pragma: string): Promise<void>;
84
+ attachDatabase(path: string, alias: string): Promise<void>;
85
+ detachDatabase(alias: string): Promise<void>;
86
+ startTransaction(options?: TransactionOptions): Promise<Transaction>;
87
+ commitTransaction(transaction: Transaction): Promise<void>;
88
+ rollbackTransaction(transaction: Transaction): Promise<void>;
89
+ /**
90
+ * Pull the local embedded replica up to date with its `syncUrl` remote.
91
+ * No-op (well, throws) if this client wasn't configured with a `syncUrl`.
92
+ */
93
+ sync(): Promise<void>;
94
+ }
95
+ /**
96
+ * Create a new Turso/libSQL dialect instance.
97
+ */
98
+ export declare function createTursoDialect(options?: TursoDialectOptions): TursoDialect;
@@ -157,6 +157,16 @@ class TursoDialect extends index_1.SQLiteDialect {
157
157
  const result = await this.query('SELECT sqlite_version() AS version');
158
158
  return String(result.rows[0]?.version ?? 'unknown');
159
159
  }
160
+ /**
161
+ * The parent runs setter PRAGMAs through better-sqlite3's synchronous
162
+ * `exec()` (which TursoDialect has no handle for — `this.connection` is
163
+ * always null here). Route them through the async libSQL driver instead so
164
+ * table-rebuild paths (e.g. addForeignKey's `PRAGMA foreign_keys=OFF/ON`)
165
+ * actually take effect over the wire.
166
+ */
167
+ async setPragma(pragma) {
168
+ await this.query(`PRAGMA ${pragma}`);
169
+ }
160
170
  async attachDatabase(path, alias) {
161
171
  const aliasId = this.quoteIdentifier(alias);
162
172
  await this.client.execute({ sql: `ATTACH DATABASE ? AS ${aliasId}`, args: [path] });