ts-prorm-orm 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -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 +711 -0
- package/dist/index.js +19 -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,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* etcd store implementation.
|
|
3
|
+
*
|
|
4
|
+
* etcd is a distributed, strongly-consistent key-value store used for
|
|
5
|
+
* service discovery, distributed configuration and coordination primitives
|
|
6
|
+
* (leader election, distributed locking). It has no query language, no
|
|
7
|
+
* schema, and no `JOIN`/transaction-log concept in the SQL sense, so it does
|
|
8
|
+
* not fit the SQL-shaped `Dialect` interface used by the SQL dialects in
|
|
9
|
+
* this repo. Instead it implements the minimal `NoSqlStore` marker
|
|
10
|
+
* interface (`src/nosql/store.ts`) and exposes etcd's real primitives -
|
|
11
|
+
* key/value get/put/delete (including prefix range operations), watch
|
|
12
|
+
* (etcd's signature "subscribe to key/prefix changes" feature), leases
|
|
13
|
+
* (TTL-based key expiry with keep-alive), distributed locking, and
|
|
14
|
+
* compare-and-swap transactions - as a typed, promise-based API instead of
|
|
15
|
+
* forcing everything into a `query(sql)` shape.
|
|
16
|
+
*
|
|
17
|
+
* Uses the official `etcd3` driver.
|
|
18
|
+
*/
|
|
19
|
+
import { Etcd3, Watcher, ComparatorBuilder, PutBuilder, DeleteBuilder, SingleRangeBuilder } from 'etcd3';
|
|
20
|
+
import { NoSqlStore } from '../store';
|
|
21
|
+
/**
|
|
22
|
+
* TLS credentials for talking to etcd, mirroring `etcd3`'s `IOptions['credentials']`.
|
|
23
|
+
*/
|
|
24
|
+
export interface EtcdTlsOptions {
|
|
25
|
+
rootCertificate: Buffer;
|
|
26
|
+
privateKey?: Buffer;
|
|
27
|
+
certChain?: Buffer;
|
|
28
|
+
}
|
|
29
|
+
/** Username/password auth for etcd's built-in RBAC auth. */
|
|
30
|
+
export interface EtcdAuthOptions {
|
|
31
|
+
username: string;
|
|
32
|
+
password: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Connection options for `EtcdStore`. A thin, typed subset of `etcd3`'s
|
|
36
|
+
* `IOptions` covering the fields most callers need; anything else can be
|
|
37
|
+
* reached via `getClient()`.
|
|
38
|
+
*/
|
|
39
|
+
export interface EtcdStoreOptions {
|
|
40
|
+
/** One or more etcd endpoints, e.g. `['http://127.0.0.1:2379']`. */
|
|
41
|
+
hosts: string[] | string;
|
|
42
|
+
/** TLS client credentials, if connecting over `https://`. */
|
|
43
|
+
credentials?: EtcdTlsOptions;
|
|
44
|
+
/** Username/password auth, if etcd's RBAC auth is enabled. */
|
|
45
|
+
auth?: EtcdAuthOptions;
|
|
46
|
+
/** Milliseconds to wait while connecting before timing out. Defaults to 30s (etcd3's default). */
|
|
47
|
+
dialTimeout?: number;
|
|
48
|
+
}
|
|
49
|
+
/** Options for `put()`. */
|
|
50
|
+
export interface PutOptions {
|
|
51
|
+
/** Associate the key with an existing lease (see `grantLease()`), so it expires when the lease does. */
|
|
52
|
+
lease?: string | number;
|
|
53
|
+
}
|
|
54
|
+
/** Options for `grantLease()`. */
|
|
55
|
+
export interface GrantLeaseOptions {
|
|
56
|
+
/**
|
|
57
|
+
* Whether the lease is kept alive automatically in the background.
|
|
58
|
+
* Defaults to `true`, matching `etcd3`. Set `false` to manage
|
|
59
|
+
* keep-alives yourself via `keepAliveOnce()`.
|
|
60
|
+
*/
|
|
61
|
+
autoKeepAlive?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/** A single watch change event, as delivered to `watch()`/`watchPrefix()` handlers. */
|
|
64
|
+
export interface EtcdWatchEvent {
|
|
65
|
+
type: 'put' | 'delete';
|
|
66
|
+
key: string;
|
|
67
|
+
/** The new value for `put` events; `null` for `delete` events. */
|
|
68
|
+
value: string | null;
|
|
69
|
+
/** The value before this change, if `withPreviousKV` was requested (it is, by default). */
|
|
70
|
+
previousValue: string | null;
|
|
71
|
+
}
|
|
72
|
+
/** A handle returned by `watch()`/`watchPrefix()`. Call `cancel()` to stop watching. */
|
|
73
|
+
export interface EtcdWatchHandle {
|
|
74
|
+
/** The underlying `etcd3` `Watcher`, for anything not wrapped here (e.g. `disconnected`/`error` events). */
|
|
75
|
+
readonly watcher: Watcher;
|
|
76
|
+
cancel(): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
/** A handle returned by `acquireLock()`. Call `release()` to free the lock. */
|
|
79
|
+
export interface EtcdLockHandle {
|
|
80
|
+
/** The lease ID backing this lock, or `null` if the lock hasn't been acquired. */
|
|
81
|
+
leaseId(): Promise<string | null>;
|
|
82
|
+
release(): Promise<void>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* `EtcdStore` wraps an `etcd3` client and exposes etcd's real primitives:
|
|
86
|
+
* key/value get/put/delete (single-key and prefix-range), watch, leases,
|
|
87
|
+
* distributed locking, and compare-and-swap transactions.
|
|
88
|
+
*/
|
|
89
|
+
export declare class EtcdStore implements NoSqlStore {
|
|
90
|
+
readonly name = "etcd";
|
|
91
|
+
readonly library = "etcd3";
|
|
92
|
+
private readonly options;
|
|
93
|
+
private client;
|
|
94
|
+
private connected;
|
|
95
|
+
/** Leases granted through `grantLease()`, keyed by lease ID, so later calls can look them back up. */
|
|
96
|
+
private readonly leases;
|
|
97
|
+
constructor(options: EtcdStoreOptions);
|
|
98
|
+
private toClientOptions;
|
|
99
|
+
connect(): Promise<void>;
|
|
100
|
+
disconnect(): Promise<void>;
|
|
101
|
+
isConnected(): boolean;
|
|
102
|
+
/** Returns the underlying `etcd3` client for anything not wrapped here. */
|
|
103
|
+
getClient(): Etcd3;
|
|
104
|
+
private requireClient;
|
|
105
|
+
private exec;
|
|
106
|
+
putJSON<T>(key: string, value: T, options?: PutOptions): Promise<void>;
|
|
107
|
+
getJSON<T>(key: string): Promise<T | null>;
|
|
108
|
+
get(key: string): Promise<string | null>;
|
|
109
|
+
getBuffer(key: string): Promise<Buffer | null>;
|
|
110
|
+
put(key: string, value: string | number | Buffer, options?: PutOptions): Promise<void>;
|
|
111
|
+
/** Deletes a single key. Returns the number of keys actually deleted (`0` or `1`). */
|
|
112
|
+
delete(key: string): Promise<number>;
|
|
113
|
+
exists(key: string): Promise<boolean>;
|
|
114
|
+
/** All key/value pairs whose key starts with `prefix`. */
|
|
115
|
+
getPrefix(prefix: string): Promise<Record<string, string>>;
|
|
116
|
+
/** All keys (without values) starting with `prefix`. */
|
|
117
|
+
getKeysWithPrefix(prefix: string): Promise<string[]>;
|
|
118
|
+
/** Number of keys starting with `prefix`, without transferring their values. */
|
|
119
|
+
countPrefix(prefix: string): Promise<number>;
|
|
120
|
+
/** Deletes every key starting with `prefix`. Returns the number of keys deleted. */
|
|
121
|
+
deletePrefix(prefix: string): Promise<number>;
|
|
122
|
+
private attachWatchHandler;
|
|
123
|
+
/**
|
|
124
|
+
* Watch a single key for changes, invoking `handler` for every `put`/
|
|
125
|
+
* `delete` on that key. Returns a handle whose `cancel()` stops the
|
|
126
|
+
* underlying watch stream.
|
|
127
|
+
*/
|
|
128
|
+
watch(key: string, handler: (event: EtcdWatchEvent) => void): Promise<EtcdWatchHandle>;
|
|
129
|
+
/**
|
|
130
|
+
* Watch every key starting with `prefix` for changes, invoking `handler`
|
|
131
|
+
* for every `put`/`delete` on any matching key. Returns a handle whose
|
|
132
|
+
* `cancel()` stops the underlying watch stream.
|
|
133
|
+
*/
|
|
134
|
+
watchPrefix(prefix: string, handler: (event: EtcdWatchEvent) => void): Promise<EtcdWatchHandle>;
|
|
135
|
+
/**
|
|
136
|
+
* Grants a new lease with the given TTL (in seconds). By default the
|
|
137
|
+
* lease is kept alive automatically in the background (`autoKeepAlive`);
|
|
138
|
+
* pass `{ autoKeepAlive: false }` to manage keep-alives manually via
|
|
139
|
+
* `keepAliveOnce()`. Returns the lease ID, which can be passed to
|
|
140
|
+
* `put(key, value, { lease })` to associate keys with the lease so they
|
|
141
|
+
* expire automatically when it does.
|
|
142
|
+
*/
|
|
143
|
+
grantLease(ttlSeconds: number, options?: GrantLeaseOptions): Promise<string>;
|
|
144
|
+
/** Puts `key`/`value` under a previously granted lease, so it expires when the lease does. */
|
|
145
|
+
putWithLease(key: string, value: string | number | Buffer, leaseId: string): Promise<void>;
|
|
146
|
+
/** Fires a single, immediate keep-alive for a lease, resetting its TTL countdown. */
|
|
147
|
+
keepAliveOnce(leaseId: string): Promise<void>;
|
|
148
|
+
/** Revokes a lease immediately, evicting every key still attached to it. */
|
|
149
|
+
revokeLease(leaseId: string): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Stops sending keep-alives for a lease, letting it expire naturally when
|
|
152
|
+
* its TTL elapses, instead of revoking it immediately. Use `revokeLease()`
|
|
153
|
+
* to evict its keys right away.
|
|
154
|
+
*/
|
|
155
|
+
releaseLease(leaseId: string): void;
|
|
156
|
+
/**
|
|
157
|
+
* Registers a handler that fires when etcd indicates a lease has been
|
|
158
|
+
* lost (TTL expired without a successful keep-alive, or it was revoked
|
|
159
|
+
* server-side). Not fired when `revokeLease()`/`releaseLease()` is called
|
|
160
|
+
* locally and succeeds normally.
|
|
161
|
+
*/
|
|
162
|
+
onLeaseLost(leaseId: string, handler: (err: Error) => void): void;
|
|
163
|
+
private requireLease;
|
|
164
|
+
/**
|
|
165
|
+
* Acquires a distributed lock on `key`, blocking (queueing behind the
|
|
166
|
+
* current holder, in acquisition order) until it's free rather than
|
|
167
|
+
* rejecting immediately. Under the hood this is a lease on the key
|
|
168
|
+
* that's revoked on `release()`, or timed out by etcd if the holder
|
|
169
|
+
* dies - `ttlSeconds` controls that lease's TTL (etcd3 defaults to 30s).
|
|
170
|
+
*
|
|
171
|
+
* Note: `etcd3`'s own `Lock#acquire()` is a single compare-and-swap
|
|
172
|
+
* attempt - it *rejects immediately* with `EtcdLockFailedError` if the
|
|
173
|
+
* key already exists, rather than waiting, despite this store's docs
|
|
174
|
+
* (and the in-repo test mock) describing blocking/queueing semantics.
|
|
175
|
+
* To actually deliver that documented contract against a real etcd
|
|
176
|
+
* server, `acquireLockOrThrow()` below retries: on
|
|
177
|
+
* `EtcdLockFailedError` it watches the key until it's deleted (i.e. the
|
|
178
|
+
* current holder released or its lease expired), then retries the CAS.
|
|
179
|
+
* Multiple waiters can wake and race the retry simultaneously; that's
|
|
180
|
+
* fine because the retry is itself a CAS - at most one of them wins
|
|
181
|
+
* each round, and the rest go back to waiting.
|
|
182
|
+
*/
|
|
183
|
+
acquireLock(key: string, ttlSeconds?: number): Promise<EtcdLockHandle>;
|
|
184
|
+
/**
|
|
185
|
+
* Wraps an acquired `etcd3` `Lock` in an `EtcdLockHandle`. `etcd3`'s own
|
|
186
|
+
* `Lock#leaseId()` keeps returning the (now-revoked) lease ID even after
|
|
187
|
+
* `release()` - verified against a real etcd server - which contradicts
|
|
188
|
+
* this handle's documented `null`-after-release contract, so track
|
|
189
|
+
* "released" locally instead of trusting the underlying lock for that.
|
|
190
|
+
*/
|
|
191
|
+
private toLockHandle;
|
|
192
|
+
/**
|
|
193
|
+
* Acquires a distributed lock on `key`, runs `fn`, and releases the lock
|
|
194
|
+
* once `fn`'s result settles (whether it resolves or rejects). This is
|
|
195
|
+
* the recommended way to use locks - it can't leak a held lock the way
|
|
196
|
+
* manual `acquireLock()`/`release()` pairing can if `fn` throws.
|
|
197
|
+
*/
|
|
198
|
+
withLock<T>(key: string, fn: () => T | Promise<T>, ttlSeconds?: number): Promise<T>;
|
|
199
|
+
/**
|
|
200
|
+
* Repeatedly attempts `client.lock(key).acquire()`, waiting for the key
|
|
201
|
+
* to be deleted (via a watch) and retrying whenever it fails with
|
|
202
|
+
* `EtcdLockFailedError`, so the returned promise doesn't settle until
|
|
203
|
+
* the lock is actually acquired (see `acquireLock()` above for why this
|
|
204
|
+
* is necessary against a real etcd server).
|
|
205
|
+
*/
|
|
206
|
+
private acquireLockOrThrow;
|
|
207
|
+
/** Resolves once `key` no longer exists (already gone, or deleted while we watch it). */
|
|
208
|
+
private waitForKeyDeletion;
|
|
209
|
+
/**
|
|
210
|
+
* Starts a raw etcd transaction: `if (key.<column> <cmp> value) { ... }`.
|
|
211
|
+
* Returns etcd3's `ComparatorBuilder` directly so callers get its full
|
|
212
|
+
* `.and()/.then()/.else()/.commit()` chain; combine with `putOp()`/
|
|
213
|
+
* `deleteOp()`/`getOp()` below to build the `then`/`else` clauses.
|
|
214
|
+
*
|
|
215
|
+
* ```typescript
|
|
216
|
+
* const result = await store
|
|
217
|
+
* .ifCompare('config-version', 'Value', '==', '1')
|
|
218
|
+
* .then(store.putOp('config-version', '2'))
|
|
219
|
+
* .else(store.getOp('config-version'))
|
|
220
|
+
* .commit();
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
ifCompare(key: string, column: 'Version' | 'Create' | 'Mod' | 'Value' | 'Lease', cmp: '==' | '===' | '>' | '<' | '!=' | '!==', value: string | Buffer | number): ComparatorBuilder;
|
|
224
|
+
/** A `put` operation builder, for use as a `.then()`/`.else()` clause in `ifCompare()`. */
|
|
225
|
+
putOp(key: string, value: string | number | Buffer): PutBuilder;
|
|
226
|
+
/** A `delete` operation builder, for use as a `.then()`/`.else()` clause in `ifCompare()`. */
|
|
227
|
+
deleteOp(key: string): DeleteBuilder;
|
|
228
|
+
/** A `get` operation builder, for use as a `.then()`/`.else()` clause in `ifCompare()`. */
|
|
229
|
+
getOp(key: string): SingleRangeBuilder;
|
|
230
|
+
/**
|
|
231
|
+
* Convenience compare-and-swap: atomically sets `key` to `newValue` only
|
|
232
|
+
* if its current value equals `expectedValue` (or, if `expectedValue` is
|
|
233
|
+
* `null`, only if the key does not currently exist). Returns whether the
|
|
234
|
+
* swap happened.
|
|
235
|
+
*/
|
|
236
|
+
compareAndSwap(key: string, expectedValue: string | null, newValue: string | number | Buffer): Promise<boolean>;
|
|
237
|
+
/**
|
|
238
|
+
* Atomically deletes `key` only if its current value equals
|
|
239
|
+
* `expectedValue`. Returns whether the delete happened.
|
|
240
|
+
*/
|
|
241
|
+
compareAndDelete(key: string, expectedValue: string): Promise<boolean>;
|
|
242
|
+
}
|
|
243
|
+
export default EtcdStore;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/** A message accepted by `publish()`: raw string/Buffer or a JSON-serializable value. */
|
|
3
|
+
export type EventHubsMessage = string | Buffer | Record<string, unknown> | unknown[];
|
|
4
|
+
/** Minimal structural view of an `EventHubProducerClient`. */
|
|
5
|
+
export interface EventHubProducerLike {
|
|
6
|
+
sendBatch(events: unknown, options?: unknown): Promise<unknown>;
|
|
7
|
+
close?(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/** Minimal structural view of an `EventHubConsumerClient`. */
|
|
10
|
+
export interface EventHubConsumerLike {
|
|
11
|
+
subscribe(handlers: unknown, options?: unknown): {
|
|
12
|
+
close(): Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
close?(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Minimal structural view of the `@azure/event-hubs` module (its two client
|
|
18
|
+
* constructors). Tests inject a mock of this shape via `options.client`.
|
|
19
|
+
*/
|
|
20
|
+
export interface EventHubsModuleLike {
|
|
21
|
+
EventHubProducerClient: new (...args: any[]) => EventHubProducerLike;
|
|
22
|
+
EventHubConsumerClient: new (...args: any[]) => EventHubConsumerLike;
|
|
23
|
+
}
|
|
24
|
+
/** Connection options for `EventHubsStore`. */
|
|
25
|
+
export interface EventHubsStoreOptions {
|
|
26
|
+
/** Event Hubs namespace connection string. */
|
|
27
|
+
connectionString?: string;
|
|
28
|
+
/** Default event hub (entity) name used when `publish`/`subscribe` omit one. */
|
|
29
|
+
eventHubName?: string;
|
|
30
|
+
/** Consumer group used by `subscribe()`. Defaults to '$Default'. */
|
|
31
|
+
consumerGroup?: string;
|
|
32
|
+
/**
|
|
33
|
+
* A pre-built `@azure/event-hubs` module (or a mock exposing the two client
|
|
34
|
+
* constructors). When provided, `connect()` uses it directly and does NOT
|
|
35
|
+
* require the driver — this is how tests inject mocks.
|
|
36
|
+
*/
|
|
37
|
+
client?: EventHubsModuleLike;
|
|
38
|
+
}
|
|
39
|
+
/** Options for `subscribe()`. */
|
|
40
|
+
export interface EventHubsSubscribeOptions {
|
|
41
|
+
/** Consumer group override (defaults to the store's `consumerGroup`). */
|
|
42
|
+
consumerGroup?: string;
|
|
43
|
+
/** Start reading from the earliest available event rather than the latest. */
|
|
44
|
+
startFromEarliest?: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** A handle returned by `subscribe()`; call `stop()` to end the subscription. */
|
|
47
|
+
export interface EventHubsSubscription {
|
|
48
|
+
stop(): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* `EventHubsStore` wraps `@azure/event-hubs` producer/consumer clients and
|
|
52
|
+
* exposes event publishing and consumer subscriptions.
|
|
53
|
+
*/
|
|
54
|
+
export declare class EventHubsStore implements NoSqlStore {
|
|
55
|
+
readonly name = "eventhubs";
|
|
56
|
+
readonly library = "@azure/event-hubs";
|
|
57
|
+
private readonly options;
|
|
58
|
+
private azure;
|
|
59
|
+
private producer;
|
|
60
|
+
/** Producers cached by event hub name (the default hub plus any others used). */
|
|
61
|
+
private readonly producers;
|
|
62
|
+
/** Active consumer subscriptions, tracked so `disconnect()` can close them. */
|
|
63
|
+
private readonly consumers;
|
|
64
|
+
private connected;
|
|
65
|
+
constructor(options?: EventHubsStoreOptions);
|
|
66
|
+
connect(): Promise<void>;
|
|
67
|
+
disconnect(): Promise<void>;
|
|
68
|
+
isConnected(): boolean;
|
|
69
|
+
/** Returns the underlying default `EventHubProducerClient` for anything not wrapped here. */
|
|
70
|
+
getClient(): EventHubProducerLike;
|
|
71
|
+
private requireModule;
|
|
72
|
+
/** Resolve (and cache) a producer for a given event hub name. */
|
|
73
|
+
private producerFor;
|
|
74
|
+
private wrapError;
|
|
75
|
+
/**
|
|
76
|
+
* Send one `message` to `eventHubName` (or the store's default hub) as a
|
|
77
|
+
* single-event batch via `EventHubProducerClient.sendBatch`. The message is
|
|
78
|
+
* encoded per the module's rules (string/Buffer as-is, else JSON string).
|
|
79
|
+
*/
|
|
80
|
+
publish(eventHubName: string, message: EventHubsMessage): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Subscribe a new `EventHubConsumerClient` to `eventHubName`, invoking
|
|
83
|
+
* `handler` once per received event. Returns a subscription whose `stop()`
|
|
84
|
+
* closes both the underlying subscription and consumer client; the
|
|
85
|
+
* subscription is tracked so `disconnect()` closes it too.
|
|
86
|
+
*/
|
|
87
|
+
subscribe(eventHubName: string, handler: (event: any) => void | Promise<void>, options?: EventHubsSubscribeOptions): Promise<EventHubsSubscription>;
|
|
88
|
+
}
|
|
89
|
+
export default EventHubsStore;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/** A message accepted by `publish()`. */
|
|
3
|
+
export type EventStoreMessage = string | Buffer | Record<string, unknown> | unknown[];
|
|
4
|
+
/** Minimal structural view of an `EventStoreDBClient`. */
|
|
5
|
+
export interface EventStoreClientLike {
|
|
6
|
+
appendToStream(stream: string, events: unknown, options?: unknown): Promise<any>;
|
|
7
|
+
subscribeToStream(stream: string, options?: unknown): AsyncIterable<any> & {
|
|
8
|
+
unsubscribe?(): void;
|
|
9
|
+
};
|
|
10
|
+
readStream(stream: string, options?: unknown): AsyncIterable<any>;
|
|
11
|
+
dispose?(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/** Connection options for `EventStoreStore`. */
|
|
14
|
+
export interface EventStoreStoreOptions {
|
|
15
|
+
/**
|
|
16
|
+
* EventStoreDB connection string, e.g.
|
|
17
|
+
* 'esdb://localhost:2113?tls=false'. Used to build the client via
|
|
18
|
+
* `EventStoreDBClient.connectionString(...)`.
|
|
19
|
+
*/
|
|
20
|
+
connectionString?: string;
|
|
21
|
+
/**
|
|
22
|
+
* A pre-built `EventStoreDBClient` (or a mock exposing the methods above).
|
|
23
|
+
* When provided, `connect()` uses it directly and does NOT require the driver
|
|
24
|
+
* — this is how tests inject a mock client.
|
|
25
|
+
*/
|
|
26
|
+
client?: EventStoreClientLike;
|
|
27
|
+
}
|
|
28
|
+
/** Options for `publish()`. */
|
|
29
|
+
export interface AppendOptions {
|
|
30
|
+
/** Event type recorded on the event. Defaults to 'message'. */
|
|
31
|
+
type?: string;
|
|
32
|
+
/** Optional metadata object attached to the event. */
|
|
33
|
+
metadata?: Record<string, unknown>;
|
|
34
|
+
/** Optional explicit event id (UUID). */
|
|
35
|
+
id?: string;
|
|
36
|
+
/** Expected stream revision / state for optimistic concurrency. */
|
|
37
|
+
expectedRevision?: unknown;
|
|
38
|
+
}
|
|
39
|
+
/** Options for `subscribe()`. */
|
|
40
|
+
export interface EventStoreSubscribeOptions {
|
|
41
|
+
/** Start position: 'start', 'end', or a specific revision. Defaults to 'end'. */
|
|
42
|
+
fromRevision?: 'start' | 'end' | bigint;
|
|
43
|
+
/** Resolve link events to the events they point at. */
|
|
44
|
+
resolveLinkTos?: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** A handle returned by `subscribe()`; call `stop()` to end the subscription. */
|
|
47
|
+
export interface EventStoreSubscription {
|
|
48
|
+
stop(): void;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* `EventStoreStore` wraps an `@eventstore/db-client` `EventStoreDBClient` and
|
|
52
|
+
* exposes appending events, catch-up subscriptions, and stream reads.
|
|
53
|
+
*/
|
|
54
|
+
export declare class EventStoreStore implements NoSqlStore {
|
|
55
|
+
readonly name = "eventstore";
|
|
56
|
+
readonly library = "@eventstore/db-client";
|
|
57
|
+
private readonly options;
|
|
58
|
+
private client;
|
|
59
|
+
private esdb;
|
|
60
|
+
private connected;
|
|
61
|
+
/** Active subscriptions, tracked so `disconnect()` can end them. */
|
|
62
|
+
private readonly subscriptions;
|
|
63
|
+
constructor(options?: EventStoreStoreOptions);
|
|
64
|
+
connect(): Promise<void>;
|
|
65
|
+
private tryLoadSdk;
|
|
66
|
+
disconnect(): Promise<void>;
|
|
67
|
+
isConnected(): boolean;
|
|
68
|
+
/** Returns the underlying `EventStoreDBClient` for anything not wrapped here. */
|
|
69
|
+
getClient(): EventStoreClientLike;
|
|
70
|
+
private requireClient;
|
|
71
|
+
private wrapError;
|
|
72
|
+
/**
|
|
73
|
+
* Append one event carrying `message` to `stream` via `appendToStream`. The
|
|
74
|
+
* message is turned into a JSON event (`jsonEvent`) with `options.type`
|
|
75
|
+
* (default 'message'). Returns the driver's append result (next expected
|
|
76
|
+
* revision, etc.).
|
|
77
|
+
*/
|
|
78
|
+
publish(stream: string, message: EventStoreMessage, options?: AppendOptions): Promise<any>;
|
|
79
|
+
/**
|
|
80
|
+
* Streams are created implicitly by the first append in EventStoreDB, so this
|
|
81
|
+
* is a documented no-op that resolves without contacting the server. Provided
|
|
82
|
+
* to satisfy the common store surface (alias `createTopic`).
|
|
83
|
+
*/
|
|
84
|
+
createStream(_name: string): Promise<void>;
|
|
85
|
+
/** Alias for `createStream()`, matching the common store surface. */
|
|
86
|
+
createTopic(name: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Read events from `stream` into an array by draining the driver's async
|
|
89
|
+
* iterable. Options (`fromRevision`, `maxCount`, `direction`, ...) are passed
|
|
90
|
+
* straight through.
|
|
91
|
+
*/
|
|
92
|
+
readStream(stream: string, options?: unknown): Promise<any[]>;
|
|
93
|
+
/**
|
|
94
|
+
* Subscribe to `stream` with a catch-up subscription (`subscribeToStream`),
|
|
95
|
+
* invoking `handler` once per resolved event. Returns a subscription whose
|
|
96
|
+
* `stop()` ends it; it is tracked so `disconnect()` ends it too. The
|
|
97
|
+
* consuming loop runs detached (not awaited); this method resolves once the
|
|
98
|
+
* subscription is opened.
|
|
99
|
+
*/
|
|
100
|
+
subscribe(stream: string, handler: (event: any) => void | Promise<void>, options?: EventStoreSubscribeOptions): Promise<EventStoreSubscription>;
|
|
101
|
+
}
|
|
102
|
+
export default EventStoreStore;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FaunaDB store implementation for the Prorm NoSQL layer.
|
|
3
|
+
*
|
|
4
|
+
* Fauna is a multi-model, distributed database (document, relational, graph)
|
|
5
|
+
* driven by FQL - a functional query language expressed as composed function
|
|
6
|
+
* calls rather than SQL strings. It does not fit the SQL-shaped `Dialect`
|
|
7
|
+
* interface, so this class implements the minimal `NoSqlStore` marker
|
|
8
|
+
* interface for connection lifecycle and otherwise exposes Fauna's real
|
|
9
|
+
* document CRUD (built from FQL expressions) plus a raw FQL `query` escape
|
|
10
|
+
* hatch.
|
|
11
|
+
*
|
|
12
|
+
* Uses the official `faunadb` driver. That driver is an optional peer
|
|
13
|
+
* dependency and is loaded lazily inside `connect()` so importing this module
|
|
14
|
+
* never requires it to be installed. Tests inject a pre-built mock `client`
|
|
15
|
+
* (and FQL builder `q`) via options, which bypasses the lazy `require`
|
|
16
|
+
* entirely - no real driver and no network are needed.
|
|
17
|
+
*/
|
|
18
|
+
import { NoSqlStore } from '../store';
|
|
19
|
+
/** A native `faunadb.Client` handle, left untyped because the driver is an
|
|
20
|
+
* optional dependency not imported here. */
|
|
21
|
+
type FaunaClient = any;
|
|
22
|
+
/** The FQL query builder (`faunadb.query`). */
|
|
23
|
+
type FaunaQuery = any;
|
|
24
|
+
/**
|
|
25
|
+
* Connection options for `FaunaDbStore`.
|
|
26
|
+
*
|
|
27
|
+
* `secret` authenticates against a Fauna database. When a pre-built `client`
|
|
28
|
+
* is supplied (e.g. in tests), `connect()` uses it directly and skips loading
|
|
29
|
+
* the `faunadb` driver; the FQL builder `q` may likewise be injected so tests
|
|
30
|
+
* need not require the driver at all.
|
|
31
|
+
*/
|
|
32
|
+
export interface FaunaDbStoreOptions {
|
|
33
|
+
/** Fauna database secret / access key. */
|
|
34
|
+
secret?: string;
|
|
35
|
+
/** Fauna endpoint domain, e.g. `db.fauna.com`. */
|
|
36
|
+
domain?: string;
|
|
37
|
+
/** A pre-built `faunadb.Client` to use instead of the driver. */
|
|
38
|
+
client?: FaunaClient;
|
|
39
|
+
/** A pre-built FQL builder (`faunadb.query`) to use instead of the driver. */
|
|
40
|
+
q?: FaunaQuery;
|
|
41
|
+
}
|
|
42
|
+
/** Sort direction accepted by {@link FaunaDbStore.findAll}'s `order`. */
|
|
43
|
+
export type FaunaOrderDirection = 'ASC' | 'DESC' | 'asc' | 'desc';
|
|
44
|
+
/** Options for {@link FaunaDbStore.findAll}/{@link FaunaDbStore.findOne}. */
|
|
45
|
+
export interface FaunaFindOptions {
|
|
46
|
+
/** ORM `where` clause (plain equality and/or `Op`-keyed conditions). */
|
|
47
|
+
where?: Record<string, any>;
|
|
48
|
+
/** Ordering, e.g. `[['age', 'DESC'], ['name', 'ASC']]` (applied client-side). */
|
|
49
|
+
order?: Array<[string, FaunaOrderDirection]>;
|
|
50
|
+
/** Maximum documents to return (applied client-side). */
|
|
51
|
+
limit?: number;
|
|
52
|
+
/** Documents to skip (applied client-side). */
|
|
53
|
+
offset?: number;
|
|
54
|
+
/**
|
|
55
|
+
* FQL page size fetched from Fauna before filtering. Defaults to 100000
|
|
56
|
+
* (Fauna's maximum). For collections larger than a single page, supply a
|
|
57
|
+
* covering index and use the raw {@link FaunaDbStore.query} escape hatch.
|
|
58
|
+
*/
|
|
59
|
+
pageSize?: number;
|
|
60
|
+
}
|
|
61
|
+
export declare class FaunaDbStore implements NoSqlStore {
|
|
62
|
+
readonly name = "faunadb";
|
|
63
|
+
readonly library = "faunadb";
|
|
64
|
+
private readonly options;
|
|
65
|
+
private client;
|
|
66
|
+
private q;
|
|
67
|
+
private connected;
|
|
68
|
+
constructor(options?: FaunaDbStoreOptions);
|
|
69
|
+
connect(): Promise<void>;
|
|
70
|
+
private tryRequireQuery;
|
|
71
|
+
disconnect(): Promise<void>;
|
|
72
|
+
isConnected(): boolean;
|
|
73
|
+
getClient(): FaunaClient;
|
|
74
|
+
private requireClient;
|
|
75
|
+
private requireQuery;
|
|
76
|
+
/** Create a document in `collection`; returns the new document's id. */
|
|
77
|
+
insert(collection: string, doc: Record<string, unknown>): Promise<unknown>;
|
|
78
|
+
/** Fetch a document by id, returning its `data`. */
|
|
79
|
+
get(collection: string, id: string): Promise<unknown>;
|
|
80
|
+
/** Merge `patch` into a document's `data`, returning the updated data. */
|
|
81
|
+
update(collection: string, id: string, patch: Record<string, unknown>): Promise<unknown>;
|
|
82
|
+
/** Delete a document by id. */
|
|
83
|
+
delete(collection: string, id: string): Promise<unknown>;
|
|
84
|
+
/**
|
|
85
|
+
* Run an FQL query. When `expr` is provided it is executed directly;
|
|
86
|
+
* otherwise all documents in `collection` are paginated and dereferenced.
|
|
87
|
+
* Returns the query's `data` array.
|
|
88
|
+
*/
|
|
89
|
+
query(collection: string, expr?: unknown): Promise<unknown[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Fetch every document in `collection` matching the ORM `where` clause. The
|
|
92
|
+
* `where` is compiled to an FQL predicate applied via `Filter` over the
|
|
93
|
+
* collection's documents; `order`/`limit`/`offset` are applied client-side.
|
|
94
|
+
* Each result is normalized to its `data` fields plus an `id`.
|
|
95
|
+
*
|
|
96
|
+
* This scans the collection (bounded by `pageSize`). For large collections,
|
|
97
|
+
* define a Fauna index and use the raw {@link query} escape hatch for an
|
|
98
|
+
* index-driven read.
|
|
99
|
+
*/
|
|
100
|
+
findAll<T = Record<string, unknown>>(collection: string, options?: FaunaFindOptions): Promise<T[]>;
|
|
101
|
+
/** Fetch the first document matching `where` (client-side `limit 1`), or `null`. */
|
|
102
|
+
findOne<T = Record<string, unknown>>(collection: string, options?: FaunaFindOptions): Promise<T | null>;
|
|
103
|
+
/** Count documents in `collection` matching `where`. */
|
|
104
|
+
count(collection: string, where?: Record<string, any>): Promise<number>;
|
|
105
|
+
/** Insert `data` and return the new document's id. Alias of {@link insert}. */
|
|
106
|
+
create(collection: string, data: Record<string, unknown>): Promise<unknown>;
|
|
107
|
+
/**
|
|
108
|
+
* Insert many documents atomically in a single FQL `Map`/`Create`, returning
|
|
109
|
+
* the new document ids in order.
|
|
110
|
+
*/
|
|
111
|
+
bulkCreate(collection: string, docs: Array<Record<string, unknown>>): Promise<unknown[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Update every document matching `where`, merging `values` into each match's
|
|
114
|
+
* `data`, all in a single atomic FQL expression. Returns the number of
|
|
115
|
+
* documents updated.
|
|
116
|
+
*/
|
|
117
|
+
updateMany(collection: string, values: Record<string, unknown>, where?: Record<string, any>): Promise<number>;
|
|
118
|
+
/**
|
|
119
|
+
* Delete every document matching `where` in a single atomic FQL expression.
|
|
120
|
+
* Returns the number of documents deleted.
|
|
121
|
+
*/
|
|
122
|
+
destroy(collection: string, where?: Record<string, any>): Promise<number>;
|
|
123
|
+
/**
|
|
124
|
+
* Insert-or-update: if a document matching `where` exists, merge `data` into
|
|
125
|
+
* the first match; otherwise create a new document seeded with the `where`
|
|
126
|
+
* equality keys plus `data`. Returns `{ created }`.
|
|
127
|
+
*/
|
|
128
|
+
upsert(collection: string, data: Record<string, unknown>, where: Record<string, any>): Promise<{
|
|
129
|
+
created: boolean;
|
|
130
|
+
}>;
|
|
131
|
+
/**
|
|
132
|
+
* Run several FQL write expressions atomically in a single transaction via
|
|
133
|
+
* FQL's `Do` (Fauna evaluates a single query as one serializable
|
|
134
|
+
* transaction). Pass expressions built with the query builder from
|
|
135
|
+
* {@link getQuery}. Returns the value of the last expression.
|
|
136
|
+
*/
|
|
137
|
+
transaction(expressions: unknown[]): Promise<unknown>;
|
|
138
|
+
/** Exposes the FQL query builder (`faunadb.query`) for building raw expressions. */
|
|
139
|
+
getQuery(): FaunaQuery;
|
|
140
|
+
}
|
|
141
|
+
export default FaunaDbStore;
|