ts-prorm-orm 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +711 -0
  239. package/dist/index.js +19 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Exasol dialect implementation for the TypeScript ORM.
3
+ *
4
+ * Exasol is an in-memory, column-oriented, massively-parallel (MPP) analytic
5
+ * database. Its SQL grammar and wire behavior are close enough to PostgreSQL
6
+ * that this dialect extends {@link PostgresDialect} and reuses the pg-style
7
+ * grammar (double-quoted identifiers, `$1` placeholders, `ON CONFLICT`-free
8
+ * INSERTs, etc.) as its base, overriding only the places where Exasol really
9
+ * differs. Notable differences from PostgreSQL captured here:
10
+ *
11
+ * - Default SQL port is 8563 (not 5432).
12
+ * - CREATE TABLE supports MPP distribution/partitioning clauses:
13
+ * `... DISTRIBUTE BY col1, col2` controls how rows are hash-distributed
14
+ * across cluster nodes, and `... PARTITION BY col` controls on-disk
15
+ * partitioning within a node. Both are surfaced via table options and
16
+ * emitted as trailing clauses.
17
+ * - No SERIAL / BIGSERIAL. Auto-increment columns use an `IDENTITY` column
18
+ * constraint on a numeric (DECIMAL) column instead.
19
+ * - Type mapping differs: TEXT maps to `VARCHAR(2000000)` (Exasol's max
20
+ * VARCHAR width), STRING to `VARCHAR(n)`, integers to `DECIMAL(18,0)`
21
+ * (Exasol has no native narrow integer types — everything numeric is a
22
+ * DECIMAL), and DECIMAL(p,s)/BOOLEAN/TIMESTAMP map straight through.
23
+ * - Bulk load/unload uses Exasol's `IMPORT` / `EXPORT` statements against a
24
+ * file/connection endpoint rather than PostgreSQL's `COPY`.
25
+ * - Exasol upper-cases unquoted identifiers (like Oracle). This dialect quotes
26
+ * identifiers with double quotes (inherited from PostgresDialect), so the
27
+ * ORM's mixed-case names are preserved exactly rather than being folded to
28
+ * upper case.
29
+ * - Exasol has **no `RETURNING` clause** on INSERT/UPDATE/DELETE and **no
30
+ * `ON CONFLICT`**. So the write builders inherited from PostgresDialect
31
+ * (`buildInsertQuery`, `buildUpdateQuery`, `buildDeleteQuery`,
32
+ * `buildUpsertQuery`) are overridden here to strip `RETURNING` and to express
33
+ * upserts as a `MERGE INTO ... USING (SELECT ...) ON (...) WHEN MATCHED /
34
+ * WHEN NOT MATCHED` statement instead.
35
+ * - Plain SELECT (WHERE, ORDER BY, GROUP BY / HAVING, JOIN, `LIMIT ... OFFSET`)
36
+ * and `buildLimitOffset` are inherited unchanged: Exasol's SELECT grammar
37
+ * matches the PostgreSQL forms the base emits, including `LIMIT n OFFSET m`.
38
+ *
39
+ * Placeholders: this dialect keeps the PostgreSQL `$n` positional style so it
40
+ * composes with the rest of the ORM's parameter handling. Exasol's own JDBC/
41
+ * WebSocket drivers use `?`; a live driver binding would translate accordingly.
42
+ */
43
+ import { PostgresDialect, PostgresDialectOptions } from '../postgres';
44
+ import { ColumnDefinition, TableOptions, InsertOptions, UpsertQueryOptions, UpdateOptions, DeleteOptions } from '../dialect';
45
+ import { DataType } from '../../types';
46
+ /**
47
+ * Exasol-specific table options. Adds the MPP `DISTRIBUTE BY` and `PARTITION BY`
48
+ * clauses. `partitionBy` is redeclared here (widened to accept a column list)
49
+ * so it can name one or more columns rather than the base string-only form.
50
+ */
51
+ export interface ExasolTableOptions extends Omit<TableOptions, 'partitionBy'> {
52
+ /** Columns to hash-distribute rows across cluster nodes (`DISTRIBUTE BY ...`). */
53
+ distributeBy?: string | string[];
54
+ /** Columns to partition table storage by within a node (`PARTITION BY ...`). */
55
+ partitionBy?: string | string[];
56
+ }
57
+ /**
58
+ * Options for building an Exasol `IMPORT` / `EXPORT` statement.
59
+ */
60
+ export interface ExasolImportExportOptions {
61
+ /** Source/target file format. Defaults to `'CSV'`. */
62
+ format?: 'CSV' | 'FBV';
63
+ /** The `AT '<connection-or-url>'` endpoint (e.g. an FTP/HTTP/S3 URL or connection name). */
64
+ at: string;
65
+ /** The `FILE '<path>'` to read from / write to at the endpoint. */
66
+ file: string;
67
+ }
68
+ /**
69
+ * Exasol dialect. Extends {@link PostgresDialect}; see the file header for the
70
+ * list of Exasol-specific behaviors.
71
+ */
72
+ export declare class ExasolDialect extends PostgresDialect {
73
+ readonly name = "exasol";
74
+ constructor(config: PostgresDialectOptions);
75
+ /**
76
+ * Map an ORM data type to its Exasol SQL type. Overrides the Postgres
77
+ * mapping for the types that differ on Exasol:
78
+ * - TEXT -> VARCHAR(2000000) (Exasol's max VARCHAR width; no TEXT type)
79
+ * - STRING -> VARCHAR(n)
80
+ * - INTEGER -> DECIMAL(18,0) (no SERIAL; IDENTITY is applied separately)
81
+ * - BIGINT -> DECIMAL(36,0)
82
+ * - DECIMAL -> DECIMAL(p,s)
83
+ * - BOOLEAN -> BOOLEAN
84
+ * - DATE -> TIMESTAMP
85
+ * Everything else delegates to the PostgreSQL mapping.
86
+ */
87
+ getDataTypeSql(dataType: DataType): string;
88
+ /**
89
+ * Format a single column's definition for CREATE TABLE. Emits `IDENTITY`
90
+ * (rather than SERIAL) for auto-increment columns.
91
+ */
92
+ private buildColumnSql;
93
+ /** Format a DEFAULT value literal for a column definition. */
94
+ private formatDefault;
95
+ /** Render a `DISTRIBUTE BY` / `PARTITION BY` column list. */
96
+ private columnList;
97
+ /**
98
+ * Build a `CREATE TABLE` statement, including Exasol's MPP `DISTRIBUTE BY`
99
+ * and `PARTITION BY` clauses. Exposed synchronously so the emitted SQL can be
100
+ * built (and tested) without a live connection.
101
+ */
102
+ buildCreateTableSQL(tableName: string, columns: Record<string, ColumnDefinition>, options?: ExasolTableOptions): string;
103
+ /**
104
+ * Create a table. Overrides the Postgres implementation to emit Exasol's
105
+ * IDENTITY columns and `DISTRIBUTE BY` / `PARTITION BY` clauses.
106
+ */
107
+ createTable(tableName: string, columns: Record<string, ColumnDefinition>, options?: ExasolTableOptions): Promise<void>;
108
+ /**
109
+ * Add a column. Overrides the Postgres implementation, which would emit a
110
+ * `SERIAL` for auto-increment columns; Exasol uses `IDENTITY` instead (see
111
+ * {@link buildColumnSql}). Exasol accepts the optional `COLUMN` keyword.
112
+ */
113
+ addColumn(tableName: string, columnName: string, definition: ColumnDefinition): Promise<void>;
114
+ /**
115
+ * Change a column's type. Exasol uses `ALTER TABLE ... MODIFY COLUMN col type`
116
+ * rather than PostgreSQL's `ALTER COLUMN col TYPE type`.
117
+ */
118
+ changeColumn(tableName: string, columnName: string, definition: ColumnDefinition): Promise<void>;
119
+ /**
120
+ * Build an INSERT. Same as the PostgreSQL base but Exasol has no `RETURNING`
121
+ * clause, and upserts are expressed as a `MERGE` (Exasol has no
122
+ * `ON CONFLICT`). When `options.upsert` is set this delegates to
123
+ * {@link buildMergeSQL}; the `returning` option is ignored.
124
+ */
125
+ buildInsertQuery(tableName: string, values: Record<string, unknown>, options?: InsertOptions): {
126
+ sql: string;
127
+ values: unknown[];
128
+ };
129
+ /**
130
+ * Build an UPSERT as an Exasol `MERGE` statement. Exasol has no
131
+ * `INSERT ... ON CONFLICT`.
132
+ */
133
+ buildUpsertQuery(tableName: string, values: Record<string, unknown>, options?: UpsertQueryOptions): {
134
+ sql: string;
135
+ values: unknown[];
136
+ };
137
+ /**
138
+ * Build the Exasol `MERGE INTO ... USING (SELECT ...) ON (...)` statement that
139
+ * implements an upsert for a single row of `values`.
140
+ *
141
+ * The row is presented as a one-row derived source via a FROM-less
142
+ * `SELECT $1 AS "col", ...` (Exasol permits SELECT without FROM). Rows are
143
+ * matched on `conflictFields`; matched rows are updated (excluding the
144
+ * conflict columns, which Exasol forbids updating because they appear in the
145
+ * `ON` condition) and unmatched rows are inserted.
146
+ */
147
+ buildMergeSQL(tableName: string, values: Record<string, unknown>, options?: {
148
+ conflictFields?: string[];
149
+ updateOnDuplicate?: string[];
150
+ }): {
151
+ sql: string;
152
+ values: unknown[];
153
+ };
154
+ /**
155
+ * Build an UPDATE. Same as the PostgreSQL base, but Exasol supports neither a
156
+ * `RETURNING` clause nor a `LIMIT` on UPDATE, so both are stripped from the
157
+ * options before delegating.
158
+ */
159
+ buildUpdateQuery(tableName: string, values: Record<string, unknown>, where: Parameters<PostgresDialect['buildUpdateQuery']>[2], options?: UpdateOptions): {
160
+ sql: string;
161
+ values: unknown[];
162
+ };
163
+ /**
164
+ * Build a DELETE. Exasol has no `RETURNING` and no `LIMIT` on DELETE, so both
165
+ * are stripped; `truncate` (which maps to `TRUNCATE TABLE`) is preserved.
166
+ */
167
+ buildDeleteQuery(tableName: string, where: Parameters<PostgresDialect['buildDeleteQuery']>[1], options?: DeleteOptions): {
168
+ sql: string;
169
+ values: unknown[];
170
+ };
171
+ /**
172
+ * Build an Exasol `IMPORT INTO <table> FROM <format> AT '<endpoint>' FILE '<path>'`
173
+ * statement for bulk-loading data. `schema` on the options, if any, is not
174
+ * used here; qualify the table name yourself if needed.
175
+ */
176
+ buildImportSQL(tableName: string, options: ExasolImportExportOptions): string;
177
+ /**
178
+ * Build an Exasol `EXPORT <table> INTO <format> AT '<endpoint>' FILE '<path>'`
179
+ * statement for bulk-unloading data.
180
+ */
181
+ buildExportSQL(tableName: string, options: ExasolImportExportOptions): string;
182
+ /**
183
+ * Execute an Exasol `IMPORT` bulk-load (see {@link buildImportSQL}). This is
184
+ * the ORM-level, no-raw-SQL entry point for loading data into a table from an
185
+ * external file/connection endpoint.
186
+ */
187
+ importData(tableName: string, options: ExasolImportExportOptions): Promise<void>;
188
+ /**
189
+ * Execute an Exasol `EXPORT` bulk-unload (see {@link buildExportSQL}).
190
+ */
191
+ exportData(tableName: string, options: ExasolImportExportOptions): Promise<void>;
192
+ }
193
+ /**
194
+ * Create a new Exasol dialect instance.
195
+ */
196
+ export declare function createExasolDialect(options?: PostgresDialectOptions): ExasolDialect;
197
+ export default ExasolDialect;
@@ -346,6 +346,20 @@ class ExasolDialect extends postgres_1.PostgresDialect {
346
346
  return (`EXPORT ${this.escapeId(tableName)} INTO ${format}` +
347
347
  ` AT '${options.at.replace(/'/g, "''")}' FILE '${options.file.replace(/'/g, "''")}'`);
348
348
  }
349
+ /**
350
+ * Execute an Exasol `IMPORT` bulk-load (see {@link buildImportSQL}). This is
351
+ * the ORM-level, no-raw-SQL entry point for loading data into a table from an
352
+ * external file/connection endpoint.
353
+ */
354
+ async importData(tableName, options) {
355
+ await this.query(this.buildImportSQL(tableName, options));
356
+ }
357
+ /**
358
+ * Execute an Exasol `EXPORT` bulk-unload (see {@link buildExportSQL}).
359
+ */
360
+ async exportData(tableName, options) {
361
+ await this.query(this.buildExportSQL(tableName, options));
362
+ }
349
363
  }
350
364
  exports.ExasolDialect = ExasolDialect;
351
365
  /**
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Firebird dialect implementation for the TypeScript ORM
3
+ *
4
+ * This dialect provides Firebird SQL generation. A real deployment would use a
5
+ * dedicated Firebird driver (e.g. `node-firebird`); here it extends the
6
+ * PostgreSQL dialect and overrides only the SQL grammar that differs, reusing
7
+ * PostgresDialect's query-builder scaffolding for everything Firebird shares
8
+ * with standard SQL.
9
+ *
10
+ * Notable Firebird SQL differences overridden below:
11
+ *
12
+ * - Row limiting: Firebird has no `LIMIT ... OFFSET ...` clause. It uses
13
+ * `SELECT FIRST n SKIP m ...` placed right after the `SELECT` keyword (e.g.
14
+ * `SELECT FIRST 10 SKIP 20 * FROM ...`). We override `buildLimitOffset` to
15
+ * emit nothing (so the base's trailing LIMIT/OFFSET disappears) and
16
+ * `buildSelectQuery` to inject the `FIRST/SKIP` fragment after the top-level
17
+ * `SELECT`. `UPDATE`/`DELETE` row limiting uses `ROWS n` (not `LIMIT n`),
18
+ * handled in `buildUpdateQuery`/`buildDeleteQuery`.
19
+ * - Upsert: Firebird has no PostgreSQL `INSERT ... ON CONFLICT`. It uses
20
+ * `UPDATE OR INSERT INTO t (...) VALUES (...) MATCHING (...)` instead, where
21
+ * `MATCHING` names the key columns (defaulting to the primary key when
22
+ * omitted). `buildUpsertQuery` and the upsert branch of `buildInsertQuery`
23
+ * emit this form. Because `UPDATE OR INSERT` always overwrites every listed
24
+ * column, `updateOnDuplicate` (a subset of columns to update) has no Firebird
25
+ * equivalent and is ignored.
26
+ * - Auto-increment: Firebird 3+ uses `GENERATED BY DEFAULT AS IDENTITY` rather
27
+ * than PostgreSQL's `SERIAL`. `getDataTypeSql` maps auto-increment
28
+ * INTEGER/BIGINT accordingly, `getIdentityColumnSql` builds a full identity
29
+ * column definition, and `createTable`/`addColumn` emit IDENTITY (not SERIAL)
30
+ * for auto-increment columns.
31
+ * - Column DDL: Firebird omits the `COLUMN` keyword in `ALTER TABLE`. Adding a
32
+ * column is `ALTER TABLE t ADD col type` and dropping is `ALTER TABLE t DROP
33
+ * col` (PostgreSQL spells these `ADD COLUMN` / `DROP COLUMN`).
34
+ * - Generators/sequences: Firebird's sequence objects are historically called
35
+ * "generators". `createGenerator(name)` emits `CREATE SEQUENCE name` (the
36
+ * modern, SQL-standard spelling Firebird accepts).
37
+ * - Type mapping: Firebird uses `BLOB SUB_TYPE TEXT` for long text (no `TEXT`
38
+ * type), `DOUBLE PRECISION`, `TIMESTAMP`, `BOOLEAN`, and `INTEGER`/`BIGINT`.
39
+ * `getDataTypeSql` overrides the relevant mappings.
40
+ * - Identifiers: Firebird upper-cases unquoted identifiers; quoting an
41
+ * identifier with double quotes makes it case-sensitive. We keep the base's
42
+ * double-quote quoting (`"identifier"`), which preserves case as written.
43
+ * - RETURNING: Firebird DOES support `RETURNING` on INSERT/UPDATE/DELETE (for
44
+ * singleton statements), so the inherited RETURNING handling is kept.
45
+ *
46
+ * The default SQL port is 3050 (Firebird's default), not PostgreSQL's 5432.
47
+ */
48
+ import { PostgresDialect, PostgresDialectOptions } from '../postgres';
49
+ import { DataType, WhereOptions, MaterializedViewOptions, RefreshOptions, DropMaterializedViewOptions, PolicyOptions, DropPolicyOptions, SequenceOptions, DropSequenceOptions } from '../../types';
50
+ import { SelectOptions, InsertOptions, UpsertQueryOptions, UpdateOptions, DeleteOptions, ColumnDefinition, TableOptions, CreateExtensionOptions, DropExtensionOptions } from '../dialect';
51
+ /**
52
+ * Firebird dialect options. Identical in shape to the PostgreSQL options (the
53
+ * dialect reuses PostgresDialect's connection scaffolding); the default port
54
+ * differs (3050).
55
+ */
56
+ export interface FirebirdDialectOptions extends PostgresDialectOptions {
57
+ }
58
+ /**
59
+ * Firebird dialect class. Extends the PostgreSQL dialect and overrides the SQL
60
+ * grammar that Firebird spells differently.
61
+ */
62
+ export declare class FirebirdDialect extends PostgresDialect {
63
+ readonly name = "firebird";
64
+ constructor(config?: FirebirdDialectOptions);
65
+ /**
66
+ * Firebird does not support a trailing `LIMIT ... OFFSET ...` clause, so we
67
+ * emit nothing here. The actual row-limiting keywords (`FIRST`/`SKIP`) are
68
+ * injected right after the `SELECT` keyword by `buildSelectQuery` below.
69
+ */
70
+ buildLimitOffset(_limit?: number | string, _offset?: number | string): string;
71
+ /**
72
+ * Build the Firebird `FIRST n SKIP m` fragment (without surrounding spaces).
73
+ * Returns an empty string when neither limit nor offset is provided.
74
+ *
75
+ * Firebird allows `SKIP` on its own (`SELECT SKIP 20 ...`), so an offset with
76
+ * no limit is emitted as just `SKIP m`. `FIRST` always precedes `SKIP`.
77
+ */
78
+ private buildFirstSkip;
79
+ /**
80
+ * Find the index just past the top-level `SELECT ` keyword in a compiled
81
+ * query so the `FIRST/SKIP` fragment can be inserted there. Scans at
82
+ * parenthesis depth 0 so that `SELECT`s inside CTEs/sub-selects (which live
83
+ * inside parentheses) are skipped and the main query's `SELECT` is targeted.
84
+ * Returns -1 if no top-level `SELECT ` is found.
85
+ */
86
+ private mainSelectInsertIndex;
87
+ /**
88
+ * Build a SELECT query using Firebird's `FIRST n SKIP m` row limiting instead
89
+ * of a trailing `LIMIT/OFFSET`. Delegates the heavy lifting to the base
90
+ * PostgreSQL builder (whose `buildLimitOffset` we've neutralized above), then
91
+ * injects the `FIRST/SKIP` fragment right after the top-level `SELECT` — so
92
+ * it works uniformly for plain SELECTs, JOINs, GROUP BY/HAVING, DISTINCT, and
93
+ * queries fronted by a `WITH` CTE (whose inner SELECTs are parenthesized and
94
+ * therefore skipped by `mainSelectInsertIndex`).
95
+ */
96
+ buildSelectQuery(options: SelectOptions): {
97
+ sql: string;
98
+ values: unknown[];
99
+ };
100
+ /**
101
+ * Build an INSERT query. When `options.upsert` is set, Firebird uses
102
+ * `UPDATE OR INSERT INTO ... MATCHING (...)` instead of PostgreSQL's
103
+ * `INSERT ... ON CONFLICT`. `MATCHING` names the key columns; when
104
+ * `conflictFields` is omitted Firebird matches on the primary key.
105
+ */
106
+ buildInsertQuery(tableName: string, values: Record<string, unknown>, options?: InsertOptions): {
107
+ sql: string;
108
+ values: unknown[];
109
+ };
110
+ /**
111
+ * Build an UPSERT query for Firebird using
112
+ * `UPDATE OR INSERT INTO t (...) VALUES (...) MATCHING (...)`.
113
+ *
114
+ * Unlike PostgreSQL's `ON CONFLICT ... DO UPDATE SET <subset>`, Firebird's
115
+ * `UPDATE OR INSERT` always overwrites every listed column on a match, so a
116
+ * `updateOnDuplicate` subset has no Firebird equivalent and is ignored.
117
+ * `conflictFields`, when given, becomes the `MATCHING` key column list;
118
+ * otherwise Firebird matches on the table's primary key.
119
+ */
120
+ buildUpsertQuery(tableName: string, values: Record<string, unknown>, options?: UpsertQueryOptions): {
121
+ sql: string;
122
+ values: unknown[];
123
+ };
124
+ /**
125
+ * Build a ` RETURNING ...` suffix (or empty string). Firebird supports
126
+ * RETURNING on singleton INSERT/UPDATE/DELETE/UPDATE-OR-INSERT statements.
127
+ */
128
+ private buildReturningClause;
129
+ /**
130
+ * Build an UPDATE query. Firebird limits affected rows with `ROWS n`, not
131
+ * PostgreSQL's `LIMIT n`; we delegate to the base builder and rewrite the
132
+ * emitted `LIMIT n` fragment to `ROWS n` (positioned identically, before any
133
+ * RETURNING clause).
134
+ */
135
+ buildUpdateQuery(tableName: string, values: Record<string, unknown>, where: WhereOptions, options?: UpdateOptions): {
136
+ sql: string;
137
+ values: unknown[];
138
+ };
139
+ /**
140
+ * Build a DELETE query. Firebird limits affected rows with `ROWS n`, not
141
+ * PostgreSQL's `LIMIT n`; rewrite the base builder's `LIMIT n` accordingly.
142
+ */
143
+ buildDeleteQuery(tableName: string, where: WhereOptions, options?: DeleteOptions): {
144
+ sql: string;
145
+ values: unknown[];
146
+ };
147
+ /**
148
+ * Map an ORM data type to its Firebird SQL spelling. Overrides the mappings
149
+ * that differ from PostgreSQL and delegates everything else to the base.
150
+ */
151
+ getDataTypeSql(dataType: DataType): string;
152
+ /**
153
+ * Build a Firebird `CREATE TABLE` statement. Unlike the PostgreSQL base,
154
+ * auto-increment columns use `GENERATED BY DEFAULT AS IDENTITY` (not
155
+ * `SERIAL`). Firebird does not support `CREATE TABLE IF NOT EXISTS`, so that
156
+ * option is ignored. Exposed separately from `createTable` so the generated
157
+ * SQL can be asserted without a live connection.
158
+ */
159
+ buildCreateTableSQL(tableName: string, columns: Record<string, ColumnDefinition>, options?: TableOptions): string;
160
+ /**
161
+ * Create a table using Firebird DDL (identity columns, no SERIAL). After the
162
+ * table is created, unique keys, indexes and a table comment (if requested)
163
+ * are applied as separate statements, mirroring the base dialect's behaviour.
164
+ */
165
+ createTable(tableName: string, columns: Record<string, ColumnDefinition>, options?: TableOptions): Promise<void>;
166
+ /**
167
+ * Build a single Firebird column definition (used by CREATE TABLE and
168
+ * ADD COLUMN). Auto-increment INTEGER/BIGINT columns become identity columns.
169
+ */
170
+ private getFirebirdColumnSql;
171
+ /**
172
+ * Build an inline table constraint for Firebird CREATE TABLE.
173
+ */
174
+ private buildFirebirdConstraintSql;
175
+ /**
176
+ * Add a column to a table. Firebird's `ALTER TABLE ... ADD` omits the
177
+ * `COLUMN` keyword that PostgreSQL uses.
178
+ */
179
+ addColumn(tableName: string, columnName: string, definition: ColumnDefinition): Promise<void>;
180
+ /**
181
+ * Remove a column from a table. Firebird's `ALTER TABLE ... DROP` omits the
182
+ * `COLUMN` keyword that PostgreSQL uses.
183
+ */
184
+ removeColumn(tableName: string, columnName: string): Promise<void>;
185
+ /**
186
+ * Build a Firebird identity-column definition, e.g.
187
+ * `"id" INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY`.
188
+ *
189
+ * Firebird 3+ replaces PostgreSQL's `SERIAL` shorthand with the SQL-standard
190
+ * `GENERATED BY DEFAULT AS IDENTITY` clause.
191
+ *
192
+ * @param columnName - Name of the identity column
193
+ * @param options - `type` selects INTEGER (default) or BIGINT; `primaryKey`
194
+ * appends `PRIMARY KEY`
195
+ */
196
+ getIdentityColumnSql(columnName: string, options?: {
197
+ type?: 'INTEGER' | 'BIGINT';
198
+ primaryKey?: boolean;
199
+ }): string;
200
+ /**
201
+ * Build the SQL to create a Firebird generator (sequence). Firebird's
202
+ * sequence objects were historically called "generators"; modern Firebird
203
+ * accepts the SQL-standard `CREATE SEQUENCE` spelling, which is emitted here.
204
+ *
205
+ * @param name - Generator/sequence name
206
+ * @returns `CREATE SEQUENCE "name"`
207
+ */
208
+ createGenerator(name: string): string;
209
+ /**
210
+ * Build a Firebird `GEN_ID(generator, step)` expression, the legacy function
211
+ * for atomically advancing a generator/sequence and reading its new value
212
+ * (e.g. `GEN_ID(my_gen, 1)`). Step 0 reads the current value without changing
213
+ * it. Still widely used in triggers and default expressions.
214
+ */
215
+ genId(generator: string, step?: number): string;
216
+ /**
217
+ * Build a Firebird `NEXT VALUE FOR sequence` expression (the SQL-standard
218
+ * spelling Firebird 3+ accepts alongside `GEN_ID`).
219
+ */
220
+ nextValueFor(sequence: string): string;
221
+ /**
222
+ * Create a Firebird sequence (generator). Firebird accepts the SQL-standard
223
+ * `CREATE SEQUENCE` spelling; `START WITH`/`INCREMENT BY` are supported by
224
+ * Firebird 3+. Overrides the inherited PostgreSQL builder, which emits
225
+ * `MINVALUE`/`MAXVALUE`/`CYCLE`/`CACHE` clauses Firebird does not accept.
226
+ */
227
+ createSequence(options: SequenceOptions): Promise<void>;
228
+ /**
229
+ * Drop a Firebird sequence (generator). Firebird has no `IF EXISTS`/`CASCADE`
230
+ * on `DROP SEQUENCE`, so those options are ignored.
231
+ */
232
+ dropSequence(sequenceName: string, _options?: DropSequenceOptions): Promise<void>;
233
+ /**
234
+ * Read the next value of a Firebird sequence. Firebird has no `nextval()`
235
+ * function (PostgreSQL's spelling); it uses `NEXT VALUE FOR seq` selected from
236
+ * the one-row system table `RDB$DATABASE`.
237
+ */
238
+ nextSequenceValue(sequenceName: string): Promise<number>;
239
+ /**
240
+ * Check whether a Firebird sequence/generator exists via the system catalog
241
+ * `RDB$GENERATORS` (PostgreSQL's `pg_sequences` does not exist in Firebird).
242
+ */
243
+ hasSequence(sequenceName: string): Promise<boolean>;
244
+ /**
245
+ * Build a Firebird `EXECUTE BLOCK` statement — Firebird's anonymous PSQL
246
+ * block, used to run multi-statement / procedural logic (loops, variables,
247
+ * exception handling) in a single round trip without creating a stored
248
+ * procedure. This is Firebird's equivalent of PostgreSQL's `DO $$ ... $$`.
249
+ *
250
+ * @param body - The PSQL statements between `AS BEGIN` and `END`.
251
+ * @param options - Optional input parameters, `RETURNS` output parameters,
252
+ * and local `DECLARE` variables.
253
+ */
254
+ buildExecuteBlock(body: string, options?: {
255
+ params?: Array<{
256
+ name: string;
257
+ type: string;
258
+ value?: unknown;
259
+ }>;
260
+ returns?: Array<{
261
+ name: string;
262
+ type: string;
263
+ }>;
264
+ declares?: Array<{
265
+ name: string;
266
+ type: string;
267
+ }>;
268
+ }): string;
269
+ private unsupported;
270
+ createMaterializedView(_options: MaterializedViewOptions): Promise<void>;
271
+ refreshMaterializedView(_viewName: string, _options?: RefreshOptions): Promise<void>;
272
+ dropMaterializedView(_viewName: string, _options?: DropMaterializedViewOptions): Promise<void>;
273
+ hasMaterializedView(_viewName: string): Promise<boolean>;
274
+ createPolicy(_options: PolicyOptions): Promise<void>;
275
+ dropPolicy(_policyName: string, _tableName: string, _options?: DropPolicyOptions): Promise<void>;
276
+ enableRLS(_tableName: string, _schema?: string): Promise<void>;
277
+ disableRLS(_tableName: string, _schema?: string): Promise<void>;
278
+ hasPolicy(_policyName: string, _tableName: string): Promise<boolean>;
279
+ createExtension(_extensionName: string, _options?: CreateExtensionOptions): Promise<void>;
280
+ dropExtension(_extensionName: string, _options?: DropExtensionOptions): Promise<void>;
281
+ }
282
+ /**
283
+ * Create a new Firebird dialect instance
284
+ */
285
+ export declare function createFirebirdDialect(options?: FirebirdDialectOptions): FirebirdDialect;
286
+ export default FirebirdDialect;
@@ -484,6 +484,141 @@ class FirebirdDialect extends postgres_1.PostgresDialect {
484
484
  createGenerator(name) {
485
485
  return `CREATE SEQUENCE ${this.escapeId(name)}`;
486
486
  }
487
+ /**
488
+ * Build a Firebird `GEN_ID(generator, step)` expression, the legacy function
489
+ * for atomically advancing a generator/sequence and reading its new value
490
+ * (e.g. `GEN_ID(my_gen, 1)`). Step 0 reads the current value without changing
491
+ * it. Still widely used in triggers and default expressions.
492
+ */
493
+ genId(generator, step = 1) {
494
+ return `GEN_ID(${this.escapeId(generator)}, ${Number(step)})`;
495
+ }
496
+ /**
497
+ * Build a Firebird `NEXT VALUE FOR sequence` expression (the SQL-standard
498
+ * spelling Firebird 3+ accepts alongside `GEN_ID`).
499
+ */
500
+ nextValueFor(sequence) {
501
+ return `NEXT VALUE FOR ${this.escapeId(sequence)}`;
502
+ }
503
+ /**
504
+ * Create a Firebird sequence (generator). Firebird accepts the SQL-standard
505
+ * `CREATE SEQUENCE` spelling; `START WITH`/`INCREMENT BY` are supported by
506
+ * Firebird 3+. Overrides the inherited PostgreSQL builder, which emits
507
+ * `MINVALUE`/`MAXVALUE`/`CYCLE`/`CACHE` clauses Firebird does not accept.
508
+ */
509
+ async createSequence(options) {
510
+ let sql = `CREATE SEQUENCE ${this.escapeId(options.name)}`;
511
+ if (options.startWith !== undefined) {
512
+ sql += ` START WITH ${Number(options.startWith)}`;
513
+ }
514
+ if (options.incrementBy !== undefined) {
515
+ sql += ` INCREMENT BY ${Number(options.incrementBy)}`;
516
+ }
517
+ await this.query(sql);
518
+ }
519
+ /**
520
+ * Drop a Firebird sequence (generator). Firebird has no `IF EXISTS`/`CASCADE`
521
+ * on `DROP SEQUENCE`, so those options are ignored.
522
+ */
523
+ async dropSequence(sequenceName, _options) {
524
+ await this.query(`DROP SEQUENCE ${this.escapeId(sequenceName)}`);
525
+ }
526
+ /**
527
+ * Read the next value of a Firebird sequence. Firebird has no `nextval()`
528
+ * function (PostgreSQL's spelling); it uses `NEXT VALUE FOR seq` selected from
529
+ * the one-row system table `RDB$DATABASE`.
530
+ */
531
+ async nextSequenceValue(sequenceName) {
532
+ const result = await this.query(`SELECT NEXT VALUE FOR ${this.escapeId(sequenceName)} AS val FROM RDB$DATABASE`);
533
+ const row = (result.rows && result.rows[0]);
534
+ return Number(row?.val ?? row?.VAL ?? 0);
535
+ }
536
+ /**
537
+ * Check whether a Firebird sequence/generator exists via the system catalog
538
+ * `RDB$GENERATORS` (PostgreSQL's `pg_sequences` does not exist in Firebird).
539
+ */
540
+ async hasSequence(sequenceName) {
541
+ const result = await this.query(`SELECT 1 AS present FROM RDB$GENERATORS WHERE RDB$GENERATOR_NAME = ${this.escape(sequenceName.toUpperCase())}`);
542
+ return !!(result.rows && result.rows.length > 0);
543
+ }
544
+ // ==========================================================================
545
+ // EXECUTE BLOCK (Firebird anonymous PSQL)
546
+ // ==========================================================================
547
+ /**
548
+ * Build a Firebird `EXECUTE BLOCK` statement — Firebird's anonymous PSQL
549
+ * block, used to run multi-statement / procedural logic (loops, variables,
550
+ * exception handling) in a single round trip without creating a stored
551
+ * procedure. This is Firebird's equivalent of PostgreSQL's `DO $$ ... $$`.
552
+ *
553
+ * @param body - The PSQL statements between `AS BEGIN` and `END`.
554
+ * @param options - Optional input parameters, `RETURNS` output parameters,
555
+ * and local `DECLARE` variables.
556
+ */
557
+ buildExecuteBlock(body, options) {
558
+ let header = 'EXECUTE BLOCK';
559
+ if (options?.params && options.params.length > 0) {
560
+ const paramList = options.params
561
+ .map((p) => `${this.escapeId(p.name)} ${p.type} = ?`)
562
+ .join(', ');
563
+ header += ` (${paramList})`;
564
+ }
565
+ if (options?.returns && options.returns.length > 0) {
566
+ const returnsList = options.returns
567
+ .map((r) => `${this.escapeId(r.name)} ${r.type}`)
568
+ .join(', ');
569
+ header += ` RETURNS (${returnsList})`;
570
+ }
571
+ const declares = (options?.declares || [])
572
+ .map((d) => ` DECLARE VARIABLE ${this.escapeId(d.name)} ${d.type};`)
573
+ .join('\n');
574
+ const declareBlock = declares ? `${declares}\n` : '';
575
+ return `${header} AS\n${declareBlock}BEGIN\n${body}\nEND`;
576
+ }
577
+ // ==========================================================================
578
+ // PostgreSQL-only capabilities Firebird does not have.
579
+ //
580
+ // FirebirdDialect extends PostgresDialect, so without these overrides the
581
+ // inherited methods would silently emit PostgreSQL-specific SQL that fails on
582
+ // Firebird. We surface a clear, typed capability error instead of generating
583
+ // invalid SQL (the "never silent raw-SQL" contract).
584
+ // ==========================================================================
585
+ unsupported(feature, alternative) {
586
+ const suffix = alternative ? ` ${alternative}` : '';
587
+ return new Error(`${feature} is not supported by Firebird.${suffix}`);
588
+ }
589
+ async createMaterializedView(_options) {
590
+ throw this.unsupported('Materialized views', 'Emulate with a regular table refreshed by a trigger or scheduled job.');
591
+ }
592
+ async refreshMaterializedView(_viewName, _options) {
593
+ throw this.unsupported('Materialized views');
594
+ }
595
+ async dropMaterializedView(_viewName, _options) {
596
+ throw this.unsupported('Materialized views');
597
+ }
598
+ async hasMaterializedView(_viewName) {
599
+ return false;
600
+ }
601
+ async createPolicy(_options) {
602
+ throw this.unsupported('Row-level security policies', 'Enforce row filtering via views or application-level predicates.');
603
+ }
604
+ async dropPolicy(_policyName, _tableName, _options) {
605
+ throw this.unsupported('Row-level security policies');
606
+ }
607
+ async enableRLS(_tableName, _schema) {
608
+ throw this.unsupported('Row-level security');
609
+ }
610
+ async disableRLS(_tableName, _schema) {
611
+ throw this.unsupported('Row-level security');
612
+ }
613
+ async hasPolicy(_policyName, _tableName) {
614
+ return false;
615
+ }
616
+ async createExtension(_extensionName, _options) {
617
+ throw this.unsupported('Extensions', 'Firebird ships built-in functions and UDR modules instead of PostgreSQL extensions.');
618
+ }
619
+ async dropExtension(_extensionName, _options) {
620
+ throw this.unsupported('Extensions');
621
+ }
487
622
  }
488
623
  exports.FirebirdDialect = FirebirdDialect;
489
624
  /**