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
package/dist/models/model.js
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.ModelValidator = exports.ModelInstance = exports.Model = void 0;
|
|
41
41
|
exports.createModel = createModel;
|
|
42
|
+
const eager_load_1 = require("./eager-load");
|
|
42
43
|
const operators_1 = require("./operators");
|
|
43
44
|
const scopes_1 = require("./scopes");
|
|
44
45
|
const associations_1 = require("./associations");
|
|
@@ -233,112 +234,25 @@ function resolveDuplicateColumns(includes, parentModel, parentAlias) {
|
|
|
233
234
|
};
|
|
234
235
|
}
|
|
235
236
|
/**
|
|
236
|
-
* Process nested includes and attach associated records to parent instances
|
|
237
|
-
*
|
|
237
|
+
* Process nested includes and attach associated records to parent instances.
|
|
238
|
+
*
|
|
239
|
+
* Delegates to the shared eager-loader in `./eager-load`. This function used to
|
|
240
|
+
* carry its own implementation, which handled `belongsTo` exactly like `hasMany`
|
|
241
|
+
* (querying the target table for a foreign key that actually lives on the
|
|
242
|
+
* parent) and skipped `belongsToMany` with a bare `continue`. Models defined via
|
|
243
|
+
* `prorm.define()` went through a separate, differently-buggy copy in prorm.ts;
|
|
244
|
+
* both now share one implementation.
|
|
238
245
|
*/
|
|
239
246
|
async function processNestedIncludes(instances, includes, prorm, parentModel) {
|
|
240
247
|
if (!instances.length || !includes.length) {
|
|
241
248
|
return;
|
|
242
249
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
if (!association) {
|
|
250
|
-
// Try to find by model name
|
|
251
|
-
for (const [, assoc] of Object.entries(parentModel.associations || {})) {
|
|
252
|
-
const target = assoc.target;
|
|
253
|
-
if (target === model || target.name === model.name) {
|
|
254
|
-
association = assoc;
|
|
255
|
-
break;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
if (!association) {
|
|
260
|
-
throw new Error(`Invalid include: '${as}' is not an association of ${parentModel.name}`);
|
|
261
|
-
}
|
|
262
|
-
// Get primary key values from parent instances
|
|
263
|
-
const pkField = getPrimaryKeyField(parentModel);
|
|
264
|
-
const parentIds = instances
|
|
265
|
-
.map((instance) => instance.getDataValue(pkField))
|
|
266
|
-
.filter((id) => id !== undefined && id !== null);
|
|
267
|
-
if (!parentIds.length) {
|
|
268
|
-
continue;
|
|
269
|
-
}
|
|
270
|
-
// Build where clause based on association type
|
|
271
|
-
let whereClause = {};
|
|
272
|
-
let foreignKey = '';
|
|
273
|
-
if (association.type === 'belongsTo') {
|
|
274
|
-
// For belongsTo, the foreign key is on the parent
|
|
275
|
-
foreignKey = association.foreignKey;
|
|
276
|
-
whereClause = { [foreignKey]: { $in: parentIds } };
|
|
277
|
-
}
|
|
278
|
-
else if (association.type === 'hasMany' || association.type === 'hasOne') {
|
|
279
|
-
// For hasMany/hasOne, the foreign key is on the target model
|
|
280
|
-
foreignKey = association.foreignKey;
|
|
281
|
-
whereClause = { [foreignKey]: { $in: parentIds } };
|
|
282
|
-
}
|
|
283
|
-
else if (association.type === 'belongsToMany') {
|
|
284
|
-
// For belongsToMany, we need to go through the junction table
|
|
285
|
-
continue;
|
|
286
|
-
}
|
|
287
|
-
// Apply additional where conditions from include
|
|
288
|
-
if (include.where) {
|
|
289
|
-
whereClause = { ...whereClause, ...include.where };
|
|
290
|
-
}
|
|
291
|
-
// Build query options for the associated model
|
|
292
|
-
const queryOptions = {
|
|
293
|
-
where: whereClause,
|
|
294
|
-
attributes: include.attributes,
|
|
295
|
-
order: include.order,
|
|
296
|
-
limit: include.limit,
|
|
297
|
-
offset: include.offset,
|
|
298
|
-
};
|
|
299
|
-
// Fetch associated records
|
|
300
|
-
const associatedRecords = await model.findAll(queryOptions);
|
|
301
|
-
// Group associated records by foreign key value
|
|
302
|
-
const groupedRecords = new Map();
|
|
303
|
-
for (const record of associatedRecords) {
|
|
304
|
-
const fkValue = record.getDataValue(foreignKey);
|
|
305
|
-
if (!groupedRecords.has(fkValue)) {
|
|
306
|
-
groupedRecords.set(fkValue, []);
|
|
307
|
-
}
|
|
308
|
-
groupedRecords.get(fkValue).push(record);
|
|
309
|
-
}
|
|
310
|
-
// Attach associated records to parent instances
|
|
311
|
-
for (const instance of instances) {
|
|
312
|
-
const pkValue = instance.getDataValue(pkField);
|
|
313
|
-
const related = groupedRecords.get(pkValue);
|
|
314
|
-
if (related) {
|
|
315
|
-
// Set based on association type (hasMany returns array, hasOne returns single)
|
|
316
|
-
if (association.type === 'hasMany') {
|
|
317
|
-
instance.setDataValue(as, related);
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
instance.setDataValue(as, related[0] || null);
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
// Set empty value if no related records
|
|
325
|
-
if (association.type === 'hasMany') {
|
|
326
|
-
instance.setDataValue(as, []);
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
instance.setDataValue(as, null);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// Recursively process nested includes
|
|
334
|
-
if (include.include && include.include.length > 0) {
|
|
335
|
-
// Get all unique associated records
|
|
336
|
-
const allAssociated = Array.from(groupedRecords.values()).flat();
|
|
337
|
-
if (allAssociated.length > 0) {
|
|
338
|
-
await processNestedIncludes(allAssociated, include.include, prorm, model);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
250
|
+
await (0, eager_load_1.loadIncludes)({
|
|
251
|
+
// Array, not the Map iterator - the loader rescans this for every
|
|
252
|
+
// include and every nested level.
|
|
253
|
+
associations: Array.from(prorm.associations.values()),
|
|
254
|
+
models: prorm._models ?? prorm.models ?? {},
|
|
255
|
+
}, instances, parentModel, parentModel.name, includes);
|
|
342
256
|
}
|
|
343
257
|
/**
|
|
344
258
|
* Get the primary key field name for a model
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operator symbols for the ORM
|
|
3
|
+
* Provides all Prorm operators for query building
|
|
4
|
+
* This file re-exports from the main operators.ts for consistency
|
|
5
|
+
*
|
|
6
|
+
* Usage Examples:
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { Op, and, or, eq, gte } from 'orm';
|
|
9
|
+
*
|
|
10
|
+
* // Using Op directly (recommended)
|
|
11
|
+
* User.findAll({ where: { age: { [Op.gte]: 18 } } })
|
|
12
|
+
* User.findAll({ where: { name: { [Op.like]: '%john%' } } })
|
|
13
|
+
*
|
|
14
|
+
* // Using helper functions
|
|
15
|
+
* User.findAll({ where: and({ name: 'John' }, { age: gte('age', 18) }) })
|
|
16
|
+
*
|
|
17
|
+
* // Column comparison
|
|
18
|
+
* User.findAll({ where: { balance: { [Op.eq]: Op.col('credit_limit') } } })
|
|
19
|
+
*
|
|
20
|
+
* // JSON column queries
|
|
21
|
+
* User.findAll({ where: { settings: Op.json({ theme: 'dark' }) } })
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export { and, or, not, eq, ne, gt, gte, lt, lte, like, notLike, inOp as in, notIn, between, notBetween, isNull, isNotNull, where, operatorToWhereKey, isOperator, iLike, notILike, regexp, notRegexp, iRegexp, notIRegexp, contains, overlap, cast, Cast, asc, desc, random, isOrderExpression, } from '../operators';
|
|
25
|
+
export type { OperatorSymbol, WhereConditionOptions, OpType, OrderExpression, FnExpression, CastExpression, ExtractExpression, ConvExpression, } from '../operators';
|
|
26
|
+
import { Op } from '../operators';
|
|
27
|
+
export { Op };
|
|
28
|
+
export { Op as default };
|
|
29
|
+
export type Operator = symbol;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope management for the ORM
|
|
3
|
+
* Provides defaultScope, named scopes, and scoped model access
|
|
4
|
+
*/
|
|
5
|
+
import { ModelStatic, Model, ScopeOptions, FindOptions } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Scope manager for model scoping
|
|
8
|
+
*/
|
|
9
|
+
export declare class ScopeManager {
|
|
10
|
+
private scopes;
|
|
11
|
+
private defaultScope;
|
|
12
|
+
private model;
|
|
13
|
+
private _currentScope;
|
|
14
|
+
constructor(model: ModelStatic<Model>);
|
|
15
|
+
/**
|
|
16
|
+
* Add a named scope
|
|
17
|
+
*/
|
|
18
|
+
addScope(name: string, options: ScopeOptions): void;
|
|
19
|
+
/**
|
|
20
|
+
* Set the default scope
|
|
21
|
+
*/
|
|
22
|
+
setDefaultScope(options: ScopeOptions): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get a scope by name
|
|
25
|
+
*/
|
|
26
|
+
getScope(name: string): ScopeOptions | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a scope exists
|
|
29
|
+
*/
|
|
30
|
+
hasScope(name: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Remove a scope by name
|
|
33
|
+
*/
|
|
34
|
+
removeScope(name: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Clear all named scopes
|
|
37
|
+
*/
|
|
38
|
+
clearScopes(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get the count of defined scopes
|
|
41
|
+
*/
|
|
42
|
+
getScopeCount(): number;
|
|
43
|
+
/**
|
|
44
|
+
* Get all defined scopes
|
|
45
|
+
*/
|
|
46
|
+
getAllScopes(): Map<string, ScopeOptions>;
|
|
47
|
+
/**
|
|
48
|
+
* Get the default scope
|
|
49
|
+
*/
|
|
50
|
+
getDefaultScope(): ScopeOptions | null;
|
|
51
|
+
/**
|
|
52
|
+
* Apply a scope to options
|
|
53
|
+
*/
|
|
54
|
+
applyScope(scopeName: string, options?: FindOptions): FindOptions;
|
|
55
|
+
/**
|
|
56
|
+
* Get the current active scope name
|
|
57
|
+
*/
|
|
58
|
+
getCurrentScope(): string | null;
|
|
59
|
+
/**
|
|
60
|
+
* Clear the current scope
|
|
61
|
+
*/
|
|
62
|
+
clearScope(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Merge scope options with query options
|
|
65
|
+
*/
|
|
66
|
+
mergeScopeOptions(options: FindOptions, scope: ScopeOptions): FindOptions;
|
|
67
|
+
/**
|
|
68
|
+
* Merge where conditions
|
|
69
|
+
*/
|
|
70
|
+
private mergeWhere;
|
|
71
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Type Utilities for Model Definitions
|
|
3
|
+
*
|
|
4
|
+
* This module provides TypeScript type utilities:
|
|
5
|
+
* - InferAttributes<T>: Extracts attribute types from a Model
|
|
6
|
+
* - InferCreationAttributes<T>: Extracts creation attributes (with optional ID, etc.)
|
|
7
|
+
* - CreationOptional<T>: Marks an attribute as optional during creation
|
|
8
|
+
* - NonAttribute<T>: Excludes non-database fields (methods, getters)
|
|
9
|
+
* - ForeignKey<T, TModel>: Branded type for foreign key relationships
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { Model, InferAttributes, InferCreationAttributes, CreationOptional } from 'orm';
|
|
14
|
+
*
|
|
15
|
+
* export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
|
|
16
|
+
* declare id: CreationOptional<number>;
|
|
17
|
+
* declare name: string;
|
|
18
|
+
* declare email: string;
|
|
19
|
+
*
|
|
20
|
+
* // Non-database property
|
|
21
|
+
* declare getFullName(): NonAttribute<string>;
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import type { IndexOptions } from '../dialects/dialect';
|
|
26
|
+
/**
|
|
27
|
+
* Marks an attribute as optional when creating a model instance.
|
|
28
|
+
* Used for auto-incrementing IDs, default values, etc.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* declare id: CreationOptional<number>;
|
|
32
|
+
* declare createdAt: CreationOptional<Date>;
|
|
33
|
+
*/
|
|
34
|
+
export type CreationOptional<T> = T | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Excludes a property from being treated as a database attribute.
|
|
37
|
+
* Use for instance methods, getters, setters, and non-persisted properties.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* declare fullName: NonAttribute<string>;
|
|
41
|
+
* declare getFullName(): NonAttribute<string>;
|
|
42
|
+
*/
|
|
43
|
+
export type NonAttribute<T> = T;
|
|
44
|
+
/**
|
|
45
|
+
* Branded type for foreign key relationships.
|
|
46
|
+
* Provides type safety when defining associations.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* declare userId: ForeignKey<User['id']>;
|
|
50
|
+
*/
|
|
51
|
+
export interface ForeignKey<T> {
|
|
52
|
+
__brand: 'ForeignKey';
|
|
53
|
+
value: T;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* PartialBy - Constructs a type with all properties of T except those in K set to optional.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* type UserCreationAttributes = PartialBy<UserAttributes, 'id'>;
|
|
60
|
+
* // { id?: number, name: string, email: string }
|
|
61
|
+
*/
|
|
62
|
+
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
63
|
+
/**
|
|
64
|
+
* RequiredBy - Constructs a type with all properties of T having the opposite optionality of K.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* type RequiredUser = RequiredBy<UserAttributes, 'name'>;
|
|
68
|
+
* // { id: number, name: string, email?: string }
|
|
69
|
+
*/
|
|
70
|
+
export type RequiredBy<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
|
|
71
|
+
/**
|
|
72
|
+
* InferAttributes - Extracts attribute types from a Model
|
|
73
|
+
*
|
|
74
|
+
* Use this type to extract the attribute types when defining a Model class.
|
|
75
|
+
* This type should be used as the first type parameter to Model.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
|
|
79
|
+
* declare id: CreationOptional<number>;
|
|
80
|
+
* declare name: string;
|
|
81
|
+
* }
|
|
82
|
+
*/
|
|
83
|
+
export type InferAttributes<T> = {
|
|
84
|
+
[K in keyof T]: T[K] extends NonAttribute<any> ? never : T[K];
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* InferCreationAttributes - Extracts creation attribute types from a Model
|
|
88
|
+
*
|
|
89
|
+
* Use this type to extract the attribute types that can be used when creating
|
|
90
|
+
* a model instance. By default, all attributes are optional since creation
|
|
91
|
+
* may only require a subset.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
|
|
95
|
+
* declare id: CreationOptional<number>;
|
|
96
|
+
* declare name: string;
|
|
97
|
+
* }
|
|
98
|
+
*/
|
|
99
|
+
export type InferCreationAttributes<T> = {
|
|
100
|
+
[K in keyof T]: T[K] extends NonAttribute<any> ? never : T[K] extends CreationOptional<infer U> ? U | undefined : T[K];
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Model static type with all required properties
|
|
104
|
+
*/
|
|
105
|
+
export interface ModelStatic<T = any> {
|
|
106
|
+
/** Model name */
|
|
107
|
+
name: string;
|
|
108
|
+
/** Table name */
|
|
109
|
+
tableName?: string;
|
|
110
|
+
/** Schema (if applicable) */
|
|
111
|
+
schema?: string;
|
|
112
|
+
/** Primary key attribute name */
|
|
113
|
+
primaryKeyAttribute?: string;
|
|
114
|
+
/** Unique attributes */
|
|
115
|
+
uniqueKeys?: Record<string, string[]>;
|
|
116
|
+
/** Attributes definition */
|
|
117
|
+
attributes: Record<string, any>;
|
|
118
|
+
/** Associations */
|
|
119
|
+
associations: Record<string, any>;
|
|
120
|
+
/** Options */
|
|
121
|
+
options: ModelOptions;
|
|
122
|
+
/** Get the table name */
|
|
123
|
+
getTableName(): string;
|
|
124
|
+
/** Get the attribute names */
|
|
125
|
+
getAttributes(): string[];
|
|
126
|
+
/** Get the primary key attribute */
|
|
127
|
+
getPrimaryKeyAttribute(): string | undefined;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Model options type
|
|
131
|
+
*/
|
|
132
|
+
export interface ModelOptions {
|
|
133
|
+
/** Table name */
|
|
134
|
+
tableName?: string;
|
|
135
|
+
/** Schema name */
|
|
136
|
+
schema?: string;
|
|
137
|
+
/** Schema delimiter */
|
|
138
|
+
schemaDelimiter?: string;
|
|
139
|
+
/** Engine (for MySQL) */
|
|
140
|
+
engine?: string;
|
|
141
|
+
/** Model name */
|
|
142
|
+
modelName?: string;
|
|
143
|
+
/** Enable hooks */
|
|
144
|
+
hooks?: boolean;
|
|
145
|
+
/** Override default timestamp columns */
|
|
146
|
+
underscored?: boolean;
|
|
147
|
+
/** Use pluralized table name */
|
|
148
|
+
freezeTableName?: boolean;
|
|
149
|
+
/** Indexes */
|
|
150
|
+
indexes?: IndexOptions[];
|
|
151
|
+
/** Comment */
|
|
152
|
+
comment?: string;
|
|
153
|
+
/** Default collation (MySQL) */
|
|
154
|
+
collate?: string;
|
|
155
|
+
/** Validation */
|
|
156
|
+
validate?: Record<string, any>;
|
|
157
|
+
/** Timestamps */
|
|
158
|
+
timestamps?: boolean;
|
|
159
|
+
/** CreatedAt column name */
|
|
160
|
+
createdAt?: string | false;
|
|
161
|
+
/** UpdatedAt column name */
|
|
162
|
+
updatedAt?: string | false;
|
|
163
|
+
/** DeletedAt column name (paranoid) */
|
|
164
|
+
deletedAt?: string | false;
|
|
165
|
+
/** Primary key option */
|
|
166
|
+
primaryKey?: boolean;
|
|
167
|
+
/** Column names */
|
|
168
|
+
columnNames?: Record<string, string>;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Type for belongsTo association target
|
|
172
|
+
*/
|
|
173
|
+
export type BelongsToManyTarget<T> = T;
|
|
174
|
+
/**
|
|
175
|
+
* Type for foreign key attribute
|
|
176
|
+
*/
|
|
177
|
+
export type ForeignKeyAttribute<T extends number | string = number> = T;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { NoSqlStore } from '../store';
|
|
2
|
+
/** A single Aerospike host descriptor (`{ addr, port }`), matching the driver's config shape. */
|
|
3
|
+
export interface AerospikeHost {
|
|
4
|
+
addr: string;
|
|
5
|
+
port?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A key may be given as a bare string/number (resolved against the store's
|
|
9
|
+
* default `namespace`/`set`), or as an explicit `(namespace, set, key)` tuple
|
|
10
|
+
* that overrides either of those per call.
|
|
11
|
+
*/
|
|
12
|
+
export type AerospikeKeyInput = string | number | {
|
|
13
|
+
namespace?: string;
|
|
14
|
+
set?: string;
|
|
15
|
+
key: string | number;
|
|
16
|
+
};
|
|
17
|
+
/** The `(namespace, set, key)` tuple used to address a record, as built by `makeKey()`. */
|
|
18
|
+
export interface AerospikeKeyTuple {
|
|
19
|
+
ns: string;
|
|
20
|
+
set: string;
|
|
21
|
+
key: string | number;
|
|
22
|
+
}
|
|
23
|
+
/** Optional per-record write metadata (TTL, generation) forwarded to `put()`. */
|
|
24
|
+
export interface AerospikeMeta {
|
|
25
|
+
/** Time-to-live in seconds. */
|
|
26
|
+
ttl?: number;
|
|
27
|
+
/** Expected record generation, for optimistic-concurrency writes. */
|
|
28
|
+
gen?: number;
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Minimal structural type for the pieces of an `aerospike` client this store
|
|
33
|
+
* uses. Kept local (rather than importing from `aerospike`) so this module
|
|
34
|
+
* type-checks without the optional driver installed.
|
|
35
|
+
*/
|
|
36
|
+
export interface AerospikeClientLike {
|
|
37
|
+
put(key: unknown, bins: Record<string, unknown>, meta?: unknown): Promise<unknown>;
|
|
38
|
+
get(key: unknown): Promise<{
|
|
39
|
+
bins: Record<string, unknown>;
|
|
40
|
+
}>;
|
|
41
|
+
remove(key: unknown): Promise<unknown>;
|
|
42
|
+
exists(key: unknown): Promise<boolean>;
|
|
43
|
+
operate(key: unknown, ops: unknown[]): Promise<unknown>;
|
|
44
|
+
truncate?(namespace: string, set: string | null, beforeNanos: number): Promise<unknown>;
|
|
45
|
+
close(release?: boolean): void;
|
|
46
|
+
}
|
|
47
|
+
/** Connection options for `AerospikeStore`. */
|
|
48
|
+
export interface AerospikeStoreOptions {
|
|
49
|
+
/** One or more Aerospike hosts, e.g. `[{ addr: '127.0.0.1', port: 3000 }]`. */
|
|
50
|
+
hosts?: AerospikeHost[];
|
|
51
|
+
/** Default namespace applied to keys that don't specify one. */
|
|
52
|
+
namespace?: string;
|
|
53
|
+
/** Default set applied to keys that don't specify one. Defaults to `''`. */
|
|
54
|
+
set?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Escape hatch for any other `aerospike` config field (policies, auth,
|
|
57
|
+
* TLS, ...). Merged into the config passed to `Aerospike.connect()`.
|
|
58
|
+
*/
|
|
59
|
+
config?: Record<string, unknown>;
|
|
60
|
+
/**
|
|
61
|
+
* A pre-built `aerospike` client (or a compatible mock). When provided,
|
|
62
|
+
* `connect()` uses it directly and skips `require('aerospike')` entirely —
|
|
63
|
+
* this is how tests inject a mock without the real driver installed.
|
|
64
|
+
*/
|
|
65
|
+
client?: AerospikeClientLike;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `AerospikeStore` wraps an `aerospike` client and exposes Aerospike's record
|
|
69
|
+
* surface: `put`/`get`/`remove`/`exists` for single-record operations,
|
|
70
|
+
* `operate` for atomic multi-op transactions on a record, and `truncate` for
|
|
71
|
+
* clearing a set. Records are addressed by a `(namespace, set, key)` tuple,
|
|
72
|
+
* built by `makeKey()`.
|
|
73
|
+
*/
|
|
74
|
+
export declare class AerospikeStore implements NoSqlStore {
|
|
75
|
+
readonly name = "aerospike";
|
|
76
|
+
readonly library = "aerospike";
|
|
77
|
+
private readonly options;
|
|
78
|
+
private readonly namespace;
|
|
79
|
+
private readonly set;
|
|
80
|
+
private client;
|
|
81
|
+
private connected;
|
|
82
|
+
/**
|
|
83
|
+
* The required `aerospike` module, kept so `makeKey()` can build a real
|
|
84
|
+
* `Aerospike.Key`. Stays `null` when a client is injected (tests), in which
|
|
85
|
+
* case `makeKey()` returns a plain `{ ns, set, key }` tuple instead.
|
|
86
|
+
*/
|
|
87
|
+
private aerospike;
|
|
88
|
+
constructor(options?: AerospikeStoreOptions);
|
|
89
|
+
connect(): Promise<void>;
|
|
90
|
+
disconnect(): Promise<void>;
|
|
91
|
+
isConnected(): boolean;
|
|
92
|
+
/** Returns the underlying `aerospike` client for anything not wrapped here. */
|
|
93
|
+
getClient(): AerospikeClientLike;
|
|
94
|
+
private requireClient;
|
|
95
|
+
private wrapError;
|
|
96
|
+
/**
|
|
97
|
+
* Builds the key object the driver expects from a `(namespace, set, key)`
|
|
98
|
+
* tuple, filling in the store's default namespace/set for anything the
|
|
99
|
+
* caller omits. When the real driver is loaded this returns a
|
|
100
|
+
* `new Aerospike.Key(namespace, set, key)`; when a mock client is injected
|
|
101
|
+
* (no module) it returns a plain `{ ns, set, key }` tuple.
|
|
102
|
+
*/
|
|
103
|
+
makeKey(input: AerospikeKeyInput): AerospikeKeyTuple | unknown;
|
|
104
|
+
/** Writes (puts) a record's bins. Optionally accepts write metadata (TTL/generation). */
|
|
105
|
+
put(key: AerospikeKeyInput, bins: Record<string, unknown>, meta?: AerospikeMeta): Promise<unknown>;
|
|
106
|
+
/** Reads a record by key, returning its bins (`record.bins`), or throws if it doesn't exist. */
|
|
107
|
+
get(key: AerospikeKeyInput): Promise<Record<string, unknown>>;
|
|
108
|
+
/** Removes a record by key. */
|
|
109
|
+
remove(key: AerospikeKeyInput): Promise<unknown>;
|
|
110
|
+
/** Returns whether a record exists for the given key. */
|
|
111
|
+
exists(key: AerospikeKeyInput): Promise<boolean>;
|
|
112
|
+
/**
|
|
113
|
+
* Runs an ordered list of operations atomically against a single record
|
|
114
|
+
* (Aerospike's `operate` — increment, append, read-back, etc). `ops` is
|
|
115
|
+
* passed straight through to the driver; build them with the driver's own
|
|
116
|
+
* operation helpers.
|
|
117
|
+
*/
|
|
118
|
+
operate(key: AerospikeKeyInput, ops: unknown[]): Promise<unknown>;
|
|
119
|
+
/**
|
|
120
|
+
* Truncates a set (or the store's default set), deleting every record in it.
|
|
121
|
+
* `beforeNanos` of `0` means "everything up to now". Requires a driver whose
|
|
122
|
+
* client exposes `truncate()`.
|
|
123
|
+
*/
|
|
124
|
+
truncate(set?: string): Promise<unknown>;
|
|
125
|
+
}
|
|
126
|
+
export default AerospikeStore;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AllegroGraph store implementation.
|
|
3
|
+
*
|
|
4
|
+
* AllegroGraph is a semantic-graph / RDF triplestore. Its repositories are
|
|
5
|
+
* queried over the SPARQL 1.1 Protocol via a per-repository HTTP endpoint
|
|
6
|
+
* (`/repositories/<repo>`) used for both queries and updates. 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
|
+
* AllegroGraph ships an `agraph-js` 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
|
+
* `AllegrographStoreOptions.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 `/repositories/<repo>`, returns bindings
|
|
22
|
+
* - `update(sparql)` -> POST to `/repositories/<repo>`
|
|
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 AllegroGraph base URL. */
|
|
29
|
+
export declare const DEFAULT_ALLEGROGRAPH_ENDPOINT = "http://localhost:10035";
|
|
30
|
+
/** Default repository id. */
|
|
31
|
+
export declare const DEFAULT_ALLEGROGRAPH_REPOSITORY = "repo";
|
|
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 `AllegrographStore`. */
|
|
40
|
+
export interface AllegrographStoreOptions {
|
|
41
|
+
/** Base URL of the AllegroGraph server. Defaults to `http://localhost:10035`. */
|
|
42
|
+
endpoint?: string;
|
|
43
|
+
/** Repository id. Defaults to `repo`. */
|
|
44
|
+
repository?: 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
|
+
* `AllegrographStore` wraps an AllegroGraph repository's SPARQL endpoint behind
|
|
54
|
+
* the `NoSqlStore` lifecycle.
|
|
55
|
+
*/
|
|
56
|
+
export declare class AllegrographStore implements NoSqlStore {
|
|
57
|
+
readonly name = "allegrograph";
|
|
58
|
+
readonly library = "fetch";
|
|
59
|
+
private readonly endpoint;
|
|
60
|
+
private readonly repository;
|
|
61
|
+
private readonly injectedClient?;
|
|
62
|
+
private readonly headers?;
|
|
63
|
+
private client;
|
|
64
|
+
private connected;
|
|
65
|
+
constructor(options?: AllegrographStoreOptions);
|
|
66
|
+
/** SPARQL query endpoint path for the configured repository. */
|
|
67
|
+
get queryPath(): string;
|
|
68
|
+
/** SPARQL update endpoint path for the configured repository (same endpoint). */
|
|
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
|
+
}
|