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
@@ -2,16 +2,28 @@
2
2
  /**
3
3
  * PostgreSQL dialect implementation for the TypeScript ORM
4
4
  */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
5
  Object.defineProperty(exports, "__esModule", { value: true });
9
6
  exports.PostgresTransaction = exports.PostgresDialect = void 0;
10
7
  exports.createPostgresDialect = createPostgresDialect;
11
- const pg_1 = __importDefault(require("pg"));
12
8
  const operators_1 = require("../../operators");
9
+ const operators_2 = require("../../operators");
13
10
  const prorm_1 = require("../../prorm");
14
- const { Pool: PgPool, Client: PgClient } = pg_1.default;
11
+ // Lazily-loaded `pg` driver. Required only when a connection is opened, so
12
+ // importing this ORM never loads the pg driver.
13
+ let pgModule = null;
14
+ function loadPg() {
15
+ if (!pgModule) {
16
+ try {
17
+ pgModule = require('pg');
18
+ }
19
+ catch (err) {
20
+ throw new Error("The 'pg' package is required to use the PostgreSQL dialect but could not be loaded. " +
21
+ 'Install it with `npm install pg`. Original error: ' +
22
+ (err instanceof Error ? err.message : String(err)));
23
+ }
24
+ }
25
+ return pgModule;
26
+ }
15
27
  /**
16
28
  * Build a PostgreSQL OPTIONS (...) clause from a plain object.
17
29
  * Single-quotes each value and escapes existing single-quotes.
@@ -89,7 +101,7 @@ class PostgresDialect {
89
101
  */
90
102
  async connect() {
91
103
  try {
92
- this.pool = new PgPool({
104
+ this.pool = new (loadPg().Pool)({
93
105
  host: this.config.host,
94
106
  port: this.config.port,
95
107
  user: this.config.username,
@@ -158,7 +170,7 @@ class PostgresDialect {
158
170
  return this.notifyConnectPromise;
159
171
  }
160
172
  this.notifyConnectPromise = (async () => {
161
- const client = new PgClient({
173
+ const client = new (loadPg().Client)({
162
174
  host: this.config.host,
163
175
  port: this.config.port,
164
176
  user: this.config.username,
@@ -3270,7 +3282,7 @@ class PostgresDialect {
3270
3282
  const rawCond = condition;
3271
3283
  const cond = { ...rawCond };
3272
3284
  for (const sym of Object.getOwnPropertySymbols(rawCond)) {
3273
- const strKey = (0, operators_1.operatorToWhereKey)(sym);
3285
+ const strKey = (0, operators_2.operatorToWhereKey)(sym);
3274
3286
  if (strKey)
3275
3287
  cond[strKey] = rawCond[sym];
3276
3288
  }
@@ -3308,7 +3320,7 @@ class PostgresDialect {
3308
3320
  const rawValueObj = value;
3309
3321
  const valueObj = { ...rawValueObj };
3310
3322
  for (const sym of Object.getOwnPropertySymbols(rawValueObj)) {
3311
- const strKey = (0, operators_1.operatorToWhereKey)(sym);
3323
+ const strKey = (0, operators_2.operatorToWhereKey)(sym);
3312
3324
  if (strKey)
3313
3325
  valueObj[strKey] = rawValueObj[sym];
3314
3326
  }
@@ -3842,6 +3854,15 @@ class PostgresDialect {
3842
3854
  /**
3843
3855
  * Check if a value is a literal expression (literal('sql'))
3844
3856
  */
3857
+ /**
3858
+ * Render a literal expression, substituting any `bindings` into its `?`
3859
+ * placeholders with dialect-correct escaping. `literalExpr(sql)` with no
3860
+ * bindings is unchanged; `literalExpr('x > ?', [v])` no longer requires the
3861
+ * caller to concatenate the value into the string themselves.
3862
+ */
3863
+ literalSql(expr) {
3864
+ return (0, operators_1.expandLiteralBindings)(expr, (v) => this.escape(v));
3865
+ }
3845
3866
  isLiteralExpression(value) {
3846
3867
  return value !== null && typeof value === 'object' && value.__type === 'literal';
3847
3868
  }
@@ -3885,7 +3906,7 @@ class PostgresDialect {
3885
3906
  sql = this.escapeId(expr.col);
3886
3907
  }
3887
3908
  else if (this.isLiteralExpression(expr)) {
3888
- sql = expr.sql;
3909
+ sql = this.literalSql(expr);
3889
3910
  }
3890
3911
  else if (typeof expr === 'string') {
3891
3912
  // Check if it's a column reference or literal SQL
@@ -3909,7 +3930,7 @@ class PostgresDialect {
3909
3930
  return this.escapeId(attr.col);
3910
3931
  }
3911
3932
  else if (this.isLiteralExpression(attr)) {
3912
- return attr.sql;
3933
+ return this.literalSql(attr);
3913
3934
  }
3914
3935
  else if (typeof attr === 'string') {
3915
3936
  // Plain column name
@@ -3950,7 +3971,7 @@ class PostgresDialect {
3950
3971
  sql = this.escapeId(expr.col);
3951
3972
  }
3952
3973
  else if (this.isLiteralExpression(expr)) {
3953
- sql = expr.sql;
3974
+ sql = this.literalSql(expr);
3954
3975
  }
3955
3976
  else if (typeof expr === 'string') {
3956
3977
  sql = this.escapeId(expr);
@@ -3971,7 +3992,7 @@ class PostgresDialect {
3971
3992
  return this.escapeId(field.col);
3972
3993
  }
3973
3994
  else if (this.isLiteralExpression(field)) {
3974
- return field.sql;
3995
+ return this.literalSql(field);
3975
3996
  }
3976
3997
  else if (typeof field === 'string') {
3977
3998
  if (field.includes('.')) {
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Dialect-agnostic fallback implementation of `Dialect.queryStream()`.
3
+ *
4
+ * Dialects whose driver exposes a real server-side cursor (postgres, mysql,
5
+ * cockroachdb) implement `queryStream` natively for true constant-memory
6
+ * streaming. Every other dialect uses `createPaginatedQueryStream()` here:
7
+ * it pages through the query via repeated `LIMIT`/`OFFSET`-equivalent
8
+ * queries (one dialect-appropriate page-clause per round trip, built with
9
+ * the dialect's own `buildLimitOffset()` by default), instead of loading the
10
+ * whole result set into memory at once. It's not as fast as a native cursor
11
+ * for very large result sets — each page is a fresh query — but it's
12
+ * correct on every dialect that can run a `SELECT * FROM (<sql>) AS alias`
13
+ * wrapped subquery with a trailing pagination clause, which is effectively
14
+ * all of them.
15
+ */
16
+ import { Readable } from 'stream';
17
+ import type { StreamOptions } from '../types';
18
+ /**
19
+ * Minimal shape this helper needs from a dialect — narrower than the full
20
+ * `Dialect` interface so it can be unit tested with a stub.
21
+ */
22
+ export interface StreamableDialect {
23
+ query(sql: string, options?: any): Promise<{
24
+ rows: any[];
25
+ }>;
26
+ buildLimitOffset(limit?: number | string, offset?: number | string): string;
27
+ }
28
+ /**
29
+ * Build the SQL for one page of a paginated stream. Exposed separately from
30
+ * `createPaginatedQueryStream()` so dialects with an unusual pagination
31
+ * syntax (see `createOracleQueryStream()`) can supply their own page-builder
32
+ * while still reusing the shared stream/backpressure/model-mapping logic.
33
+ */
34
+ export declare function buildPaginatedPageQuery(dialect: Pick<StreamableDialect, 'buildLimitOffset'>, sql: string, limit: number, offset: number): string;
35
+ /**
36
+ * Generic LIMIT/OFFSET-paginated `queryStream` fallback. Suitable for any
37
+ * dialect whose `buildLimitOffset()` returns a self-sufficient trailing
38
+ * clause (sqlite, mariadb, redshift, snowflake, clickhouse, duckdb, hana,
39
+ * spanner, mssql, db2 all qualify — mssql's own `buildLimitOffset` already
40
+ * injects a no-op `ORDER BY` when none is supplied, so it works unmodified
41
+ * here).
42
+ */
43
+ export declare function createPaginatedQueryStream(dialect: StreamableDialect, sql: string, options?: StreamOptions): Readable;
44
+ /**
45
+ * Oracle-specific streaming. Oracle's `buildLimitOffset()` returns a bare
46
+ * `WHERE ROWNUM <= n` fragment that only limits the *first* n rows of the
47
+ * result set — it doesn't skip the first `offset` rows, so wrapping it the
48
+ * same way as `createPaginatedQueryStream()` would return the same leading
49
+ * rows on every page instead of paging forward. Rather than depend on that,
50
+ * this builds the standard "windowed ROWNUM" pagination idiom directly,
51
+ * which is correct for offset+limit on any Oracle version (no dependency on
52
+ * 12c's OFFSET/FETCH syntax):
53
+ *
54
+ * SELECT * FROM (
55
+ * SELECT a.*, ROWNUM rnum FROM (<sql>) a WHERE ROWNUM <= :offset + :limit
56
+ * ) WHERE rnum > :offset
57
+ */
58
+ export declare function createOracleQueryStream(dialect: Pick<StreamableDialect, 'query'>, sql: string, options?: StreamOptions): Readable;
@@ -0,0 +1,430 @@
1
+ /**
2
+ * QuestDB dialect implementation for the TypeScript ORM
3
+ *
4
+ * QuestDB is a high-performance, column-oriented time-series database that
5
+ * speaks the PostgreSQL wire protocol, so this dialect extends
6
+ * `PostgresDialect` and reuses the exact same `pg` driver. Everything is
7
+ * inherited from Postgres except the handful of areas where QuestDB's SQL
8
+ * dialect genuinely diverges. The notable differences this subclass models:
9
+ *
10
+ * - Default SQL port is 8812 (QuestDB's `pgwire` port), not Postgres's 5432.
11
+ *
12
+ * - Designated timestamp + partitioning. Time-series tables in QuestDB elect
13
+ * one `TIMESTAMP` column as the "designated timestamp" and are physically
14
+ * partitioned by a time unit:
15
+ * `CREATE TABLE t (...) TIMESTAMP(ts) PARTITION BY DAY`
16
+ * Supported partition units are `NONE | YEAR | MONTH | DAY | HOUR` (WEEK is
17
+ * also accepted by QuestDB but rarely used). These are supplied via the
18
+ * table options (`timestamp` + `partitionBy`).
19
+ *
20
+ * - `SYMBOL` type for low-cardinality repeated strings (e.g. ticker symbols,
21
+ * device ids). QuestDB stores SYMBOLs as an interned dictionary of ints,
22
+ * which is far more compact/faster than STRING for repeated values. Columns
23
+ * can opt into `SYMBOL CAPACITY n` (dictionary size hint) and `CACHE`
24
+ * (keep the dictionary in memory).
25
+ *
26
+ * - WAL tables. Partitioned tables can be created with a write-ahead log
27
+ * (`WAL`, the default in modern QuestDB) or without it (`BYPASS WAL`).
28
+ *
29
+ * - No traditional constraints. QuestDB has NO PRIMARY KEY, NO FOREIGN KEY,
30
+ * NO UNIQUE, NO NOT NULL and NO DEFAULT clauses in `CREATE TABLE` — those
31
+ * concepts don't exist in the engine, so they are deliberately omitted from
32
+ * the generated DDL. Row de-duplication is instead expressed with a
33
+ * `DEDUP UPSERT KEYS(...)` clause (WAL tables only), which upserts rows that
34
+ * share the given key columns (the designated timestamp must be one of
35
+ * them).
36
+ *
37
+ * - Type mapping. QuestDB's type names differ from Postgres's:
38
+ * INTEGER -> INT, BIGINT -> LONG, FLOAT -> FLOAT, DOUBLE -> DOUBLE,
39
+ * BOOLEAN -> BOOLEAN, STRING/TEXT/CHAR -> STRING, SYMBOL -> SYMBOL,
40
+ * DATE/DATETIME/TIME -> TIMESTAMP, BLOB -> BINARY, UUID -> UUID.
41
+ *
42
+ * The core DDL builder here (`buildCreateTableSQL`) is a pure, synchronous
43
+ * function that returns the SQL string, so it can be unit-tested without a
44
+ * live connection; `createTable()` simply runs it through the inherited
45
+ * `query()`.
46
+ *
47
+ * @see https://questdb.io/docs/
48
+ */
49
+ import { PostgresDialect, PostgresDialectOptions } from '../postgres/index';
50
+ import { ColumnDefinition, TableOptions, InsertOptions, UpsertQueryOptions, UpdateOptions, DeleteOptions, IndexOptions, IndexDefinition, DropIndexOptions, ConstraintDefinition, TableDescription } from '../dialect';
51
+ import { DataType, WhereOptions, Order } from '../../types';
52
+ /**
53
+ * The time unit a QuestDB table is partitioned by. `NONE` produces an
54
+ * unpartitioned table (still allowed to have a designated timestamp).
55
+ * @see https://questdb.io/docs/concept/partitions/
56
+ */
57
+ export type QuestDBPartitionUnit = 'NONE' | 'YEAR' | 'MONTH' | 'DAY' | 'HOUR' | 'WEEK';
58
+ /**
59
+ * QuestDB-specific per-column options layered on top of the shared
60
+ * {@link ColumnDefinition}. Not part of the cross-dialect column type, so
61
+ * callers targeting QuestDB pass these alongside the common column definition.
62
+ */
63
+ export interface QuestDBColumnOptions {
64
+ /**
65
+ * Emit this column as a `SYMBOL` (QuestDB's interned low-cardinality string
66
+ * type) regardless of its declared `type`. Equivalent to using a data type
67
+ * whose `key` is `'SYMBOL'`.
68
+ */
69
+ symbol?: boolean;
70
+ /** `SYMBOL CAPACITY n` — hint for the expected number of distinct values. */
71
+ symbolCapacity?: number;
72
+ /** `CACHE` — keep the symbol dictionary in memory for faster reads. */
73
+ symbolCache?: boolean;
74
+ }
75
+ /**
76
+ * QuestDB-specific table options layered on top of the shared
77
+ * {@link TableOptions}. `partitionBy` is narrowed to QuestDB's time units.
78
+ */
79
+ export interface QuestDBTableOptions {
80
+ /**
81
+ * Name of the column to elect as the table's designated timestamp. Required
82
+ * for time-partitioned tables and for `DEDUP`. Emits `TIMESTAMP(col)`.
83
+ */
84
+ timestamp?: string;
85
+ /**
86
+ * Partition unit. Only emitted when a designated {@link timestamp} is set
87
+ * (QuestDB only partitions tables that have a designated timestamp).
88
+ * @default 'NONE'
89
+ */
90
+ partitionBy?: QuestDBPartitionUnit;
91
+ /**
92
+ * Write-ahead-log setting for a partitioned table: `true` -> `WAL`,
93
+ * `false` -> `BYPASS WAL`. When omitted, QuestDB's server default applies
94
+ * and no WAL clause is emitted.
95
+ */
96
+ wal?: boolean;
97
+ /**
98
+ * `DEDUP UPSERT KEYS(...)` columns. When present, QuestDB de-duplicates rows
99
+ * sharing these key values (WAL tables only). The designated timestamp must
100
+ * be included in the key set.
101
+ */
102
+ dedupUpsertKeys?: string[];
103
+ }
104
+ /**
105
+ * Options for a QuestDB `SAMPLE BY` time-bucketing clause — the headline
106
+ * QuestDB time-series aggregation that groups rows into fixed time intervals.
107
+ * @see https://questdb.io/docs/reference/sql/sample-by/
108
+ */
109
+ export interface QuestDBSampleByOptions {
110
+ /** SAMPLE BY interval, e.g. `'5m'`, `'1h'`, `'1d'`, `'30s'`. */
111
+ interval: string;
112
+ /**
113
+ * `FILL(...)` strategy for gaps in the sampled series. Accepts a keyword
114
+ * (`'NONE' | 'NULL' | 'PREV' | 'LINEAR'`), a constant value, or a list of
115
+ * per-aggregate strategies/values (e.g. `['NULL', 21.5]`).
116
+ */
117
+ fill?: 'NONE' | 'NULL' | 'PREV' | 'LINEAR' | number | Array<number | 'NULL' | 'PREV' | 'LINEAR'>;
118
+ /** `ALIGN TO CALENDAR` or `ALIGN TO FIRST OBSERVATION`. */
119
+ alignTo?: 'CALENDAR' | 'FIRST OBSERVATION';
120
+ /** Time zone for `ALIGN TO CALENDAR`, e.g. `'Europe/London'`. */
121
+ timeZone?: string;
122
+ /** Offset for `ALIGN TO CALENDAR`, e.g. `'00:30'`. */
123
+ offset?: string;
124
+ /** Lower time bound (`SAMPLE BY ... FROM ts`). */
125
+ from?: string;
126
+ /** Upper time bound (`SAMPLE BY ... TO ts`). */
127
+ to?: string;
128
+ }
129
+ /**
130
+ * A QuestDB partition selector for partition-level DDL (drop/detach/attach).
131
+ * QuestDB removes/moves whole time partitions rather than individual rows.
132
+ * @see https://questdb.io/docs/reference/sql/alter-table-drop-partition/
133
+ */
134
+ export interface QuestDBPartitionSpec {
135
+ /**
136
+ * Explicit partition boundary values, e.g. `['2023-01-01', '2023-01-02']`,
137
+ * emitting `... PARTITION LIST '2023-01-01', '2023-01-02'`.
138
+ */
139
+ list?: string[];
140
+ /**
141
+ * A predicate over the designated timestamp, e.g.
142
+ * `"timestamp < '2023-01-01'"`, emitting `... PARTITION WHERE <predicate>`.
143
+ * Only valid for DROP (not ATTACH).
144
+ */
145
+ where?: string;
146
+ }
147
+ /**
148
+ * QuestDB dialect class. Extends the PostgreSQL dialect (QuestDB is
149
+ * PG-wire-compatible) and overrides only the CREATE TABLE DDL and the type
150
+ * mapping to reflect QuestDB's time-series-specific SQL.
151
+ */
152
+ export declare class QuestDBDialect extends PostgresDialect {
153
+ readonly name = "questdb";
154
+ constructor(config?: PostgresDialectOptions);
155
+ /**
156
+ * Build the column fragment for a single column, honouring QuestDB's
157
+ * `SYMBOL [CAPACITY n] [CACHE]` syntax and deliberately omitting the
158
+ * PRIMARY KEY / UNIQUE / FOREIGN KEY / NOT NULL / DEFAULT clauses that
159
+ * QuestDB does not support in CREATE TABLE.
160
+ */
161
+ private buildQuestColumnSql;
162
+ /**
163
+ * Pure, synchronous builder for a QuestDB `CREATE TABLE` statement. Returns
164
+ * the SQL string so it can be unit-tested without a database connection.
165
+ *
166
+ * Emits, in order:
167
+ * CREATE TABLE [IF NOT EXISTS] name (cols...)
168
+ * [TIMESTAMP(designated) PARTITION BY UNIT [WAL|BYPASS WAL]]
169
+ * [DEDUP UPSERT KEYS(...)]
170
+ */
171
+ buildCreateTableSQL(tableName: string, columns: Record<string, ColumnDefinition & QuestDBColumnOptions>, options?: TableOptions & QuestDBTableOptions): string;
172
+ /**
173
+ * Create a new table using QuestDB's CREATE TABLE grammar. Delegates SQL
174
+ * construction to the synchronous {@link buildCreateTableSQL} and runs it
175
+ * through the inherited `query()`.
176
+ */
177
+ createTable(tableName: string, columns: Record<string, ColumnDefinition & QuestDBColumnOptions>, options?: TableOptions & QuestDBTableOptions): Promise<void>;
178
+ /**
179
+ * Map an ORM data type to QuestDB's type name. QuestDB's type vocabulary
180
+ * differs from PostgreSQL's, so this overrides the inherited mapping.
181
+ * @see https://questdb.io/docs/reference/sql/datatypes/
182
+ */
183
+ getDataTypeSql(dataType: DataType): string;
184
+ /**
185
+ * Build a QuestDB `LIMIT` clause. QuestDB does NOT support the SQL-standard
186
+ * `OFFSET` keyword; instead it uses:
187
+ * - `LIMIT n` — first `n` rows (or last `n` when negative).
188
+ * - `LIMIT lo, hi` — rows in the half-open range `(lo, hi]`, which is how
189
+ * an offset is expressed. To skip `offset` rows and
190
+ * return `limit` of them we emit `LIMIT offset, offset+limit`.
191
+ *
192
+ * @see https://questdb.io/docs/reference/sql/limit/
193
+ */
194
+ buildLimitOffset(limit?: number | string, offset?: number | string): string;
195
+ /**
196
+ * Build a QuestDB `INSERT`. QuestDB has **no** `ON CONFLICT` clause (row
197
+ * de-duplication is configured on the table via `DEDUP UPSERT KEYS(...)` at
198
+ * `CREATE TABLE` time) and **no** `RETURNING` clause, so both are omitted —
199
+ * any `upsert`/`conflictFields`/`returning` options are ignored here.
200
+ */
201
+ buildInsertQuery(tableName: string, values: Record<string, unknown>, _options?: InsertOptions): {
202
+ sql: string;
203
+ values: unknown[];
204
+ };
205
+ /**
206
+ * QuestDB has no `INSERT ... ON CONFLICT DO UPDATE`. The closest concept is a
207
+ * table-level `DEDUP UPSERT KEYS(...)` declaration, after which a plain
208
+ * `INSERT` transparently upserts rows sharing the dedup keys. This therefore
209
+ * emits a bare `INSERT` (no `ON CONFLICT`, no `RETURNING`); `conflictFields`
210
+ * and `updateOnDuplicate` are ignored because QuestDB resolves conflicts from
211
+ * the table's DEDUP configuration, not the statement.
212
+ */
213
+ buildUpsertQuery(tableName: string, values: Record<string, unknown>, _options?: UpsertQueryOptions): {
214
+ sql: string;
215
+ values: unknown[];
216
+ };
217
+ /**
218
+ * Build a QuestDB `UPDATE`. QuestDB supports `UPDATE t SET ... WHERE ...` but
219
+ * does NOT support `LIMIT` on updates nor a `RETURNING` clause, so those
220
+ * options are omitted.
221
+ * @see https://questdb.io/docs/reference/sql/update/
222
+ */
223
+ buildUpdateQuery(tableName: string, values: Record<string, unknown>, where: WhereOptions, _options?: UpdateOptions): {
224
+ sql: string;
225
+ values: unknown[];
226
+ };
227
+ /**
228
+ * Build a QuestDB "delete". IMPORTANT: QuestDB does **not** support
229
+ * row-level `DELETE`. Bulk removal is done by dropping whole time partitions
230
+ * (`ALTER TABLE t DROP PARTITION ...`) or emptying the table
231
+ * (`TRUNCATE TABLE t`). Accordingly:
232
+ * - `options.truncate` produces a valid `TRUNCATE TABLE t` statement.
233
+ * - Any other call throws, because emitting a `DELETE ... WHERE ...` that
234
+ * the server will reject would be misleading. Callers wanting to remove
235
+ * a time range should drop the relevant partition(s) via raw SQL / the
236
+ * partition APIs instead.
237
+ * @see https://questdb.io/docs/reference/sql/alter-table-drop-partition/
238
+ */
239
+ buildDeleteQuery(tableName: string, _where: WhereOptions, options?: DeleteOptions): {
240
+ sql: string;
241
+ values: unknown[];
242
+ };
243
+ /**
244
+ * Pure builder for `ALTER TABLE t ADD COLUMN name type` (testable without a
245
+ * connection). QuestDB supports adding a column but NOT the per-column
246
+ * constraints (NOT NULL / DEFAULT / PRIMARY KEY / UNIQUE / REFERENCES) that
247
+ * the Postgres builder would emit, so this reuses the QuestDB column builder.
248
+ */
249
+ buildAddColumnSQL(tableName: string, columnName: string, definition: ColumnDefinition & QuestDBColumnOptions): string;
250
+ /**
251
+ * Add a column. Overridden so QuestDB's constraint-free `ADD COLUMN` grammar
252
+ * (and SYMBOL support) is used rather than the inherited Postgres one.
253
+ */
254
+ addColumn(tableName: string, columnName: string, definition: ColumnDefinition & QuestDBColumnOptions): Promise<void>;
255
+ /**
256
+ * Pure builder for a QuestDB SYMBOL-column index. QuestDB has no
257
+ * PostgreSQL-style `CREATE INDEX`; indexes exist only on `SYMBOL` columns and
258
+ * are added via `ALTER TABLE t ALTER COLUMN col ADD INDEX [CAPACITY n]`.
259
+ * @see https://questdb.io/docs/reference/sql/alter-table-alter-column-add-index/
260
+ */
261
+ buildAddIndexSQL(tableName: string, column: string, capacity?: number): string;
262
+ /**
263
+ * Pure builder for dropping a QuestDB SYMBOL index:
264
+ * `ALTER TABLE t ALTER COLUMN col DROP INDEX`.
265
+ */
266
+ buildDropIndexSQL(tableName: string, column: string): string;
267
+ /**
268
+ * Add an index. In QuestDB an "index" is a SYMBOL-column index, so each field
269
+ * is indexed with its own `ALTER COLUMN ... ADD INDEX`. The `indexName` and
270
+ * PG-only options (unique/using/expression/where/include) have no meaning and
271
+ * are ignored.
272
+ */
273
+ addIndex(tableName: string, _indexName: string, fields?: string[], options?: IndexOptions & {
274
+ capacity?: number;
275
+ }): Promise<void>;
276
+ /**
277
+ * Create an index (SYMBOL-column index) from an {@link IndexDefinition}.
278
+ */
279
+ createIndex(tableName: string, indexDef: IndexDefinition & {
280
+ capacity?: number;
281
+ }): Promise<void>;
282
+ /**
283
+ * Remove an index. QuestDB drops the index off the SYMBOL column, so the
284
+ * `indexName` argument is interpreted as the column name.
285
+ */
286
+ removeIndex(tableName: string, columnName: string): Promise<void>;
287
+ dropIndex(tableName: string, columnName: string, _options?: DropIndexOptions): Promise<void>;
288
+ /**
289
+ * Pure builder for `RENAME TABLE old TO new`. QuestDB renames tables with a
290
+ * dedicated `RENAME TABLE` statement, NOT `ALTER TABLE ... RENAME TO`.
291
+ * @see https://questdb.io/docs/reference/sql/rename/
292
+ */
293
+ buildRenameTableSQL(oldName: string, newName: string): string;
294
+ renameTable(oldName: string, newName: string): Promise<void>;
295
+ addForeignKey(): Promise<void>;
296
+ addConstraint(): Promise<void>;
297
+ createConstraint(_tableName: string, _constraintDef: ConstraintDefinition): Promise<void>;
298
+ /**
299
+ * Pure builder for QuestDB's narrow column-type alteration:
300
+ * `ALTER TABLE t ALTER COLUMN c TYPE <newType>`
301
+ * QuestDB supports changing a column's type (e.g. SYMBOL <-> VARCHAR/STRING,
302
+ * widening numerics) but has NO NOT NULL / DEFAULT concept, so any such flags
303
+ * on the definition are intentionally ignored.
304
+ * @see https://questdb.io/docs/reference/sql/alter-table-change-column-type/
305
+ */
306
+ buildChangeColumnSQL(tableName: string, columnName: string, definition: ColumnDefinition & QuestDBColumnOptions): string;
307
+ /**
308
+ * Change a column's type. Overridden so QuestDB's `ALTER COLUMN ... TYPE`
309
+ * grammar (and SYMBOL support) is used, and so the inherited Postgres
310
+ * builder's NOT NULL / DEFAULT statements — which QuestDB rejects — are not
311
+ * emitted.
312
+ */
313
+ changeColumn(tableName: string, columnName: string, definition: ColumnDefinition & QuestDBColumnOptions): Promise<void>;
314
+ /**
315
+ * Pure builder for `ALTER TABLE t DEDUP ENABLE UPSERT KEYS(...)`. Enables
316
+ * row de-duplication on an existing WAL table (the designated timestamp must
317
+ * be one of the keys). This is QuestDB's equivalent of an upsert conflict
318
+ * target, configured on the table rather than the INSERT statement.
319
+ * @see https://questdb.io/docs/reference/sql/alter-table-enable-deduplication/
320
+ */
321
+ buildEnableDedupSQL(tableName: string, upsertKeys: string[]): string;
322
+ /** Enable DEDUP UPSERT KEYS on an existing table. */
323
+ enableDedup(tableName: string, upsertKeys: string[]): Promise<void>;
324
+ /** Pure builder for `ALTER TABLE t DEDUP DISABLE`. */
325
+ buildDisableDedupSQL(tableName: string): string;
326
+ /** Disable DEDUP on an existing table. */
327
+ disableDedup(tableName: string): Promise<void>;
328
+ /** Pure builder for `ALTER TABLE t SET TYPE WAL | BYPASS WAL`. */
329
+ buildSetWalSQL(tableName: string, enabled: boolean): string;
330
+ /** Convert a table between WAL and non-WAL storage. */
331
+ setWal(tableName: string, enabled: boolean): Promise<void>;
332
+ /** Pure builder for `ALTER TABLE t RESUME WAL` (resume a suspended WAL table). */
333
+ buildResumeWalSQL(tableName: string): string;
334
+ /** Resume a suspended WAL table. */
335
+ resumeWal(tableName: string): Promise<void>;
336
+ /**
337
+ * Pure builder for `ALTER TABLE t DROP PARTITION LIST ... | WHERE ...`.
338
+ * QuestDB deletes data by dropping whole time partitions.
339
+ * @see https://questdb.io/docs/reference/sql/alter-table-drop-partition/
340
+ */
341
+ buildDropPartitionSQL(tableName: string, spec: QuestDBPartitionSpec): string;
342
+ /** Drop one or more time partitions. */
343
+ dropPartitions(tableName: string, spec: QuestDBPartitionSpec): Promise<void>;
344
+ /**
345
+ * Pure builder for `ALTER TABLE t DETACH PARTITION LIST ... | WHERE ...`.
346
+ * Detaches partitions so they can be archived/moved and later re-attached.
347
+ * @see https://questdb.io/docs/reference/sql/alter-table-detach-partition/
348
+ */
349
+ buildDetachPartitionSQL(tableName: string, spec: QuestDBPartitionSpec): string;
350
+ /** Detach one or more time partitions. */
351
+ detachPartitions(tableName: string, spec: QuestDBPartitionSpec): Promise<void>;
352
+ /**
353
+ * Pure builder for `ALTER TABLE t ATTACH PARTITION LIST ...`. Re-attaches
354
+ * previously detached partitions (list form only — WHERE is not valid here).
355
+ * @see https://questdb.io/docs/reference/sql/alter-table-attach-partition/
356
+ */
357
+ buildAttachPartitionSQL(tableName: string, list: string[]): string;
358
+ /** Attach one or more previously detached time partitions. */
359
+ attachPartitions(tableName: string, list: string[]): Promise<void>;
360
+ /**
361
+ * QuestDB partitions are NOT standalone tables (unlike PostgreSQL declarative
362
+ * partitions), so the inherited `dropPartition(name)` — which issues
363
+ * `DROP TABLE name` — does not apply. Fail loudly with guidance to the
364
+ * QuestDB-correct partition API rather than silently dropping a whole table.
365
+ */
366
+ dropPartition(): Promise<void>;
367
+ /**
368
+ * Build a QuestDB `SAMPLE BY` clause (leading space included) with optional
369
+ * `FROM`/`TO` bounds, `FILL(...)`, and `ALIGN TO` handling.
370
+ */
371
+ buildSampleByClause(opts: QuestDBSampleByOptions): string;
372
+ /**
373
+ * Build a QuestDB `LATEST ON ts PARTITION BY col[, ...]` clause (leading
374
+ * space included). Returns, per partition, the most recent row by the
375
+ * designated timestamp.
376
+ * @see https://questdb.io/docs/reference/sql/latest-on/
377
+ */
378
+ buildLatestOnClause(tsColumn: string, partitionBy: string | string[]): string;
379
+ /**
380
+ * Build a full QuestDB time-series `SELECT` with `SAMPLE BY` and/or
381
+ * `LATEST ON` support, which the cross-dialect {@link buildSelectQuery} (and
382
+ * the shared {@link SelectOptions}) has no representation for. Clause order:
383
+ * SELECT ... FROM t [WHERE ...] [LATEST ON ...] [SAMPLE BY ... FILL ... ALIGN]
384
+ * [GROUP BY ...] [ORDER BY ...] [LIMIT ...]
385
+ *
386
+ * `attributes` are treated as raw column/aggregate expressions (e.g.
387
+ * `['ts', 'avg(price) AS avg_price']`) so callers can use QuestDB aggregate
388
+ * functions directly.
389
+ */
390
+ buildSampleBySelect(options: {
391
+ tableName: string;
392
+ attributes?: string[];
393
+ where?: WhereOptions;
394
+ latestOn?: {
395
+ timestamp: string;
396
+ partitionBy: string | string[];
397
+ };
398
+ sampleBy?: QuestDBSampleByOptions;
399
+ group?: string | string[];
400
+ order?: Order;
401
+ limit?: number | string;
402
+ offset?: number | string;
403
+ }): {
404
+ sql: string;
405
+ values: unknown[];
406
+ };
407
+ /** List all tables via QuestDB's `SHOW TABLES`. */
408
+ showTables(): Promise<string[]>;
409
+ /**
410
+ * Describe a table via `SHOW COLUMNS FROM t`. QuestDB has no NOT NULL /
411
+ * DEFAULT / auto-increment concepts, so those fields are reported as
412
+ * permissive defaults.
413
+ */
414
+ describeTable(tableName: string): Promise<TableDescription>;
415
+ /**
416
+ * Show indexes via `SHOW COLUMNS FROM t`. In QuestDB an "index" exists only
417
+ * on a SYMBOL column, surfaced by the `indexed` flag of each column.
418
+ */
419
+ showIndexes(tableName: string): Promise<any[]>;
420
+ /**
421
+ * QuestDB has no relational constraints (PRIMARY KEY / FOREIGN KEY / UNIQUE /
422
+ * CHECK), so there are never any constraints to report.
423
+ */
424
+ showConstraints(): Promise<any[]>;
425
+ }
426
+ /**
427
+ * Create a new QuestDB dialect instance.
428
+ */
429
+ export declare function createQuestDBDialect(options?: PostgresDialectOptions): QuestDBDialect;
430
+ export default QuestDBDialect;