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,116 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/** A message accepted by `publish()`: raw string/Buffer or a JSON-serializable value. */
|
|
3
|
+
export type SqsMessage = string | Buffer | Record<string, unknown> | unknown[];
|
|
4
|
+
/**
|
|
5
|
+
* A loosely-typed handle to an AWS v3 `SQSClient` (or any object exposing a
|
|
6
|
+
* compatible `send(command)` method). Tests inject a mock matching this shape.
|
|
7
|
+
*/
|
|
8
|
+
export interface SqsClientLike {
|
|
9
|
+
send(command: unknown): Promise<any>;
|
|
10
|
+
destroy?(): void;
|
|
11
|
+
}
|
|
12
|
+
/** Connection options for `SqsStore`. */
|
|
13
|
+
export interface SqsStoreOptions {
|
|
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 `SQSClient` (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?: SqsClientLike;
|
|
30
|
+
}
|
|
31
|
+
/** Options for `publish()` (`SendMessage`). */
|
|
32
|
+
export interface SendMessageOptions {
|
|
33
|
+
/** Delay before the message becomes visible, in seconds. */
|
|
34
|
+
delaySeconds?: number;
|
|
35
|
+
/** FIFO group id (required for FIFO queues). */
|
|
36
|
+
messageGroupId?: string;
|
|
37
|
+
/** FIFO dedupe id. */
|
|
38
|
+
messageDeduplicationId?: string;
|
|
39
|
+
/** Message attributes, passed straight through. */
|
|
40
|
+
messageAttributes?: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
/** Result of `publish()`. */
|
|
43
|
+
export interface SendMessageResult {
|
|
44
|
+
messageId?: string;
|
|
45
|
+
sequenceNumber?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Options for `createQueue()`. */
|
|
48
|
+
export interface CreateQueueOptions {
|
|
49
|
+
/** Queue attributes (e.g. `{ FifoQueue: 'true' }`), passed straight through. */
|
|
50
|
+
attributes?: Record<string, string>;
|
|
51
|
+
/** Cost-allocation / metadata tags. */
|
|
52
|
+
tags?: Record<string, string>;
|
|
53
|
+
}
|
|
54
|
+
/** Options for `subscribe()`. */
|
|
55
|
+
export interface SqsSubscribeOptions {
|
|
56
|
+
/** Max messages per `ReceiveMessage` call (1-10). Defaults to 10. */
|
|
57
|
+
maxMessages?: number;
|
|
58
|
+
/** Long-poll wait time, in seconds (0-20). Defaults to 20. */
|
|
59
|
+
waitTimeSeconds?: number;
|
|
60
|
+
/** Visibility timeout for received messages, in seconds. */
|
|
61
|
+
visibilityTimeout?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Delete (ack) each message after the handler resolves. Defaults to true;
|
|
64
|
+
* set false to leave deletion to the handler (at-least-once redelivery).
|
|
65
|
+
*/
|
|
66
|
+
autoDelete?: boolean;
|
|
67
|
+
/** Delay between empty polls, in ms. Defaults to 0 (SQS long-polling already waits). */
|
|
68
|
+
pollIntervalMs?: number;
|
|
69
|
+
}
|
|
70
|
+
/** A handle returned by `subscribe()`; call `stop()` to end the receive loop. */
|
|
71
|
+
export interface SqsSubscription {
|
|
72
|
+
stop(): void;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* `SqsStore` wraps an AWS v3 `SQSClient` and exposes queue sending, a
|
|
76
|
+
* receive-and-ack poll loop, and queue administration.
|
|
77
|
+
*/
|
|
78
|
+
export declare class SqsStore implements NoSqlStore {
|
|
79
|
+
readonly name = "sqs";
|
|
80
|
+
readonly library = "@aws-sdk/client-sqs";
|
|
81
|
+
private readonly options;
|
|
82
|
+
private client;
|
|
83
|
+
private aws;
|
|
84
|
+
private connected;
|
|
85
|
+
/** Active subscriptions, tracked so `disconnect()` stops their receive loops. */
|
|
86
|
+
private readonly subscriptions;
|
|
87
|
+
constructor(options?: SqsStoreOptions);
|
|
88
|
+
connect(): Promise<void>;
|
|
89
|
+
private tryLoadSdk;
|
|
90
|
+
disconnect(): Promise<void>;
|
|
91
|
+
isConnected(): boolean;
|
|
92
|
+
/** Returns the underlying `SQSClient` (loosely typed) for anything not wrapped here. */
|
|
93
|
+
getClient(): SqsClientLike;
|
|
94
|
+
private requireClient;
|
|
95
|
+
private command;
|
|
96
|
+
private wrapError;
|
|
97
|
+
/**
|
|
98
|
+
* `SendMessage` — publish one `message` to the queue at `queueUrl`. The
|
|
99
|
+
* message is encoded to a string body (string as-is, Buffer → UTF-8, else
|
|
100
|
+
* JSON). Returns the message id (and FIFO sequence number, if any).
|
|
101
|
+
*/
|
|
102
|
+
publish(queueUrl: string, message: SqsMessage, options?: SendMessageOptions): Promise<SendMessageResult>;
|
|
103
|
+
/** `CreateQueue` — create a queue by name. Returns its URL. */
|
|
104
|
+
createQueue(name: string, options?: CreateQueueOptions): Promise<string | undefined>;
|
|
105
|
+
/** Alias for `createQueue()`, matching the common store surface. */
|
|
106
|
+
createTopic(name: string, options?: CreateQueueOptions): Promise<string | undefined>;
|
|
107
|
+
/**
|
|
108
|
+
* Subscribe to the queue at `queueUrl`: long-poll `ReceiveMessage` in a loop,
|
|
109
|
+
* invoke `handler` once per message, and (by default) `DeleteMessage` to ack
|
|
110
|
+
* each message after the handler resolves. Returns a subscription whose
|
|
111
|
+
* `stop()` ends the loop; the subscription is tracked so `disconnect()` stops
|
|
112
|
+
* it. The loop runs detached (not awaited); this method resolves immediately.
|
|
113
|
+
*/
|
|
114
|
+
subscribe(queueUrl: string, handler: (message: any) => void | Promise<void>, options?: SqsSubscribeOptions): SqsSubscription;
|
|
115
|
+
}
|
|
116
|
+
export default SqsStore;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stardog store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Stardog is an enterprise knowledge-graph / RDF triplestore. It speaks the
|
|
5
|
+
* SPARQL 1.1 Protocol over HTTP: a database exposes a query endpoint
|
|
6
|
+
* (`/<db>/query`) and an update endpoint (`/<db>/update`). There is no
|
|
7
|
+
* SQL-shaped surface, so it implements the minimal `NoSqlStore` marker
|
|
8
|
+
* interface (`src/nosql/store.ts`) rather than the SQL `Dialect` interface.
|
|
9
|
+
*
|
|
10
|
+
* ## Driver strategy - prefer HTTP over `fetch`
|
|
11
|
+
*
|
|
12
|
+
* Stardog publishes a `stardog` npm client, but this store prefers the plain
|
|
13
|
+
* SPARQL/HTTP protocol over the global `fetch` so it has no hard dependency
|
|
14
|
+
* (`library='fetch'`). For tests (and for callers who want their own
|
|
15
|
+
* transport) an alternative client can be injected via
|
|
16
|
+
* `StardogStoreOptions.client`; when omitted, a tiny internal client over
|
|
17
|
+
* `fetch` + `endpoint` is built at connect time.
|
|
18
|
+
*
|
|
19
|
+
* ## Surface
|
|
20
|
+
*
|
|
21
|
+
* - `query(sparql)` -> POST to `/<db>/query`, returns bindings
|
|
22
|
+
* - `update(sparql)` -> POST to `/<db>/update`
|
|
23
|
+
* - `ask(sparql)` -> POST an ASK query, returns the boolean
|
|
24
|
+
* - `add(triples)` -> `INSERT DATA { ... }` update
|
|
25
|
+
* - `drop(graph?)` -> `DROP GRAPH <g>` / `DROP ALL` update
|
|
26
|
+
*/
|
|
27
|
+
import { NoSqlStore } from '../store';
|
|
28
|
+
/** Default Stardog base URL. */
|
|
29
|
+
export declare const DEFAULT_STARDOG_ENDPOINT = "http://localhost:5820";
|
|
30
|
+
/** Default database name. */
|
|
31
|
+
export declare const DEFAULT_STARDOG_DATABASE = "db";
|
|
32
|
+
/** The subset of a SPARQL HTTP client this store needs. */
|
|
33
|
+
export interface SparqlHttpClient {
|
|
34
|
+
/** POST a SPARQL query to `path`; returns the parsed results envelope. */
|
|
35
|
+
query(path: string, sparql: string): Promise<any>;
|
|
36
|
+
/** POST a SPARQL update to `path`. */
|
|
37
|
+
update(path: string, sparql: string): Promise<any>;
|
|
38
|
+
}
|
|
39
|
+
/** Connection options for `StardogStore`. */
|
|
40
|
+
export interface StardogStoreOptions {
|
|
41
|
+
/** Base URL of the Stardog server. Defaults to `http://localhost:5820`. */
|
|
42
|
+
endpoint?: string;
|
|
43
|
+
/** Database name. Defaults to `db`. */
|
|
44
|
+
database?: string;
|
|
45
|
+
/** Optional pre-built SPARQL HTTP client (used verbatim; `endpoint` ignored). */
|
|
46
|
+
client?: SparqlHttpClient;
|
|
47
|
+
/** Extra HTTP headers sent with every internal-client request. */
|
|
48
|
+
headers?: Record<string, string>;
|
|
49
|
+
}
|
|
50
|
+
/** Build a `fetch`-backed SPARQL client for the given endpoint. */
|
|
51
|
+
export declare function createFetchClient(endpoint: string, headers?: Record<string, string>): SparqlHttpClient;
|
|
52
|
+
/**
|
|
53
|
+
* `StardogStore` wraps a Stardog database's SPARQL query/update endpoints
|
|
54
|
+
* behind the `NoSqlStore` lifecycle.
|
|
55
|
+
*/
|
|
56
|
+
export declare class StardogStore implements NoSqlStore {
|
|
57
|
+
readonly name = "stardog";
|
|
58
|
+
readonly library = "fetch";
|
|
59
|
+
private readonly endpoint;
|
|
60
|
+
private readonly database;
|
|
61
|
+
private readonly injectedClient?;
|
|
62
|
+
private readonly headers?;
|
|
63
|
+
private client;
|
|
64
|
+
private connected;
|
|
65
|
+
constructor(options?: StardogStoreOptions);
|
|
66
|
+
/** SPARQL query endpoint path for the configured database. */
|
|
67
|
+
get queryPath(): string;
|
|
68
|
+
/** SPARQL update endpoint path for the configured database. */
|
|
69
|
+
get updatePath(): string;
|
|
70
|
+
connect(): Promise<void>;
|
|
71
|
+
disconnect(): Promise<void>;
|
|
72
|
+
isConnected(): boolean;
|
|
73
|
+
/** Returns the underlying (internal or injected) SPARQL HTTP client. */
|
|
74
|
+
getClient(): SparqlHttpClient;
|
|
75
|
+
private requireClient;
|
|
76
|
+
/** Runs a SPARQL SELECT/CONSTRUCT query; returns the result bindings. */
|
|
77
|
+
query(sparql: string): Promise<any[]>;
|
|
78
|
+
/** Runs a SPARQL ASK query; returns the boolean answer. */
|
|
79
|
+
ask(sparql: string): Promise<boolean>;
|
|
80
|
+
/** Runs a SPARQL UPDATE (INSERT/DELETE/DROP/...). */
|
|
81
|
+
update(sparql: string): Promise<any>;
|
|
82
|
+
/** Inserts triples via `INSERT DATA { ... }`. Accepts a triple string or array. */
|
|
83
|
+
add(triples: string | string[], graph?: string): Promise<any>;
|
|
84
|
+
/** Drops a named graph, or all graphs when no graph is given. */
|
|
85
|
+
drop(graph?: string): Promise<any>;
|
|
86
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StarRocks store.
|
|
3
|
+
*
|
|
4
|
+
* StarRocks is a high-performance real-time analytical (MPP OLAP) database.
|
|
5
|
+
* Crucially it speaks the **MySQL wire protocol**, so it is queried with the
|
|
6
|
+
* `mysql2` driver over a normal MySQL connection/pool. Despite the MySQL
|
|
7
|
+
* wire, StarRocks is a columnar analytics engine (no OLTP transactions, no
|
|
8
|
+
* row-level UPDATE/DELETE in the usual sense on most table types), which does
|
|
9
|
+
* not fit this ORM's SQL `Dialect` abstraction cleanly, so it is modelled as
|
|
10
|
+
* a `NoSqlStore` (`src/nosql/store.ts`) exposing a direct `query`/`ingest`
|
|
11
|
+
* surface.
|
|
12
|
+
*
|
|
13
|
+
* ## Driver: `mysql2` (MySQL-wire)
|
|
14
|
+
*
|
|
15
|
+
* The `mysql2` package is an optional peer dependency, lazily `require`d
|
|
16
|
+
* inside `connect()` so importing this module never forces it to be
|
|
17
|
+
* installed. Tests inject a pre-built mock connection via
|
|
18
|
+
* `StarrocksStoreOptions.client`, which skips the `require` entirely.
|
|
19
|
+
*
|
|
20
|
+
* ## Ingestion
|
|
21
|
+
*
|
|
22
|
+
* `ingest()` here performs a batched `INSERT` over the MySQL wire, which is
|
|
23
|
+
* convenient for small/medium loads. For high-throughput loading StarRocks
|
|
24
|
+
* also offers **Stream Load** (an HTTP `PUT /api/{db}/{table}/_stream_load`
|
|
25
|
+
* endpoint). Stream Load is intentionally *not* wired here (it is a separate
|
|
26
|
+
* HTTP transport, optional); use the `mysql2`-based `ingest()` for wire-level
|
|
27
|
+
* inserts, or POST to the Stream Load endpoint yourself for bulk pipelines.
|
|
28
|
+
*/
|
|
29
|
+
import type { NoSqlStore } from '../store';
|
|
30
|
+
/**
|
|
31
|
+
* Minimal structural type for the pieces of a `mysql2/promise` connection (or
|
|
32
|
+
* pool) this store uses. Kept local so this module type-checks without the
|
|
33
|
+
* optional driver installed. `query()` resolves to `[rows, fields]`.
|
|
34
|
+
*/
|
|
35
|
+
export interface MysqlConnectionLike {
|
|
36
|
+
query(sql: string, params?: unknown[]): Promise<[any, any]>;
|
|
37
|
+
end?(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/** Connection options for `StarrocksStore` (map onto `mysql2` connection config). */
|
|
40
|
+
export interface StarrocksStoreOptions {
|
|
41
|
+
host?: string;
|
|
42
|
+
port?: number;
|
|
43
|
+
user?: string;
|
|
44
|
+
password?: string;
|
|
45
|
+
database?: string;
|
|
46
|
+
/** Escape hatch for any other `mysql2` connection option. */
|
|
47
|
+
connectionOptions?: Record<string, unknown>;
|
|
48
|
+
/**
|
|
49
|
+
* A pre-built `mysql2` connection/pool (or compatible mock). When provided,
|
|
50
|
+
* `connect()` uses it directly and skips `require('mysql2/promise')`. This
|
|
51
|
+
* is how tests inject a mock without the real driver installed.
|
|
52
|
+
*/
|
|
53
|
+
client?: MysqlConnectionLike;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* `StarrocksStore` wraps a `mysql2` connection to a StarRocks frontend and
|
|
57
|
+
* exposes `query(sql, params)` for reads/DDL and `ingest(table, rows)` for
|
|
58
|
+
* batched wire-level inserts.
|
|
59
|
+
*/
|
|
60
|
+
export declare class StarrocksStore implements NoSqlStore {
|
|
61
|
+
readonly name = "starrocks";
|
|
62
|
+
readonly library = "mysql2";
|
|
63
|
+
private readonly options;
|
|
64
|
+
private client;
|
|
65
|
+
private connected;
|
|
66
|
+
constructor(options?: StarrocksStoreOptions);
|
|
67
|
+
connect(): Promise<void>;
|
|
68
|
+
disconnect(): Promise<void>;
|
|
69
|
+
isConnected(): boolean;
|
|
70
|
+
/** Returns the underlying `mysql2` connection for anything not wrapped here. */
|
|
71
|
+
getClient(): MysqlConnectionLike;
|
|
72
|
+
private requireClient;
|
|
73
|
+
/**
|
|
74
|
+
* Execute a SQL statement over the MySQL wire with optional positional
|
|
75
|
+
* `params` and return the result rows (the first element of `mysql2`'s
|
|
76
|
+
* `[rows, fields]` tuple).
|
|
77
|
+
*/
|
|
78
|
+
query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<T[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Batch-insert `rows` into `table` via a single parameterized
|
|
81
|
+
* `INSERT INTO table (cols) VALUES (...)` over the MySQL wire. Columns are
|
|
82
|
+
* taken from the first row. Returns the driver result (`OkPacket`).
|
|
83
|
+
*
|
|
84
|
+
* For high-throughput bulk loading, use StarRocks Stream Load (HTTP) instead
|
|
85
|
+
* — see the module header.
|
|
86
|
+
*/
|
|
87
|
+
ingest(table: string, rows: Array<Record<string, unknown>>): Promise<any>;
|
|
88
|
+
}
|
|
89
|
+
export default StarrocksStore;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base interface for NoSQL stores.
|
|
3
|
+
*
|
|
4
|
+
* NoSQL engines (document stores, key-value caches, partition-key stores)
|
|
5
|
+
* do not share the SQL-shaped `Dialect` interface (no `query(sql)`, no
|
|
6
|
+
* identifier escaping, no DDL). `NoSqlStore` is intentionally minimal:
|
|
7
|
+
* connection lifecycle plus a `raw` escape hatch. Each store's real API
|
|
8
|
+
* surface (find/insert/update for Mongo, hash/list/set ops for Redis,
|
|
9
|
+
* item CRUD for DynamoDB) lives on its own class, not on this interface,
|
|
10
|
+
* because forcing them into one shared query shape would misrepresent
|
|
11
|
+
* what each engine can actually do.
|
|
12
|
+
*/
|
|
13
|
+
export interface NoSqlStore {
|
|
14
|
+
/** The name of the store (e.g. 'mongodb', 'redis', 'dynamodb') */
|
|
15
|
+
readonly name: string;
|
|
16
|
+
/** The client library being used */
|
|
17
|
+
readonly library: string;
|
|
18
|
+
connect(): Promise<void>;
|
|
19
|
+
disconnect(): Promise<void>;
|
|
20
|
+
isConnected(): boolean;
|
|
21
|
+
/** Access the underlying native client for operations not wrapped here */
|
|
22
|
+
getClient(): unknown;
|
|
23
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sumo Logic store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Sumo Logic is a cloud log-management and analytics platform. Logs are
|
|
5
|
+
* ingested by POSTing to an HTTP Source collector URL, and searched with the
|
|
6
|
+
* Search Job API (create a job, then poll for status/messages). There is no
|
|
7
|
+
* SQL-shaped query surface, no row-level UPDATE/DELETE, and no identifier
|
|
8
|
+
* escaping, so Sumo Logic does not fit the SQL `Dialect` interface
|
|
9
|
+
* (`src/dialects/dialect.ts`). This class implements the minimal
|
|
10
|
+
* `NoSqlStore` marker interface (`src/nosql/store.ts`) and exposes Sumo's
|
|
11
|
+
* ingest/search API.
|
|
12
|
+
*
|
|
13
|
+
* ## No canonical driver - HTTP over `fetch`
|
|
14
|
+
*
|
|
15
|
+
* Sumo Logic has no single canonical npm client; it is an HTTP/JSON API.
|
|
16
|
+
* This store talks to it with the global `fetch` (so `library` is
|
|
17
|
+
* `'fetch'`). For tests (and custom transports) an alternative HTTP client
|
|
18
|
+
* can be injected via `SumoLogicStoreOptions.client`.
|
|
19
|
+
*
|
|
20
|
+
* Ingest and search live on different hosts: ingest targets the per-source
|
|
21
|
+
* `collectorURL`, while search targets the regional `apiURL`. The internal
|
|
22
|
+
* client resolves absolute URLs verbatim, so `push()` posts to the full
|
|
23
|
+
* collector URL while the search/metadata methods use relative API paths.
|
|
24
|
+
*
|
|
25
|
+
* ## Endpoints wrapped
|
|
26
|
+
*
|
|
27
|
+
* - `push(lines)` -> `POST <collectorURL>` (HTTP Source ingest)
|
|
28
|
+
* - `query(q, opts?)` -> `POST /api/v1/search/jobs` (create search job)
|
|
29
|
+
* - `messages(id)` -> `GET /api/v1/search/jobs/<id>/messages`
|
|
30
|
+
* - `labels()` -> `GET /api/v1/fields` (field names)
|
|
31
|
+
* - `streams()` -> `GET /api/v1/collectors` (collectors)
|
|
32
|
+
*/
|
|
33
|
+
import { NoSqlStore } from '../store';
|
|
34
|
+
/** Default Sumo Logic API base URL. */
|
|
35
|
+
export declare const DEFAULT_SUMOLOGIC_API_URL = "https://api.sumologic.com";
|
|
36
|
+
/** Query-string parameter value(s). `undefined` values are dropped. */
|
|
37
|
+
export type QueryParams = Record<string, string | string[] | undefined>;
|
|
38
|
+
/**
|
|
39
|
+
* The subset of an HTTP client this store needs. The internal `fetch`-based
|
|
40
|
+
* client implements this; tests inject a mock with the same shape.
|
|
41
|
+
*/
|
|
42
|
+
export interface SumoLogicHttpClient {
|
|
43
|
+
/** Issue a GET and return the parsed JSON response body. */
|
|
44
|
+
get(path: string, params?: QueryParams): Promise<any>;
|
|
45
|
+
/** Issue a POST with a text body and return the parsed JSON/text response. */
|
|
46
|
+
post(path: string, body: string, contentType?: string): Promise<any>;
|
|
47
|
+
}
|
|
48
|
+
/** Connection options for `SumoLogicStore`. */
|
|
49
|
+
export interface SumoLogicStoreOptions {
|
|
50
|
+
/** Base URL for the Search Job / metadata API. Defaults to `https://api.sumologic.com`. */
|
|
51
|
+
apiURL?: string;
|
|
52
|
+
/** Full HTTP Source collector URL that `push()` ingests to. */
|
|
53
|
+
collectorURL?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Optional pre-built HTTP client. When provided it is used verbatim and
|
|
56
|
+
* `apiURL` is ignored; otherwise an internal `fetch`-based client is
|
|
57
|
+
* built against `apiURL` on `connect()`.
|
|
58
|
+
*/
|
|
59
|
+
client?: SumoLogicHttpClient;
|
|
60
|
+
/** Extra HTTP headers (e.g. basic-auth `Authorization`) sent with every request. */
|
|
61
|
+
headers?: Record<string, string>;
|
|
62
|
+
}
|
|
63
|
+
/** Options for creating a search job. */
|
|
64
|
+
export interface SumoLogicQueryOptions {
|
|
65
|
+
/** Start of the search window (ISO 8601 or epoch ms). */
|
|
66
|
+
from?: string | number;
|
|
67
|
+
/** End of the search window (ISO 8601 or epoch ms). */
|
|
68
|
+
to?: string | number;
|
|
69
|
+
/** Time zone for relative expressions (e.g. `UTC`). */
|
|
70
|
+
timeZone?: string;
|
|
71
|
+
/** Whether the query is by receipt time rather than message time. */
|
|
72
|
+
byReceiptTime?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** Build a `fetch`-backed client for the given base URL. */
|
|
75
|
+
export declare function createFetchClient(baseURL: string, headers?: Record<string, string>): SumoLogicHttpClient;
|
|
76
|
+
/**
|
|
77
|
+
* `SumoLogicStore` wraps Sumo Logic's HTTP Source ingest and its Search Job
|
|
78
|
+
* API (create job + fetch messages) plus field/collector metadata behind the
|
|
79
|
+
* `NoSqlStore` lifecycle.
|
|
80
|
+
*/
|
|
81
|
+
export declare class SumoLogicStore implements NoSqlStore {
|
|
82
|
+
readonly name = "sumologic";
|
|
83
|
+
readonly library = "fetch";
|
|
84
|
+
private readonly apiURL;
|
|
85
|
+
private readonly collectorURL?;
|
|
86
|
+
private readonly injectedClient?;
|
|
87
|
+
private readonly headers?;
|
|
88
|
+
private client;
|
|
89
|
+
private connected;
|
|
90
|
+
constructor(options?: SumoLogicStoreOptions);
|
|
91
|
+
connect(): Promise<void>;
|
|
92
|
+
disconnect(): Promise<void>;
|
|
93
|
+
isConnected(): boolean;
|
|
94
|
+
/** Returns the underlying (internal or injected) HTTP client. */
|
|
95
|
+
getClient(): SumoLogicHttpClient;
|
|
96
|
+
private requireClient;
|
|
97
|
+
private doGet;
|
|
98
|
+
/**
|
|
99
|
+
* Ingests raw log lines by POSTing them (newline-delimited) to the
|
|
100
|
+
* configured HTTP Source `collectorURL`. Accepts a single string or an
|
|
101
|
+
* array of lines (joined with newlines).
|
|
102
|
+
*/
|
|
103
|
+
push(lines: string | string[]): Promise<any>;
|
|
104
|
+
/**
|
|
105
|
+
* Creates a search job via `POST /api/v1/search/jobs`. Returns the parsed
|
|
106
|
+
* response (typically `{ id }`); use `messages(id)` to fetch results once
|
|
107
|
+
* the job completes.
|
|
108
|
+
*/
|
|
109
|
+
query(q: string, options?: SumoLogicQueryOptions): Promise<any>;
|
|
110
|
+
/** Fetches messages for a completed search job via `GET /api/v1/search/jobs/<id>/messages`. */
|
|
111
|
+
messages(jobId: string, offset?: number, limit?: number): Promise<any>;
|
|
112
|
+
/** Fetches the status of a search job via `GET /api/v1/search/jobs/<id>`. */
|
|
113
|
+
jobStatus(jobId: string): Promise<any>;
|
|
114
|
+
/** Lists the configured fields via `GET /api/v1/fields`. */
|
|
115
|
+
labels(): Promise<any>;
|
|
116
|
+
/** Lists the collectors via `GET /api/v1/collectors`. */
|
|
117
|
+
streams(): Promise<any>;
|
|
118
|
+
}
|
|
119
|
+
export default SumoLogicStore;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SurrealDB store implementation for the Prorm NoSQL layer.
|
|
3
|
+
*
|
|
4
|
+
* SurrealDB is a multi-model database with its own record/graph model and
|
|
5
|
+
* the SurrealQL query language, so it does not fit the SQL-shaped `Dialect`
|
|
6
|
+
* interface (no identifier escaping, no SQL DDL). This class implements the
|
|
7
|
+
* minimal `NoSqlStore` marker interface for connection lifecycle and
|
|
8
|
+
* otherwise exposes SurrealDB's real API surface directly: record CRUD over
|
|
9
|
+
* "things" (table or `table:id` record identifiers) plus raw SurrealQL via
|
|
10
|
+
* `query()`.
|
|
11
|
+
*
|
|
12
|
+
* Uses the `surrealdb` driver. The driver is loaded lazily inside
|
|
13
|
+
* `connect()` (via `require`) so importing this module never forces the
|
|
14
|
+
* optional `surrealdb` dependency to be installed. For testing (or to reuse
|
|
15
|
+
* an already-configured connection) a pre-built `Surreal` instance can be
|
|
16
|
+
* injected through {@link SurrealStoreOptions.client}, in which case the
|
|
17
|
+
* `require` is skipped entirely.
|
|
18
|
+
*/
|
|
19
|
+
import { NoSqlStore } from '../store';
|
|
20
|
+
import { type WhereClause, type OrderSpec } from '../rocksdb/where-match';
|
|
21
|
+
export { compileWhere, compileOrder, PushdownUnsupported } from './query-compiler';
|
|
22
|
+
export type { WhereClause, OrderSpec } from '../rocksdb/where-match';
|
|
23
|
+
/** Options for {@link SurrealStore.findAll} / {@link SurrealStore.findOne}. */
|
|
24
|
+
export interface SurrealFindOptions {
|
|
25
|
+
where?: WhereClause;
|
|
26
|
+
order?: OrderSpec;
|
|
27
|
+
limit?: number;
|
|
28
|
+
offset?: number;
|
|
29
|
+
/** SurrealQL `FETCH` targets - dereference record links/graph edges inline. */
|
|
30
|
+
fetch?: string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Connection options for `SurrealStore`.
|
|
34
|
+
*
|
|
35
|
+
* `url` is the SurrealDB endpoint (e.g. `ws://127.0.0.1:8000/rpc` or
|
|
36
|
+
* `http://127.0.0.1:8000`). `namespace`/`database` select the namespace and
|
|
37
|
+
* database to `use()` after connecting. `username`/`password` are the root
|
|
38
|
+
* (or scoped) credentials used to `signin()`. A pre-built `Surreal` client
|
|
39
|
+
* can be supplied via `client` to bypass the lazy `require('surrealdb')`.
|
|
40
|
+
*/
|
|
41
|
+
export interface SurrealStoreOptions {
|
|
42
|
+
/** SurrealDB endpoint URL, e.g. `ws://127.0.0.1:8000/rpc`. */
|
|
43
|
+
url: string;
|
|
44
|
+
/** Namespace to `use()` after connecting. */
|
|
45
|
+
namespace?: string;
|
|
46
|
+
/** Database to `use()` after connecting. */
|
|
47
|
+
database?: string;
|
|
48
|
+
/** Username for `signin()`. */
|
|
49
|
+
username?: string;
|
|
50
|
+
/** Password for `signin()`. */
|
|
51
|
+
password?: string;
|
|
52
|
+
/**
|
|
53
|
+
* A pre-built `Surreal` instance. When provided, `connect()` uses it
|
|
54
|
+
* directly (still calling `signin()`/`use()` when credentials/ns/db are
|
|
55
|
+
* configured) and skips `require('surrealdb')`. Primarily for tests and
|
|
56
|
+
* connection reuse.
|
|
57
|
+
*/
|
|
58
|
+
client?: any;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A SurrealDB "thing": either a table name (`'user'`) to operate on every
|
|
62
|
+
* record in the table, or a specific record id (`'user:jane'`).
|
|
63
|
+
*/
|
|
64
|
+
export type Thing = string;
|
|
65
|
+
/**
|
|
66
|
+
* `SurrealStore` wraps the `surrealdb` driver's `Surreal` client, exposing
|
|
67
|
+
* record CRUD (`create`/`select`/`update`/`merge`/`delete`) and raw
|
|
68
|
+
* SurrealQL (`query`) as a small promise-based API.
|
|
69
|
+
*/
|
|
70
|
+
export declare class SurrealStore implements NoSqlStore {
|
|
71
|
+
readonly name = "surrealdb";
|
|
72
|
+
readonly library = "surrealdb";
|
|
73
|
+
private readonly options;
|
|
74
|
+
private db;
|
|
75
|
+
private connected;
|
|
76
|
+
constructor(options: SurrealStoreOptions);
|
|
77
|
+
connect(): Promise<void>;
|
|
78
|
+
disconnect(): Promise<void>;
|
|
79
|
+
isConnected(): boolean;
|
|
80
|
+
/** Returns the underlying native `Surreal` client. */
|
|
81
|
+
getClient(): any;
|
|
82
|
+
private requireClient;
|
|
83
|
+
private exec;
|
|
84
|
+
/**
|
|
85
|
+
* Create a record. `thing` may be a table name (`'user'`, id auto-
|
|
86
|
+
* generated) or a specific record id (`'user:jane'`). Passthrough to the
|
|
87
|
+
* driver's `Surreal.create()`.
|
|
88
|
+
*/
|
|
89
|
+
create<T = unknown>(thing: Thing, data?: Record<string, unknown>): Promise<T>;
|
|
90
|
+
/**
|
|
91
|
+
* Select a record or all records in a table. Passthrough to the driver's
|
|
92
|
+
* `Surreal.select()`.
|
|
93
|
+
*/
|
|
94
|
+
select<T = unknown>(thing: Thing): Promise<T>;
|
|
95
|
+
/**
|
|
96
|
+
* Replace the content of a record (or every record in a table).
|
|
97
|
+
* Passthrough to the driver's `Surreal.update()`.
|
|
98
|
+
*/
|
|
99
|
+
update<T = unknown>(thing: Thing, data?: Record<string, unknown>): Promise<T>;
|
|
100
|
+
/**
|
|
101
|
+
* Merge the given data into a record (or every record in a table),
|
|
102
|
+
* leaving unspecified fields intact. Passthrough to the driver's
|
|
103
|
+
* `Surreal.merge()`.
|
|
104
|
+
*/
|
|
105
|
+
merge<T = unknown>(thing: Thing, data?: Record<string, unknown>): Promise<T>;
|
|
106
|
+
/**
|
|
107
|
+
* Delete a record (or every record in a table). Passthrough to the
|
|
108
|
+
* driver's `Surreal.delete()`.
|
|
109
|
+
*/
|
|
110
|
+
delete<T = unknown>(thing: Thing): Promise<T>;
|
|
111
|
+
/**
|
|
112
|
+
* Run a raw SurrealQL statement (or several `;`-separated statements),
|
|
113
|
+
* optionally binding `vars` as `$name` parameters. Returns the driver's
|
|
114
|
+
* result array (one entry per statement). Passthrough to the driver's
|
|
115
|
+
* `Surreal.query()`.
|
|
116
|
+
*/
|
|
117
|
+
query<T = unknown[]>(surql: string, vars?: Record<string, unknown>): Promise<T>;
|
|
118
|
+
/** Unwrap the driver's per-statement query result into a row array. */
|
|
119
|
+
private static rows;
|
|
120
|
+
/**
|
|
121
|
+
* ORM `findAll`. Compiles `where`/`order`/`limit`/`offset` to a bound
|
|
122
|
+
* SurrealQL `SELECT`; on an un-pushable operator it selects the table and
|
|
123
|
+
* filters/sorts/paginates client-side, so the result is always correct.
|
|
124
|
+
*/
|
|
125
|
+
findAll<T = Record<string, unknown>>(table: string, options?: SurrealFindOptions): Promise<T[]>;
|
|
126
|
+
/** Client-side fallback: fetch the table, then filter/sort/page in memory. */
|
|
127
|
+
private findAllClientSide;
|
|
128
|
+
/** ORM `findOne`: the first row matching `where` (respecting order). */
|
|
129
|
+
findOne<T = Record<string, unknown>>(table: string, options?: SurrealFindOptions): Promise<T | null>;
|
|
130
|
+
/** ORM `findByPk`: select a single `table:id` record, or `null`. */
|
|
131
|
+
findByPk<T = Record<string, unknown>>(table: string, id: unknown): Promise<T | null>;
|
|
132
|
+
/** ORM `count`: number of records matching `where`. */
|
|
133
|
+
count(table: string, where?: WhereClause): Promise<number>;
|
|
134
|
+
/** ORM `bulkCreate`: insert many records in one `INSERT` statement. */
|
|
135
|
+
bulkCreate<T = Record<string, unknown>>(table: string, rows: Array<Record<string, unknown>>): Promise<T[]>;
|
|
136
|
+
/**
|
|
137
|
+
* ORM `update`: merge `values` into every record matching `where` (or the
|
|
138
|
+
* whole table when `where` is omitted). Returns the updated records.
|
|
139
|
+
*/
|
|
140
|
+
updateWhere<T = Record<string, unknown>>(table: string, values: Record<string, unknown>, where?: WhereClause): Promise<T[]>;
|
|
141
|
+
/**
|
|
142
|
+
* ORM `destroy`: delete every record matching `where` (or the whole table
|
|
143
|
+
* when `where` is omitted). Returns the number of records deleted.
|
|
144
|
+
*/
|
|
145
|
+
destroy(table: string, where?: WhereClause): Promise<number>;
|
|
146
|
+
/** ORM `truncate`: delete every record in a table. */
|
|
147
|
+
truncate(table: string): Promise<number>;
|
|
148
|
+
/**
|
|
149
|
+
* Create a graph edge (association) between two records:
|
|
150
|
+
* `RELATE $from->edge->$to CONTENT $data`. This is how many-to-many /
|
|
151
|
+
* graph associations are expressed in SurrealDB, exposed through the ORM
|
|
152
|
+
* API so callers never hand-write the `RELATE` themselves.
|
|
153
|
+
*/
|
|
154
|
+
relate<T = unknown>(from: string, edge: string, to: string, data?: Record<string, unknown>): Promise<T>;
|
|
155
|
+
}
|
|
156
|
+
export default SurrealStore;
|