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,378 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gremlin graph dialect — Apache TinkerPop / Amazon Neptune traversal
|
|
4
|
+
* generation for the ORM builder API.
|
|
5
|
+
*
|
|
6
|
+
* Maps the ORM model API onto Gremlin traversals: `g.V().hasLabel(...)` for
|
|
7
|
+
* finds, `addV`/`addE` for node/edge writes, `.has(field, P.gte(x))` for
|
|
8
|
+
* `where` operators, `out`/`in`/`repeat().times()` for association
|
|
9
|
+
* traversals. Values are passed as Gremlin bindings (`b0`, `b1`, ...), never
|
|
10
|
+
* interpolated. Users never hand-write Gremlin for standard operations.
|
|
11
|
+
*
|
|
12
|
+
* The `gremlin` package is loaded lazily; a pre-built client can be injected
|
|
13
|
+
* via `options.client`.
|
|
14
|
+
*
|
|
15
|
+
* Notes on genuinely-unsupported features:
|
|
16
|
+
* - TinkerPop has no portable schema DDL, so index/constraint creation
|
|
17
|
+
* compiles to a harmless no-op traversal (real schema management is
|
|
18
|
+
* backend-specific: JanusGraph management API, Neptune auto-indexing).
|
|
19
|
+
* - Interactive multi-statement transactions are not portable across
|
|
20
|
+
* Gremlin servers (Neptune in particular), so `startTransaction` throws a
|
|
21
|
+
* typed {@link GraphCapabilityError}.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.GremlinGraphDialect = void 0;
|
|
25
|
+
const index_1 = require("../../errors/index");
|
|
26
|
+
const base_graph_dialect_1 = require("../base-graph-dialect");
|
|
27
|
+
const types_1 = require("../types");
|
|
28
|
+
function gremlinStr(s) {
|
|
29
|
+
return `'${String(s).replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`;
|
|
30
|
+
}
|
|
31
|
+
class GremlinGraphDialect extends base_graph_dialect_1.BaseGraphDialect {
|
|
32
|
+
constructor(options = {}) {
|
|
33
|
+
super(options);
|
|
34
|
+
this.name = 'gremlin';
|
|
35
|
+
this.library = 'gremlin';
|
|
36
|
+
this.client = null;
|
|
37
|
+
this.dialectName = 'gremlin';
|
|
38
|
+
}
|
|
39
|
+
get defaultNodeVar() {
|
|
40
|
+
return 'it';
|
|
41
|
+
}
|
|
42
|
+
// -------------------------------------------------------------------
|
|
43
|
+
// Connection lifecycle
|
|
44
|
+
// -------------------------------------------------------------------
|
|
45
|
+
async connect() {
|
|
46
|
+
if (this._connected && this.client)
|
|
47
|
+
return;
|
|
48
|
+
try {
|
|
49
|
+
let client = this.options.client;
|
|
50
|
+
if (!client) {
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
52
|
+
const gremlin = require('gremlin');
|
|
53
|
+
const url = this.options.url || `ws://${this.options.host || 'localhost'}:${this.options.port || 8182}/gremlin`;
|
|
54
|
+
client = new gremlin.driver.Client(url, {
|
|
55
|
+
traversalSource: 'g',
|
|
56
|
+
...this.options.driverOptions,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (typeof client.open === 'function') {
|
|
60
|
+
await client.open();
|
|
61
|
+
}
|
|
62
|
+
this.client = client;
|
|
63
|
+
this._connection = client;
|
|
64
|
+
this._connected = true;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
this.client = null;
|
|
68
|
+
this._connection = null;
|
|
69
|
+
this._connected = false;
|
|
70
|
+
throw new index_1.ConnectionError('Failed to connect to Gremlin server', {
|
|
71
|
+
parent: error instanceof Error ? error : undefined,
|
|
72
|
+
database: this.options.database,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async disconnect() {
|
|
77
|
+
const client = this.client;
|
|
78
|
+
this.client = null;
|
|
79
|
+
this._connection = null;
|
|
80
|
+
this._connected = false;
|
|
81
|
+
if (client && typeof client.close === 'function') {
|
|
82
|
+
await client.close();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
requireClient() {
|
|
86
|
+
if (!this.client || !this._connected) {
|
|
87
|
+
throw new index_1.ConnectionError('GremlinGraphDialect is not connected. Call connect() first.', {
|
|
88
|
+
database: this.options.database,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return this.client;
|
|
92
|
+
}
|
|
93
|
+
async query(statement, options) {
|
|
94
|
+
const client = this.requireClient();
|
|
95
|
+
const bindings = options?.bind || {};
|
|
96
|
+
try {
|
|
97
|
+
const result = await client.submit(statement, bindings);
|
|
98
|
+
const rows = typeof result?.toArray === 'function' ? result.toArray() : result?._items || [];
|
|
99
|
+
return { rows, rowCount: rows.length, fields: [] };
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
throw new index_1.DatabaseError('Gremlin traversal failed', {
|
|
103
|
+
code: 'QUERY_ERROR',
|
|
104
|
+
parent: error instanceof Error ? error : undefined,
|
|
105
|
+
original: error instanceof Error ? error.message : String(error),
|
|
106
|
+
sql: statement,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async getDatabaseVersion() {
|
|
111
|
+
return 'unknown';
|
|
112
|
+
}
|
|
113
|
+
// -------------------------------------------------------------------
|
|
114
|
+
// Transactions — not portable across Gremlin servers.
|
|
115
|
+
// -------------------------------------------------------------------
|
|
116
|
+
async startTransaction(_options) {
|
|
117
|
+
throw new types_1.GraphCapabilityError('interactive transactions', this.name);
|
|
118
|
+
}
|
|
119
|
+
async commitTransaction(_transaction) {
|
|
120
|
+
throw new types_1.GraphCapabilityError('interactive transactions', this.name);
|
|
121
|
+
}
|
|
122
|
+
async rollbackTransaction(_transaction) {
|
|
123
|
+
throw new types_1.GraphCapabilityError('interactive transactions', this.name);
|
|
124
|
+
}
|
|
125
|
+
// -------------------------------------------------------------------
|
|
126
|
+
// Predicate rendering -> `.has(...)` step chain.
|
|
127
|
+
// -------------------------------------------------------------------
|
|
128
|
+
renderPredicate(pred, ctx) {
|
|
129
|
+
switch (pred.kind) {
|
|
130
|
+
case 'true':
|
|
131
|
+
return '';
|
|
132
|
+
case 'and':
|
|
133
|
+
return pred.items.map((p) => this.renderPredicate(p, ctx)).join('');
|
|
134
|
+
case 'or': {
|
|
135
|
+
const anon = pred.items
|
|
136
|
+
.map((p) => `__${this.renderPredicate(p, ctx)}`)
|
|
137
|
+
.filter((s) => s !== '__');
|
|
138
|
+
return anon.length ? `.or(${anon.join(', ')})` : '';
|
|
139
|
+
}
|
|
140
|
+
case 'not':
|
|
141
|
+
return `.not(__${this.renderPredicate(pred.item, ctx)})`;
|
|
142
|
+
case 'cmp':
|
|
143
|
+
return this.renderComparison(pred, ctx);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
renderComparison(pred, ctx) {
|
|
147
|
+
const field = gremlinStr(pred.field);
|
|
148
|
+
const p = (v) => ctx.params.add(v);
|
|
149
|
+
switch (pred.op) {
|
|
150
|
+
case 'eq':
|
|
151
|
+
return `.has(${field}, eq(${p(pred.value)}))`;
|
|
152
|
+
case 'ne':
|
|
153
|
+
return `.has(${field}, neq(${p(pred.value)}))`;
|
|
154
|
+
case 'gt':
|
|
155
|
+
return `.has(${field}, gt(${p(pred.value)}))`;
|
|
156
|
+
case 'gte':
|
|
157
|
+
return `.has(${field}, gte(${p(pred.value)}))`;
|
|
158
|
+
case 'lt':
|
|
159
|
+
return `.has(${field}, lt(${p(pred.value)}))`;
|
|
160
|
+
case 'lte':
|
|
161
|
+
return `.has(${field}, lte(${p(pred.value)}))`;
|
|
162
|
+
case 'in':
|
|
163
|
+
return `.has(${field}, within(${p(pred.value)}))`;
|
|
164
|
+
case 'notIn':
|
|
165
|
+
return `.has(${field}, without(${p(pred.value)}))`;
|
|
166
|
+
case 'isNull':
|
|
167
|
+
return `.hasNot(${field})`;
|
|
168
|
+
case 'isNotNull':
|
|
169
|
+
return `.has(${field})`;
|
|
170
|
+
case 'startsWith':
|
|
171
|
+
return `.has(${field}, TextP.startingWith(${p(pred.value)}))`;
|
|
172
|
+
case 'notStartsWith':
|
|
173
|
+
return `.has(${field}, TextP.notStartingWith(${p(pred.value)}))`;
|
|
174
|
+
case 'endsWith':
|
|
175
|
+
return `.has(${field}, TextP.endingWith(${p(pred.value)}))`;
|
|
176
|
+
case 'notEndsWith':
|
|
177
|
+
return `.has(${field}, TextP.notEndingWith(${p(pred.value)}))`;
|
|
178
|
+
case 'substring':
|
|
179
|
+
case 'like':
|
|
180
|
+
case 'iLike':
|
|
181
|
+
return `.has(${field}, TextP.containing(${p(this.likeText(pred.value))}))`;
|
|
182
|
+
case 'notSubstring':
|
|
183
|
+
case 'notLike':
|
|
184
|
+
case 'notILike':
|
|
185
|
+
return `.has(${field}, TextP.notContaining(${p(this.likeText(pred.value))}))`;
|
|
186
|
+
case 'regexp':
|
|
187
|
+
return `.has(${field}, TextP.regex(${p(pred.value)}))`;
|
|
188
|
+
case 'notRegexp':
|
|
189
|
+
return `.has(${field}, TextP.notRegex(${p(pred.value)}))`;
|
|
190
|
+
case 'between': {
|
|
191
|
+
const [lo, hi] = Array.isArray(pred.value) ? pred.value : [undefined, undefined];
|
|
192
|
+
return `.has(${field}, between(${p(lo)}, ${p(hi)}))`;
|
|
193
|
+
}
|
|
194
|
+
case 'notBetween': {
|
|
195
|
+
const [lo, hi] = Array.isArray(pred.value) ? pred.value : [undefined, undefined];
|
|
196
|
+
return `.has(${field}, outside(${p(lo)}, ${p(hi)}))`;
|
|
197
|
+
}
|
|
198
|
+
default:
|
|
199
|
+
return `.has(${field}, eq(${p(pred.value)}))`;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** Strip SQL LIKE wildcards for TextP.containing (which does substring match). */
|
|
203
|
+
likeText(value) {
|
|
204
|
+
return String(value).replace(/[%_]/g, '');
|
|
205
|
+
}
|
|
206
|
+
filterChain(where, params) {
|
|
207
|
+
return this.renderPredicate((0, types_1.normalizeWhere)(where), { nodeVar: this.defaultNodeVar, params });
|
|
208
|
+
}
|
|
209
|
+
// -------------------------------------------------------------------
|
|
210
|
+
// Codegen
|
|
211
|
+
// -------------------------------------------------------------------
|
|
212
|
+
compileMatch(spec) {
|
|
213
|
+
const params = new types_1.ParamBag('b');
|
|
214
|
+
let text = `g.V().hasLabel(${gremlinStr(spec.label)})`;
|
|
215
|
+
text += this.filterChain(spec.where, params);
|
|
216
|
+
if (spec.count) {
|
|
217
|
+
return { text: `${text}.count()`, params: params.params };
|
|
218
|
+
}
|
|
219
|
+
const order = spec.order || [];
|
|
220
|
+
if (order.length) {
|
|
221
|
+
text += '.order()';
|
|
222
|
+
for (const [f, d] of order) {
|
|
223
|
+
text += `.by(${gremlinStr(f)}, ${d === 'DESC' ? 'desc' : 'asc'})`;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
const offset = spec.offset !== undefined && spec.offset !== null ? Number(spec.offset) : 0;
|
|
227
|
+
const limit = spec.limit !== undefined && spec.limit !== null ? Number(spec.limit) : undefined;
|
|
228
|
+
if (offset > 0 || limit !== undefined) {
|
|
229
|
+
const to = limit !== undefined ? offset + limit : -1;
|
|
230
|
+
text += `.range(${offset}, ${to})`;
|
|
231
|
+
}
|
|
232
|
+
if (spec.include && spec.include.length) {
|
|
233
|
+
const keys = ['self', ...spec.include.map((s) => s.as || s.targetLabel || s.edgeLabel)];
|
|
234
|
+
text += `.project(${keys.map((k) => gremlinStr(k)).join(', ')})`;
|
|
235
|
+
text += '.by(elementMap())';
|
|
236
|
+
for (const step of spec.include) {
|
|
237
|
+
const stepFn = step.direction === 'in' ? 'in' : step.direction === 'both' ? 'both' : 'out';
|
|
238
|
+
let by = `__.${stepFn}(${gremlinStr(step.edgeLabel)})`;
|
|
239
|
+
if (step.targetLabel)
|
|
240
|
+
by += `.hasLabel(${gremlinStr(step.targetLabel)})`;
|
|
241
|
+
by += '.elementMap().fold()';
|
|
242
|
+
text += `.by(${by})`;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
text += '.elementMap()';
|
|
247
|
+
}
|
|
248
|
+
return { text, params: params.params };
|
|
249
|
+
}
|
|
250
|
+
compileCreateNode(label, data) {
|
|
251
|
+
const params = new types_1.ParamBag('b');
|
|
252
|
+
let text = `g.addV(${gremlinStr(label)})`;
|
|
253
|
+
for (const [k, v] of Object.entries(data)) {
|
|
254
|
+
if (v === undefined)
|
|
255
|
+
continue;
|
|
256
|
+
text += `.property(${gremlinStr(k)}, ${params.add(v)})`;
|
|
257
|
+
}
|
|
258
|
+
text += '.elementMap()';
|
|
259
|
+
return { text, params: params.params };
|
|
260
|
+
}
|
|
261
|
+
compileUpdateNodes(label, where, values) {
|
|
262
|
+
const params = new types_1.ParamBag('b');
|
|
263
|
+
let text = `g.V().hasLabel(${gremlinStr(label)})`;
|
|
264
|
+
text += this.filterChain(where, params);
|
|
265
|
+
for (const [k, v] of Object.entries(values)) {
|
|
266
|
+
if (v === undefined) {
|
|
267
|
+
text += `.sideEffect(__.properties(${gremlinStr(k)}).drop())`;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
text += `.property(single, ${gremlinStr(k)}, ${params.add(v)})`;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
text += '.elementMap()';
|
|
274
|
+
return { text, params: params.params };
|
|
275
|
+
}
|
|
276
|
+
compileDeleteNodes(label, where, _detach) {
|
|
277
|
+
const params = new types_1.ParamBag('b');
|
|
278
|
+
let text = `g.V().hasLabel(${gremlinStr(label)})`;
|
|
279
|
+
text += this.filterChain(where, params);
|
|
280
|
+
text += '.drop()';
|
|
281
|
+
return { text, params: params.params };
|
|
282
|
+
}
|
|
283
|
+
compileUpsertNode(label, data, conflictKeys) {
|
|
284
|
+
const params = new types_1.ParamBag('b');
|
|
285
|
+
const keys = conflictKeys.length ? conflictKeys : ['id'];
|
|
286
|
+
let match = `g.V().hasLabel(${gremlinStr(label)})`;
|
|
287
|
+
for (const k of keys) {
|
|
288
|
+
match += `.has(${gremlinStr(k)}, ${params.add(data[k])})`;
|
|
289
|
+
}
|
|
290
|
+
let addV = `__.addV(${gremlinStr(label)})`;
|
|
291
|
+
for (const k of keys) {
|
|
292
|
+
addV += `.property(${gremlinStr(k)}, ${params.add(data[k])})`;
|
|
293
|
+
}
|
|
294
|
+
let text = `${match}.fold().coalesce(__.unfold(), ${addV})`;
|
|
295
|
+
for (const [k, v] of Object.entries(data)) {
|
|
296
|
+
if (v === undefined || keys.includes(k))
|
|
297
|
+
continue;
|
|
298
|
+
text += `.property(single, ${gremlinStr(k)}, ${params.add(v)})`;
|
|
299
|
+
}
|
|
300
|
+
text += '.elementMap()';
|
|
301
|
+
return { text, params: params.params };
|
|
302
|
+
}
|
|
303
|
+
compileIncrement(label, fields, where, by) {
|
|
304
|
+
const params = new types_1.ParamBag('b');
|
|
305
|
+
let text = `g.V().hasLabel(${gremlinStr(label)})`;
|
|
306
|
+
text += this.filterChain(where, params);
|
|
307
|
+
const map = typeof fields === 'string'
|
|
308
|
+
? { [fields]: by }
|
|
309
|
+
: Array.isArray(fields)
|
|
310
|
+
? Object.fromEntries(fields.map((f) => [f, by]))
|
|
311
|
+
: fields;
|
|
312
|
+
for (const [f, amt] of Object.entries(map)) {
|
|
313
|
+
text += `.property(single, ${gremlinStr(f)}, __.coalesce(__.values(${gremlinStr(f)}), __.constant(0)).math('_ + ${Number(amt)}'))`;
|
|
314
|
+
}
|
|
315
|
+
text += '.elementMap()';
|
|
316
|
+
return { text, params: params.params };
|
|
317
|
+
}
|
|
318
|
+
compileCreateEdge(spec) {
|
|
319
|
+
const params = new types_1.ParamBag('b');
|
|
320
|
+
let text = `g.V().hasLabel(${gremlinStr(spec.fromLabel)})`;
|
|
321
|
+
text += this.filterChain(spec.fromWhere, params);
|
|
322
|
+
text += `.as('a').V().hasLabel(${gremlinStr(spec.toLabel)})`;
|
|
323
|
+
text += this.filterChain(spec.toWhere, params);
|
|
324
|
+
text += `.addE(${gremlinStr(spec.edgeLabel)}).from('a')`;
|
|
325
|
+
if (spec.props) {
|
|
326
|
+
for (const [k, v] of Object.entries(spec.props)) {
|
|
327
|
+
if (v === undefined)
|
|
328
|
+
continue;
|
|
329
|
+
text += `.property(${gremlinStr(k)}, ${params.add(v)})`;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
text += '.elementMap()';
|
|
333
|
+
return { text, params: params.params };
|
|
334
|
+
}
|
|
335
|
+
compileTraverse(spec) {
|
|
336
|
+
const params = new types_1.ParamBag('b');
|
|
337
|
+
let text = `g.V().hasLabel(${gremlinStr(spec.label)})`;
|
|
338
|
+
text += this.filterChain(spec.where, params);
|
|
339
|
+
const stepFn = spec.direction === 'in' ? 'in' : spec.direction === 'both' ? 'both' : 'out';
|
|
340
|
+
const edgeArg = spec.edgeLabel ? gremlinStr(spec.edgeLabel) : '';
|
|
341
|
+
const min = spec.minDepth ?? 1;
|
|
342
|
+
const max = spec.maxDepth ?? 1;
|
|
343
|
+
if (min === 1 && max === 1) {
|
|
344
|
+
text += `.${stepFn}(${edgeArg})`;
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
text += `.repeat(__.${stepFn}(${edgeArg})).times(${max})`;
|
|
348
|
+
if (min <= 1)
|
|
349
|
+
text += '.emit()';
|
|
350
|
+
}
|
|
351
|
+
if (spec.targetLabel)
|
|
352
|
+
text += `.hasLabel(${gremlinStr(spec.targetLabel)})`;
|
|
353
|
+
text += this.filterChain(spec.targetWhere, params);
|
|
354
|
+
text += '.dedup()';
|
|
355
|
+
if (spec.limit !== undefined)
|
|
356
|
+
text += `.limit(${Number(spec.limit)})`;
|
|
357
|
+
text += '.elementMap()';
|
|
358
|
+
return { text, params: params.params };
|
|
359
|
+
}
|
|
360
|
+
// TinkerPop has no portable schema DDL — compile to a harmless no-op.
|
|
361
|
+
compileCreateConstraint(_label, _fields, _kind, _name) {
|
|
362
|
+
return { text: 'g.inject(true)', params: {} };
|
|
363
|
+
}
|
|
364
|
+
compileDropConstraint(_label, _name) {
|
|
365
|
+
return { text: 'g.inject(true)', params: {} };
|
|
366
|
+
}
|
|
367
|
+
compileCreateIndex(_label, _fields, _name) {
|
|
368
|
+
return { text: 'g.inject(true)', params: {} };
|
|
369
|
+
}
|
|
370
|
+
compileDropIndex(_label, _name) {
|
|
371
|
+
return { text: 'g.inject(true)', params: {} };
|
|
372
|
+
}
|
|
373
|
+
compileShowLabels() {
|
|
374
|
+
return { text: 'g.V().label().dedup()', params: {} };
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
exports.GremlinGraphDialect = GremlinGraphDialect;
|
|
378
|
+
exports.default = GremlinGraphDialect;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph / object-database dialects for the ORM.
|
|
3
|
+
*
|
|
4
|
+
* Unlike the NoSQL stores (src/nosql/**), which each expose their engine's
|
|
5
|
+
* own native API surface, these graph dialects implement the same SQL-shaped
|
|
6
|
+
* `Dialect` contract used by the SQL dialects — so the ORM's `Model` builder
|
|
7
|
+
* API (create/find/update/destroy, `where` operators, associations,
|
|
8
|
+
* `include`) drives graph databases directly, generating Cypher / Gremlin /
|
|
9
|
+
* DQL under the hood. Users never hand-write graph queries for standard
|
|
10
|
+
* operations.
|
|
11
|
+
*
|
|
12
|
+
* - {@link Neo4jGraphDialect} -> Cypher (MATCH/CREATE/MERGE/SET/DELETE)
|
|
13
|
+
* - {@link GremlinGraphDialect} -> Apache TinkerPop / Amazon Neptune Gremlin
|
|
14
|
+
* - {@link DgraphGraphDialect} -> Dgraph DQL + JSON mutations
|
|
15
|
+
*
|
|
16
|
+
* Associations map to graph edges (`hasMany`/`hasOne` -> outbound edge,
|
|
17
|
+
* `belongsTo` -> inbound edge), and `include`/traversal becomes a graph walk.
|
|
18
|
+
* Genuinely relational-only features (partitions, materialized views, RLS,
|
|
19
|
+
* stored procedures, foreign-data wrappers, arbitrary SQL joins) throw a
|
|
20
|
+
* typed {@link GraphCapabilityError}.
|
|
21
|
+
*/
|
|
22
|
+
import { Neo4jGraphDialect } from './neo4j';
|
|
23
|
+
import { GremlinGraphDialect } from './gremlin';
|
|
24
|
+
import { DgraphGraphDialect } from './dgraph';
|
|
25
|
+
export { BaseGraphDialect } from './base-graph-dialect';
|
|
26
|
+
export type { WhereRenderContext, EdgeCreateSpec, NodeConstraintKind, } from './base-graph-dialect';
|
|
27
|
+
export { Neo4jGraphDialect } from './neo4j';
|
|
28
|
+
export { GremlinGraphDialect } from './gremlin';
|
|
29
|
+
export { DgraphGraphDialect } from './dgraph';
|
|
30
|
+
export { GraphCapabilityError, ParamBag, normalizeWhere, deriveAssociationEdge, defaultEdgeLabel, safeIdent, } from './types';
|
|
31
|
+
export type { GraphConnectionOptions, GraphStatement, GraphPredicate, CanonOp, GraphAssociationType, GraphAssociationSpec, GraphPropertyDefinition, NodeModelDefinition, EdgeModelDefinition, GraphTraversalDirection, GraphTraversalStep, GraphTraversalSpec, NodeMatchSpec, } from './types';
|
|
32
|
+
/** The graph dialects keyed by the name they should register under. */
|
|
33
|
+
export declare const GRAPH_DIALECTS: {
|
|
34
|
+
readonly neo4j: typeof Neo4jGraphDialect;
|
|
35
|
+
readonly gremlin: typeof GremlinGraphDialect;
|
|
36
|
+
readonly neptune: typeof GremlinGraphDialect;
|
|
37
|
+
readonly dgraph: typeof DgraphGraphDialect;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Minimal shape of the ORM's dialect registry (from
|
|
41
|
+
* `src/dialects/dialect.ts` — `DialectRegistry`). Declared locally so this
|
|
42
|
+
* module doesn't import/modify the shared registry; the caller passes the
|
|
43
|
+
* real `DialectRegistry` in.
|
|
44
|
+
*/
|
|
45
|
+
export interface DialectRegistryLike {
|
|
46
|
+
register(name: string, factory: new (options: any) => any): void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Register all graph dialects into the ORM's `DialectRegistry`.
|
|
50
|
+
*
|
|
51
|
+
* Wiring (one line, added by whoever owns the registry/bootstrap — NOT done
|
|
52
|
+
* here to avoid editing shared files):
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* import { DialectRegistry } from './dialects/dialect';
|
|
56
|
+
* import { registerGraphDialects } from './graph';
|
|
57
|
+
* registerGraphDialects(DialectRegistry);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function registerGraphDialects(registry: DialectRegistryLike): void;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Graph / object-database dialects for the ORM.
|
|
4
|
+
*
|
|
5
|
+
* Unlike the NoSQL stores (src/nosql/**), which each expose their engine's
|
|
6
|
+
* own native API surface, these graph dialects implement the same SQL-shaped
|
|
7
|
+
* `Dialect` contract used by the SQL dialects — so the ORM's `Model` builder
|
|
8
|
+
* API (create/find/update/destroy, `where` operators, associations,
|
|
9
|
+
* `include`) drives graph databases directly, generating Cypher / Gremlin /
|
|
10
|
+
* DQL under the hood. Users never hand-write graph queries for standard
|
|
11
|
+
* operations.
|
|
12
|
+
*
|
|
13
|
+
* - {@link Neo4jGraphDialect} -> Cypher (MATCH/CREATE/MERGE/SET/DELETE)
|
|
14
|
+
* - {@link GremlinGraphDialect} -> Apache TinkerPop / Amazon Neptune Gremlin
|
|
15
|
+
* - {@link DgraphGraphDialect} -> Dgraph DQL + JSON mutations
|
|
16
|
+
*
|
|
17
|
+
* Associations map to graph edges (`hasMany`/`hasOne` -> outbound edge,
|
|
18
|
+
* `belongsTo` -> inbound edge), and `include`/traversal becomes a graph walk.
|
|
19
|
+
* Genuinely relational-only features (partitions, materialized views, RLS,
|
|
20
|
+
* stored procedures, foreign-data wrappers, arbitrary SQL joins) throw a
|
|
21
|
+
* typed {@link GraphCapabilityError}.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.GRAPH_DIALECTS = exports.safeIdent = exports.defaultEdgeLabel = exports.deriveAssociationEdge = exports.normalizeWhere = exports.ParamBag = exports.GraphCapabilityError = exports.DgraphGraphDialect = exports.GremlinGraphDialect = exports.Neo4jGraphDialect = exports.BaseGraphDialect = void 0;
|
|
25
|
+
exports.registerGraphDialects = registerGraphDialects;
|
|
26
|
+
const neo4j_1 = require("./neo4j");
|
|
27
|
+
const gremlin_1 = require("./gremlin");
|
|
28
|
+
const dgraph_1 = require("./dgraph");
|
|
29
|
+
var base_graph_dialect_1 = require("./base-graph-dialect");
|
|
30
|
+
Object.defineProperty(exports, "BaseGraphDialect", { enumerable: true, get: function () { return base_graph_dialect_1.BaseGraphDialect; } });
|
|
31
|
+
var neo4j_2 = require("./neo4j");
|
|
32
|
+
Object.defineProperty(exports, "Neo4jGraphDialect", { enumerable: true, get: function () { return neo4j_2.Neo4jGraphDialect; } });
|
|
33
|
+
var gremlin_2 = require("./gremlin");
|
|
34
|
+
Object.defineProperty(exports, "GremlinGraphDialect", { enumerable: true, get: function () { return gremlin_2.GremlinGraphDialect; } });
|
|
35
|
+
var dgraph_2 = require("./dgraph");
|
|
36
|
+
Object.defineProperty(exports, "DgraphGraphDialect", { enumerable: true, get: function () { return dgraph_2.DgraphGraphDialect; } });
|
|
37
|
+
var types_1 = require("./types");
|
|
38
|
+
Object.defineProperty(exports, "GraphCapabilityError", { enumerable: true, get: function () { return types_1.GraphCapabilityError; } });
|
|
39
|
+
Object.defineProperty(exports, "ParamBag", { enumerable: true, get: function () { return types_1.ParamBag; } });
|
|
40
|
+
Object.defineProperty(exports, "normalizeWhere", { enumerable: true, get: function () { return types_1.normalizeWhere; } });
|
|
41
|
+
Object.defineProperty(exports, "deriveAssociationEdge", { enumerable: true, get: function () { return types_1.deriveAssociationEdge; } });
|
|
42
|
+
Object.defineProperty(exports, "defaultEdgeLabel", { enumerable: true, get: function () { return types_1.defaultEdgeLabel; } });
|
|
43
|
+
Object.defineProperty(exports, "safeIdent", { enumerable: true, get: function () { return types_1.safeIdent; } });
|
|
44
|
+
/** The graph dialects keyed by the name they should register under. */
|
|
45
|
+
exports.GRAPH_DIALECTS = {
|
|
46
|
+
neo4j: neo4j_1.Neo4jGraphDialect,
|
|
47
|
+
gremlin: gremlin_1.GremlinGraphDialect,
|
|
48
|
+
neptune: gremlin_1.GremlinGraphDialect, // Amazon Neptune speaks Gremlin
|
|
49
|
+
dgraph: dgraph_1.DgraphGraphDialect,
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Register all graph dialects into the ORM's `DialectRegistry`.
|
|
53
|
+
*
|
|
54
|
+
* Wiring (one line, added by whoever owns the registry/bootstrap — NOT done
|
|
55
|
+
* here to avoid editing shared files):
|
|
56
|
+
*
|
|
57
|
+
* ```ts
|
|
58
|
+
* import { DialectRegistry } from './dialects/dialect';
|
|
59
|
+
* import { registerGraphDialects } from './graph';
|
|
60
|
+
* registerGraphDialects(DialectRegistry);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
function registerGraphDialects(registry) {
|
|
64
|
+
for (const [name, factory] of Object.entries(exports.GRAPH_DIALECTS)) {
|
|
65
|
+
registry.register(name, factory);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neo4j graph dialect — Cypher generation for the ORM builder API.
|
|
3
|
+
*
|
|
4
|
+
* Maps the ORM model API onto Cypher: node labels for tables, `MATCH`/
|
|
5
|
+
* `CREATE`/`MERGE`/`SET`/`DELETE` for CRUD, relationships for associations,
|
|
6
|
+
* and variable-length patterns for traversals. Everything is parameterized
|
|
7
|
+
* (`$p0`, `$props`, ...). Users never hand-write Cypher for standard
|
|
8
|
+
* operations.
|
|
9
|
+
*
|
|
10
|
+
* The `neo4j-driver` package is loaded lazily so importing this module never
|
|
11
|
+
* forces the optional dependency; a pre-built driver can be injected via
|
|
12
|
+
* `options.client` for tests/connection reuse.
|
|
13
|
+
*/
|
|
14
|
+
import { Transaction } from '../../types';
|
|
15
|
+
import type { QueryOptions, QueryResult, TransactionOptions } from '../../types';
|
|
16
|
+
import { BaseGraphDialect, type EdgeCreateSpec, type NodeConstraintKind, type WhereRenderContext } from '../base-graph-dialect';
|
|
17
|
+
import { type GraphConnectionOptions, type GraphPredicate, type GraphStatement, type GraphTraversalSpec, type NodeMatchSpec } from '../types';
|
|
18
|
+
export declare class Neo4jGraphDialect extends BaseGraphDialect {
|
|
19
|
+
readonly name = "neo4j";
|
|
20
|
+
readonly library = "neo4j-driver";
|
|
21
|
+
private driver;
|
|
22
|
+
private readonly txns;
|
|
23
|
+
constructor(options?: GraphConnectionOptions);
|
|
24
|
+
protected get defaultNodeVar(): string;
|
|
25
|
+
connect(): Promise<void>;
|
|
26
|
+
disconnect(): Promise<void>;
|
|
27
|
+
private requireDriver;
|
|
28
|
+
query(statement: string, options?: QueryOptions): Promise<QueryResult>;
|
|
29
|
+
getDatabaseVersion(): Promise<string>;
|
|
30
|
+
startTransaction(options?: TransactionOptions): Promise<Transaction>;
|
|
31
|
+
commitTransaction(transaction: Transaction): Promise<void>;
|
|
32
|
+
rollbackTransaction(transaction: Transaction): Promise<void>;
|
|
33
|
+
renderPredicate(pred: GraphPredicate, ctx: WhereRenderContext): string;
|
|
34
|
+
private renderComparison;
|
|
35
|
+
private where;
|
|
36
|
+
compileMatch(spec: NodeMatchSpec): GraphStatement;
|
|
37
|
+
compileCreateNode(label: string, data: Record<string, unknown>): GraphStatement;
|
|
38
|
+
compileUpdateNodes(label: string, where: import('../../types').WhereOptions | undefined, values: Record<string, unknown>): GraphStatement;
|
|
39
|
+
compileDeleteNodes(label: string, where: import('../../types').WhereOptions | undefined, detach: boolean): GraphStatement;
|
|
40
|
+
compileUpsertNode(label: string, data: Record<string, unknown>, conflictKeys: string[]): GraphStatement;
|
|
41
|
+
compileIncrement(label: string, fields: string | string[] | Record<string, number>, where: import('../../types').WhereOptions | undefined, by: number): GraphStatement;
|
|
42
|
+
compileCreateEdge(spec: EdgeCreateSpec): GraphStatement;
|
|
43
|
+
compileTraverse(spec: GraphTraversalSpec): GraphStatement;
|
|
44
|
+
compileCreateConstraint(label: string, fields: string[], kind: NodeConstraintKind, name?: string): GraphStatement;
|
|
45
|
+
compileDropConstraint(_label: string, name: string): GraphStatement;
|
|
46
|
+
compileCreateIndex(label: string, fields: string[], name?: string): GraphStatement;
|
|
47
|
+
compileDropIndex(_label: string, name: string): GraphStatement;
|
|
48
|
+
compileShowLabels(): GraphStatement;
|
|
49
|
+
}
|
|
50
|
+
export default Neo4jGraphDialect;
|