ts-prorm-orm 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +713 -0
  239. package/dist/index.js +36 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Schema Differ
3
+ * Compares model definitions against database schema to detect changes
4
+ */
5
+ import type { ModelStatic } from '../types';
6
+ import type { Dialect } from '../dialects/dialect';
7
+ import type { SchemaDiff, ColumnChange, IndexChange, ConstraintChange, ForeignKeyChange, ColumnDefinition, DatabaseColumnInfo, DatabaseIndexInfo, DatabaseConstraintInfo, DatabaseForeignKeyInfo, SchemaDifferOptions } from './types';
8
+ /**
9
+ * SchemaDiffer compares model definitions against database schema
10
+ */
11
+ export declare class SchemaDiffer {
12
+ private dialect;
13
+ private options;
14
+ constructor(dialect: Dialect, options?: SchemaDifferOptions);
15
+ /**
16
+ * Compare a model against its database table
17
+ */
18
+ diffModel(model: ModelStatic<any>): Promise<SchemaDiff>;
19
+ /**
20
+ * Diff all models registered with Prorm
21
+ */
22
+ diffAll(): Promise<SchemaDiff[]>;
23
+ /**
24
+ * Get column changes between model and database
25
+ */
26
+ getColumnChanges(modelColumns: ColumnDefinition[], dbColumns: DatabaseColumnInfo[]): ColumnChange[];
27
+ /**
28
+ * Get index changes between model and database
29
+ */
30
+ getIndexChanges(modelIndexes: {
31
+ name: string;
32
+ unique: boolean;
33
+ fields: string[];
34
+ }[], dbIndexes: DatabaseIndexInfo[]): IndexChange[];
35
+ /**
36
+ * Get constraint changes between model and database
37
+ */
38
+ getConstraintChanges(modelConstraints: {
39
+ name: string;
40
+ type: string;
41
+ fields: string[];
42
+ }[], dbConstraints: DatabaseConstraintInfo[]): ConstraintChange[];
43
+ /**
44
+ * Get foreign key changes between model and database
45
+ */
46
+ getForeignKeyChanges(modelFKs: {
47
+ name: string;
48
+ fields: string[];
49
+ references: {
50
+ table: string;
51
+ fields: string[];
52
+ };
53
+ }[], dbFKs: DatabaseForeignKeyInfo[]): ForeignKeyChange[];
54
+ /**
55
+ * Extract column definitions from model
56
+ */
57
+ private extractColumnDefinitions;
58
+ /**
59
+ * Extract index definitions from model
60
+ */
61
+ private extractIndexDefinitions;
62
+ /**
63
+ * Extract constraint definitions from model
64
+ */
65
+ private extractConstraintDefinitions;
66
+ /**
67
+ * Extract foreign key definitions from model
68
+ */
69
+ private extractForeignKeyDefinitions;
70
+ /**
71
+ * Get database column information
72
+ */
73
+ private getDatabaseColumns;
74
+ /**
75
+ * Get database index information
76
+ */
77
+ private getDatabaseIndexes;
78
+ /**
79
+ * Get database constraint information
80
+ */
81
+ private getDatabaseConstraints;
82
+ /**
83
+ * Get database foreign key information
84
+ */
85
+ private getDatabaseForeignKeys;
86
+ /**
87
+ * Serialize DataType to string for comparison
88
+ */
89
+ private serializeDataType;
90
+ /**
91
+ * Compare column definitions and return list of changed properties
92
+ */
93
+ private compareColumnDefinitions;
94
+ /**
95
+ * Compare index definitions and return list of changed properties
96
+ */
97
+ private compareIndexDefinitions;
98
+ /**
99
+ * Compare constraint definitions and return list of changed properties
100
+ */
101
+ private compareConstraintDefinitions;
102
+ /**
103
+ * Compare foreign key definitions and return list of changed properties
104
+ */
105
+ private compareForeignKeyDefinitions;
106
+ /**
107
+ * Normalize type string for comparison
108
+ */
109
+ private normalizeType;
110
+ }
111
+ /**
112
+ * Create a SchemaDiffer instance
113
+ */
114
+ export declare function createSchemaDiffer(dialect: Dialect, options?: SchemaDifferOptions): SchemaDiffer;
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Schema Diff Types
3
+ * Type definitions for automated schema diffing and migration generation
4
+ */
5
+ import type { DataType } from '../types';
6
+ /**
7
+ * Type of change detected in schema diff
8
+ */
9
+ export type ChangeType = 'create' | 'modify' | 'delete';
10
+ /**
11
+ * Column change details
12
+ */
13
+ export interface ColumnChange {
14
+ type: 'column';
15
+ changeType: ChangeType;
16
+ columnName: string;
17
+ /** Column definition from model (for create/modify) */
18
+ modelDefinition?: ColumnDefinition;
19
+ /** Column definition from database (for modify/delete) */
20
+ databaseDefinition?: DatabaseColumnInfo;
21
+ /** Specific properties that changed */
22
+ changedProperties?: string[];
23
+ }
24
+ /**
25
+ * Index change details
26
+ */
27
+ export interface IndexChange {
28
+ type: 'index';
29
+ changeType: ChangeType;
30
+ indexName: string;
31
+ /** Index definition from model (for create/modify) */
32
+ modelDefinition?: IndexDefinition;
33
+ /** Index definition from database (for modify/delete) */
34
+ databaseDefinition?: DatabaseIndexInfo;
35
+ /** Specific properties that changed */
36
+ changedProperties?: string[];
37
+ }
38
+ /**
39
+ * Constraint change details
40
+ */
41
+ export interface ConstraintChange {
42
+ type: 'constraint';
43
+ changeType: ChangeType;
44
+ constraintName: string;
45
+ constraintType: 'PRIMARY KEY' | 'UNIQUE' | 'CHECK';
46
+ /** Constraint definition from model (for create/modify) */
47
+ modelDefinition?: ConstraintDefinition;
48
+ /** Constraint definition from database (for modify/delete) */
49
+ databaseDefinition?: DatabaseConstraintInfo;
50
+ /** Specific properties that changed */
51
+ changedProperties?: string[];
52
+ }
53
+ /**
54
+ * Foreign key change details
55
+ */
56
+ export interface ForeignKeyChange {
57
+ type: 'foreignKey';
58
+ changeType: ChangeType;
59
+ constraintName: string;
60
+ /** Foreign key definition from model (for create/modify) */
61
+ modelDefinition?: ForeignKeyDefinition;
62
+ /** Foreign key definition from database (for modify/delete) */
63
+ databaseDefinition?: DatabaseForeignKeyInfo;
64
+ /** Specific properties that changed */
65
+ changedProperties?: string[];
66
+ }
67
+ /**
68
+ * Table change details containing all changes for a single table
69
+ */
70
+ export interface TableChange {
71
+ tableName: string;
72
+ schemaName?: string;
73
+ columnChanges: ColumnChange[];
74
+ indexChanges: IndexChange[];
75
+ constraintChanges: ConstraintChange[];
76
+ foreignKeyChanges: ForeignKeyChange[];
77
+ /** Whether the table is new (created) */
78
+ isNew: boolean;
79
+ /** Whether the table was deleted */
80
+ isDeleted: boolean;
81
+ }
82
+ /**
83
+ * Complete schema diff result
84
+ */
85
+ export interface SchemaDiff {
86
+ /** Name of the model this diff is for */
87
+ modelName: string;
88
+ /** Database table name */
89
+ tableName: string;
90
+ /** Optional schema name */
91
+ schemaName?: string;
92
+ /** All detected changes */
93
+ changes: {
94
+ columns: ColumnChange[];
95
+ indexes: IndexChange[];
96
+ constraints: ConstraintChange[];
97
+ foreignKeys: ForeignKeyChange[];
98
+ };
99
+ /** Whether there are any changes */
100
+ hasChanges: boolean;
101
+ /** Timestamp when diff was generated */
102
+ generatedAt: Date;
103
+ }
104
+ /**
105
+ * Column definition extracted from model
106
+ */
107
+ export interface ColumnDefinition {
108
+ name: string;
109
+ type: DataType;
110
+ typeString: string;
111
+ allowNull: boolean;
112
+ defaultValue: any;
113
+ primaryKey: boolean;
114
+ autoIncrement: boolean;
115
+ unique: boolean | string;
116
+ references?: {
117
+ model: string;
118
+ key: string;
119
+ deferrable?: string;
120
+ onDelete?: string;
121
+ onUpdate?: string;
122
+ };
123
+ comment?: string;
124
+ field?: string;
125
+ }
126
+ /**
127
+ * Index definition extracted from model
128
+ */
129
+ export interface IndexDefinition {
130
+ name: string;
131
+ unique: boolean;
132
+ type?: string;
133
+ fields: string[];
134
+ where?: Record<string, any>;
135
+ using?: string;
136
+ }
137
+ /**
138
+ * Constraint definition extracted from model
139
+ */
140
+ export interface ConstraintDefinition {
141
+ name: string;
142
+ type: 'PRIMARY KEY' | 'UNIQUE' | 'CHECK';
143
+ fields: string[];
144
+ check?: string;
145
+ }
146
+ /**
147
+ * Foreign key definition extracted from model
148
+ */
149
+ export interface ForeignKeyDefinition {
150
+ name: string;
151
+ fields: string[];
152
+ references: {
153
+ table: string;
154
+ fields: string[];
155
+ onDelete?: string;
156
+ onUpdate?: string;
157
+ };
158
+ }
159
+ /**
160
+ * Column information from database (via describeTable)
161
+ */
162
+ export interface DatabaseColumnInfo {
163
+ name: string;
164
+ type: string;
165
+ allowNull: boolean;
166
+ defaultValue: any;
167
+ primaryKey: boolean;
168
+ autoIncrement: boolean;
169
+ }
170
+ /**
171
+ * Index information from database (via showIndexes)
172
+ */
173
+ export interface DatabaseIndexInfo {
174
+ name: string;
175
+ unique: boolean;
176
+ type?: string;
177
+ fields: string[];
178
+ primary: boolean;
179
+ }
180
+ /**
181
+ * Constraint information from database (via showConstraints)
182
+ */
183
+ export interface DatabaseConstraintInfo {
184
+ name: string;
185
+ type: 'PRIMARY KEY' | 'UNIQUE' | 'CHECK';
186
+ fields?: string[];
187
+ check?: string;
188
+ }
189
+ /**
190
+ * Foreign key information from database
191
+ */
192
+ export interface DatabaseForeignKeyInfo {
193
+ name: string;
194
+ fields: string[];
195
+ references: {
196
+ table: string;
197
+ fields: string[];
198
+ };
199
+ onDelete?: string;
200
+ onUpdate?: string;
201
+ }
202
+ /**
203
+ * Migration script generated from schema diff
204
+ */
205
+ export interface MigrationScript {
206
+ /** Migration name */
207
+ name: string;
208
+ /** Up migration SQL statements */
209
+ up: string[];
210
+ /** Down migration SQL statements (for rollback) */
211
+ down: string[];
212
+ /** Model name this migration applies to */
213
+ modelName: string;
214
+ /** Table name */
215
+ tableName: string;
216
+ /** Timestamp when generated */
217
+ generatedAt: Date;
218
+ }
219
+ /**
220
+ * Options for migration generation
221
+ */
222
+ export interface MigrationGeneratorOptions {
223
+ /** Custom migration name prefix */
224
+ namePrefix?: string;
225
+ /** Whether to generate rollback statements */
226
+ generateDown?: boolean;
227
+ /** Whether to include comments in generated SQL */
228
+ includeComments?: boolean;
229
+ /** Dialect-specific options */
230
+ dialectOptions?: Record<string, any>;
231
+ }
232
+ /**
233
+ * Options for schema differ
234
+ */
235
+ export interface SchemaDifferOptions {
236
+ /** Whether to compare indexes */
237
+ compareIndexes?: boolean;
238
+ /** Whether to compare constraints */
239
+ compareConstraints?: boolean;
240
+ /** Whether to compare foreign keys */
241
+ compareForeignKeys?: boolean;
242
+ /** Custom column type serializer */
243
+ serializeColumnType?: (type: DataType) => string;
244
+ /** Skip certain column properties when comparing */
245
+ skipColumnProperties?: string[];
246
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * SQL generation for the schema objects that had no ORM-level API.
3
+ *
4
+ * Sequences, stored procedures, SQL functions, triggers, row-level security and
5
+ * full-text indexes previously had to be created by hand through
6
+ * `prorm.query()` with a template literal - the README's own per-dialect
7
+ * walkthroughs did exactly that, twelve times, in a library whose stated goal is
8
+ * that the user never writes SQL. These builders back the corresponding
9
+ * `QueryInterface` methods.
10
+ *
11
+ * Every builder is dialect-aware and throws a clear error when the target
12
+ * database has no equivalent, rather than emitting SQL that fails at the driver.
13
+ */
14
+ export type SqlDialectName = 'mysql' | 'mariadb' | 'postgres' | 'cockroachdb' | 'redshift' | 'sqlite' | 'mssql' | 'oracle' | 'db2' | 'snowflake' | 'duckdb' | 'hana' | 'spanner' | string;
15
+ /** Raised when a schema object has no equivalent on the target dialect. */
16
+ export declare class UnsupportedSchemaObjectError extends Error {
17
+ constructor(object: string, dialect: string, hint?: string);
18
+ }
19
+ export interface SequenceOptions {
20
+ /** Value the sequence starts at (default 1) */
21
+ start?: number;
22
+ /** Amount added on each call (default 1) */
23
+ increment?: number;
24
+ /** Minimum value */
25
+ minValue?: number;
26
+ /** Maximum value */
27
+ maxValue?: number;
28
+ /** Wrap around when the max/min is reached */
29
+ cycle?: boolean;
30
+ /** Number of values to pre-allocate (Oracle/Postgres CACHE) */
31
+ cache?: number;
32
+ /** Emit IF NOT EXISTS where supported */
33
+ ifNotExists?: boolean;
34
+ }
35
+ export declare function buildCreateSequenceSQL(name: string, options: SequenceOptions, dialect: SqlDialectName, quoteId: (id: string) => string): string;
36
+ export declare function buildDropSequenceSQL(name: string, dialect: SqlDialectName, quoteId: (id: string) => string, ifExists?: boolean): string;
37
+ export interface PolicyOptions {
38
+ /** Table the policy applies to */
39
+ table: string;
40
+ /** Policy name */
41
+ name: string;
42
+ /** USING expression - rows visible to the command */
43
+ using?: string;
44
+ /** WITH CHECK expression - rows the command may write */
45
+ withCheck?: string;
46
+ /** Command the policy applies to */
47
+ for?: 'ALL' | 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
48
+ /** Roles the policy applies to */
49
+ to?: string[];
50
+ }
51
+ export declare function buildEnableRowLevelSecuritySQL(table: string, dialect: SqlDialectName, quoteTable: (t: string) => string, enable?: boolean): string;
52
+ export declare function buildCreatePolicySQL(options: PolicyOptions, dialect: SqlDialectName, quoteId: (id: string) => string, quoteTable: (t: string) => string): string;
53
+ export declare function buildDropPolicySQL(name: string, table: string, dialect: SqlDialectName, quoteId: (id: string) => string, quoteTable: (t: string) => string, ifExists?: boolean): string;
54
+ export interface FullTextIndexOptions {
55
+ /** Index name */
56
+ name: string;
57
+ /** Table to index */
58
+ table: string;
59
+ /** Columns to include in the index */
60
+ columns: string[];
61
+ /** Text search configuration (PostgreSQL), e.g. 'english' */
62
+ language?: string;
63
+ }
64
+ export declare function buildCreateFullTextIndexSQL(options: FullTextIndexOptions, dialect: SqlDialectName, quoteId: (id: string) => string, quoteTable: (t: string) => string): string;
65
+ export interface TriggerDefinition {
66
+ name: string;
67
+ table: string;
68
+ timing: 'BEFORE' | 'AFTER' | 'INSTEAD OF';
69
+ event: 'INSERT' | 'UPDATE' | 'DELETE';
70
+ /** Statement body (without BEGIN/END for simple single-statement triggers) */
71
+ body: string;
72
+ /** Row- vs statement-level (defaults to row) */
73
+ forEach?: 'ROW' | 'STATEMENT';
74
+ /** Condition guarding the trigger */
75
+ when?: string;
76
+ }
77
+ export declare function buildCreateTriggerStatements(trigger: TriggerDefinition, dialect: SqlDialectName, quoteId: (id: string) => string, quoteTable: (t: string) => string): string[];
78
+ export declare function buildDropTriggerSQL(name: string, table: string, dialect: SqlDialectName, quoteId: (id: string) => string, quoteTable: (t: string) => string, ifExists?: boolean): string;
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ /**
3
+ * SQL generation for the schema objects that had no ORM-level API.
4
+ *
5
+ * Sequences, stored procedures, SQL functions, triggers, row-level security and
6
+ * full-text indexes previously had to be created by hand through
7
+ * `prorm.query()` with a template literal - the README's own per-dialect
8
+ * walkthroughs did exactly that, twelve times, in a library whose stated goal is
9
+ * that the user never writes SQL. These builders back the corresponding
10
+ * `QueryInterface` methods.
11
+ *
12
+ * Every builder is dialect-aware and throws a clear error when the target
13
+ * database has no equivalent, rather than emitting SQL that fails at the driver.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.UnsupportedSchemaObjectError = void 0;
17
+ exports.buildCreateSequenceSQL = buildCreateSequenceSQL;
18
+ exports.buildDropSequenceSQL = buildDropSequenceSQL;
19
+ exports.buildEnableRowLevelSecuritySQL = buildEnableRowLevelSecuritySQL;
20
+ exports.buildCreatePolicySQL = buildCreatePolicySQL;
21
+ exports.buildDropPolicySQL = buildDropPolicySQL;
22
+ exports.buildCreateFullTextIndexSQL = buildCreateFullTextIndexSQL;
23
+ exports.buildCreateTriggerStatements = buildCreateTriggerStatements;
24
+ exports.buildDropTriggerSQL = buildDropTriggerSQL;
25
+ // Derived dialects report their own `name` (TimescaleDBDialect extends
26
+ // PostgresDialect but calls itself 'timescaledb'), so family membership has to
27
+ // be listed explicitly rather than inferred from the class hierarchy.
28
+ //
29
+ // Membership here means "shares this family's DDL syntax for the objects in this
30
+ // module", which is narrower than "extends that dialect class". Trino, CrateDB,
31
+ // QuestDB, Exasol, Vertica, Firebird and Databricks all extend a Postgres or
32
+ // MySQL dialect in this codebase but genuinely lack sequences and/or triggers,
33
+ // so they are deliberately left out - an UnsupportedSchemaObjectError naming the
34
+ // database is more useful than SQL the driver rejects.
35
+ const POSTGRES_FAMILY = new Set(['postgres', 'cockroachdb', 'redshift', 'greenplum', 'timescaledb']);
36
+ const MYSQL_FAMILY = new Set(['mysql', 'mariadb', 'tidb', 'singlestore']);
37
+ // Turso/libSQL is SQLite over the wire - same FTS5, same trigger syntax, same
38
+ // lack of sequences.
39
+ const SQLITE_FAMILY = new Set(['sqlite', 'turso']);
40
+ function isPostgresFamily(d) {
41
+ return POSTGRES_FAMILY.has(d);
42
+ }
43
+ function isMysqlFamily(d) {
44
+ return MYSQL_FAMILY.has(d);
45
+ }
46
+ function isSqliteFamily(d) {
47
+ return SQLITE_FAMILY.has(d);
48
+ }
49
+ /** Raised when a schema object has no equivalent on the target dialect. */
50
+ class UnsupportedSchemaObjectError extends Error {
51
+ constructor(object, dialect, hint) {
52
+ super(`${object} is not supported on ${dialect}${hint ? `. ${hint}` : ''}`);
53
+ this.name = 'UnsupportedSchemaObjectError';
54
+ }
55
+ }
56
+ exports.UnsupportedSchemaObjectError = UnsupportedSchemaObjectError;
57
+ function buildCreateSequenceSQL(name, options, dialect, quoteId) {
58
+ if (isSqliteFamily(dialect)) {
59
+ throw new UnsupportedSchemaObjectError('CREATE SEQUENCE', dialect, 'SQLite has no sequences - use an INTEGER PRIMARY KEY AUTOINCREMENT column instead.');
60
+ }
61
+ const parts = ['CREATE SEQUENCE'];
62
+ // MySQL/MariaDB: MariaDB 10.3+ supports sequences; MySQL does not.
63
+ if (dialect === 'mysql') {
64
+ throw new UnsupportedSchemaObjectError('CREATE SEQUENCE', dialect, 'MySQL has no sequences - use an AUTO_INCREMENT column instead.');
65
+ }
66
+ if (options.ifNotExists && (isPostgresFamily(dialect) || dialect === 'mariadb')) {
67
+ parts.push('IF NOT EXISTS');
68
+ }
69
+ parts.push(quoteId(name));
70
+ if (options.start !== undefined) {
71
+ parts.push(dialect === 'oracle' ? `START WITH ${options.start}` : `START WITH ${options.start}`);
72
+ }
73
+ if (options.increment !== undefined) {
74
+ parts.push(`INCREMENT BY ${options.increment}`);
75
+ }
76
+ if (options.minValue !== undefined)
77
+ parts.push(`MINVALUE ${options.minValue}`);
78
+ if (options.maxValue !== undefined)
79
+ parts.push(`MAXVALUE ${options.maxValue}`);
80
+ if (options.cache !== undefined && dialect !== 'mssql')
81
+ parts.push(`CACHE ${options.cache}`);
82
+ if (options.cycle)
83
+ parts.push('CYCLE');
84
+ return parts.join(' ');
85
+ }
86
+ function buildDropSequenceSQL(name, dialect, quoteId, ifExists = true) {
87
+ if (isSqliteFamily(dialect) || dialect === 'mysql') {
88
+ throw new UnsupportedSchemaObjectError('DROP SEQUENCE', dialect);
89
+ }
90
+ // Oracle has no IF EXISTS on DROP SEQUENCE.
91
+ const guard = ifExists && dialect !== 'oracle' ? 'IF EXISTS ' : '';
92
+ return `DROP SEQUENCE ${guard}${quoteId(name)}`;
93
+ }
94
+ function buildEnableRowLevelSecuritySQL(table, dialect, quoteTable, enable = true) {
95
+ if (!isPostgresFamily(dialect)) {
96
+ throw new UnsupportedSchemaObjectError('Row-level security', dialect, dialect === 'mssql'
97
+ ? 'SQL Server uses CREATE SECURITY POLICY with a predicate function instead.'
98
+ : undefined);
99
+ }
100
+ return `ALTER TABLE ${quoteTable(table)} ${enable ? 'ENABLE' : 'DISABLE'} ROW LEVEL SECURITY`;
101
+ }
102
+ function buildCreatePolicySQL(options, dialect, quoteId, quoteTable) {
103
+ if (!isPostgresFamily(dialect)) {
104
+ throw new UnsupportedSchemaObjectError('CREATE POLICY', dialect);
105
+ }
106
+ let sql = `CREATE POLICY ${quoteId(options.name)} ON ${quoteTable(options.table)}`;
107
+ if (options.for && options.for !== 'ALL')
108
+ sql += ` FOR ${options.for}`;
109
+ if (options.to?.length)
110
+ sql += ` TO ${options.to.map(quoteId).join(', ')}`;
111
+ if (options.using)
112
+ sql += ` USING (${options.using})`;
113
+ if (options.withCheck)
114
+ sql += ` WITH CHECK (${options.withCheck})`;
115
+ return sql;
116
+ }
117
+ function buildDropPolicySQL(name, table, dialect, quoteId, quoteTable, ifExists = true) {
118
+ if (!isPostgresFamily(dialect)) {
119
+ throw new UnsupportedSchemaObjectError('DROP POLICY', dialect);
120
+ }
121
+ return `DROP POLICY ${ifExists ? 'IF EXISTS ' : ''}${quoteId(name)} ON ${quoteTable(table)}`;
122
+ }
123
+ function buildCreateFullTextIndexSQL(options, dialect, quoteId, quoteTable) {
124
+ const { name, table, columns, language = 'english' } = options;
125
+ if (!columns.length) {
126
+ throw new Error('A full-text index requires at least one column');
127
+ }
128
+ if (isPostgresFamily(dialect)) {
129
+ // to_tsvector over the concatenated columns, coalesced so a NULL column
130
+ // doesn't null the whole expression.
131
+ const expr = columns.map((c) => `coalesce(${quoteId(c)}, '')`).join(" || ' ' || ");
132
+ return `CREATE INDEX ${quoteId(name)} ON ${quoteTable(table)} USING GIN (to_tsvector('${language}', ${expr}))`;
133
+ }
134
+ if (isMysqlFamily(dialect)) {
135
+ return `CREATE FULLTEXT INDEX ${quoteId(name)} ON ${quoteTable(table)} (${columns.map(quoteId).join(', ')})`;
136
+ }
137
+ if (isSqliteFamily(dialect)) {
138
+ // SQLite full-text search is a virtual table, not an index.
139
+ return `CREATE VIRTUAL TABLE IF NOT EXISTS ${quoteId(name)} USING fts5(${columns
140
+ .map(quoteId)
141
+ .join(', ')}, content=${quoteId(table)})`;
142
+ }
143
+ if (dialect === 'mssql') {
144
+ throw new UnsupportedSchemaObjectError('Full-text index', dialect, 'SQL Server requires a full-text catalog and a unique key index; create those first, then use CREATE FULLTEXT INDEX.');
145
+ }
146
+ throw new UnsupportedSchemaObjectError('Full-text index', dialect);
147
+ }
148
+ function buildCreateTriggerStatements(trigger, dialect, quoteId, quoteTable) {
149
+ const { name, table, timing, event, body, forEach = 'ROW', when } = trigger;
150
+ if (isPostgresFamily(dialect)) {
151
+ // PostgreSQL triggers call a function; emit both statements.
152
+ const fnName = `${name}_fn`;
153
+ const fn = `CREATE OR REPLACE FUNCTION ${quoteId(fnName)}() RETURNS TRIGGER AS $$\n` +
154
+ `BEGIN\n${body}\nEND;\n$$ LANGUAGE plpgsql`;
155
+ let trg = `CREATE TRIGGER ${quoteId(name)} ${timing} ${event} ON ${quoteTable(table)} FOR EACH ${forEach}`;
156
+ if (when)
157
+ trg += ` WHEN (${when})`;
158
+ trg += ` EXECUTE FUNCTION ${quoteId(fnName)}()`;
159
+ return [fn, trg];
160
+ }
161
+ if (isMysqlFamily(dialect)) {
162
+ let sql = `CREATE TRIGGER ${quoteId(name)} ${timing} ${event} ON ${quoteTable(table)} FOR EACH ROW`;
163
+ sql += `\nBEGIN\n${body}\nEND`;
164
+ return [sql];
165
+ }
166
+ if (isSqliteFamily(dialect)) {
167
+ // SQLite is always row-level and has no FOR EACH STATEMENT.
168
+ let sql = `CREATE TRIGGER IF NOT EXISTS ${quoteId(name)} ${timing} ${event} ON ${quoteTable(table)}`;
169
+ if (when)
170
+ sql += ` WHEN ${when}`;
171
+ sql += `\nBEGIN\n${body}\nEND`;
172
+ return [sql];
173
+ }
174
+ if (dialect === 'mssql') {
175
+ const msTiming = timing === 'BEFORE' ? 'INSTEAD OF' : timing;
176
+ return [
177
+ `CREATE TRIGGER ${quoteId(name)} ON ${quoteTable(table)} ${msTiming} ${event}\nAS\nBEGIN\n${body}\nEND`,
178
+ ];
179
+ }
180
+ if (dialect === 'oracle') {
181
+ let sql = `CREATE OR REPLACE TRIGGER ${quoteId(name)} ${timing} ${event} ON ${quoteTable(table)}`;
182
+ if (forEach === 'ROW')
183
+ sql += ' FOR EACH ROW';
184
+ if (when)
185
+ sql += ` WHEN (${when})`;
186
+ sql += `\nBEGIN\n${body}\nEND;`;
187
+ return [sql];
188
+ }
189
+ throw new UnsupportedSchemaObjectError('CREATE TRIGGER', dialect);
190
+ }
191
+ function buildDropTriggerSQL(name, table, dialect, quoteId, quoteTable, ifExists = true) {
192
+ const guard = ifExists ? 'IF EXISTS ' : '';
193
+ if (isMysqlFamily(dialect) || isSqliteFamily(dialect)) {
194
+ return `DROP TRIGGER ${guard}${quoteId(name)}`;
195
+ }
196
+ if (isPostgresFamily(dialect)) {
197
+ return `DROP TRIGGER ${guard}${quoteId(name)} ON ${quoteTable(table)}`;
198
+ }
199
+ if (dialect === 'mssql' || dialect === 'oracle') {
200
+ return `DROP TRIGGER ${quoteId(name)}`;
201
+ }
202
+ throw new UnsupportedSchemaObjectError('DROP TRIGGER', dialect);
203
+ }