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 single statement for `batch()`: a CQL string plus its bound parameters.
|
|
4
|
+
* Mirrors the `cassandra-driver` batch query shape.
|
|
5
|
+
*/
|
|
6
|
+
export interface KeyspacesBatchQuery {
|
|
7
|
+
query: string;
|
|
8
|
+
params?: unknown[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Options for `execute()` / `batch()`. Forwarded straight through to the
|
|
12
|
+
* driver's query-options bag (consistency, fetchSize, pageState, timestamp,
|
|
13
|
+
* etc.). `prepare` defaults to `true` here (see `execute()`), overridable per
|
|
14
|
+
* call. Note Keyspaces' default consistency is `LOCAL_QUORUM`.
|
|
15
|
+
*/
|
|
16
|
+
export interface KeyspacesQueryOptions {
|
|
17
|
+
prepare?: boolean;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The shape of a `cassandra-driver` result. Only `rows` is relied on here; the
|
|
22
|
+
* rest of the driver's result metadata is preserved via the index signature.
|
|
23
|
+
*/
|
|
24
|
+
export interface KeyspacesResult<T = Record<string, unknown>> {
|
|
25
|
+
rows?: T[];
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Minimal structural type for the pieces of a `cassandra-driver` `Client` this
|
|
30
|
+
* store uses. Kept local so this module type-checks without the optional
|
|
31
|
+
* driver installed.
|
|
32
|
+
*/
|
|
33
|
+
export interface KeyspacesClientLike {
|
|
34
|
+
connect(): Promise<void>;
|
|
35
|
+
execute(query: string, params?: unknown[], options?: Record<string, unknown>): Promise<KeyspacesResult>;
|
|
36
|
+
batch(queries: KeyspacesBatchQuery[], options?: Record<string, unknown>): Promise<KeyspacesResult>;
|
|
37
|
+
shutdown(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Connection options for `KeyspacesStore`. These map onto the `cassandra-driver`
|
|
41
|
+
* `Client` constructor options. For a real Keyspaces endpoint, TLS `sslOptions`
|
|
42
|
+
* and a SigV4/credentials `authProvider` are supplied through `clientOptions`.
|
|
43
|
+
*/
|
|
44
|
+
export interface KeyspacesStoreOptions {
|
|
45
|
+
/**
|
|
46
|
+
* Keyspaces service endpoint(s), e.g.
|
|
47
|
+
* `['cassandra.us-east-1.amazonaws.com:9142']` (note the TLS port 9142).
|
|
48
|
+
*/
|
|
49
|
+
contactPoints?: string[];
|
|
50
|
+
/** Local data center — typically the AWS region, e.g. `'us-east-1'`. */
|
|
51
|
+
localDataCenter?: string;
|
|
52
|
+
/** Default keyspace to bind the session to. */
|
|
53
|
+
keyspace?: string;
|
|
54
|
+
/** Service-specific username/password credentials (or use a SigV4 authProvider via clientOptions). */
|
|
55
|
+
credentials?: {
|
|
56
|
+
username: string;
|
|
57
|
+
password: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Escape hatch for any other `cassandra-driver` `Client` option. For
|
|
61
|
+
* Keyspaces this is where TLS (`sslOptions`) and the SigV4 `authProvider`
|
|
62
|
+
* live. Merged into the options passed to the `Client` constructor.
|
|
63
|
+
*/
|
|
64
|
+
clientOptions?: Record<string, unknown>;
|
|
65
|
+
/**
|
|
66
|
+
* A pre-built driver `Client` (or a compatible mock). When provided,
|
|
67
|
+
* `connect()` uses it directly and skips `require('cassandra-driver')`
|
|
68
|
+
* entirely — this is how tests inject a mock without the real driver
|
|
69
|
+
* installed.
|
|
70
|
+
*/
|
|
71
|
+
client?: KeyspacesClientLike;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* `KeyspacesStore` wraps a `cassandra-driver` `Client` pointed at an Amazon
|
|
75
|
+
* Keyspaces endpoint and exposes CQL execution (`execute`), atomic
|
|
76
|
+
* multi-statement batches (`batch`), and a few parameterized convenience
|
|
77
|
+
* helpers (`insert`, `selectAll`).
|
|
78
|
+
*
|
|
79
|
+
* Statements are prepared by default (`prepare: true`). All Keyspaces-specific
|
|
80
|
+
* connection concerns (TLS, SigV4/credentials, LOCAL_QUORUM consistency) are
|
|
81
|
+
* plain driver options and pass through via `clientOptions` or a pre-built
|
|
82
|
+
* `client`.
|
|
83
|
+
*/
|
|
84
|
+
export declare class KeyspacesStore implements NoSqlStore {
|
|
85
|
+
readonly name = "keyspaces";
|
|
86
|
+
readonly library = "cassandra-driver";
|
|
87
|
+
private readonly options;
|
|
88
|
+
private client;
|
|
89
|
+
private connected;
|
|
90
|
+
constructor(options?: KeyspacesStoreOptions);
|
|
91
|
+
connect(): Promise<void>;
|
|
92
|
+
disconnect(): Promise<void>;
|
|
93
|
+
isConnected(): boolean;
|
|
94
|
+
/** Returns the underlying `cassandra-driver` `Client` for anything not wrapped here. */
|
|
95
|
+
getClient(): KeyspacesClientLike;
|
|
96
|
+
private requireClient;
|
|
97
|
+
private wrapError;
|
|
98
|
+
/**
|
|
99
|
+
* Execute a single CQL statement with optional bound `params`. Statements
|
|
100
|
+
* are prepared by default (`prepare: true`); pass `opts.prepare = false` to
|
|
101
|
+
* run a one-off unprepared. Any other driver query options (including
|
|
102
|
+
* `consistency`, which defaults to `LOCAL_QUORUM` on Keyspaces) are forwarded
|
|
103
|
+
* via `opts`. Returns the full driver result (with `.rows`).
|
|
104
|
+
*/
|
|
105
|
+
execute<T = Record<string, unknown>>(query: string, params?: unknown[], opts?: KeyspacesQueryOptions): Promise<KeyspacesResult<T>>;
|
|
106
|
+
/**
|
|
107
|
+
* Execute multiple statements as a single logged batch. Each entry is a
|
|
108
|
+
* `{ query, params }` pair. Prepared by default; forward other driver batch
|
|
109
|
+
* options via `opts`.
|
|
110
|
+
*/
|
|
111
|
+
batch(queries: KeyspacesBatchQuery[], opts?: KeyspacesQueryOptions): Promise<KeyspacesResult>;
|
|
112
|
+
/**
|
|
113
|
+
* Convenience `INSERT`: builds a parameterized
|
|
114
|
+
* `INSERT INTO table (cols...) VALUES (?, ?, ...)` from `obj`'s keys and
|
|
115
|
+
* executes it (prepared). For upserts with TTL, IF NOT EXISTS, or other
|
|
116
|
+
* clauses, write the CQL yourself and call `execute()`.
|
|
117
|
+
*/
|
|
118
|
+
insert(table: string, obj: Record<string, unknown>, opts?: KeyspacesQueryOptions): Promise<KeyspacesResult>;
|
|
119
|
+
/** Convenience `SELECT * FROM table`. Returns the full driver result (with `.rows`). */
|
|
120
|
+
selectAll<T = Record<string, unknown>>(table: string, opts?: KeyspacesQueryOptions): Promise<KeyspacesResult<T>>;
|
|
121
|
+
}
|
|
122
|
+
export default KeyspacesStore;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/** A message accepted by `publish()`: raw string/Buffer or a JSON-serializable value. */
|
|
3
|
+
export type KinesisMessage = string | Buffer | Uint8Array | Record<string, unknown> | unknown[];
|
|
4
|
+
/**
|
|
5
|
+
* A loosely-typed handle to an AWS v3 `KinesisClient` (or any object exposing a
|
|
6
|
+
* compatible `send(command)` method). Kept as an interface rather than the real
|
|
7
|
+
* SDK type because `@aws-sdk/client-kinesis` is loaded lazily and may not be
|
|
8
|
+
* installed at type-check time; tests inject a mock matching this shape.
|
|
9
|
+
*/
|
|
10
|
+
export interface KinesisClientLike {
|
|
11
|
+
send(command: unknown): Promise<any>;
|
|
12
|
+
destroy?(): void;
|
|
13
|
+
}
|
|
14
|
+
/** Connection options for `KinesisStore`. */
|
|
15
|
+
export interface KinesisStoreOptions {
|
|
16
|
+
/** AWS region, e.g. 'us-east-1'. */
|
|
17
|
+
region?: string;
|
|
18
|
+
/** Static credentials. Omit to use the default AWS credential provider chain. */
|
|
19
|
+
credentials?: {
|
|
20
|
+
accessKeyId: string;
|
|
21
|
+
secretAccessKey: string;
|
|
22
|
+
sessionToken?: string;
|
|
23
|
+
};
|
|
24
|
+
/** Override the service endpoint (e.g. 'http://localhost:4566' for LocalStack). */
|
|
25
|
+
endpoint?: string;
|
|
26
|
+
/**
|
|
27
|
+
* A pre-built `KinesisClient` (or compatible object). When provided,
|
|
28
|
+
* `connect()` uses it directly and does NOT require the SDK — this is how
|
|
29
|
+
* tests inject a mock client.
|
|
30
|
+
*/
|
|
31
|
+
client?: KinesisClientLike;
|
|
32
|
+
}
|
|
33
|
+
/** Options for `publish()`. */
|
|
34
|
+
export interface PutRecordOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Partition key that determines which shard the record lands on. Defaults to
|
|
37
|
+
* a generated key when omitted.
|
|
38
|
+
*/
|
|
39
|
+
partitionKey?: string;
|
|
40
|
+
/** Explicit hash key (advanced shard routing). */
|
|
41
|
+
explicitHashKey?: string;
|
|
42
|
+
/** Sequence-number ordering hint. */
|
|
43
|
+
sequenceNumberForOrdering?: string;
|
|
44
|
+
}
|
|
45
|
+
/** Result of `publish()`. */
|
|
46
|
+
export interface PutRecordResult {
|
|
47
|
+
shardId?: string;
|
|
48
|
+
sequenceNumber?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Options for `createStream()`. */
|
|
51
|
+
export interface CreateStreamOptions {
|
|
52
|
+
/** Number of shards to provision (provisioned mode). Defaults to 1. */
|
|
53
|
+
shardCount?: number;
|
|
54
|
+
/** Stream mode: 'PROVISIONED' or 'ON_DEMAND'. */
|
|
55
|
+
streamMode?: 'PROVISIONED' | 'ON_DEMAND';
|
|
56
|
+
}
|
|
57
|
+
/** Options for `subscribe()`. */
|
|
58
|
+
export interface KinesisSubscribeOptions {
|
|
59
|
+
/** Shard to read from. Defaults to 'shardId-000000000000'. */
|
|
60
|
+
shardId?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Shard-iterator type: 'LATEST' (default), 'TRIM_HORIZON',
|
|
63
|
+
* 'AT_SEQUENCE_NUMBER', 'AFTER_SEQUENCE_NUMBER', or 'AT_TIMESTAMP'.
|
|
64
|
+
*/
|
|
65
|
+
shardIteratorType?: string;
|
|
66
|
+
/** Starting sequence number (for AT/AFTER_SEQUENCE_NUMBER). */
|
|
67
|
+
startingSequenceNumber?: string;
|
|
68
|
+
/** Max records per `GetRecords` call. */
|
|
69
|
+
limit?: number;
|
|
70
|
+
/** Delay between `GetRecords` polls, in ms. Defaults to 1000. */
|
|
71
|
+
pollIntervalMs?: number;
|
|
72
|
+
}
|
|
73
|
+
/** A handle returned by `subscribe()`; call `stop()` to end the poll loop. */
|
|
74
|
+
export interface KinesisSubscription {
|
|
75
|
+
stop(): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* `KinesisStore` wraps an AWS v3 `KinesisClient` and exposes stream producing,
|
|
79
|
+
* a shard-iterator consumer loop, and stream administration.
|
|
80
|
+
*/
|
|
81
|
+
export declare class KinesisStore implements NoSqlStore {
|
|
82
|
+
readonly name = "kinesis";
|
|
83
|
+
readonly library = "@aws-sdk/client-kinesis";
|
|
84
|
+
private readonly options;
|
|
85
|
+
private client;
|
|
86
|
+
private aws;
|
|
87
|
+
private connected;
|
|
88
|
+
/** Active subscriptions, tracked so `disconnect()` can stop their poll loops. */
|
|
89
|
+
private readonly subscriptions;
|
|
90
|
+
constructor(options?: KinesisStoreOptions);
|
|
91
|
+
connect(): Promise<void>;
|
|
92
|
+
/** Best-effort lazy-load of the SDK for its command constructors (see `command()`). */
|
|
93
|
+
private tryLoadSdk;
|
|
94
|
+
disconnect(): Promise<void>;
|
|
95
|
+
isConnected(): boolean;
|
|
96
|
+
/** Returns the underlying `KinesisClient` (loosely typed) for anything not wrapped here. */
|
|
97
|
+
getClient(): KinesisClientLike;
|
|
98
|
+
private requireClient;
|
|
99
|
+
/** Resolve a command constructor by name from the (lazily loaded) SDK. */
|
|
100
|
+
private command;
|
|
101
|
+
private wrapError;
|
|
102
|
+
/**
|
|
103
|
+
* `PutRecord` — publish one `message` to `stream`. The message is encoded to
|
|
104
|
+
* bytes (string → UTF-8, Buffer → as-is, else JSON). Returns the shard id and
|
|
105
|
+
* sequence number assigned by Kinesis.
|
|
106
|
+
*/
|
|
107
|
+
publish(stream: string, message: KinesisMessage, options?: PutRecordOptions): Promise<PutRecordResult>;
|
|
108
|
+
/** `CreateStream` — provision a new stream. */
|
|
109
|
+
createStream(name: string, options?: CreateStreamOptions): Promise<void>;
|
|
110
|
+
/** Alias for `createStream()`, matching the common store surface. */
|
|
111
|
+
createTopic(name: string, options?: CreateStreamOptions): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Subscribe to `stream`: acquire a shard iterator (`GetShardIterator`) and
|
|
114
|
+
* poll `GetRecords` in a loop, invoking `handler` once per record. Returns a
|
|
115
|
+
* subscription whose `stop()` ends the loop; the subscription is also tracked
|
|
116
|
+
* so `disconnect()` stops it. The poll loop runs detached (not awaited); this
|
|
117
|
+
* method resolves once the initial iterator is acquired.
|
|
118
|
+
*/
|
|
119
|
+
subscribe(stream: string, handler: (record: any) => void | Promise<void>, options?: KinesisSubscribeOptions): Promise<KinesisSubscription>;
|
|
120
|
+
}
|
|
121
|
+
export default KinesisStore;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
import { KvDocumentLayer, type Doc, type FindOptions, type KvTransaction } from '../rocksdb/document-layer';
|
|
3
|
+
import type { WhereClause } from '../rocksdb/where-match';
|
|
4
|
+
export { KvDocumentLayer, KvTransaction, type Doc, type FindOptions, type IncludeSpec, } from '../rocksdb/document-layer';
|
|
5
|
+
export type { WhereClause, OrderSpec } from '../rocksdb/where-match';
|
|
6
|
+
/** A single entry in a `batch()` write: a `put` (with value) or a `del`. */
|
|
7
|
+
export type LevelDBBatchOp = {
|
|
8
|
+
type: 'put';
|
|
9
|
+
key: string;
|
|
10
|
+
value: unknown;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'del';
|
|
13
|
+
key: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Minimal structural type for the pieces of a `level` client this store uses.
|
|
17
|
+
* Kept local (rather than importing from `level`) so this module type-checks
|
|
18
|
+
* without the optional driver installed.
|
|
19
|
+
*/
|
|
20
|
+
export interface LevelDBClientLike {
|
|
21
|
+
put(key: string, value: unknown): Promise<void>;
|
|
22
|
+
get(key: string): Promise<unknown>;
|
|
23
|
+
del(key: string): Promise<void>;
|
|
24
|
+
batch(ops: LevelDBBatchOp[]): Promise<void>;
|
|
25
|
+
iterator(options?: Record<string, unknown>): AsyncIterable<[unknown, unknown]>;
|
|
26
|
+
close(): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
/** Connection options for `LevelDBStore`. */
|
|
29
|
+
export interface LevelDBStoreOptions {
|
|
30
|
+
/** Filesystem path for the LevelDB database directory. Defaults to `'./data/leveldb'`. */
|
|
31
|
+
path?: string;
|
|
32
|
+
/**
|
|
33
|
+
* A pre-built `level` client (or a compatible mock). When provided,
|
|
34
|
+
* `connect()` uses it directly and skips `require('level')` entirely — this
|
|
35
|
+
* is how tests inject a mock without the real driver installed.
|
|
36
|
+
*/
|
|
37
|
+
client?: LevelDBClientLike;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* `LevelDBStore` wraps a `level` client and exposes its embedded KV surface:
|
|
41
|
+
* `put`/`get`/`del` for single keys, `batch` for atomic multi-key writes, and
|
|
42
|
+
* `list` for ordered key iteration (optionally by prefix).
|
|
43
|
+
*/
|
|
44
|
+
export declare class LevelDBStore implements NoSqlStore {
|
|
45
|
+
readonly name = "leveldb";
|
|
46
|
+
readonly library = "level";
|
|
47
|
+
private readonly options;
|
|
48
|
+
private readonly path;
|
|
49
|
+
private client;
|
|
50
|
+
private connected;
|
|
51
|
+
constructor(options?: LevelDBStoreOptions);
|
|
52
|
+
connect(): Promise<void>;
|
|
53
|
+
disconnect(): Promise<void>;
|
|
54
|
+
isConnected(): boolean;
|
|
55
|
+
/** Returns the underlying `level` client for anything not wrapped here. */
|
|
56
|
+
getClient(): LevelDBClientLike;
|
|
57
|
+
private requireClient;
|
|
58
|
+
private wrapError;
|
|
59
|
+
/** Writes (or overwrites) the value at `key`. */
|
|
60
|
+
put(key: string, value: unknown): Promise<void>;
|
|
61
|
+
/** Reads the value at `key`. */
|
|
62
|
+
get(key: string): Promise<unknown>;
|
|
63
|
+
/** Deletes the value at `key`. */
|
|
64
|
+
del(key: string): Promise<void>;
|
|
65
|
+
/** Applies a list of `put`/`del` operations as a single atomic batch. */
|
|
66
|
+
batch(ops: LevelDBBatchOp[]): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Lists keys in order. With `prefix`, restricts to keys `>= prefix` and
|
|
69
|
+
* `< prefix + '\xff'` (a standard prefix-scan range for byte-ordered keys).
|
|
70
|
+
*/
|
|
71
|
+
list(prefix?: string): Promise<string[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Ordered iteration over `[key, value]` pairs whose key is in `[gte, lt)`.
|
|
74
|
+
* Values are returned as stored (JSON strings, when written through the
|
|
75
|
+
* document layer). Used internally by the document layer's range scans.
|
|
76
|
+
*/
|
|
77
|
+
scanRange(gte: string, lt: string): AsyncIterable<[string, unknown]>;
|
|
78
|
+
private docLayer;
|
|
79
|
+
private kvBackend;
|
|
80
|
+
/**
|
|
81
|
+
* Returns a document layer bound to this store, keyed by `primaryKey`
|
|
82
|
+
* (default `'id'`). Exposes the full ORM model API
|
|
83
|
+
* (`findAll`/`findOne`/`findByPk`/`create`/`bulkCreate`/`update`/`destroy`/
|
|
84
|
+
* `count`/`truncate`/`upsert`/`increment`/`transaction`).
|
|
85
|
+
*/
|
|
86
|
+
documents(primaryKey?: string): KvDocumentLayer;
|
|
87
|
+
/** ORM `findAll` over a collection: where/order/limit/offset/include. */
|
|
88
|
+
findAll(collection: string, options?: FindOptions): Promise<Doc[]>;
|
|
89
|
+
/** ORM `findOne` over a collection. */
|
|
90
|
+
findOne(collection: string, options?: FindOptions): Promise<Doc | null>;
|
|
91
|
+
/** ORM `findByPk` over a collection. */
|
|
92
|
+
findByPk(collection: string, pk: unknown, options?: FindOptions): Promise<Doc | null>;
|
|
93
|
+
/** ORM `count` over a collection. */
|
|
94
|
+
count(collection: string, where?: WhereClause): Promise<number>;
|
|
95
|
+
/** ORM `create` for a single document. */
|
|
96
|
+
create(collection: string, data: Doc): Promise<Doc>;
|
|
97
|
+
/** ORM `bulkCreate` for many documents (atomic batch). */
|
|
98
|
+
bulkCreate(collection: string, rows: Doc[]): Promise<Doc[]>;
|
|
99
|
+
/** ORM `update`: merge `values` into documents matching `where`. */
|
|
100
|
+
updateWhere(collection: string, values: Doc, where?: WhereClause): Promise<number>;
|
|
101
|
+
/** ORM `destroy`: delete documents matching `where`. */
|
|
102
|
+
destroy(collection: string, where?: WhereClause): Promise<number>;
|
|
103
|
+
/** ORM `truncate`: delete every document in a collection. */
|
|
104
|
+
truncate(collection: string): Promise<number>;
|
|
105
|
+
/** Upsert a document by primary key. */
|
|
106
|
+
upsert(collection: string, data: Doc): Promise<Doc>;
|
|
107
|
+
/** Atomically increment numeric fields of one document. */
|
|
108
|
+
increment(collection: string, pk: unknown, fields: Record<string, number> | string[]): Promise<Doc | null>;
|
|
109
|
+
/** Run a function inside an atomic multi-document transaction (single batch commit). */
|
|
110
|
+
transaction<T>(fn: (tx: KvTransaction) => Promise<T>): Promise<T>;
|
|
111
|
+
}
|
|
112
|
+
export default LevelDBStore;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LevelDBStore = void 0;
|
|
3
|
+
exports.LevelDBStore = exports.KvTransaction = exports.KvDocumentLayer = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* LevelDB store.
|
|
6
6
|
*
|
|
@@ -19,6 +19,10 @@ exports.LevelDBStore = void 0;
|
|
|
19
19
|
* tests inject a pre-built mock `client` instead and never reach the `require`.
|
|
20
20
|
*/
|
|
21
21
|
const errors_1 = require("../../errors");
|
|
22
|
+
const document_layer_1 = require("../rocksdb/document-layer");
|
|
23
|
+
var document_layer_2 = require("../rocksdb/document-layer");
|
|
24
|
+
Object.defineProperty(exports, "KvDocumentLayer", { enumerable: true, get: function () { return document_layer_2.KvDocumentLayer; } });
|
|
25
|
+
Object.defineProperty(exports, "KvTransaction", { enumerable: true, get: function () { return document_layer_2.KvTransaction; } });
|
|
22
26
|
/**
|
|
23
27
|
* `LevelDBStore` wraps a `level` client and exposes its embedded KV surface:
|
|
24
28
|
* `put`/`get`/`del` for single keys, `batch` for atomic multi-key writes, and
|
|
@@ -30,6 +34,16 @@ class LevelDBStore {
|
|
|
30
34
|
this.library = 'level';
|
|
31
35
|
this.client = null;
|
|
32
36
|
this.connected = false;
|
|
37
|
+
// ---------------------------------------------------------------------
|
|
38
|
+
// Document / ORM model layer
|
|
39
|
+
// ---------------------------------------------------------------------
|
|
40
|
+
//
|
|
41
|
+
// These map the ORM model API onto LevelDB's KV surface (see
|
|
42
|
+
// ../rocksdb/document-layer.ts) so callers query with `where`/`order`/
|
|
43
|
+
// `limit`/`offset`/`include` instead of designing keyspaces and driving
|
|
44
|
+
// iterators by hand. `documents(primaryKey?)` picks the document field used
|
|
45
|
+
// to form keys (default `'id'`); the per-collection helpers below use `'id'`.
|
|
46
|
+
this.docLayer = null;
|
|
33
47
|
this.options = options;
|
|
34
48
|
this.path = options.path ?? './data/leveldb';
|
|
35
49
|
}
|
|
@@ -148,6 +162,94 @@ class LevelDBStore {
|
|
|
148
162
|
throw this.wrapError('list', err);
|
|
149
163
|
}
|
|
150
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Ordered iteration over `[key, value]` pairs whose key is in `[gte, lt)`.
|
|
167
|
+
* Values are returned as stored (JSON strings, when written through the
|
|
168
|
+
* document layer). Used internally by the document layer's range scans.
|
|
169
|
+
*/
|
|
170
|
+
async *scanRange(gte, lt) {
|
|
171
|
+
const client = this.requireClient();
|
|
172
|
+
try {
|
|
173
|
+
for await (const [key, value] of client.iterator({ gte, lt })) {
|
|
174
|
+
yield [String(key), value];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
throw this.wrapError('scanRange', err);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
kvBackend() {
|
|
182
|
+
return {
|
|
183
|
+
get: (key) => this.get(key),
|
|
184
|
+
put: (key, value) => this.put(key, value),
|
|
185
|
+
del: (key) => this.del(key),
|
|
186
|
+
batch: (ops) => this.batch(ops),
|
|
187
|
+
scanRange: (gte, lt) => this.scanRange(gte, lt),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Returns a document layer bound to this store, keyed by `primaryKey`
|
|
192
|
+
* (default `'id'`). Exposes the full ORM model API
|
|
193
|
+
* (`findAll`/`findOne`/`findByPk`/`create`/`bulkCreate`/`update`/`destroy`/
|
|
194
|
+
* `count`/`truncate`/`upsert`/`increment`/`transaction`).
|
|
195
|
+
*/
|
|
196
|
+
documents(primaryKey = 'id') {
|
|
197
|
+
if (primaryKey !== 'id') {
|
|
198
|
+
return new document_layer_1.KvDocumentLayer(this.kvBackend(), primaryKey);
|
|
199
|
+
}
|
|
200
|
+
if (!this.docLayer) {
|
|
201
|
+
this.docLayer = new document_layer_1.KvDocumentLayer(this.kvBackend(), 'id');
|
|
202
|
+
}
|
|
203
|
+
return this.docLayer;
|
|
204
|
+
}
|
|
205
|
+
/** ORM `findAll` over a collection: where/order/limit/offset/include. */
|
|
206
|
+
findAll(collection, options) {
|
|
207
|
+
return this.documents().findAll(collection, options);
|
|
208
|
+
}
|
|
209
|
+
/** ORM `findOne` over a collection. */
|
|
210
|
+
findOne(collection, options) {
|
|
211
|
+
return this.documents().findOne(collection, options);
|
|
212
|
+
}
|
|
213
|
+
/** ORM `findByPk` over a collection. */
|
|
214
|
+
findByPk(collection, pk, options) {
|
|
215
|
+
return this.documents().findByPk(collection, pk, options);
|
|
216
|
+
}
|
|
217
|
+
/** ORM `count` over a collection. */
|
|
218
|
+
count(collection, where) {
|
|
219
|
+
return this.documents().count(collection, where);
|
|
220
|
+
}
|
|
221
|
+
/** ORM `create` for a single document. */
|
|
222
|
+
create(collection, data) {
|
|
223
|
+
return this.documents().create(collection, data);
|
|
224
|
+
}
|
|
225
|
+
/** ORM `bulkCreate` for many documents (atomic batch). */
|
|
226
|
+
bulkCreate(collection, rows) {
|
|
227
|
+
return this.documents().bulkCreate(collection, rows);
|
|
228
|
+
}
|
|
229
|
+
/** ORM `update`: merge `values` into documents matching `where`. */
|
|
230
|
+
updateWhere(collection, values, where) {
|
|
231
|
+
return this.documents().update(collection, values, where);
|
|
232
|
+
}
|
|
233
|
+
/** ORM `destroy`: delete documents matching `where`. */
|
|
234
|
+
destroy(collection, where) {
|
|
235
|
+
return this.documents().destroy(collection, where);
|
|
236
|
+
}
|
|
237
|
+
/** ORM `truncate`: delete every document in a collection. */
|
|
238
|
+
truncate(collection) {
|
|
239
|
+
return this.documents().truncate(collection);
|
|
240
|
+
}
|
|
241
|
+
/** Upsert a document by primary key. */
|
|
242
|
+
upsert(collection, data) {
|
|
243
|
+
return this.documents().upsert(collection, data);
|
|
244
|
+
}
|
|
245
|
+
/** Atomically increment numeric fields of one document. */
|
|
246
|
+
increment(collection, pk, fields) {
|
|
247
|
+
return this.documents().increment(collection, pk, fields);
|
|
248
|
+
}
|
|
249
|
+
/** Run a function inside an atomic multi-document transaction (single batch commit). */
|
|
250
|
+
transaction(fn) {
|
|
251
|
+
return this.documents().transaction(fn);
|
|
252
|
+
}
|
|
151
253
|
}
|
|
152
254
|
exports.LevelDBStore = LevelDBStore;
|
|
153
255
|
exports.default = LevelDBStore;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/** A single entry in a `batch()` write: a `put` (with value) or a `del`. */
|
|
3
|
+
export type LmdbBatchOp = {
|
|
4
|
+
type: 'put';
|
|
5
|
+
key: string;
|
|
6
|
+
value: unknown;
|
|
7
|
+
} | {
|
|
8
|
+
type: 'del';
|
|
9
|
+
key: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Minimal structural type for the pieces of an `lmdb` database this store
|
|
13
|
+
* uses. Kept local (rather than importing from `lmdb`) so this module
|
|
14
|
+
* type-checks without the optional driver installed.
|
|
15
|
+
*/
|
|
16
|
+
export interface LmdbClientLike {
|
|
17
|
+
put(key: string, value: unknown): Promise<boolean> | boolean;
|
|
18
|
+
get(key: string): unknown;
|
|
19
|
+
remove(key: string): Promise<boolean> | boolean;
|
|
20
|
+
getRange(options?: Record<string, unknown>): Iterable<{
|
|
21
|
+
key: unknown;
|
|
22
|
+
value: unknown;
|
|
23
|
+
}>;
|
|
24
|
+
close(): Promise<void> | void;
|
|
25
|
+
}
|
|
26
|
+
/** Connection options for `LmdbStore`. */
|
|
27
|
+
export interface LmdbStoreOptions {
|
|
28
|
+
/** Filesystem path for the LMDB environment. Defaults to `'./data/lmdb'`. */
|
|
29
|
+
path?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Escape hatch for any other `lmdb` `open()` option (compression, maxDbs,
|
|
32
|
+
* encoding, ...). Merged into the object passed to `open()`.
|
|
33
|
+
*/
|
|
34
|
+
config?: Record<string, unknown>;
|
|
35
|
+
/**
|
|
36
|
+
* A pre-built `lmdb` database (or a compatible mock). When provided,
|
|
37
|
+
* `connect()` uses it directly and skips `require('lmdb')` entirely — this
|
|
38
|
+
* is how tests inject a mock without the real driver installed.
|
|
39
|
+
*/
|
|
40
|
+
client?: LmdbClientLike;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* `LmdbStore` wraps an `lmdb` database and exposes its embedded KV surface:
|
|
44
|
+
* `put`/`get`/`del` for single keys, `batch` for multi-key writes, and `list`
|
|
45
|
+
* for ordered key range scans (optionally by prefix).
|
|
46
|
+
*/
|
|
47
|
+
export declare class LmdbStore implements NoSqlStore {
|
|
48
|
+
readonly name = "lmdb";
|
|
49
|
+
readonly library = "lmdb";
|
|
50
|
+
private readonly options;
|
|
51
|
+
private readonly path;
|
|
52
|
+
private client;
|
|
53
|
+
private connected;
|
|
54
|
+
constructor(options?: LmdbStoreOptions);
|
|
55
|
+
connect(): Promise<void>;
|
|
56
|
+
disconnect(): Promise<void>;
|
|
57
|
+
isConnected(): boolean;
|
|
58
|
+
/** Returns the underlying `lmdb` database for anything not wrapped here. */
|
|
59
|
+
getClient(): LmdbClientLike;
|
|
60
|
+
private requireClient;
|
|
61
|
+
private wrapError;
|
|
62
|
+
/** Writes (or overwrites) the value at `key`. */
|
|
63
|
+
put(key: string, value: unknown): Promise<void>;
|
|
64
|
+
/** Reads the value at `key` (LMDB reads are synchronous; the result is returned directly). */
|
|
65
|
+
get(key: string): Promise<unknown>;
|
|
66
|
+
/** Deletes the value at `key` (LMDB `remove`). */
|
|
67
|
+
del(key: string): Promise<void>;
|
|
68
|
+
/** Applies a list of `put`/`del` operations. LMDB coalesces concurrent writes into one transaction. */
|
|
69
|
+
batch(ops: LmdbBatchOp[]): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Lists keys in order via `getRange`. With `prefix`, restricts to keys
|
|
72
|
+
* `>= prefix` and `< prefix + '\xff'` (a standard prefix-scan range).
|
|
73
|
+
*/
|
|
74
|
+
list(prefix?: string): Promise<string[]>;
|
|
75
|
+
}
|
|
76
|
+
export default LmdbStore;
|