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.
- package/CHANGELOG.md +95 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +713 -0
- package/dist/index.js +36 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- 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
|
/**
|