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,122 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/**
|
|
3
|
+
* A loosely-typed handle to a `minio` `Client`. Kept as an interface rather
|
|
4
|
+
* than the real driver type because `minio` is loaded lazily and may not be
|
|
5
|
+
* installed at type-check time; tests inject a mock matching this shape.
|
|
6
|
+
*/
|
|
7
|
+
export interface MinioClientLike {
|
|
8
|
+
putObject(bucket: string, key: string, data: unknown, ...rest: any[]): any;
|
|
9
|
+
getObject(bucket: string, key: string, ...rest: any[]): any;
|
|
10
|
+
removeObject(bucket: string, key: string, ...rest: any[]): any;
|
|
11
|
+
listObjects(bucket: string, prefix?: string, recursive?: boolean, ...rest: any[]): any;
|
|
12
|
+
statObject(bucket: string, key: string, ...rest: any[]): any;
|
|
13
|
+
makeBucket(bucket: string, ...rest: any[]): any;
|
|
14
|
+
bucketExists(bucket: string, ...rest: any[]): any;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
/** Connection options for `MinioStore`, mirroring `Minio.Client` construction. */
|
|
18
|
+
export interface MinioStoreOptions {
|
|
19
|
+
/** Server hostname or IP, e.g. 'localhost' or 's3.example.com'. */
|
|
20
|
+
endPoint?: string;
|
|
21
|
+
/** TCP port the MinIO/S3 server listens on, e.g. 9000. */
|
|
22
|
+
port?: number;
|
|
23
|
+
/** Whether to use TLS (https). */
|
|
24
|
+
useSSL?: boolean;
|
|
25
|
+
/** Access key (username) for the server. */
|
|
26
|
+
accessKey?: string;
|
|
27
|
+
/** Secret key (password) for the server. */
|
|
28
|
+
secretKey?: string;
|
|
29
|
+
/**
|
|
30
|
+
* A pre-built `Minio.Client` (or compatible object). When provided,
|
|
31
|
+
* `connect()` uses it directly and does NOT require the driver — this is how
|
|
32
|
+
* tests inject a mock client, and how callers can supply a custom-configured
|
|
33
|
+
* client. When omitted, `connect()` builds a real `Minio.Client` from the
|
|
34
|
+
* options above.
|
|
35
|
+
*/
|
|
36
|
+
client?: MinioClientLike;
|
|
37
|
+
}
|
|
38
|
+
/** Options for `putObject()`. */
|
|
39
|
+
export interface PutObjectOptions {
|
|
40
|
+
/** Byte length of the object body, when known (some sources need it). */
|
|
41
|
+
size?: number;
|
|
42
|
+
/** Per-object metadata / headers (e.g. `{ 'Content-Type': 'application/json' }`). */
|
|
43
|
+
metadata?: Record<string, string>;
|
|
44
|
+
}
|
|
45
|
+
/** Result of `putObject()`. */
|
|
46
|
+
export interface PutObjectResult {
|
|
47
|
+
etag?: string;
|
|
48
|
+
versionId?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Result of `getObject()` — the fully-collected object body plus its stat metadata. */
|
|
51
|
+
export interface GetObjectResult {
|
|
52
|
+
/** The complete object body, collected from the MinIO byte stream. */
|
|
53
|
+
body: Buffer;
|
|
54
|
+
/** Object metadata from a companion `statObject`, when available. */
|
|
55
|
+
stat?: StatObjectResult;
|
|
56
|
+
}
|
|
57
|
+
/** Result of `statObject()` — object metadata without the body. */
|
|
58
|
+
export interface StatObjectResult {
|
|
59
|
+
size?: number;
|
|
60
|
+
etag?: string;
|
|
61
|
+
lastModified?: Date;
|
|
62
|
+
metaData?: Record<string, string>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* MinIO store, implementing the minimal `NoSqlStore` marker interface. Unlike
|
|
66
|
+
* the SQL dialects there is no `query(sql)` — MinIO's operations are
|
|
67
|
+
* object-shaped and that shape is preserved here rather than forced into a
|
|
68
|
+
* SQL string.
|
|
69
|
+
*/
|
|
70
|
+
export declare class MinioStore implements NoSqlStore {
|
|
71
|
+
readonly name = "minio";
|
|
72
|
+
readonly library = "minio";
|
|
73
|
+
private readonly options;
|
|
74
|
+
private client;
|
|
75
|
+
private connected;
|
|
76
|
+
constructor(options?: MinioStoreOptions);
|
|
77
|
+
connect(): Promise<void>;
|
|
78
|
+
disconnect(): Promise<void>;
|
|
79
|
+
isConnected(): boolean;
|
|
80
|
+
/** Returns the underlying `Minio.Client` (loosely typed) for anything not wrapped here. */
|
|
81
|
+
getClient(): MinioClientLike;
|
|
82
|
+
private requireClient;
|
|
83
|
+
/** Wraps a driver failure in a `DatabaseError`, preserving the original error. */
|
|
84
|
+
private wrapError;
|
|
85
|
+
/** `putObject` — store an object's body (and optional metadata) under `bucket`/`key`. */
|
|
86
|
+
putObject(bucket: string, key: string, data: unknown, options?: PutObjectOptions): Promise<PutObjectResult>;
|
|
87
|
+
/**
|
|
88
|
+
* `getObject` — fetch an object. `Minio.Client.getObject` resolves to a
|
|
89
|
+
* readable *byte stream*; this method collects that stream to completion
|
|
90
|
+
* into a single `Buffer` so callers get the whole body without wiring up
|
|
91
|
+
* stream plumbing. Optionally attaches a companion `statObject` result.
|
|
92
|
+
*/
|
|
93
|
+
getObject(bucket: string, key: string): Promise<GetObjectResult>;
|
|
94
|
+
/** `removeObject` — delete an object. */
|
|
95
|
+
removeObject(bucket: string, key: string): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* `listObjects` — list objects in `bucket`, optionally restricted to those
|
|
98
|
+
* whose name starts with `prefix`. `Minio.Client.listObjects` returns an
|
|
99
|
+
* *object stream* that emits one item per object; this method collects that
|
|
100
|
+
* stream into an array of object *names* (`item.name`). Listing is recursive
|
|
101
|
+
* so nested "path"-style keys are all returned.
|
|
102
|
+
*/
|
|
103
|
+
listObjects(bucket: string, prefix?: string): Promise<string[]>;
|
|
104
|
+
/** `statObject` — fetch an object's metadata without its body. */
|
|
105
|
+
statObject(bucket: string, key: string): Promise<StatObjectResult>;
|
|
106
|
+
/** `makeBucket` — create a bucket, optionally in a specific `region`. */
|
|
107
|
+
makeBucket(bucket: string, region?: string): Promise<void>;
|
|
108
|
+
/** `bucketExists` — whether a bucket exists. */
|
|
109
|
+
bucketExists(bucket: string): Promise<boolean>;
|
|
110
|
+
/**
|
|
111
|
+
* Collect a readable byte stream into a single `Buffer`. Supports both
|
|
112
|
+
* Node.js event-emitter streams (`.on('data'|'end'|'error')`) and async
|
|
113
|
+
* iterables (`for await`), so a test can inject either shape.
|
|
114
|
+
*/
|
|
115
|
+
private collectStream;
|
|
116
|
+
/**
|
|
117
|
+
* Collect an object stream into an array of emitted items. Supports both
|
|
118
|
+
* Node.js event-emitter streams and async iterables.
|
|
119
|
+
*/
|
|
120
|
+
private collectObjectStream;
|
|
121
|
+
}
|
|
122
|
+
export default MinioStore;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Momento Cache store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Momento is a serverless, globally-available cache accessed through the
|
|
5
|
+
* `@gomomento/sdk` `CacheClient`. Every operation is scoped to a named
|
|
6
|
+
* cache. Momento has no SQL surface and no arbitrary key enumeration, so
|
|
7
|
+
* this class implements the minimal `NoSqlStore` marker interface and
|
|
8
|
+
* exposes an edge-KV `get`/`set`/`del`/`list`/`incr` surface mapped onto the
|
|
9
|
+
* Momento client.
|
|
10
|
+
*
|
|
11
|
+
* ## Driver
|
|
12
|
+
*
|
|
13
|
+
* Uses `@gomomento/sdk` (`CacheClient`). The driver is loaded lazily inside
|
|
14
|
+
* `connect()` (or supplied pre-built via the `client` option) so importing
|
|
15
|
+
* this module never requires `@gomomento/sdk` to be installed unless a store
|
|
16
|
+
* is actually connected. Tests inject a mock `client`.
|
|
17
|
+
*
|
|
18
|
+
* ## Method mapping
|
|
19
|
+
*
|
|
20
|
+
* - `get(key)` -> `client.get(cacheName, key)`
|
|
21
|
+
* - `set(k,v,opts)` -> `client.set(cacheName, key, value, { ttl })`
|
|
22
|
+
* - `del(key)` -> `client.delete(cacheName, key)`
|
|
23
|
+
* - `list(name?)` -> `client.listFetch(cacheName, listName)`. Momento has
|
|
24
|
+
* no key-scan, so `list()` fetches the elements of a Momento *list*
|
|
25
|
+
* (`name` is the list name, defaulting to `defaultListName`) rather than
|
|
26
|
+
* enumerating cache keys.
|
|
27
|
+
* - `incr(k,by?)` -> `client.increment(cacheName, key, by)`
|
|
28
|
+
*
|
|
29
|
+
* ## Serialization
|
|
30
|
+
*
|
|
31
|
+
* String values are stored verbatim; every other value is `JSON.stringify`'d
|
|
32
|
+
* before being written.
|
|
33
|
+
*/
|
|
34
|
+
import { NoSqlStore } from '../store';
|
|
35
|
+
/** Options for `set()`. */
|
|
36
|
+
export interface MomentoSetOptions {
|
|
37
|
+
/** Time-to-live in seconds for this item (Momento `ttl`). */
|
|
38
|
+
ttl?: number;
|
|
39
|
+
}
|
|
40
|
+
/** The subset of the Momento `CacheClient` surface this store drives. */
|
|
41
|
+
export interface MomentoCacheClient {
|
|
42
|
+
get(cacheName: string, key: string): Promise<any>;
|
|
43
|
+
set(cacheName: string, key: string, value: string, options?: Record<string, unknown>): Promise<any>;
|
|
44
|
+
delete(cacheName: string, key: string): Promise<any>;
|
|
45
|
+
increment(cacheName: string, key: string, amount?: number, options?: Record<string, unknown>): Promise<any>;
|
|
46
|
+
listFetch(cacheName: string, listName: string): Promise<any>;
|
|
47
|
+
}
|
|
48
|
+
/** Connection options for `MomentoStore`. */
|
|
49
|
+
export interface MomentoStoreOptions {
|
|
50
|
+
/** Name of the Momento cache every operation targets (required). */
|
|
51
|
+
cacheName?: string;
|
|
52
|
+
/** Default list name used by `list()` when none is passed. */
|
|
53
|
+
defaultListName?: string;
|
|
54
|
+
/** Momento SDK `Configuration` (used only when building a real client). */
|
|
55
|
+
configuration?: unknown;
|
|
56
|
+
/** Momento `CredentialProvider` (used only when building a real client). */
|
|
57
|
+
credentialProvider?: unknown;
|
|
58
|
+
/** Default TTL (seconds) for the constructed client. */
|
|
59
|
+
defaultTtlSeconds?: number;
|
|
60
|
+
/** Pre-built `CacheClient`; when given `connect()` uses it and skips `require('@gomomento/sdk')`. */
|
|
61
|
+
client?: MomentoCacheClient;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* `MomentoStore` wraps a Momento `CacheClient` behind the `NoSqlStore`
|
|
65
|
+
* lifecycle and an edge-KV `get`/`set`/`del`/`list`/`incr` surface.
|
|
66
|
+
*/
|
|
67
|
+
export declare class MomentoStore implements NoSqlStore {
|
|
68
|
+
readonly name = "momento";
|
|
69
|
+
readonly library = "@gomomento/sdk";
|
|
70
|
+
private readonly options;
|
|
71
|
+
private client;
|
|
72
|
+
private connected;
|
|
73
|
+
constructor(options?: MomentoStoreOptions);
|
|
74
|
+
private get cacheName();
|
|
75
|
+
connect(): Promise<void>;
|
|
76
|
+
disconnect(): Promise<void>;
|
|
77
|
+
isConnected(): boolean;
|
|
78
|
+
/** Returns the underlying Momento `CacheClient` for anything not wrapped here. */
|
|
79
|
+
getClient(): MomentoCacheClient;
|
|
80
|
+
private requireClient;
|
|
81
|
+
/** Read a key from the configured cache. Returns the Momento response object. */
|
|
82
|
+
get(key: string): Promise<any>;
|
|
83
|
+
/**
|
|
84
|
+
* Write `value` under `key`. Strings are stored verbatim; other values are
|
|
85
|
+
* JSON-serialized. `options.ttl` sets a per-item TTL in seconds.
|
|
86
|
+
*/
|
|
87
|
+
set(key: string, value: unknown, options?: MomentoSetOptions): Promise<any>;
|
|
88
|
+
/** Delete a key from the configured cache. */
|
|
89
|
+
del(key: string): Promise<any>;
|
|
90
|
+
/**
|
|
91
|
+
* Fetch the elements of a Momento list. Momento cannot enumerate cache
|
|
92
|
+
* keys, so `prefix`/`listName` names a list; defaults to
|
|
93
|
+
* `defaultListName`.
|
|
94
|
+
*/
|
|
95
|
+
list(listName?: string): Promise<any>;
|
|
96
|
+
/** Atomically increment the numeric value at `key` by `by` (default `1`). */
|
|
97
|
+
incr(key: string, by?: number): Promise<any>;
|
|
98
|
+
}
|
|
99
|
+
export default MomentoStore;
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB store implementation for the Prorm NoSQL layer.
|
|
3
|
+
*
|
|
4
|
+
* MongoDB is a document store, not a SQL engine, so this class does not
|
|
5
|
+
* implement the SQL-shaped `Dialect` interface (see src/dialects/dialect.ts).
|
|
6
|
+
* It implements the minimal `NoSqlStore` marker interface (src/nosql/store.ts)
|
|
7
|
+
* for connection lifecycle, and otherwise exposes MongoDB's real API shape
|
|
8
|
+
* directly: filters, projections, aggregation pipelines, sessions/
|
|
9
|
+
* transactions, and typed collections - rather than forcing everything
|
|
10
|
+
* through a `query(sql)` method that doesn't make sense for a document
|
|
11
|
+
* database.
|
|
12
|
+
*/
|
|
13
|
+
import { MongoClient, Db, Collection, Document, Filter, FindOptions, OptionalUnlessRequiredId, InsertOneOptions, BulkWriteOptions, UpdateFilter, UpdateOptions, DeleteOptions, CountDocumentsOptions, AggregateOptions, IndexSpecification, CreateIndexesOptions, ListIndexesOptions, DropCollectionOptions, EstimatedDocumentCountOptions, CreateCollectionOptions, ListCollectionsOptions, CollectionInfo, RenameOptions, MongoClientOptions, ClientSession, ClientSessionOptions, TransactionOptions, InsertOneResult, InsertManyResult, UpdateResult, DeleteResult, AnyBulkWriteOperation, BulkWriteResult, FindOneAndUpdateOptions, FindOneAndDeleteOptions, DistinctOptions, WithId, FindCursor, ChangeStream, ChangeStreamDocument, ChangeStreamOptions } from 'mongodb';
|
|
14
|
+
import { NoSqlStore } from '../store';
|
|
15
|
+
/** One `[field, direction]` ordering term, e.g. `['createdAt', 'DESC']`. */
|
|
16
|
+
export type OrderTerm = [string, 'ASC' | 'DESC'] | string;
|
|
17
|
+
/** Options for {@link MongoStore.findAll}/{@link MongoStore.findOneWhere}. */
|
|
18
|
+
export interface OrmFindOptions {
|
|
19
|
+
/** Ordering terms applied in sequence. A bare string sorts ascending. */
|
|
20
|
+
order?: OrderTerm | OrderTerm[];
|
|
21
|
+
/** Maximum number of documents to return. */
|
|
22
|
+
limit?: number;
|
|
23
|
+
/** Number of leading documents to skip (offset). */
|
|
24
|
+
offset?: number;
|
|
25
|
+
/** Projection: fields to include/exclude. */
|
|
26
|
+
projection?: Document;
|
|
27
|
+
}
|
|
28
|
+
/** A group-aggregation request for {@link MongoStore.aggregateGroup}. */
|
|
29
|
+
export interface OrmAggregateOptions {
|
|
30
|
+
/** ORM `where` filter applied before grouping (`$match`). */
|
|
31
|
+
where?: Record<string | symbol, unknown>;
|
|
32
|
+
/** Field(s) to group by. Omit for a single whole-collection group. */
|
|
33
|
+
groupBy?: string | string[];
|
|
34
|
+
/** Emit a `count` per group. */
|
|
35
|
+
count?: boolean;
|
|
36
|
+
/** Fields to `sum` per group, keyed by output name → source field. */
|
|
37
|
+
sum?: Record<string, string>;
|
|
38
|
+
/** Fields to `avg` per group, keyed by output name → source field. */
|
|
39
|
+
avg?: Record<string, string>;
|
|
40
|
+
/** Fields to `min` per group, keyed by output name → source field. */
|
|
41
|
+
min?: Record<string, string>;
|
|
42
|
+
/** Fields to `max` per group, keyed by output name → source field. */
|
|
43
|
+
max?: Record<string, string>;
|
|
44
|
+
}
|
|
45
|
+
/** Describes an association to eager-load via `$lookup` in {@link MongoStore.findWithInclude}. */
|
|
46
|
+
export interface MongoInclude {
|
|
47
|
+
/** The collection to join to (the associated model's collection). */
|
|
48
|
+
from: string;
|
|
49
|
+
/** Field on the local documents used as the join key. */
|
|
50
|
+
localField: string;
|
|
51
|
+
/** Field on the `from` documents matched against `localField`. Defaults to `_id`. */
|
|
52
|
+
foreignField?: string;
|
|
53
|
+
/** Property name under which matched documents are attached. */
|
|
54
|
+
as: string;
|
|
55
|
+
/** When true, unwind to a single associated document (belongsTo/hasOne) instead of an array. */
|
|
56
|
+
single?: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Options for constructing a `MongoStore`.
|
|
60
|
+
*
|
|
61
|
+
* `uri` is the standard MongoDB connection string
|
|
62
|
+
* (`mongodb://...` / `mongodb+srv://...`). `database` selects the database
|
|
63
|
+
* to operate against once connected. Any additional standard
|
|
64
|
+
* `MongoClientOptions` (pool size, TLS, auth, timeouts, etc.) can be passed
|
|
65
|
+
* through via `clientOptions`.
|
|
66
|
+
*/
|
|
67
|
+
export interface MongoStoreOptions {
|
|
68
|
+
/** MongoDB connection string, e.g. `mongodb://localhost:27017` */
|
|
69
|
+
uri: string;
|
|
70
|
+
/** Name of the database to use */
|
|
71
|
+
database: string;
|
|
72
|
+
/** Additional options passed straight through to the native `MongoClient` */
|
|
73
|
+
clientOptions?: MongoClientOptions;
|
|
74
|
+
}
|
|
75
|
+
/** Options accepted by {@link MongoStore.find}. */
|
|
76
|
+
export interface MongoFindOptions<T extends Document = Document> extends Omit<FindOptions<T>, 'sort' | 'limit' | 'skip' | 'projection'> {
|
|
77
|
+
projection?: FindOptions<T>['projection'];
|
|
78
|
+
sort?: FindOptions<T>['sort'];
|
|
79
|
+
limit?: number;
|
|
80
|
+
skip?: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `MongoStore` wraps the official `mongodb` driver's `MongoClient`/`Db`/
|
|
84
|
+
* `Collection` API in a small, typed convenience layer.
|
|
85
|
+
*/
|
|
86
|
+
export declare class MongoStore implements NoSqlStore {
|
|
87
|
+
readonly name = "mongodb";
|
|
88
|
+
readonly library = "mongodb";
|
|
89
|
+
private readonly options;
|
|
90
|
+
private client;
|
|
91
|
+
private db;
|
|
92
|
+
private _isConnected;
|
|
93
|
+
constructor(options: MongoStoreOptions);
|
|
94
|
+
connect(): Promise<void>;
|
|
95
|
+
disconnect(): Promise<void>;
|
|
96
|
+
isConnected(): boolean;
|
|
97
|
+
/** Returns the underlying native `MongoClient`. */
|
|
98
|
+
getClient(): MongoClient;
|
|
99
|
+
/** Returns the underlying native `Db` handle for the configured database. */
|
|
100
|
+
getDb(): Db;
|
|
101
|
+
private requireClient;
|
|
102
|
+
private requireDb;
|
|
103
|
+
/** Typed collection accessor, e.g. `store.collection<User>('users')`. */
|
|
104
|
+
collection<T extends Document = Document>(name: string): Collection<T>;
|
|
105
|
+
private wrapError;
|
|
106
|
+
/**
|
|
107
|
+
* Maps a raw MongoDB driver error to one of our well-known `ErrorCodes`.
|
|
108
|
+
*
|
|
109
|
+
* MongoDB surfaces most server-side failures as a numeric `code` (and a
|
|
110
|
+
* human-readable `codeName`) on the error object itself - unlike some SQL
|
|
111
|
+
* drivers, this is not tucked away behind `.parent`/`.metadata.original`.
|
|
112
|
+
* We sniff those fields here so callers get a meaningful, dialect-
|
|
113
|
+
* agnostic error code (e.g. `UNIQUE_CONSTRAINT_ERROR` for duplicate key
|
|
114
|
+
* violations) instead of a generic `QUERY_ERROR` for everything.
|
|
115
|
+
*/
|
|
116
|
+
private mapErrorCode;
|
|
117
|
+
findOne<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: FindOptions<T>): Promise<T | null>;
|
|
118
|
+
find<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: MongoFindOptions<T>): Promise<T[]>;
|
|
119
|
+
/**
|
|
120
|
+
* Like {@link find}, but returns the native `FindCursor` instead of
|
|
121
|
+
* materializing the results with `toArray()`. Use this for large result
|
|
122
|
+
* sets that shouldn't be pulled fully into memory - iterate with
|
|
123
|
+
* `for await (const doc of cursor)` or use `cursor.next()`/`cursor.forEach()`.
|
|
124
|
+
*/
|
|
125
|
+
findCursor<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: MongoFindOptions<T>): FindCursor<WithId<T>>;
|
|
126
|
+
countDocuments<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: CountDocumentsOptions): Promise<number>;
|
|
127
|
+
/**
|
|
128
|
+
* Returns a fast, metadata-based approximate count of all documents in
|
|
129
|
+
* `collectionName`. Unlike {@link countDocuments}, this does not accept a
|
|
130
|
+
* filter and does not scan the collection - it reads the collection's
|
|
131
|
+
* cached document count, so it's cheap but can be stale/approximate
|
|
132
|
+
* (e.g. immediately after bulk writes, or on a sharded cluster).
|
|
133
|
+
*/
|
|
134
|
+
estimatedDocumentCount(collectionName: string, options?: EstimatedDocumentCountOptions): Promise<number>;
|
|
135
|
+
aggregate<T extends Document = Document, R extends Document = Document>(collectionName: string, pipeline: Document[], options?: AggregateOptions): Promise<R[]>;
|
|
136
|
+
/** Returns the distinct values for `field` across documents matching `filter`. */
|
|
137
|
+
distinct<T extends Document = Document>(collectionName: string, field: string, filter?: Filter<T>, options?: DistinctOptions): Promise<unknown[]>;
|
|
138
|
+
/**
|
|
139
|
+
* Translate an ORM `where` object (with `Op.*` operators and
|
|
140
|
+
* `Op.and`/`Op.or`/`Op.not`) into a native MongoDB filter document. Exposed
|
|
141
|
+
* for callers that want to feed the translated filter into other native
|
|
142
|
+
* operations (e.g. `aggregate`, `watch`).
|
|
143
|
+
*/
|
|
144
|
+
translateWhere<T extends Document = Document>(where: Record<string | symbol, unknown>): Filter<T>;
|
|
145
|
+
/**
|
|
146
|
+
* Fetch all documents in `collectionName` matching an ORM `where` clause,
|
|
147
|
+
* with optional ordering, offset, limit, and projection. The `where` object
|
|
148
|
+
* accepts the full ORM operator surface (`Op.gt`, `Op.in`, `Op.between`,
|
|
149
|
+
* `Op.like`, `Op.and`/`Op.or`, ...), translated to a native MongoDB filter -
|
|
150
|
+
* so standard queries never require hand-written `$`-filters.
|
|
151
|
+
*/
|
|
152
|
+
findAll<T extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>, options?: OrmFindOptions): Promise<T[]>;
|
|
153
|
+
/** Fetch the first document in `collectionName` matching an ORM `where` clause (respecting `order`), or `null`. */
|
|
154
|
+
findOneWhere<T extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>, options?: Omit<OrmFindOptions, 'limit'>): Promise<T | null>;
|
|
155
|
+
/** Count documents in `collectionName` matching an ORM `where` clause. */
|
|
156
|
+
countWhere<T extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>): Promise<number>;
|
|
157
|
+
/**
|
|
158
|
+
* Update every document in `collectionName` matching an ORM `where` clause,
|
|
159
|
+
* applying `patch` (a raw `$`-update, or a plain object which is wrapped in
|
|
160
|
+
* `$set`).
|
|
161
|
+
*/
|
|
162
|
+
updateWhere<T extends Document = Document>(collectionName: string, where: Record<string | symbol, unknown>, patch: UpdateFilter<T> | Partial<T>, options?: UpdateOptions): Promise<Document | UpdateResult<T>>;
|
|
163
|
+
/** Delete every document in `collectionName` matching an ORM `where` clause. */
|
|
164
|
+
deleteWhere<T extends Document = Document>(collectionName: string, where: Record<string | symbol, unknown>, options?: DeleteOptions): Promise<DeleteResult>;
|
|
165
|
+
/**
|
|
166
|
+
* Insert-or-update by an ORM `where` clause: applies `patch` to a matching
|
|
167
|
+
* document, inserting one (with the patch merged over the filter's implied
|
|
168
|
+
* fields) if none matches. Thin wrapper over `updateOne` with `upsert: true`.
|
|
169
|
+
*/
|
|
170
|
+
upsert<T extends Document = Document>(collectionName: string, where: Record<string | symbol, unknown>, patch: UpdateFilter<T> | Partial<T>, options?: Omit<UpdateOptions, 'upsert'>): Promise<UpdateResult<T>>;
|
|
171
|
+
/**
|
|
172
|
+
* Grouped aggregation over `collectionName` using a native
|
|
173
|
+
* `$match`/`$group` pipeline (`count`/`sum`/`avg`/`min`/`max`), with an
|
|
174
|
+
* optional ORM `where` pre-filter. Returns one entry per group:
|
|
175
|
+
* `{ group, ...aggregates }` (`group` is `null` when no `groupBy` is given).
|
|
176
|
+
*/
|
|
177
|
+
aggregateGroup(collectionName: string, options?: OrmAggregateOptions): Promise<Array<Record<string, unknown>>>;
|
|
178
|
+
/**
|
|
179
|
+
* Fetch documents from `collectionName` matching an ORM `where` clause, with
|
|
180
|
+
* one or more associations eager-loaded via native `$lookup` (the MongoDB
|
|
181
|
+
* equivalent of a SQL join / ORM `include`). Each {@link MongoInclude}
|
|
182
|
+
* attaches matched documents under its `as` key; `single: true` unwinds to a
|
|
183
|
+
* single document for to-one associations.
|
|
184
|
+
*/
|
|
185
|
+
findWithInclude<T extends Document = Document, R extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>, includes?: MongoInclude[], options?: OrmFindOptions): Promise<R[]>;
|
|
186
|
+
insertOne<T extends Document = Document>(collectionName: string, doc: OptionalUnlessRequiredId<T>, options?: InsertOneOptions): Promise<InsertOneResult<T>>;
|
|
187
|
+
insertMany<T extends Document = Document>(collectionName: string, docs: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions): Promise<InsertManyResult<T>>;
|
|
188
|
+
/**
|
|
189
|
+
* Executes a mix of insert/update/delete/upsert operations against a
|
|
190
|
+
* single collection in one round trip. Thin passthrough to the native
|
|
191
|
+
* driver's `Collection.bulkWrite()`.
|
|
192
|
+
*/
|
|
193
|
+
bulkWrite<T extends Document = Document>(collectionName: string, operations: AnyBulkWriteOperation<T>[], options?: BulkWriteOptions): Promise<BulkWriteResult>;
|
|
194
|
+
updateOne<T extends Document = Document>(collectionName: string, filter: Filter<T>, update: UpdateFilter<T> | Partial<T>, options?: UpdateOptions): Promise<UpdateResult<T>>;
|
|
195
|
+
updateMany<T extends Document = Document>(collectionName: string, filter: Filter<T>, update: UpdateFilter<T> | Partial<T>, options?: UpdateOptions): Promise<Document | UpdateResult<T>>;
|
|
196
|
+
/** Atomically finds a document matching `filter` and updates it, returning it (or `null`). */
|
|
197
|
+
findOneAndUpdate<T extends Document = Document>(collectionName: string, filter: Filter<T>, update: UpdateFilter<T> | Document[], options?: FindOneAndUpdateOptions): Promise<WithId<T> | null>;
|
|
198
|
+
deleteOne<T extends Document = Document>(collectionName: string, filter: Filter<T>, options?: DeleteOptions): Promise<DeleteResult>;
|
|
199
|
+
deleteMany<T extends Document = Document>(collectionName: string, filter: Filter<T>, options?: DeleteOptions): Promise<DeleteResult>;
|
|
200
|
+
/** Atomically finds a document matching `filter` and deletes it, returning it (or `null`). */
|
|
201
|
+
findOneAndDelete<T extends Document = Document>(collectionName: string, filter: Filter<T>, options?: FindOneAndDeleteOptions): Promise<WithId<T> | null>;
|
|
202
|
+
createIndex(collectionName: string, indexSpec: IndexSpecification, options?: CreateIndexesOptions): Promise<string>;
|
|
203
|
+
dropIndex(collectionName: string, indexName: string): Promise<Document>;
|
|
204
|
+
/**
|
|
205
|
+
* Lists the indexes defined on `collectionName`. Fills the asymmetry with
|
|
206
|
+
* {@link createIndex}/{@link dropIndex}, which have no built-in way to
|
|
207
|
+
* inspect what indexes already exist. Thin passthrough to the native
|
|
208
|
+
* driver's `Collection.listIndexes().toArray()`.
|
|
209
|
+
*/
|
|
210
|
+
listIndexes(collectionName: string, options?: ListIndexesOptions): Promise<Document[]>;
|
|
211
|
+
/**
|
|
212
|
+
* Explicitly creates `collectionName`, rather than relying on MongoDB's
|
|
213
|
+
* implicit creation of a collection on first write. This is the only way
|
|
214
|
+
* to create a **timeseries collection** (`options.timeseries: { timeField,
|
|
215
|
+
* metaField?, granularity? }`) or a **view** (`options.viewOn` +
|
|
216
|
+
* `options.pipeline`), since both must be declared at creation time -
|
|
217
|
+
* previously this required dropping down to `getDb().createCollection(...)`
|
|
218
|
+
* directly.
|
|
219
|
+
*/
|
|
220
|
+
createCollection<T extends Document = Document>(collectionName: string, options?: CreateCollectionOptions): Promise<Collection<T>>;
|
|
221
|
+
/**
|
|
222
|
+
* Lists the collections (and views) defined in the configured database.
|
|
223
|
+
* Thin passthrough to the native driver's `Db.listCollections().toArray()`.
|
|
224
|
+
*/
|
|
225
|
+
listCollections(filter?: Document, options?: ListCollectionsOptions): Promise<CollectionInfo[]>;
|
|
226
|
+
/**
|
|
227
|
+
* Renames `oldName` to `newName`. Uses `Db.renameCollection()` (rather
|
|
228
|
+
* than `Collection.rename()`) because it's the driver API that stays
|
|
229
|
+
* generic over the document type, matching the rest of this class's
|
|
230
|
+
* typed-collection conventions.
|
|
231
|
+
*/
|
|
232
|
+
renameCollection<T extends Document = Document>(oldName: string, newName: string, options?: RenameOptions): Promise<Collection<T>>;
|
|
233
|
+
/** Drops `collectionName` entirely. Thin passthrough to `Collection.drop()`. */
|
|
234
|
+
dropCollection(collectionName: string, options?: DropCollectionOptions): Promise<boolean>;
|
|
235
|
+
/**
|
|
236
|
+
* Opens a change stream on `collectionName`, delivering real-time
|
|
237
|
+
* notifications of insert/update/replace/delete operations. Thin
|
|
238
|
+
* passthrough to the native driver's `Collection.watch()`.
|
|
239
|
+
*
|
|
240
|
+
* Like {@link withTransaction}, this requires a replica set / sharded
|
|
241
|
+
* cluster deployment - a standalone `mongod` does not support change
|
|
242
|
+
* streams (see README "Known limitations").
|
|
243
|
+
*
|
|
244
|
+
* Returns the native `ChangeStream`, which is itself an async iterable
|
|
245
|
+
* and event emitter (`on('change', ...)`, `on('error', ...)`, `close()`).
|
|
246
|
+
*
|
|
247
|
+
* ```typescript
|
|
248
|
+
* const stream = store.watch<User>('users', [{ $match: { operationType: 'insert' } }]);
|
|
249
|
+
* stream.on('change', (change) => {
|
|
250
|
+
* // change.operationType, change.fullDocument, ...
|
|
251
|
+
* });
|
|
252
|
+
* // later: await stream.close();
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
watch<T extends Document = Document>(collectionName: string, pipeline?: Document[], options?: ChangeStreamOptions): ChangeStream<T, ChangeStreamDocument<T>>;
|
|
256
|
+
/** Starts a new client session (for multi-document transactions). */
|
|
257
|
+
startSession(options?: ClientSessionOptions): ClientSession;
|
|
258
|
+
/**
|
|
259
|
+
* Runs `fn` inside a MongoDB multi-document transaction. Requires a
|
|
260
|
+
* replica set / mongos deployment - standalone servers do not support
|
|
261
|
+
* transactions (see README "Known limitations").
|
|
262
|
+
*/
|
|
263
|
+
withTransaction<T>(fn: (session: ClientSession) => Promise<T>, options?: TransactionOptions): Promise<T>;
|
|
264
|
+
}
|
|
265
|
+
export default MongoStore;
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.MongoStore = void 0;
|
|
16
16
|
const mongodb_1 = require("mongodb");
|
|
17
17
|
const index_1 = require("../../errors/index");
|
|
18
|
+
const where_1 = require("./where");
|
|
18
19
|
/**
|
|
19
20
|
* `MongoStore` wraps the official `mongodb` driver's `MongoClient`/`Db`/
|
|
20
21
|
* `Collection` API in a small, typed convenience layer.
|
|
@@ -228,6 +229,134 @@ class MongoStore {
|
|
|
228
229
|
}
|
|
229
230
|
}
|
|
230
231
|
// ---------------------------------------------------------------------
|
|
232
|
+
// ORM-shaped queries (Op-based where clauses, no hand-written filters)
|
|
233
|
+
// ---------------------------------------------------------------------
|
|
234
|
+
/**
|
|
235
|
+
* Translate an ORM `where` object (with `Op.*` operators and
|
|
236
|
+
* `Op.and`/`Op.or`/`Op.not`) into a native MongoDB filter document. Exposed
|
|
237
|
+
* for callers that want to feed the translated filter into other native
|
|
238
|
+
* operations (e.g. `aggregate`, `watch`).
|
|
239
|
+
*/
|
|
240
|
+
translateWhere(where) {
|
|
241
|
+
return (0, where_1.translateWhereToMongo)(where);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Fetch all documents in `collectionName` matching an ORM `where` clause,
|
|
245
|
+
* with optional ordering, offset, limit, and projection. The `where` object
|
|
246
|
+
* accepts the full ORM operator surface (`Op.gt`, `Op.in`, `Op.between`,
|
|
247
|
+
* `Op.like`, `Op.and`/`Op.or`, ...), translated to a native MongoDB filter -
|
|
248
|
+
* so standard queries never require hand-written `$`-filters.
|
|
249
|
+
*/
|
|
250
|
+
async findAll(collectionName, where = {}, options = {}) {
|
|
251
|
+
return this.find(collectionName, this.translateWhere(where), {
|
|
252
|
+
sort: (0, where_1.translateOrderToMongo)(options.order),
|
|
253
|
+
skip: options.offset,
|
|
254
|
+
limit: options.limit,
|
|
255
|
+
projection: options.projection,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
/** Fetch the first document in `collectionName` matching an ORM `where` clause (respecting `order`), or `null`. */
|
|
259
|
+
async findOneWhere(collectionName, where = {}, options = {}) {
|
|
260
|
+
const rows = await this.findAll(collectionName, where, { ...options, limit: 1 });
|
|
261
|
+
return rows.length > 0 ? rows[0] : null;
|
|
262
|
+
}
|
|
263
|
+
/** Count documents in `collectionName` matching an ORM `where` clause. */
|
|
264
|
+
async countWhere(collectionName, where = {}) {
|
|
265
|
+
return this.countDocuments(collectionName, this.translateWhere(where));
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Update every document in `collectionName` matching an ORM `where` clause,
|
|
269
|
+
* applying `patch` (a raw `$`-update, or a plain object which is wrapped in
|
|
270
|
+
* `$set`).
|
|
271
|
+
*/
|
|
272
|
+
async updateWhere(collectionName, where, patch, options) {
|
|
273
|
+
const update = isRawUpdate(patch) ? patch : { $set: patch };
|
|
274
|
+
return this.updateMany(collectionName, this.translateWhere(where), update, options);
|
|
275
|
+
}
|
|
276
|
+
/** Delete every document in `collectionName` matching an ORM `where` clause. */
|
|
277
|
+
async deleteWhere(collectionName, where, options) {
|
|
278
|
+
return this.deleteMany(collectionName, this.translateWhere(where), options);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Insert-or-update by an ORM `where` clause: applies `patch` to a matching
|
|
282
|
+
* document, inserting one (with the patch merged over the filter's implied
|
|
283
|
+
* fields) if none matches. Thin wrapper over `updateOne` with `upsert: true`.
|
|
284
|
+
*/
|
|
285
|
+
async upsert(collectionName, where, patch, options) {
|
|
286
|
+
const update = isRawUpdate(patch) ? patch : { $set: patch };
|
|
287
|
+
return this.updateOne(collectionName, this.translateWhere(where), update, { ...options, upsert: true });
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Grouped aggregation over `collectionName` using a native
|
|
291
|
+
* `$match`/`$group` pipeline (`count`/`sum`/`avg`/`min`/`max`), with an
|
|
292
|
+
* optional ORM `where` pre-filter. Returns one entry per group:
|
|
293
|
+
* `{ group, ...aggregates }` (`group` is `null` when no `groupBy` is given).
|
|
294
|
+
*/
|
|
295
|
+
async aggregateGroup(collectionName, options = {}) {
|
|
296
|
+
const pipeline = [];
|
|
297
|
+
if (options.where)
|
|
298
|
+
pipeline.push({ $match: (0, where_1.translateWhereToMongo)(options.where) });
|
|
299
|
+
const groupFields = options.groupBy
|
|
300
|
+
? Array.isArray(options.groupBy)
|
|
301
|
+
? options.groupBy
|
|
302
|
+
: [options.groupBy]
|
|
303
|
+
: [];
|
|
304
|
+
const id = groupFields.length === 0
|
|
305
|
+
? null
|
|
306
|
+
: groupFields.length === 1
|
|
307
|
+
? `$${groupFields[0]}`
|
|
308
|
+
: Object.fromEntries(groupFields.map((f) => [f.replace(/\./g, '_'), `$${f}`]));
|
|
309
|
+
const group = { _id: id };
|
|
310
|
+
const hasOtherAgg = !!(options.sum || options.avg || options.min || options.max);
|
|
311
|
+
if (options.count || !hasOtherAgg)
|
|
312
|
+
group.count = { $sum: 1 };
|
|
313
|
+
for (const [out, src] of Object.entries(options.sum ?? {}))
|
|
314
|
+
group[out] = { $sum: `$${src}` };
|
|
315
|
+
for (const [out, src] of Object.entries(options.avg ?? {}))
|
|
316
|
+
group[out] = { $avg: `$${src}` };
|
|
317
|
+
for (const [out, src] of Object.entries(options.min ?? {}))
|
|
318
|
+
group[out] = { $min: `$${src}` };
|
|
319
|
+
for (const [out, src] of Object.entries(options.max ?? {}))
|
|
320
|
+
group[out] = { $max: `$${src}` };
|
|
321
|
+
pipeline.push({ $group: group });
|
|
322
|
+
pipeline.push({ $addFields: { group: '$_id' } });
|
|
323
|
+
pipeline.push({ $project: { _id: 0 } });
|
|
324
|
+
return this.aggregate(collectionName, pipeline);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Fetch documents from `collectionName` matching an ORM `where` clause, with
|
|
328
|
+
* one or more associations eager-loaded via native `$lookup` (the MongoDB
|
|
329
|
+
* equivalent of a SQL join / ORM `include`). Each {@link MongoInclude}
|
|
330
|
+
* attaches matched documents under its `as` key; `single: true` unwinds to a
|
|
331
|
+
* single document for to-one associations.
|
|
332
|
+
*/
|
|
333
|
+
async findWithInclude(collectionName, where = {}, includes = [], options = {}) {
|
|
334
|
+
const pipeline = [{ $match: (0, where_1.translateWhereToMongo)(where) }];
|
|
335
|
+
const sort = (0, where_1.translateOrderToMongo)(options.order);
|
|
336
|
+
if (sort)
|
|
337
|
+
pipeline.push({ $sort: sort });
|
|
338
|
+
if (typeof options.offset === 'number')
|
|
339
|
+
pipeline.push({ $skip: options.offset });
|
|
340
|
+
if (typeof options.limit === 'number')
|
|
341
|
+
pipeline.push({ $limit: options.limit });
|
|
342
|
+
for (const inc of includes) {
|
|
343
|
+
pipeline.push({
|
|
344
|
+
$lookup: {
|
|
345
|
+
from: inc.from,
|
|
346
|
+
localField: inc.localField,
|
|
347
|
+
foreignField: inc.foreignField ?? '_id',
|
|
348
|
+
as: inc.as,
|
|
349
|
+
},
|
|
350
|
+
});
|
|
351
|
+
if (inc.single) {
|
|
352
|
+
pipeline.push({ $unwind: { path: `$${inc.as}`, preserveNullAndEmptyArrays: true } });
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (options.projection)
|
|
356
|
+
pipeline.push({ $project: options.projection });
|
|
357
|
+
return this.aggregate(collectionName, pipeline);
|
|
358
|
+
}
|
|
359
|
+
// ---------------------------------------------------------------------
|
|
231
360
|
// Writes
|
|
232
361
|
// ---------------------------------------------------------------------
|
|
233
362
|
async insertOne(collectionName, doc, options) {
|
|
@@ -458,4 +587,14 @@ class MongoStore {
|
|
|
458
587
|
}
|
|
459
588
|
}
|
|
460
589
|
exports.MongoStore = MongoStore;
|
|
590
|
+
/**
|
|
591
|
+
* Whether `patch` is already a raw MongoDB update document (uses `$`-prefixed
|
|
592
|
+
* operators like `$set`/`$inc`) rather than a plain field object that should
|
|
593
|
+
* be wrapped in `$set`.
|
|
594
|
+
*/
|
|
595
|
+
function isRawUpdate(patch) {
|
|
596
|
+
return (patch !== null &&
|
|
597
|
+
typeof patch === 'object' &&
|
|
598
|
+
Object.keys(patch).some((k) => k.startsWith('$')));
|
|
599
|
+
}
|
|
461
600
|
exports.default = MongoStore;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translate an ORM `where` object into a native MongoDB filter document.
|
|
3
|
+
* A bare `{ field: value }` maps to equality, an array value to `$in`, and
|
|
4
|
+
* `Op.and`/`Op.or`/`Op.not` to `$and`/`$or`/`$nor`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function translateWhereToMongo(where: Record<string | symbol, unknown> | undefined | null): Record<string, unknown>;
|
|
7
|
+
/** Build a MongoDB `sort` document from ORM ordering terms. */
|
|
8
|
+
export declare function translateOrderToMongo(order: Array<[string, 'ASC' | 'DESC'] | string> | [string, 'ASC' | 'DESC'] | string | undefined): Record<string, 1 | -1> | undefined;
|