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,117 @@
|
|
|
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 ScyllaBatchQuery {
|
|
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.
|
|
15
|
+
*/
|
|
16
|
+
export interface ScyllaQueryOptions {
|
|
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 ScyllaResult<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 ScyllaClientLike {
|
|
34
|
+
connect(): Promise<void>;
|
|
35
|
+
execute(query: string, params?: unknown[], options?: Record<string, unknown>): Promise<ScyllaResult>;
|
|
36
|
+
batch(queries: ScyllaBatchQuery[], options?: Record<string, unknown>): Promise<ScyllaResult>;
|
|
37
|
+
shutdown(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Connection options for `ScyllaStore`. These map onto the `cassandra-driver`
|
|
41
|
+
* `Client` constructor options.
|
|
42
|
+
*/
|
|
43
|
+
export interface ScyllaStoreOptions {
|
|
44
|
+
/** Seed node addresses, e.g. `['127.0.0.1']` or `['10.0.0.1:9042']`. */
|
|
45
|
+
contactPoints?: string[];
|
|
46
|
+
/** Local data center name (required by the driver's default load-balancing policy). */
|
|
47
|
+
localDataCenter?: string;
|
|
48
|
+
/** Default keyspace to bind the session to. */
|
|
49
|
+
keyspace?: string;
|
|
50
|
+
/** Plain-text auth credentials passed to the driver. */
|
|
51
|
+
credentials?: {
|
|
52
|
+
username: string;
|
|
53
|
+
password: string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Escape hatch for any other `cassandra-driver` `Client` option (pooling,
|
|
57
|
+
* SSL, policies, socketOptions, ...). Merged into the options passed to the
|
|
58
|
+
* `Client` constructor.
|
|
59
|
+
*/
|
|
60
|
+
clientOptions?: Record<string, unknown>;
|
|
61
|
+
/**
|
|
62
|
+
* A pre-built driver `Client` (or a compatible mock). When provided,
|
|
63
|
+
* `connect()` uses it directly and skips `require('cassandra-driver')`
|
|
64
|
+
* entirely — this is how tests inject a mock without the real driver
|
|
65
|
+
* installed.
|
|
66
|
+
*/
|
|
67
|
+
client?: ScyllaClientLike;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* `ScyllaStore` wraps a `cassandra-driver` `Client` and exposes CQL execution
|
|
71
|
+
* (`execute`), atomic multi-statement batches (`batch`), and a few
|
|
72
|
+
* parameterized convenience helpers (`insert`, `selectAll`).
|
|
73
|
+
*
|
|
74
|
+
* Statements are prepared by default (`prepare: true`) so the driver can cache
|
|
75
|
+
* query metadata, infer parameter types, and route requests to the shard/replica
|
|
76
|
+
* that owns the partition — the recommended default for anything run more than
|
|
77
|
+
* once, and especially valuable on ScyllaDB's shard-aware driver path.
|
|
78
|
+
*/
|
|
79
|
+
export declare class ScyllaStore implements NoSqlStore {
|
|
80
|
+
readonly name = "scylladb";
|
|
81
|
+
readonly library = "cassandra-driver";
|
|
82
|
+
private readonly options;
|
|
83
|
+
private client;
|
|
84
|
+
private connected;
|
|
85
|
+
constructor(options?: ScyllaStoreOptions);
|
|
86
|
+
connect(): Promise<void>;
|
|
87
|
+
disconnect(): Promise<void>;
|
|
88
|
+
isConnected(): boolean;
|
|
89
|
+
/** Returns the underlying `cassandra-driver` `Client` for anything not wrapped here. */
|
|
90
|
+
getClient(): ScyllaClientLike;
|
|
91
|
+
private requireClient;
|
|
92
|
+
private wrapError;
|
|
93
|
+
/**
|
|
94
|
+
* Execute a single CQL statement with optional bound `params`. Statements
|
|
95
|
+
* are prepared by default (`prepare: true`); pass `opts.prepare = false` to
|
|
96
|
+
* run a one-off unprepared. Any other driver query options are forwarded via
|
|
97
|
+
* `opts`. Returns the full driver result (with `.rows`).
|
|
98
|
+
*/
|
|
99
|
+
execute<T = Record<string, unknown>>(query: string, params?: unknown[], opts?: ScyllaQueryOptions): Promise<ScyllaResult<T>>;
|
|
100
|
+
/**
|
|
101
|
+
* Execute multiple statements as a single logged batch (atomic across the
|
|
102
|
+
* statements, though not isolated — CQL batches are not SQL transactions).
|
|
103
|
+
* Each entry is a `{ query, params }` pair. Prepared by default; forward
|
|
104
|
+
* other driver batch options via `opts`.
|
|
105
|
+
*/
|
|
106
|
+
batch(queries: ScyllaBatchQuery[], opts?: ScyllaQueryOptions): Promise<ScyllaResult>;
|
|
107
|
+
/**
|
|
108
|
+
* Convenience `INSERT`: builds a parameterized
|
|
109
|
+
* `INSERT INTO table (cols...) VALUES (?, ?, ...)` from `obj`'s keys and
|
|
110
|
+
* executes it (prepared). For upserts with TTL, IF NOT EXISTS, or other
|
|
111
|
+
* clauses, write the CQL yourself and call `execute()`.
|
|
112
|
+
*/
|
|
113
|
+
insert(table: string, obj: Record<string, unknown>, opts?: ScyllaQueryOptions): Promise<ScyllaResult>;
|
|
114
|
+
/** Convenience `SELECT * FROM table`. Returns the full driver result (with `.rows`). */
|
|
115
|
+
selectAll<T = Record<string, unknown>>(table: string, opts?: ScyllaQueryOptions): Promise<ScyllaResult<T>>;
|
|
116
|
+
}
|
|
117
|
+
export default ScyllaStore;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SigNoz store implementation.
|
|
3
|
+
*
|
|
4
|
+
* SigNoz is an open-source, ClickHouse-backed observability platform for
|
|
5
|
+
* logs, traces, and metrics. Logs are ingested over OTLP/HTTP (the
|
|
6
|
+
* OpenTelemetry logs protocol) and queried through SigNoz's query-range API
|
|
7
|
+
* (a builder-style JSON body over its ClickHouse store). There is no
|
|
8
|
+
* SQL-shaped query surface exposed to clients, no row-level UPDATE/DELETE,
|
|
9
|
+
* and no identifier escaping, so SigNoz does not fit the SQL `Dialect`
|
|
10
|
+
* interface (`src/dialects/dialect.ts`). This class implements the minimal
|
|
11
|
+
* `NoSqlStore` marker interface (`src/nosql/store.ts`) and exposes SigNoz's
|
|
12
|
+
* OTLP ingest + query API.
|
|
13
|
+
*
|
|
14
|
+
* ## No canonical driver - HTTP over `fetch`
|
|
15
|
+
*
|
|
16
|
+
* SigNoz has no single canonical npm client; ingest is OTLP/HTTP JSON and
|
|
17
|
+
* query is a REST/JSON API. This store talks to both with the global `fetch`
|
|
18
|
+
* (so `library` is `'fetch'`). For tests (and custom transports) an
|
|
19
|
+
* alternative HTTP client can be injected via `SigNozStoreOptions.client`.
|
|
20
|
+
*
|
|
21
|
+
* ## Endpoints wrapped
|
|
22
|
+
*
|
|
23
|
+
* - `push(resource, entries)` -> `POST /v1/logs` (OTLP/HTTP ingest)
|
|
24
|
+
* - `query(builder, opts?)` -> `POST /api/v4/query_range` (query-range)
|
|
25
|
+
* - `labels()` -> `GET /api/v1/logs/fields` (log field keys)
|
|
26
|
+
* - `streams()` -> `GET /api/v1/services` (services)
|
|
27
|
+
*/
|
|
28
|
+
import { NoSqlStore } from '../store';
|
|
29
|
+
/** Default SigNoz base URL (query service). */
|
|
30
|
+
export declare const DEFAULT_SIGNOZ_BASE_URL = "http://localhost:8080";
|
|
31
|
+
/** Query-string parameter value(s). `undefined` values are dropped. */
|
|
32
|
+
export type QueryParams = Record<string, string | string[] | undefined>;
|
|
33
|
+
/**
|
|
34
|
+
* The subset of an HTTP client this store needs. The internal `fetch`-based
|
|
35
|
+
* client implements this; tests inject a mock with the same shape.
|
|
36
|
+
*/
|
|
37
|
+
export interface SigNozHttpClient {
|
|
38
|
+
/** Issue a GET and return the parsed JSON response body. */
|
|
39
|
+
get(path: string, params?: QueryParams): Promise<any>;
|
|
40
|
+
/** Issue a POST with a text body and return the parsed JSON/text response. */
|
|
41
|
+
post(path: string, body: string, contentType?: string): Promise<any>;
|
|
42
|
+
}
|
|
43
|
+
/** Connection options for `SigNozStore`. */
|
|
44
|
+
export interface SigNozStoreOptions {
|
|
45
|
+
/** Base URL of the SigNoz query service. Defaults to `http://localhost:8080`. */
|
|
46
|
+
baseURL?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Optional pre-built HTTP client. When provided it is used verbatim and
|
|
49
|
+
* `baseURL` is ignored; otherwise an internal `fetch`-based client is
|
|
50
|
+
* built against `baseURL` on `connect()`.
|
|
51
|
+
*/
|
|
52
|
+
client?: SigNozHttpClient;
|
|
53
|
+
/** Extra HTTP headers (e.g. `SIGNOZ-API-KEY`) sent with every request. */
|
|
54
|
+
headers?: Record<string, string>;
|
|
55
|
+
}
|
|
56
|
+
/** A log record to ingest, in a simplified shape mapped onto OTLP. */
|
|
57
|
+
export interface SigNozLogEntry {
|
|
58
|
+
/** Unix-nanosecond timestamp. */
|
|
59
|
+
timeUnixNano?: string | number;
|
|
60
|
+
/** Severity text (e.g. `INFO`, `ERROR`). */
|
|
61
|
+
severity?: string;
|
|
62
|
+
/** The log body/message. */
|
|
63
|
+
body: string;
|
|
64
|
+
/** Structured attributes for this record. */
|
|
65
|
+
attributes?: Record<string, string | number | boolean>;
|
|
66
|
+
}
|
|
67
|
+
/** Options for a query-range request. */
|
|
68
|
+
export interface SigNozQueryOptions {
|
|
69
|
+
/** Start of the query window (epoch ms). */
|
|
70
|
+
start?: number;
|
|
71
|
+
/** End of the query window (epoch ms). */
|
|
72
|
+
end?: number;
|
|
73
|
+
/** Aggregation step in seconds. */
|
|
74
|
+
step?: number;
|
|
75
|
+
}
|
|
76
|
+
/** Build a `fetch`-backed client for the given base URL. */
|
|
77
|
+
export declare function createFetchClient(baseURL: string, headers?: Record<string, string>): SigNozHttpClient;
|
|
78
|
+
/**
|
|
79
|
+
* `SigNozStore` wraps SigNoz's OTLP/HTTP log ingest and its query-range API
|
|
80
|
+
* (plus log-field and service metadata) behind the `NoSqlStore` lifecycle.
|
|
81
|
+
*/
|
|
82
|
+
export declare class SigNozStore implements NoSqlStore {
|
|
83
|
+
readonly name = "signoz";
|
|
84
|
+
readonly library = "fetch";
|
|
85
|
+
private readonly baseURL;
|
|
86
|
+
private readonly injectedClient?;
|
|
87
|
+
private readonly headers?;
|
|
88
|
+
private client;
|
|
89
|
+
private connected;
|
|
90
|
+
constructor(options?: SigNozStoreOptions);
|
|
91
|
+
connect(): Promise<void>;
|
|
92
|
+
disconnect(): Promise<void>;
|
|
93
|
+
isConnected(): boolean;
|
|
94
|
+
/** Returns the underlying (internal or injected) HTTP client. */
|
|
95
|
+
getClient(): SigNozHttpClient;
|
|
96
|
+
private requireClient;
|
|
97
|
+
private doGet;
|
|
98
|
+
/**
|
|
99
|
+
* Ingests log records over OTLP/HTTP via `POST /v1/logs`. The simplified
|
|
100
|
+
* `entries` are assembled into the OTLP `resourceLogs -> scopeLogs ->
|
|
101
|
+
* logRecords` envelope, tagged with the shared `resource` attributes.
|
|
102
|
+
*/
|
|
103
|
+
push(resource: Record<string, string | number | boolean>, entries: SigNozLogEntry[]): Promise<any>;
|
|
104
|
+
/**
|
|
105
|
+
* Runs a query-range request via `POST /api/v4/query_range`. The
|
|
106
|
+
* `builder` is SigNoz's composite query payload (`compositeQuery` /
|
|
107
|
+
* builder queries); `start`/`end`/`step` fill the time window. Returns the
|
|
108
|
+
* parsed response.
|
|
109
|
+
*/
|
|
110
|
+
query(builder: Record<string, unknown>, options?: SigNozQueryOptions): Promise<any>;
|
|
111
|
+
/** Lists the known log field/attribute keys via `GET /api/v1/logs/fields`. */
|
|
112
|
+
labels(): Promise<any>;
|
|
113
|
+
/** Lists the observed services via `GET /api/v1/services`. */
|
|
114
|
+
streams(): Promise<any>;
|
|
115
|
+
}
|
|
116
|
+
export default SigNozStore;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/** A message accepted by `publish()`: raw string/Buffer or a JSON-serializable value. */
|
|
3
|
+
export type SnsMessage = string | Buffer | Record<string, unknown> | unknown[];
|
|
4
|
+
/**
|
|
5
|
+
* A loosely-typed handle to an AWS v3 `SNSClient` (or any object exposing a
|
|
6
|
+
* compatible `send(command)` method). Tests inject a mock matching this shape.
|
|
7
|
+
*/
|
|
8
|
+
export interface SnsClientLike {
|
|
9
|
+
send(command: unknown): Promise<any>;
|
|
10
|
+
destroy?(): void;
|
|
11
|
+
}
|
|
12
|
+
/** Connection options for `SnsStore`. */
|
|
13
|
+
export interface SnsStoreOptions {
|
|
14
|
+
/** AWS region, e.g. 'us-east-1'. */
|
|
15
|
+
region?: string;
|
|
16
|
+
/** Static credentials. Omit to use the default AWS credential provider chain. */
|
|
17
|
+
credentials?: {
|
|
18
|
+
accessKeyId: string;
|
|
19
|
+
secretAccessKey: string;
|
|
20
|
+
sessionToken?: string;
|
|
21
|
+
};
|
|
22
|
+
/** Override the service endpoint (e.g. 'http://localhost:4566' for LocalStack). */
|
|
23
|
+
endpoint?: string;
|
|
24
|
+
/**
|
|
25
|
+
* A pre-built `SNSClient` (or compatible object). When provided, `connect()`
|
|
26
|
+
* uses it directly and does NOT require the SDK — this is how tests inject a
|
|
27
|
+
* mock client.
|
|
28
|
+
*/
|
|
29
|
+
client?: SnsClientLike;
|
|
30
|
+
}
|
|
31
|
+
/** Options for `publish()` (`Publish`). */
|
|
32
|
+
export interface SnsPublishOptions {
|
|
33
|
+
/** Subject line (for email endpoints). */
|
|
34
|
+
subject?: string;
|
|
35
|
+
/** FIFO group id (required for FIFO topics). */
|
|
36
|
+
messageGroupId?: string;
|
|
37
|
+
/** FIFO dedupe id. */
|
|
38
|
+
messageDeduplicationId?: string;
|
|
39
|
+
/** Message attributes, passed straight through. */
|
|
40
|
+
messageAttributes?: Record<string, unknown>;
|
|
41
|
+
/** Set true when `message` is a JSON structure with per-protocol overrides. */
|
|
42
|
+
messageStructureJson?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** Result of `publish()`. */
|
|
45
|
+
export interface SnsPublishResult {
|
|
46
|
+
messageId?: string;
|
|
47
|
+
sequenceNumber?: string;
|
|
48
|
+
}
|
|
49
|
+
/** Options for `subscribe()` (`Subscribe`). */
|
|
50
|
+
export interface SnsSubscribeOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Delivery protocol: 'sqs', 'lambda', 'https', 'http', 'email',
|
|
53
|
+
* 'email-json', 'sms', or 'application'. Defaults to 'https'.
|
|
54
|
+
*/
|
|
55
|
+
protocol?: string;
|
|
56
|
+
/** Return the subscription ARN immediately without waiting for confirmation. */
|
|
57
|
+
returnSubscriptionArn?: boolean;
|
|
58
|
+
/** Subscription attributes (e.g. `FilterPolicy`, `RawMessageDelivery`). */
|
|
59
|
+
attributes?: Record<string, string>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `SnsStore` wraps an AWS v3 `SNSClient` and exposes topic publishing,
|
|
63
|
+
* endpoint subscription registration, and topic administration.
|
|
64
|
+
*/
|
|
65
|
+
export declare class SnsStore implements NoSqlStore {
|
|
66
|
+
readonly name = "sns";
|
|
67
|
+
readonly library = "@aws-sdk/client-sns";
|
|
68
|
+
private readonly options;
|
|
69
|
+
private client;
|
|
70
|
+
private aws;
|
|
71
|
+
private connected;
|
|
72
|
+
constructor(options?: SnsStoreOptions);
|
|
73
|
+
connect(): Promise<void>;
|
|
74
|
+
private tryLoadSdk;
|
|
75
|
+
disconnect(): Promise<void>;
|
|
76
|
+
isConnected(): boolean;
|
|
77
|
+
/** Returns the underlying `SNSClient` (loosely typed) for anything not wrapped here. */
|
|
78
|
+
getClient(): SnsClientLike;
|
|
79
|
+
private requireClient;
|
|
80
|
+
private command;
|
|
81
|
+
private wrapError;
|
|
82
|
+
/**
|
|
83
|
+
* `Publish` — publish one `message` to the topic at `topicArn`. The message
|
|
84
|
+
* is encoded to a string (string as-is, Buffer → UTF-8, else JSON). Returns
|
|
85
|
+
* the message id (and FIFO sequence number, if any).
|
|
86
|
+
*/
|
|
87
|
+
publish(topicArn: string, message: SnsMessage, options?: SnsPublishOptions): Promise<SnsPublishResult>;
|
|
88
|
+
/** `CreateTopic` — create a topic by name. Returns its ARN. */
|
|
89
|
+
createTopic(name: string, attributes?: Record<string, string>): Promise<string | undefined>;
|
|
90
|
+
/**
|
|
91
|
+
* `Subscribe` — register a push `endpoint` on the topic at `topicArn`. Unlike
|
|
92
|
+
* poll-based engines, SNS pushes notifications to the endpoint, so this takes
|
|
93
|
+
* an endpoint (SQS/Lambda ARN, HTTPS URL, email, ...) and a protocol rather
|
|
94
|
+
* than a message handler. Returns the subscription ARN (or 'pending
|
|
95
|
+
* confirmation' for endpoints that require confirmation).
|
|
96
|
+
*/
|
|
97
|
+
subscribe(topicArn: string, endpoint: string, options?: SnsSubscribeOptions): Promise<string | undefined>;
|
|
98
|
+
}
|
|
99
|
+
export default SnsStore;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apache Solr store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Solr is a search engine built on Lucene: documents are schema-flexible
|
|
5
|
+
* JSON records indexed into a "core" (or "collection" in SolrCloud), and
|
|
6
|
+
* the primary operation is a Lucene/DisMax query (`q`, `fq`, `fl`, `sort`,
|
|
7
|
+
* `start`/`rows`, faceting) against that inverted index - not SQL, not
|
|
8
|
+
* joins, not a transaction log. Writes are buffered until an explicit
|
|
9
|
+
* `commit` makes them searchable. None of that fits the SQL-shaped
|
|
10
|
+
* `Dialect` interface used by the SQL dialects in this repo, so this class
|
|
11
|
+
* implements the minimal `NoSqlStore` marker interface (`src/nosql/store.ts`)
|
|
12
|
+
* and exposes Solr's real operations (add, search, delete, commit, optimize)
|
|
13
|
+
* directly.
|
|
14
|
+
*
|
|
15
|
+
* Uses the `solr-client` driver, lazy-loaded inside `connect()` via
|
|
16
|
+
* `require()` so the dependency is only needed when a Solr store is actually
|
|
17
|
+
* constructed (tests inject a pre-built mock `client` instead).
|
|
18
|
+
*
|
|
19
|
+
* ## Driver call shape (callback vs promise)
|
|
20
|
+
*
|
|
21
|
+
* The classic `solr-client` API is Node-style callbacks:
|
|
22
|
+
* `client.add(docs, (err, obj) => ...)`, `client.commit(cb)`,
|
|
23
|
+
* `client.search(query, cb)`, `client.deleteByID(id, cb)`,
|
|
24
|
+
* `client.deleteByQuery(q, cb)`, `client.optimize(cb)`. Some builds /
|
|
25
|
+
* forks instead return a Promise when no callback is passed. To work with
|
|
26
|
+
* either, every call goes through {@link invoke}, which passes a callback
|
|
27
|
+
* *and* inspects the return value: if the driver returned a thenable it is
|
|
28
|
+
* awaited directly (the callback is then ignored), otherwise the callback
|
|
29
|
+
* settles the Promise. `client.query()` (when present) builds a query
|
|
30
|
+
* object via a fluent builder; if the driver doesn't expose it, `search()`
|
|
31
|
+
* accepts a raw query object/string unchanged.
|
|
32
|
+
*/
|
|
33
|
+
import { NoSqlStore } from '../store';
|
|
34
|
+
/**
|
|
35
|
+
* Connection options for `SolrStore`. Mirror the fields `solr-client`'s
|
|
36
|
+
* `createClient()` accepts; the whole object is forwarded to
|
|
37
|
+
* `solr.createClient(...)`, so any additional driver options (`path`,
|
|
38
|
+
* `protocol`, `secure`, `bigint`, etc.) pass straight through.
|
|
39
|
+
*/
|
|
40
|
+
export interface SolrStoreOptions {
|
|
41
|
+
/** Solr host. Defaults to the driver's own default (`127.0.0.1`). */
|
|
42
|
+
host?: string;
|
|
43
|
+
/** Solr port. Defaults to the driver's own default (`8983`). */
|
|
44
|
+
port?: number | string;
|
|
45
|
+
/** The core (or SolrCloud collection) to target. */
|
|
46
|
+
core?: string;
|
|
47
|
+
/** Base path Solr is mounted under. Defaults to the driver's default (`/solr`). */
|
|
48
|
+
path?: string;
|
|
49
|
+
/** `http` or `https`. */
|
|
50
|
+
protocol?: string;
|
|
51
|
+
/** Use HTTPS. */
|
|
52
|
+
secure?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* A pre-built `solr-client` client. When provided, `connect()` skips the
|
|
55
|
+
* `require('solr-client')` / `createClient()` step and uses this instead -
|
|
56
|
+
* the injection point used by tests to supply a mock.
|
|
57
|
+
*/
|
|
58
|
+
client?: SolrClientLike;
|
|
59
|
+
/** Any other option accepted by `solr.createClient(...)`. */
|
|
60
|
+
[key: string]: unknown;
|
|
61
|
+
}
|
|
62
|
+
/** The subset of the `solr-client` client surface this store uses. */
|
|
63
|
+
export interface SolrClientLike {
|
|
64
|
+
add(docs: unknown, callback?: SolrCallback): unknown;
|
|
65
|
+
commit(callback?: SolrCallback): unknown;
|
|
66
|
+
optimize?(options?: unknown, callback?: SolrCallback): unknown;
|
|
67
|
+
search(query: unknown, callback?: SolrCallback): unknown;
|
|
68
|
+
deleteByID(id: string | number, callback?: SolrCallback): unknown;
|
|
69
|
+
deleteByQuery(query: string, callback?: SolrCallback): unknown;
|
|
70
|
+
/** Fluent query builder (`client.query().q(...).start(...)...`), when the driver exposes it. */
|
|
71
|
+
query?(): unknown;
|
|
72
|
+
[key: string]: unknown;
|
|
73
|
+
}
|
|
74
|
+
type SolrCallback = (err: unknown, result?: unknown) => void;
|
|
75
|
+
/**
|
|
76
|
+
* `SolrStore` wraps a `solr-client` client and exposes Solr's document
|
|
77
|
+
* indexing, querying, deletion, and commit/optimize operations as a typed,
|
|
78
|
+
* promise-based API.
|
|
79
|
+
*/
|
|
80
|
+
export declare class SolrStore implements NoSqlStore {
|
|
81
|
+
readonly name = "solr";
|
|
82
|
+
readonly library = "solr-client";
|
|
83
|
+
private readonly options;
|
|
84
|
+
private client;
|
|
85
|
+
private connected;
|
|
86
|
+
constructor(options?: SolrStoreOptions);
|
|
87
|
+
connect(): Promise<void>;
|
|
88
|
+
disconnect(): Promise<void>;
|
|
89
|
+
isConnected(): boolean;
|
|
90
|
+
/** Returns the underlying `solr-client` client for anything not wrapped here. */
|
|
91
|
+
getClient(): SolrClientLike;
|
|
92
|
+
private requireClient;
|
|
93
|
+
private exec;
|
|
94
|
+
/**
|
|
95
|
+
* Add (index) one or more documents, then `commit` so they become
|
|
96
|
+
* searchable. Solr buffers adds until a commit, so the two are done
|
|
97
|
+
* together here for the common "index and see it" case; call `add` via
|
|
98
|
+
* `getClient()` directly if you want to batch many adds before a single
|
|
99
|
+
* commit.
|
|
100
|
+
*/
|
|
101
|
+
add(docs: Record<string, unknown> | Array<Record<string, unknown>>): Promise<unknown>;
|
|
102
|
+
/**
|
|
103
|
+
* Run a query. Pass either a raw query object/string (Solr query params,
|
|
104
|
+
* e.g. `'q=title:solr&rows=10'`) or a query built by
|
|
105
|
+
* {@link SolrStore.query}. Returns the driver's raw response object
|
|
106
|
+
* (`{ responseHeader, response: { numFound, docs, ... } }`).
|
|
107
|
+
*/
|
|
108
|
+
search(query: unknown): Promise<unknown>;
|
|
109
|
+
/**
|
|
110
|
+
* Build a query with the driver's fluent builder (`.q(...)`, `.start(...)`,
|
|
111
|
+
* `.rows(...)`, `.sort(...)`, ...), when the driver exposes `client.query()`.
|
|
112
|
+
* Throws if this driver build doesn't provide a builder - construct a raw
|
|
113
|
+
* query object/string and pass it straight to {@link SolrStore.search} in
|
|
114
|
+
* that case.
|
|
115
|
+
*/
|
|
116
|
+
query(): unknown;
|
|
117
|
+
/** Delete a single document by its unique-key value, then commit. */
|
|
118
|
+
deleteByID(id: string | number): Promise<unknown>;
|
|
119
|
+
/** Delete every document matching a Solr query (e.g. `'category:obsolete'`), then commit. */
|
|
120
|
+
deleteByQuery(query: string): Promise<unknown>;
|
|
121
|
+
/** Commit buffered writes so they become visible to search. */
|
|
122
|
+
commit(): Promise<unknown>;
|
|
123
|
+
/**
|
|
124
|
+
* Optimize the index (merge segments). Optional - not every `solr-client`
|
|
125
|
+
* build exposes `optimize`; throws a `DatabaseError` if this one doesn't.
|
|
126
|
+
*/
|
|
127
|
+
optimize(): Promise<unknown>;
|
|
128
|
+
}
|
|
129
|
+
export default SolrStore;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splunk store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Splunk is a log-ingestion and search platform. Data is ingested through
|
|
5
|
+
* the HTTP Event Collector (HEC) and searched with SPL (Search Processing
|
|
6
|
+
* Language) via the REST search API. There is no SQL-shaped query surface,
|
|
7
|
+
* no row-level UPDATE/DELETE, and no identifier escaping, so Splunk does not
|
|
8
|
+
* fit the SQL `Dialect` interface (`src/dialects/dialect.ts`). This class
|
|
9
|
+
* implements the minimal `NoSqlStore` marker interface
|
|
10
|
+
* (`src/nosql/store.ts`) and exposes Splunk's ingest/search API.
|
|
11
|
+
*
|
|
12
|
+
* ## Driver: `splunk-sdk` if present, else HTTP over `fetch`
|
|
13
|
+
*
|
|
14
|
+
* If the optional `splunk-sdk` package is installed it is lazily required at
|
|
15
|
+
* connect time and exposed via `getSdk()`; the ingest/search methods here
|
|
16
|
+
* always speak the REST/HEC HTTP API over the global `fetch` (so `library`
|
|
17
|
+
* is `'fetch'`). For tests (and custom transports) an alternative HTTP
|
|
18
|
+
* client can be injected via `SplunkStoreOptions.client`.
|
|
19
|
+
*
|
|
20
|
+
* ## Endpoints wrapped
|
|
21
|
+
*
|
|
22
|
+
* - `push(meta, events)` -> `POST /services/collector/event` (HEC ingest)
|
|
23
|
+
* - `query(spl, opts?)` -> `POST /services/search/jobs` (SPL search)
|
|
24
|
+
* - `labels()` -> `GET /services/data/sourcetypes` (sourcetypes)
|
|
25
|
+
* - `streams()` -> `GET /services/data/indexes` (indexes)
|
|
26
|
+
*/
|
|
27
|
+
import { NoSqlStore } from '../store';
|
|
28
|
+
/** Default Splunk management/REST base URL. */
|
|
29
|
+
export declare const DEFAULT_SPLUNK_BASE_URL = "https://localhost:8088";
|
|
30
|
+
/** Query-string parameter value(s). `undefined` values are dropped. */
|
|
31
|
+
export type QueryParams = Record<string, string | string[] | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* The subset of an HTTP client this store needs. The internal `fetch`-based
|
|
34
|
+
* client implements this; tests inject a mock with the same shape.
|
|
35
|
+
*/
|
|
36
|
+
export interface SplunkHttpClient {
|
|
37
|
+
/** Issue a GET and return the parsed JSON response body. */
|
|
38
|
+
get(path: string, params?: QueryParams): Promise<any>;
|
|
39
|
+
/** Issue a POST with a text body and return the parsed JSON/text response. */
|
|
40
|
+
post(path: string, body: string, contentType?: string): Promise<any>;
|
|
41
|
+
}
|
|
42
|
+
/** Connection options for `SplunkStore`. */
|
|
43
|
+
export interface SplunkStoreOptions {
|
|
44
|
+
/** Base URL of the Splunk HEC/REST endpoint. Defaults to `https://localhost:8088`. */
|
|
45
|
+
baseURL?: string;
|
|
46
|
+
/** HEC token used for ingest (`Authorization: Splunk <token>`). */
|
|
47
|
+
token?: 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?: SplunkHttpClient;
|
|
54
|
+
/** Extra HTTP headers sent with every internal-client request. */
|
|
55
|
+
headers?: Record<string, string>;
|
|
56
|
+
}
|
|
57
|
+
/** Envelope metadata attached to each HEC event. */
|
|
58
|
+
export interface SplunkEventMeta {
|
|
59
|
+
/** Target index. */
|
|
60
|
+
index?: string;
|
|
61
|
+
/** Source type (e.g. `access_combined`). */
|
|
62
|
+
sourcetype?: string;
|
|
63
|
+
/** Event source. */
|
|
64
|
+
source?: string;
|
|
65
|
+
/** Reporting host. */
|
|
66
|
+
host?: string;
|
|
67
|
+
}
|
|
68
|
+
/** Options for an SPL search job. */
|
|
69
|
+
export interface SplunkSearchOptions {
|
|
70
|
+
/** Earliest time modifier (e.g. `-24h`, epoch). */
|
|
71
|
+
earliest?: string;
|
|
72
|
+
/** Latest time modifier (e.g. `now`, epoch). */
|
|
73
|
+
latest?: string;
|
|
74
|
+
/** Output mode; defaults to `json`. */
|
|
75
|
+
outputMode?: string;
|
|
76
|
+
/** Run the search synchronously (`exec_mode=oneshot`) rather than as a job. */
|
|
77
|
+
oneshot?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/** Build a `fetch`-backed client for the given base URL. */
|
|
80
|
+
export declare function createFetchClient(baseURL: string, headers?: Record<string, string>): SplunkHttpClient;
|
|
81
|
+
/**
|
|
82
|
+
* `SplunkStore` wraps Splunk's HTTP Event Collector (ingest) and REST search
|
|
83
|
+
* API (SPL search jobs + index/sourcetype metadata) behind the `NoSqlStore`
|
|
84
|
+
* lifecycle.
|
|
85
|
+
*/
|
|
86
|
+
export declare class SplunkStore implements NoSqlStore {
|
|
87
|
+
readonly name = "splunk";
|
|
88
|
+
readonly library = "fetch";
|
|
89
|
+
private readonly baseURL;
|
|
90
|
+
private readonly token?;
|
|
91
|
+
private readonly injectedClient?;
|
|
92
|
+
private readonly headers?;
|
|
93
|
+
private client;
|
|
94
|
+
private sdk;
|
|
95
|
+
private connected;
|
|
96
|
+
constructor(options?: SplunkStoreOptions);
|
|
97
|
+
connect(): Promise<void>;
|
|
98
|
+
disconnect(): Promise<void>;
|
|
99
|
+
isConnected(): boolean;
|
|
100
|
+
/** Returns the underlying (internal or injected) HTTP client. */
|
|
101
|
+
getClient(): SplunkHttpClient;
|
|
102
|
+
/** Returns the lazily-required `splunk-sdk` module, or `null` if not installed. */
|
|
103
|
+
getSdk(): any;
|
|
104
|
+
private requireClient;
|
|
105
|
+
private doGet;
|
|
106
|
+
/**
|
|
107
|
+
* Sends a batch of events to the HTTP Event Collector via
|
|
108
|
+
* `POST /services/collector/event`. Each event is wrapped in a HEC
|
|
109
|
+
* envelope carrying the shared `meta` (index/sourcetype/source/host); the
|
|
110
|
+
* envelopes are newline-concatenated as HEC expects.
|
|
111
|
+
*/
|
|
112
|
+
push(meta: SplunkEventMeta, events: unknown[]): Promise<any>;
|
|
113
|
+
/**
|
|
114
|
+
* Dispatches an SPL search via `POST /services/search/jobs`. The `search`
|
|
115
|
+
* string is normalized to start with `search ` when it isn't already a
|
|
116
|
+
* generating command. Returns the parsed response (job SID or, for a
|
|
117
|
+
* oneshot search, the results).
|
|
118
|
+
*/
|
|
119
|
+
query(spl: string, options?: SplunkSearchOptions): Promise<any>;
|
|
120
|
+
/** Lists the configured source types via `GET /services/data/sourcetypes`. */
|
|
121
|
+
labels(): Promise<any>;
|
|
122
|
+
/** Lists the configured indexes via `GET /services/data/indexes`. */
|
|
123
|
+
streams(): Promise<any>;
|
|
124
|
+
}
|
|
125
|
+
export default SplunkStore;
|