ts-prorm-orm 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +713 -0
- package/dist/index.js +36 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- package/package.json +20 -5
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grafana Loki store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Loki is a horizontally-scalable, multi-tenant log aggregation system. It
|
|
5
|
+
* indexes only a small set of labels per log stream (not the log contents)
|
|
6
|
+
* and is queried with LogQL, a label-matcher + filter language modelled on
|
|
7
|
+
* PromQL. There is no SQL-shaped query surface, no row-level UPDATE/DELETE,
|
|
8
|
+
* and no identifier escaping, so Loki does not fit the SQL `Dialect`
|
|
9
|
+
* interface (`src/dialects/dialect.ts`). This class implements the minimal
|
|
10
|
+
* `NoSqlStore` marker interface (`src/nosql/store.ts`) and exposes Loki's
|
|
11
|
+
* HTTP push/query API directly.
|
|
12
|
+
*
|
|
13
|
+
* ## No canonical driver - HTTP over `fetch`
|
|
14
|
+
*
|
|
15
|
+
* Loki has no single canonical npm client; it is just an HTTP/JSON API.
|
|
16
|
+
* Rather than depend on any package, this store talks to the server with
|
|
17
|
+
* the global `fetch` (so `library` is `'fetch'`). For tests (and for callers
|
|
18
|
+
* who want their own transport), an alternative HTTP client can be injected
|
|
19
|
+
* via `LokiStoreOptions.client`; when omitted, a tiny internal client over
|
|
20
|
+
* `fetch` + `baseURL` is built at connect time.
|
|
21
|
+
*
|
|
22
|
+
* ## Endpoints wrapped
|
|
23
|
+
*
|
|
24
|
+
* - `push(labels, entries)` -> `POST /loki/api/v1/push` (ingest log lines)
|
|
25
|
+
* - `query(logql, opts?)` -> `GET /loki/api/v1/query_range` (search)
|
|
26
|
+
* - `labels()` -> `GET /loki/api/v1/labels` (label names)
|
|
27
|
+
* - `streams(match?)` -> `GET /loki/api/v1/series` (label sets)
|
|
28
|
+
*/
|
|
29
|
+
import { NoSqlStore } from '../store';
|
|
30
|
+
/** Default Grafana Loki HTTP API base URL. */
|
|
31
|
+
export declare const DEFAULT_LOKI_BASE_URL = "http://localhost:3100";
|
|
32
|
+
/** Query-string parameter value(s). `undefined` values are dropped. */
|
|
33
|
+
export type QueryParams = Record<string, string | string[] | undefined>;
|
|
34
|
+
/**
|
|
35
|
+
* The subset of an HTTP client this store needs. The internal `fetch`-based
|
|
36
|
+
* client implements this; tests inject a mock with the same shape.
|
|
37
|
+
*/
|
|
38
|
+
export interface LokiHttpClient {
|
|
39
|
+
/** Issue a GET and return the parsed JSON response body. */
|
|
40
|
+
get(path: string, params?: QueryParams): Promise<any>;
|
|
41
|
+
/** Issue a POST with a text body and return the parsed JSON/text response. */
|
|
42
|
+
post(path: string, body: string, contentType?: string): Promise<any>;
|
|
43
|
+
}
|
|
44
|
+
/** Connection options for `LokiStore`. */
|
|
45
|
+
export interface LokiStoreOptions {
|
|
46
|
+
/** Base URL of the Loki server. Defaults to `http://localhost:3100`. */
|
|
47
|
+
baseURL?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Optional pre-built HTTP client. When provided it is used verbatim and
|
|
50
|
+
* `baseURL` is ignored; otherwise an internal `fetch`-based client is
|
|
51
|
+
* built against `baseURL` on `connect()`.
|
|
52
|
+
*/
|
|
53
|
+
client?: LokiHttpClient;
|
|
54
|
+
/** Extra HTTP headers sent with every internal-client request. */
|
|
55
|
+
headers?: Record<string, string>;
|
|
56
|
+
/** Optional tenant ID sent as the `X-Scope-OrgID` header. */
|
|
57
|
+
tenantID?: string;
|
|
58
|
+
}
|
|
59
|
+
/** A single log entry to push: timestamp (ns epoch string) + line. */
|
|
60
|
+
export interface LokiEntry {
|
|
61
|
+
/** Timestamp as a Unix-epoch nanosecond string (Loki's native format). */
|
|
62
|
+
ts: string | number;
|
|
63
|
+
/** The raw log line. */
|
|
64
|
+
line: string;
|
|
65
|
+
/** Optional structured metadata attached to this entry. */
|
|
66
|
+
metadata?: Record<string, string>;
|
|
67
|
+
}
|
|
68
|
+
/** Options for a LogQL range query. */
|
|
69
|
+
export interface LokiQueryOptions {
|
|
70
|
+
/** Start of the query window (Unix nanoseconds or RFC3339). */
|
|
71
|
+
start?: string | number;
|
|
72
|
+
/** End of the query window (Unix nanoseconds or RFC3339). */
|
|
73
|
+
end?: string | number;
|
|
74
|
+
/** Max number of entries to return. */
|
|
75
|
+
limit?: number;
|
|
76
|
+
/** Result order: `'forward'` (oldest first) or `'backward'` (newest first). */
|
|
77
|
+
direction?: 'forward' | 'backward';
|
|
78
|
+
/** Query resolution step for metric queries. */
|
|
79
|
+
step?: string | number;
|
|
80
|
+
}
|
|
81
|
+
/** Build a `fetch`-backed client for the given base URL. */
|
|
82
|
+
export declare function createFetchClient(baseURL: string, headers?: Record<string, string>): LokiHttpClient;
|
|
83
|
+
/**
|
|
84
|
+
* `LokiStore` wraps Grafana Loki's HTTP push/query API (log ingestion via
|
|
85
|
+
* the push endpoint, LogQL range search, and label/series metadata lookups)
|
|
86
|
+
* behind the `NoSqlStore` lifecycle.
|
|
87
|
+
*/
|
|
88
|
+
export declare class LokiStore implements NoSqlStore {
|
|
89
|
+
readonly name = "loki";
|
|
90
|
+
readonly library = "fetch";
|
|
91
|
+
private readonly baseURL;
|
|
92
|
+
private readonly injectedClient?;
|
|
93
|
+
private readonly headers?;
|
|
94
|
+
private client;
|
|
95
|
+
private connected;
|
|
96
|
+
constructor(options?: LokiStoreOptions);
|
|
97
|
+
connect(): Promise<void>;
|
|
98
|
+
disconnect(): Promise<void>;
|
|
99
|
+
isConnected(): boolean;
|
|
100
|
+
/** Returns the underlying (internal or injected) HTTP client. */
|
|
101
|
+
getClient(): LokiHttpClient;
|
|
102
|
+
private requireClient;
|
|
103
|
+
private doGet;
|
|
104
|
+
/**
|
|
105
|
+
* Pushes a batch of log entries for one stream (identified by its label
|
|
106
|
+
* set) via `POST /loki/api/v1/push`. Each entry is serialized as
|
|
107
|
+
* `[<ts-ns>, <line>]` (plus optional structured metadata) in Loki's
|
|
108
|
+
* push payload shape.
|
|
109
|
+
*/
|
|
110
|
+
push(labels: Record<string, string>, entries: LokiEntry[]): Promise<any>;
|
|
111
|
+
/**
|
|
112
|
+
* Runs a LogQL query over a time window via `GET /loki/api/v1/query_range`.
|
|
113
|
+
* Returns the `data` payload (`{ resultType, result }`).
|
|
114
|
+
*/
|
|
115
|
+
query(logql: string, options?: LokiQueryOptions): Promise<any>;
|
|
116
|
+
/** Lists the known label names via `GET /loki/api/v1/labels`. */
|
|
117
|
+
labels(): Promise<any>;
|
|
118
|
+
/**
|
|
119
|
+
* Lists the label sets (streams) matching an optional selector via
|
|
120
|
+
* `GET /loki/api/v1/series`.
|
|
121
|
+
*/
|
|
122
|
+
streams(match?: string | string[]): Promise<any>;
|
|
123
|
+
/** Lists the distinct values of a label via `GET /loki/api/v1/label/<name>/values`. */
|
|
124
|
+
labelValues(label: string): Promise<any>;
|
|
125
|
+
}
|
|
126
|
+
export default LokiStore;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MarkLogic store implementation for the Prorm NoSQL layer.
|
|
3
|
+
*
|
|
4
|
+
* MarkLogic is a multi-model database (document, graph/RDF triples, search,
|
|
5
|
+
* relational views) where documents are addressed by an opaque URI. It does
|
|
6
|
+
* not fit the SQL-shaped `Dialect` interface, so this class implements the
|
|
7
|
+
* minimal `NoSqlStore` marker interface for connection lifecycle and exposes
|
|
8
|
+
* MarkLogic's real `documents.write/read/remove` plus `documents.query` API
|
|
9
|
+
* through a small document-CRUD convenience layer. Collection + id are mapped
|
|
10
|
+
* to a URI of the form `/<collection>/<id>.json`.
|
|
11
|
+
*
|
|
12
|
+
* Uses the official `marklogic` driver. That driver is an optional peer
|
|
13
|
+
* dependency and is loaded lazily inside `connect()` so importing this module
|
|
14
|
+
* never requires it to be installed. Tests inject a pre-built mock `client`
|
|
15
|
+
* (and `queryBuilder`) via options, which bypasses the lazy `require`
|
|
16
|
+
* entirely - no real driver and no network are needed.
|
|
17
|
+
*/
|
|
18
|
+
import { NoSqlStore } from '../store';
|
|
19
|
+
/** A native MarkLogic database client, left untyped because the driver is an
|
|
20
|
+
* optional dependency not imported here. */
|
|
21
|
+
type MarkLogicClient = any;
|
|
22
|
+
/** The MarkLogic `queryBuilder` factory. */
|
|
23
|
+
type QueryBuilder = any;
|
|
24
|
+
/**
|
|
25
|
+
* Connection options for `MarkLogicStore`.
|
|
26
|
+
*
|
|
27
|
+
* `host`/`port`/`user`/`password`/`authType` are passed to
|
|
28
|
+
* `createDatabaseClient`. When a pre-built `client` is supplied (e.g. in
|
|
29
|
+
* tests), `connect()` uses it directly and skips loading the `marklogic`
|
|
30
|
+
* driver; `queryBuilder` may likewise be injected.
|
|
31
|
+
*/
|
|
32
|
+
export interface MarkLogicStoreOptions {
|
|
33
|
+
host?: string;
|
|
34
|
+
port?: number;
|
|
35
|
+
user?: string;
|
|
36
|
+
password?: string;
|
|
37
|
+
authType?: string;
|
|
38
|
+
database?: string;
|
|
39
|
+
/** A pre-built MarkLogic client to use instead of the driver. */
|
|
40
|
+
client?: MarkLogicClient;
|
|
41
|
+
/** A pre-built `queryBuilder` to use instead of the driver. */
|
|
42
|
+
queryBuilder?: QueryBuilder;
|
|
43
|
+
}
|
|
44
|
+
export declare class MarkLogicStore implements NoSqlStore {
|
|
45
|
+
readonly name = "marklogic";
|
|
46
|
+
readonly library = "marklogic";
|
|
47
|
+
private readonly options;
|
|
48
|
+
private client;
|
|
49
|
+
private qb;
|
|
50
|
+
private connected;
|
|
51
|
+
constructor(options?: MarkLogicStoreOptions);
|
|
52
|
+
connect(): Promise<void>;
|
|
53
|
+
private tryRequireQueryBuilder;
|
|
54
|
+
disconnect(): Promise<void>;
|
|
55
|
+
isConnected(): boolean;
|
|
56
|
+
getClient(): MarkLogicClient;
|
|
57
|
+
private requireClient;
|
|
58
|
+
private uri;
|
|
59
|
+
/** Write a document into `collection`; returns the id used. */
|
|
60
|
+
insert(collection: string, doc: Record<string, unknown>): Promise<unknown>;
|
|
61
|
+
/** Read a document by id, returning its stored `content`. */
|
|
62
|
+
get(collection: string, id: string): Promise<unknown>;
|
|
63
|
+
/** Merge `patch` into an existing document and re-write it. */
|
|
64
|
+
update(collection: string, id: string, patch: Record<string, unknown>): Promise<unknown>;
|
|
65
|
+
/** Remove a document by id. */
|
|
66
|
+
delete(collection: string, id: string): Promise<unknown>;
|
|
67
|
+
/**
|
|
68
|
+
* Query documents. When `builtQuery` is provided it is passed straight to
|
|
69
|
+
* `documents.query`; otherwise all documents in `collection` are matched via
|
|
70
|
+
* `queryBuilder.where(queryBuilder.collection(collection))`. Returns the
|
|
71
|
+
* result documents.
|
|
72
|
+
*/
|
|
73
|
+
query(collection: string, builtQuery?: unknown): Promise<unknown[]>;
|
|
74
|
+
private buildCollectionQuery;
|
|
75
|
+
}
|
|
76
|
+
export default MarkLogicStore;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Materialize store.
|
|
3
|
+
*
|
|
4
|
+
* Materialize is a streaming (incrementally-updated) analytics database: you
|
|
5
|
+
* define SOURCEs over event streams and MATERIALIZED VIEWs whose results are
|
|
6
|
+
* kept continuously up to date as new data arrives, then read them with
|
|
7
|
+
* low-latency SQL. Materialize speaks the **PostgreSQL wire protocol**, so it
|
|
8
|
+
* is driven with the `pg` client over a normal Postgres-style connection.
|
|
9
|
+
* Although the wire is Postgres, Materialize's compute model (streaming
|
|
10
|
+
* dataflows, `SUBSCRIBE`, `CREATE SOURCE`) is not a general OLTP relational
|
|
11
|
+
* store and does not fit this ORM's SQL `Dialect` abstraction, so it is
|
|
12
|
+
* modelled as a `NoSqlStore` (`src/nosql/store.ts`) exposing a direct `query`
|
|
13
|
+
* surface plus source/view helpers.
|
|
14
|
+
*
|
|
15
|
+
* ## Driver: `pg` (PostgreSQL-wire)
|
|
16
|
+
*
|
|
17
|
+
* The `pg` package is an optional peer dependency, lazily `require`d inside
|
|
18
|
+
* `connect()` so importing this module never forces it to be installed. Tests
|
|
19
|
+
* inject a pre-built mock client via `MaterializeStoreOptions.client`, which
|
|
20
|
+
* skips the `require` entirely.
|
|
21
|
+
*/
|
|
22
|
+
import type { NoSqlStore } from '../store';
|
|
23
|
+
/**
|
|
24
|
+
* Minimal structural type for the pieces of a `pg` `Client` this store uses.
|
|
25
|
+
* Kept local so this module type-checks without the optional driver installed.
|
|
26
|
+
* `query()` resolves to a result object with a `rows` array.
|
|
27
|
+
*/
|
|
28
|
+
export interface PgClientLike {
|
|
29
|
+
connect(): Promise<void>;
|
|
30
|
+
query(sql: string, params?: unknown[]): Promise<{
|
|
31
|
+
rows: any[];
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
}>;
|
|
34
|
+
end(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
/** Connection options for `MaterializeStore` (map onto `pg` client config). */
|
|
37
|
+
export interface MaterializeStoreOptions {
|
|
38
|
+
host?: string;
|
|
39
|
+
port?: number;
|
|
40
|
+
user?: string;
|
|
41
|
+
password?: string;
|
|
42
|
+
database?: string;
|
|
43
|
+
/** Full connection string (`postgres://...`), an alternative to the discrete fields. */
|
|
44
|
+
connectionString?: string;
|
|
45
|
+
/** Escape hatch for any other `pg` client option. */
|
|
46
|
+
connectionOptions?: Record<string, unknown>;
|
|
47
|
+
/**
|
|
48
|
+
* A pre-built `pg` `Client` (or compatible mock). When provided, `connect()`
|
|
49
|
+
* uses it directly and skips `require('pg')`. This is how tests inject a
|
|
50
|
+
* mock without the real driver installed.
|
|
51
|
+
*/
|
|
52
|
+
client?: PgClientLike;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `MaterializeStore` wraps a `pg` client connected to Materialize and exposes
|
|
56
|
+
* `query(sql, params)` for reads/DDL, plus `createSource()` and
|
|
57
|
+
* `createMaterializedView()` convenience helpers for the streaming-specific
|
|
58
|
+
* DDL that defines what Materialize keeps incrementally up to date.
|
|
59
|
+
*/
|
|
60
|
+
export declare class MaterializeStore implements NoSqlStore {
|
|
61
|
+
readonly name = "materialize";
|
|
62
|
+
readonly library = "pg";
|
|
63
|
+
private readonly options;
|
|
64
|
+
private client;
|
|
65
|
+
private connected;
|
|
66
|
+
constructor(options?: MaterializeStoreOptions);
|
|
67
|
+
connect(): Promise<void>;
|
|
68
|
+
disconnect(): Promise<void>;
|
|
69
|
+
isConnected(): boolean;
|
|
70
|
+
/** Returns the underlying `pg` client for anything not wrapped here. */
|
|
71
|
+
getClient(): PgClientLike;
|
|
72
|
+
private requireClient;
|
|
73
|
+
/**
|
|
74
|
+
* Execute a SQL statement over the Postgres wire with optional positional
|
|
75
|
+
* `params` and return the result rows (`pg`'s `result.rows`).
|
|
76
|
+
*/
|
|
77
|
+
query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<T[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Create a streaming SOURCE via `CREATE SOURCE <name> <definition>`, e.g.
|
|
80
|
+
* `createSource('kafka_src', "FROM KAFKA CONNECTION ... (TOPIC 'events')")`.
|
|
81
|
+
* Returns the driver result rows.
|
|
82
|
+
*/
|
|
83
|
+
createSource(name: string, definition: string): Promise<any[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Create a MATERIALIZED VIEW (kept incrementally up to date) via
|
|
86
|
+
* `CREATE MATERIALIZED VIEW <name> AS <selectSql>`. Returns the driver
|
|
87
|
+
* result rows.
|
|
88
|
+
*/
|
|
89
|
+
createMaterializedView(name: string, selectSql: string): Promise<any[]>;
|
|
90
|
+
}
|
|
91
|
+
export default MaterializeStore;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meilisearch store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Meilisearch is a search engine built around an inverted index with
|
|
5
|
+
* typo-tolerant, prefix, full-text search and faceting rather than SQL: no
|
|
6
|
+
* `JOIN`, no transaction log, schema-flexible documents grouped into indexes
|
|
7
|
+
* (each identified by a `uid` and a primary key). It therefore does not fit
|
|
8
|
+
* the SQL-shaped `Dialect` interface used by the SQL dialects in this repo.
|
|
9
|
+
* Instead it implements the minimal `NoSqlStore` marker interface
|
|
10
|
+
* (`src/nosql/store.ts`) and exposes Meilisearch's real capabilities grouped
|
|
11
|
+
* by concern: connection lifecycle, index management and document CRUD/search.
|
|
12
|
+
*
|
|
13
|
+
* Uses the official `meilisearch` JS driver. The driver is loaded lazily via
|
|
14
|
+
* `require` so importing this module does not force the dependency to be
|
|
15
|
+
* resolved unless a Meilisearch store is actually constructed. For
|
|
16
|
+
* unit-testing without a live server, the constructor also accepts an
|
|
17
|
+
* already-built `client`, which `connect()` will use as-is instead of
|
|
18
|
+
* instantiating a new one.
|
|
19
|
+
*
|
|
20
|
+
* Most operations are scoped to an index and reached through
|
|
21
|
+
* `client.index(uid).<op>(...)`; index lifecycle (`createIndex`/`deleteIndex`)
|
|
22
|
+
* and cluster stats live directly on the top-level client.
|
|
23
|
+
*/
|
|
24
|
+
import { NoSqlStore } from '../store';
|
|
25
|
+
/**
|
|
26
|
+
* Connection options for `MeilisearchStore`.
|
|
27
|
+
*
|
|
28
|
+
* `host` and `apiKey` are passed straight through to the driver's
|
|
29
|
+
* `new MeiliSearch(...)`. Pass `client` to inject an already-built client
|
|
30
|
+
* instance (used in tests and when the caller wants full control over driver
|
|
31
|
+
* configuration); when present, `host`/`apiKey` are ignored.
|
|
32
|
+
*/
|
|
33
|
+
export interface MeilisearchStoreOptions {
|
|
34
|
+
/** URL of the Meilisearch server, e.g. `http://localhost:7700`. */
|
|
35
|
+
host?: string;
|
|
36
|
+
/** API key used to authenticate against the server. */
|
|
37
|
+
apiKey?: string;
|
|
38
|
+
/** An already-constructed Meilisearch client to use instead of building one. */
|
|
39
|
+
client?: any;
|
|
40
|
+
/** Any additional options passed through to the driver's client. */
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* `MeilisearchStore` wraps the official `meilisearch` client and exposes
|
|
45
|
+
* index management, document CRUD, and search as a typed, promise-based API.
|
|
46
|
+
*/
|
|
47
|
+
export declare class MeilisearchStore implements NoSqlStore {
|
|
48
|
+
readonly name = "meilisearch";
|
|
49
|
+
readonly library = "meilisearch";
|
|
50
|
+
private readonly options;
|
|
51
|
+
private client;
|
|
52
|
+
private connected;
|
|
53
|
+
constructor(options: MeilisearchStoreOptions);
|
|
54
|
+
connect(): Promise<void>;
|
|
55
|
+
disconnect(): Promise<void>;
|
|
56
|
+
isConnected(): boolean;
|
|
57
|
+
/** Returns the underlying `meilisearch` client for anything not wrapped here. */
|
|
58
|
+
getClient(): any;
|
|
59
|
+
private requireClient;
|
|
60
|
+
private exec;
|
|
61
|
+
/** Create an index by `uid`, optionally specifying its primary key via `options`. */
|
|
62
|
+
createIndex(uid: string, options?: Record<string, unknown>): Promise<any>;
|
|
63
|
+
/** Delete an index by `uid`. */
|
|
64
|
+
deleteIndex(uid: string): Promise<any>;
|
|
65
|
+
/** Add (or replace) documents in an index. Returns the enqueued task. */
|
|
66
|
+
addDocuments(index: string, documents: Record<string, unknown>[], options?: Record<string, unknown>): Promise<any>;
|
|
67
|
+
/** Run a search against an index and return the `hits` array from the response. */
|
|
68
|
+
search<T = Record<string, unknown>>(index: string, query: string, options?: Record<string, unknown>): Promise<T[]>;
|
|
69
|
+
/** Get a single document by its primary-key value. */
|
|
70
|
+
getDocument<T = Record<string, unknown>>(index: string, id: string | number): Promise<T>;
|
|
71
|
+
/** Delete a single document by its primary-key value. Returns the enqueued task. */
|
|
72
|
+
deleteDocument(index: string, id: string | number): Promise<any>;
|
|
73
|
+
/** Get server-wide stats (database size, per-index document counts, etc.). */
|
|
74
|
+
getStats(): Promise<any>;
|
|
75
|
+
}
|
|
76
|
+
export default MeilisearchStore;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memcached store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Memcached is a distributed in-memory key-value cache. It has no query
|
|
5
|
+
* language, no secondary indexes and no persistence, so it does not fit the
|
|
6
|
+
* SQL-shaped `Dialect` interface. This class implements the minimal
|
|
7
|
+
* `NoSqlStore` marker interface and exposes Memcached's real operations
|
|
8
|
+
* (set/get/delete/add/replace/increment/decrement/flush) as a typed,
|
|
9
|
+
* promise-based API instead of forcing them into a `query(sql)` shape.
|
|
10
|
+
*
|
|
11
|
+
* Uses the `memjs` driver. The driver is loaded lazily inside `connect()`
|
|
12
|
+
* (or supplied pre-built via the `client` option) so importing this module
|
|
13
|
+
* never requires `memjs` to be installed unless a Memcached store is
|
|
14
|
+
* actually connected.
|
|
15
|
+
*/
|
|
16
|
+
import { NoSqlStore } from '../store';
|
|
17
|
+
/**
|
|
18
|
+
* Options passed straight through to memjs per-operation (e.g. `expires`).
|
|
19
|
+
* memjs accepts an `expires` TTL in seconds on set/add/replace/increment/
|
|
20
|
+
* decrement; anything memjs supports is forwarded unchanged.
|
|
21
|
+
*/
|
|
22
|
+
export interface MemcachedWriteOptions {
|
|
23
|
+
/** Time-to-live in seconds (0 = never expire, the memjs default). */
|
|
24
|
+
expires?: number;
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* How `get()` should decode the stored value.
|
|
29
|
+
*
|
|
30
|
+
* - `'buffer'` (default): return the raw `Buffer` exactly as memjs read it.
|
|
31
|
+
* - `'string'`: decode the buffer to a UTF-8 string.
|
|
32
|
+
* - `'json'`: decode to a string and `JSON.parse` it (the inverse of the
|
|
33
|
+
* automatic JSON serialization `set()` applies to non-string/Buffer
|
|
34
|
+
* values).
|
|
35
|
+
*/
|
|
36
|
+
export type MemcachedDecode = 'buffer' | 'string' | 'json';
|
|
37
|
+
/** Options for `get()`. */
|
|
38
|
+
export interface MemcachedGetOptions {
|
|
39
|
+
/** Decode strategy for the stored value. Defaults to `'buffer'`. */
|
|
40
|
+
decode?: MemcachedDecode;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Connection options for `MemcachedStore`.
|
|
44
|
+
*
|
|
45
|
+
* `servers` is a comma-separated list of `host:port` entries (memjs's
|
|
46
|
+
* standard format, e.g. `"localhost:11211"` or
|
|
47
|
+
* `"cache1:11211,cache2:11211"`). `options` is passed straight through to
|
|
48
|
+
* `memjs.Client.create(servers, options)`. Supply a pre-built memjs
|
|
49
|
+
* `client` to skip the lazy `require('memjs')` entirely (used by tests to
|
|
50
|
+
* inject a mock, and by callers who manage the client themselves).
|
|
51
|
+
*/
|
|
52
|
+
export interface MemcachedStoreOptions {
|
|
53
|
+
/** Comma-separated `host:port` server list. Defaults to memjs's own default. */
|
|
54
|
+
servers?: string;
|
|
55
|
+
/** memjs client options (username/password/timeout/retries/etc). */
|
|
56
|
+
options?: Record<string, unknown>;
|
|
57
|
+
/** Pre-built memjs client; when given, `connect()` uses it and skips `require('memjs')`. */
|
|
58
|
+
client?: unknown;
|
|
59
|
+
}
|
|
60
|
+
/** The subset of the memjs client surface this store drives. */
|
|
61
|
+
interface MemjsClient {
|
|
62
|
+
set(key: string, value: string | Buffer, options?: Record<string, unknown>): Promise<boolean>;
|
|
63
|
+
get(key: string): Promise<{
|
|
64
|
+
value: Buffer | null;
|
|
65
|
+
flags: Buffer | number | null;
|
|
66
|
+
} | null>;
|
|
67
|
+
delete(key: string): Promise<boolean>;
|
|
68
|
+
add(key: string, value: string | Buffer, options?: Record<string, unknown>): Promise<boolean>;
|
|
69
|
+
replace(key: string, value: string | Buffer, options?: Record<string, unknown>): Promise<boolean>;
|
|
70
|
+
increment(key: string, amount: number, options?: Record<string, unknown>): Promise<{
|
|
71
|
+
value: number | null;
|
|
72
|
+
success: boolean;
|
|
73
|
+
}>;
|
|
74
|
+
decrement(key: string, amount: number, options?: Record<string, unknown>): Promise<{
|
|
75
|
+
value: number | null;
|
|
76
|
+
success: boolean;
|
|
77
|
+
}>;
|
|
78
|
+
flush(): Promise<unknown>;
|
|
79
|
+
close?(): void;
|
|
80
|
+
quit?(): void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `MemcachedStore` wraps a `memjs` client and exposes Memcached's key-value
|
|
84
|
+
* operations as a typed, promise-based API.
|
|
85
|
+
*/
|
|
86
|
+
export declare class MemcachedStore implements NoSqlStore {
|
|
87
|
+
readonly name = "memcached";
|
|
88
|
+
readonly library = "memjs";
|
|
89
|
+
private readonly options;
|
|
90
|
+
private client;
|
|
91
|
+
private connected;
|
|
92
|
+
constructor(options?: MemcachedStoreOptions);
|
|
93
|
+
connect(): Promise<void>;
|
|
94
|
+
disconnect(): Promise<void>;
|
|
95
|
+
/** Alias for `disconnect()`, mirroring memjs's own `quit()`/`close()` naming. */
|
|
96
|
+
quit(): Promise<void>;
|
|
97
|
+
isConnected(): boolean;
|
|
98
|
+
/** Returns the underlying `memjs` client for anything not wrapped here. */
|
|
99
|
+
getClient(): MemjsClient;
|
|
100
|
+
private requireClient;
|
|
101
|
+
/**
|
|
102
|
+
* Store `value` under `key`, overwriting any existing value. Strings and
|
|
103
|
+
* Buffers are stored verbatim; other values are JSON-serialized (see
|
|
104
|
+
* `serialize`). Returns memjs's boolean success flag.
|
|
105
|
+
*/
|
|
106
|
+
set(key: string, value: unknown, options?: MemcachedWriteOptions): Promise<boolean>;
|
|
107
|
+
/**
|
|
108
|
+
* Read `key`. Returns `null` if the key is missing. By default returns the
|
|
109
|
+
* raw `Buffer`; pass `{ decode: 'string' }` or `{ decode: 'json' }` to
|
|
110
|
+
* decode the stored value.
|
|
111
|
+
*/
|
|
112
|
+
get(key: string, options?: MemcachedGetOptions): Promise<Buffer | string | unknown | null>;
|
|
113
|
+
/** Delete `key`. Returns memjs's boolean success flag. */
|
|
114
|
+
delete(key: string): Promise<boolean>;
|
|
115
|
+
/**
|
|
116
|
+
* Store `value` under `key` only if the key does not already exist
|
|
117
|
+
* (Memcached `add`). Returns `false` if the key was already present.
|
|
118
|
+
*/
|
|
119
|
+
add(key: string, value: unknown, options?: MemcachedWriteOptions): Promise<boolean>;
|
|
120
|
+
/**
|
|
121
|
+
* Store `value` under `key` only if the key already exists (Memcached
|
|
122
|
+
* `replace`). Returns `false` if the key was missing.
|
|
123
|
+
*/
|
|
124
|
+
replace(key: string, value: unknown, options?: MemcachedWriteOptions): Promise<boolean>;
|
|
125
|
+
/** Atomically increment the numeric value at `key` by `amount`. */
|
|
126
|
+
increment(key: string, amount: number, options?: MemcachedWriteOptions): Promise<{
|
|
127
|
+
value: number | null;
|
|
128
|
+
success: boolean;
|
|
129
|
+
}>;
|
|
130
|
+
/** Atomically decrement the numeric value at `key` by `amount`. */
|
|
131
|
+
decrement(key: string, amount: number, options?: MemcachedWriteOptions): Promise<{
|
|
132
|
+
value: number | null;
|
|
133
|
+
success: boolean;
|
|
134
|
+
}>;
|
|
135
|
+
/** Flush (delete) all keys across every configured server. */
|
|
136
|
+
flush(): Promise<unknown>;
|
|
137
|
+
}
|
|
138
|
+
export default MemcachedStore;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Milvus store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Milvus is a vector database: collections are defined by a field schema
|
|
5
|
+
* (a primary key, one or more vector fields with a fixed dimension, and
|
|
6
|
+
* optional scalar fields) rather than rows of arbitrary SQL types, queries
|
|
7
|
+
* are approximate-nearest-neighbor searches (or scalar filter expressions)
|
|
8
|
+
* rather than `SELECT ... WHERE`, and there is no join/transaction-log
|
|
9
|
+
* concept. None of that fits the SQL-shaped `Dialect` interface, so this
|
|
10
|
+
* class implements the minimal `NoSqlStore` marker interface
|
|
11
|
+
* (`src/nosql/store.ts`) and exposes Milvus's real operations (collection
|
|
12
|
+
* management, index management, insert/upsert, vector search, scalar
|
|
13
|
+
* query, delete, and partitions) grouped the way the underlying SDK groups
|
|
14
|
+
* them, instead of forcing everything into a `query(sql)` shape.
|
|
15
|
+
*
|
|
16
|
+
* Uses the official `@zilliz/milvus2-sdk-node` gRPC client.
|
|
17
|
+
*/
|
|
18
|
+
import { MilvusClient, DataType, type ClientConfig, type DescribeCollectionResponse, type CollectionData, type RowData, type MutationResult, type ConsistencyLevelEnum } from '@zilliz/milvus2-sdk-node';
|
|
19
|
+
import type { NoSqlStore } from '../store';
|
|
20
|
+
/**
|
|
21
|
+
* Connection options for `MilvusStore`. Passed straight through to
|
|
22
|
+
* `@zilliz/milvus2-sdk-node`'s `MilvusClient` (address, auth, TLS,
|
|
23
|
+
* per-request timeout, gRPC channel options, etc).
|
|
24
|
+
*/
|
|
25
|
+
export type MilvusStoreOptions = ClientConfig;
|
|
26
|
+
/** A single field in a collection's schema, as accepted by `createCollection()`. */
|
|
27
|
+
export interface MilvusFieldDefinition {
|
|
28
|
+
name: string;
|
|
29
|
+
data_type: DataType;
|
|
30
|
+
/** Vector dimension. Required for `FloatVector`/`BinaryVector`/etc fields. */
|
|
31
|
+
dim?: number;
|
|
32
|
+
is_primary_key?: boolean;
|
|
33
|
+
/** Server-generated auto-incrementing primary key (only valid on the primary key field). */
|
|
34
|
+
autoID?: boolean;
|
|
35
|
+
is_partition_key?: boolean;
|
|
36
|
+
/** `VarChar` max length. */
|
|
37
|
+
max_length?: number;
|
|
38
|
+
description?: string;
|
|
39
|
+
}
|
|
40
|
+
/** Options for `createCollection()`. */
|
|
41
|
+
export interface CreateCollectionOptions {
|
|
42
|
+
description?: string;
|
|
43
|
+
/** Number of shards. Defaults to the server's default (1) if omitted. */
|
|
44
|
+
shardsNum?: number;
|
|
45
|
+
consistencyLevel?: ConsistencyLevelEnum | 'Strong' | 'Session' | 'Bounded' | 'Eventually' | 'Customized';
|
|
46
|
+
enableDynamicField?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** A `CREATE INDEX`-equivalent request for `createIndex()`. */
|
|
49
|
+
export interface CreateIndexOptions {
|
|
50
|
+
fieldName: string;
|
|
51
|
+
indexType: string;
|
|
52
|
+
metricType?: string;
|
|
53
|
+
indexName?: string;
|
|
54
|
+
params?: Record<string, string | number | boolean>;
|
|
55
|
+
}
|
|
56
|
+
/** Result of a `describeIndex()`/`listIndexes()` call. */
|
|
57
|
+
export interface MilvusIndexInfo {
|
|
58
|
+
indexName: string;
|
|
59
|
+
fieldName: string;
|
|
60
|
+
indexType?: string;
|
|
61
|
+
metricType?: string;
|
|
62
|
+
state: string;
|
|
63
|
+
indexedRows: string;
|
|
64
|
+
totalRows: string;
|
|
65
|
+
}
|
|
66
|
+
/** Options shared by `insert()`/`upsert()`. */
|
|
67
|
+
export interface WriteOptions {
|
|
68
|
+
partitionName?: string;
|
|
69
|
+
}
|
|
70
|
+
/** Options for `search()`. */
|
|
71
|
+
export interface SearchOptions {
|
|
72
|
+
/**
|
|
73
|
+
* The query vector to search for. Only a single query vector is
|
|
74
|
+
* supported per call - Milvus's underlying API also accepts a batch
|
|
75
|
+
* (`number[][]`) that returns one result set per query vector, but that
|
|
76
|
+
* shape isn't wrapped here; use `getClient().search(...)` directly for
|
|
77
|
+
* batched multi-vector search.
|
|
78
|
+
*/
|
|
79
|
+
vector: number[];
|
|
80
|
+
/** Name of the vector field to search. Required if the collection has more than one vector field. */
|
|
81
|
+
annsField?: string;
|
|
82
|
+
/** Max number of nearest neighbors to return per query vector. */
|
|
83
|
+
limit?: number;
|
|
84
|
+
/** Scalar filter expression narrowing candidates before/while ranking (Milvus's boolean expression language, e.g. `'age > 21 && category == "b"'`). */
|
|
85
|
+
filter?: string;
|
|
86
|
+
outputFields?: string[];
|
|
87
|
+
partitionNames?: string[];
|
|
88
|
+
metricType?: string;
|
|
89
|
+
offset?: number;
|
|
90
|
+
}
|
|
91
|
+
/** Options for `query()`. */
|
|
92
|
+
export interface QueryOptions {
|
|
93
|
+
/** Scalar filter expression. Omit (with `ids`) to fetch by primary key instead. */
|
|
94
|
+
filter?: string;
|
|
95
|
+
ids?: (string | number)[];
|
|
96
|
+
outputFields?: string[];
|
|
97
|
+
partitionNames?: string[];
|
|
98
|
+
limit?: number;
|
|
99
|
+
offset?: number;
|
|
100
|
+
}
|
|
101
|
+
/** Result row of a `search()` call. */
|
|
102
|
+
export interface MilvusSearchHit {
|
|
103
|
+
id: string | number;
|
|
104
|
+
score: number;
|
|
105
|
+
[field: string]: unknown;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* `MilvusStore` wraps `@zilliz/milvus2-sdk-node`'s `MilvusClient` and exposes
|
|
109
|
+
* Milvus's collection/index/data/partition operations as a typed,
|
|
110
|
+
* promise-based API.
|
|
111
|
+
*/
|
|
112
|
+
export declare class MilvusStore implements NoSqlStore {
|
|
113
|
+
readonly name = "milvus";
|
|
114
|
+
readonly library = "@zilliz/milvus2-sdk-node";
|
|
115
|
+
private readonly options;
|
|
116
|
+
private client;
|
|
117
|
+
private connected;
|
|
118
|
+
constructor(options: MilvusStoreOptions);
|
|
119
|
+
connect(): Promise<void>;
|
|
120
|
+
disconnect(): Promise<void>;
|
|
121
|
+
isConnected(): boolean;
|
|
122
|
+
/** Returns the underlying `MilvusClient` for anything not wrapped here. */
|
|
123
|
+
getClient(): MilvusClient;
|
|
124
|
+
private requireClient;
|
|
125
|
+
private exec;
|
|
126
|
+
/** Create a collection with an explicit field schema (primary key + one or more vector fields + optional scalars). */
|
|
127
|
+
createCollection(collectionName: string, fields: MilvusFieldDefinition[], options?: CreateCollectionOptions): Promise<void>;
|
|
128
|
+
dropCollection(collectionName: string): Promise<void>;
|
|
129
|
+
hasCollection(collectionName: string): Promise<boolean>;
|
|
130
|
+
describeCollection(collectionName: string): Promise<DescribeCollectionResponse>;
|
|
131
|
+
/** List all collections. */
|
|
132
|
+
listCollections(): Promise<CollectionData[]>;
|
|
133
|
+
/** Load a collection's data into query nodes' memory so it can be searched/queried. */
|
|
134
|
+
loadCollection(collectionName: string, replicaNumber?: number): Promise<void>;
|
|
135
|
+
/** Release a collection's data from memory (it remains persisted; reload with `loadCollection()` to search it again). */
|
|
136
|
+
releaseCollection(collectionName: string): Promise<void>;
|
|
137
|
+
getCollectionStatistics(collectionName: string): Promise<Record<string, unknown>>;
|
|
138
|
+
createIndex(collectionName: string, options: CreateIndexOptions): Promise<void>;
|
|
139
|
+
dropIndex(collectionName: string, fieldName?: string, indexName?: string): Promise<void>;
|
|
140
|
+
describeIndex(collectionName: string, fieldName?: string): Promise<MilvusIndexInfo[]>;
|
|
141
|
+
listIndexes(collectionName: string): Promise<string[]>;
|
|
142
|
+
insert(collectionName: string, rows: RowData[], options?: WriteOptions): Promise<MutationResult>;
|
|
143
|
+
upsert(collectionName: string, rows: RowData[], options?: WriteOptions): Promise<MutationResult>;
|
|
144
|
+
/**
|
|
145
|
+
* Approximate-nearest-neighbor search against a vector field. Ranks by
|
|
146
|
+
* the collection's index metric (`L2`/`IP`/`COSINE`/...), optionally
|
|
147
|
+
* narrowed by a scalar `filter` expression evaluated alongside the
|
|
148
|
+
* vector comparison.
|
|
149
|
+
*/
|
|
150
|
+
search(collectionName: string, options: SearchOptions): Promise<MilvusSearchHit[]>;
|
|
151
|
+
/** Scalar-only lookup (no vector similarity) via a filter expression and/or primary key list. */
|
|
152
|
+
query(collectionName: string, options?: QueryOptions): Promise<Record<string, unknown>[]>;
|
|
153
|
+
/** Fetch specific rows by primary key. Equivalent to `query()` with `ids` set, using Milvus's dedicated `Get` RPC. */
|
|
154
|
+
get(collectionName: string, ids: (string | number)[], outputFields?: string[]): Promise<Record<string, unknown>[]>;
|
|
155
|
+
/** Count rows matching an optional filter expression (all rows if omitted). */
|
|
156
|
+
count(collectionName: string, filter?: string): Promise<number>;
|
|
157
|
+
deleteByIds(collectionName: string, ids: (string | number)[], partitionName?: string): Promise<MutationResult>;
|
|
158
|
+
deleteByFilter(collectionName: string, filter: string, partitionName?: string): Promise<MutationResult>;
|
|
159
|
+
createPartition(collectionName: string, partitionName: string): Promise<void>;
|
|
160
|
+
dropPartition(collectionName: string, partitionName: string): Promise<void>;
|
|
161
|
+
hasPartition(collectionName: string, partitionName: string): Promise<boolean>;
|
|
162
|
+
listPartitions(collectionName: string): Promise<string[]>;
|
|
163
|
+
loadPartitions(collectionName: string, partitionNames: string[], replicaNumber?: number): Promise<void>;
|
|
164
|
+
releasePartitions(collectionName: string, partitionNames: string[]): Promise<void>;
|
|
165
|
+
getPartitionStatistics(collectionName: string, partitionName: string): Promise<Record<string, unknown>>;
|
|
166
|
+
}
|
|
167
|
+
export default MilvusStore;
|