ts-prorm-orm 1.1.0 → 1.2.0
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 +83 -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 +711 -0
- package/dist/index.js +19 -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,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Rate Limiter
|
|
3
|
+
*
|
|
4
|
+
* A comprehensive rate limiting system that:
|
|
5
|
+
* - Limits queries per user/role to prevent enumeration attacks
|
|
6
|
+
* - Per-IP rate limiting
|
|
7
|
+
* - Per-endpoint rate limiting
|
|
8
|
+
* - Configurable thresholds with block/throttle actions
|
|
9
|
+
* - OWASP Top 10, NIS2, DORA compliance
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* // Initialize rate limiter
|
|
13
|
+
* const limiter = RateLimiter.create(prorm, {
|
|
14
|
+
* user: { perMinute: 100, perHour: 1000 },
|
|
15
|
+
* ip: { perMinute: 50, perHour: 500 },
|
|
16
|
+
* endpoint: { perMinute: 200, perHour: 2000 },
|
|
17
|
+
* onLimitExceeded: (info) => console.log('Rate limited:', info),
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Check if request is allowed
|
|
21
|
+
* const result = limiter.checkLimit(userId, ip, endpoint);
|
|
22
|
+
* if (!result.allowed) {
|
|
23
|
+
* return res.status(429).json({ error: 'Rate limit exceeded' });
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* // Get statistics
|
|
27
|
+
* const stats = limiter.getStats();
|
|
28
|
+
*
|
|
29
|
+
* // Reset counters
|
|
30
|
+
* limiter.reset();
|
|
31
|
+
*
|
|
32
|
+
* Decorator usage:
|
|
33
|
+
* @RateLimit({ perMinute: 100, perHour: 1000 })
|
|
34
|
+
* class User extends Model { ... }
|
|
35
|
+
*/
|
|
36
|
+
import { Prorm } from '../prorm';
|
|
37
|
+
import type { ModelStatic } from '../types';
|
|
38
|
+
export type RateLimitAction = 'block' | 'throttle';
|
|
39
|
+
export interface RateLimitConfig {
|
|
40
|
+
/** Requests allowed per minute */
|
|
41
|
+
perMinute: number;
|
|
42
|
+
/** Requests allowed per hour */
|
|
43
|
+
perHour: number;
|
|
44
|
+
/** Requests allowed per day (optional) */
|
|
45
|
+
perDay?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface RateLimiterOptions {
|
|
48
|
+
/** Rate limit for authenticated users */
|
|
49
|
+
user?: RateLimitConfig;
|
|
50
|
+
/** Rate limit for anonymous users (by IP) */
|
|
51
|
+
anonymous?: RateLimitConfig;
|
|
52
|
+
/** Rate limit per IP address */
|
|
53
|
+
ip?: RateLimitConfig;
|
|
54
|
+
/** Rate limit per endpoint */
|
|
55
|
+
endpoint?: RateLimitConfig;
|
|
56
|
+
/** Rate limit per role */
|
|
57
|
+
role?: Record<string, RateLimitConfig>;
|
|
58
|
+
/** Action when limit is exceeded: 'block' (return error) or 'throttle' (add delay) */
|
|
59
|
+
action?: RateLimitAction;
|
|
60
|
+
/** Throttle delay in ms when action is 'throttle' */
|
|
61
|
+
throttleDelay?: number;
|
|
62
|
+
/** Enable logging of rate limit events */
|
|
63
|
+
logEvents?: boolean;
|
|
64
|
+
/** Callback when rate limit is exceeded */
|
|
65
|
+
onLimitExceeded?: (info: RateLimitInfo) => void;
|
|
66
|
+
/** Store rate limit data in database (requires table) */
|
|
67
|
+
storeInDb?: boolean;
|
|
68
|
+
/** Model name for storing rate limit data */
|
|
69
|
+
rateLimitModelName?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface RateLimitInfo {
|
|
72
|
+
identifier: string;
|
|
73
|
+
identifierType: 'user' | 'ip' | 'endpoint' | 'role';
|
|
74
|
+
limit: number;
|
|
75
|
+
current: number;
|
|
76
|
+
window: 'minute' | 'hour' | 'day';
|
|
77
|
+
action: RateLimitAction;
|
|
78
|
+
timestamp: Date;
|
|
79
|
+
}
|
|
80
|
+
export interface RateLimitResult {
|
|
81
|
+
allowed: boolean;
|
|
82
|
+
remaining: number;
|
|
83
|
+
resetIn: number;
|
|
84
|
+
action?: RateLimitAction;
|
|
85
|
+
throttleDelay?: number;
|
|
86
|
+
}
|
|
87
|
+
export interface RateLimitStats {
|
|
88
|
+
totalRequests: number;
|
|
89
|
+
blockedRequests: number;
|
|
90
|
+
throttledRequests: number;
|
|
91
|
+
uniqueUsers: number;
|
|
92
|
+
uniqueIPs: number;
|
|
93
|
+
uniqueEndpoints: number;
|
|
94
|
+
byUser: Record<string, {
|
|
95
|
+
minute: number;
|
|
96
|
+
hour: number;
|
|
97
|
+
day: number;
|
|
98
|
+
}>;
|
|
99
|
+
byIP: Record<string, {
|
|
100
|
+
minute: number;
|
|
101
|
+
hour: number;
|
|
102
|
+
day: number;
|
|
103
|
+
}>;
|
|
104
|
+
byEndpoint: Record<string, {
|
|
105
|
+
minute: number;
|
|
106
|
+
hour: number;
|
|
107
|
+
day: number;
|
|
108
|
+
}>;
|
|
109
|
+
}
|
|
110
|
+
export declare class RateLimiter {
|
|
111
|
+
private prorm;
|
|
112
|
+
private options;
|
|
113
|
+
private store;
|
|
114
|
+
private dbModel;
|
|
115
|
+
private totalRequests;
|
|
116
|
+
private blockedRequests;
|
|
117
|
+
private throttledRequests;
|
|
118
|
+
constructor(prorm: Prorm, options?: RateLimiterOptions);
|
|
119
|
+
/**
|
|
120
|
+
* Factory method to create a RateLimiter instance
|
|
121
|
+
*/
|
|
122
|
+
static create(prorm: Prorm, options?: RateLimiterOptions): RateLimiter;
|
|
123
|
+
/**
|
|
124
|
+
* Initialize database storage (optional)
|
|
125
|
+
*/
|
|
126
|
+
initDatabase(): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Check if a request is within rate limits
|
|
129
|
+
*/
|
|
130
|
+
checkLimit(userId: string | null, ip: string, endpoint: string, role?: string): RateLimitResult;
|
|
131
|
+
/**
|
|
132
|
+
* Block an identifier until `now + blockDurationMs` (defaults to the
|
|
133
|
+
* standard 1 minute block window when no specific breached window was
|
|
134
|
+
* given, e.g. for callers outside checkLimit).
|
|
135
|
+
*/
|
|
136
|
+
private blockEntry;
|
|
137
|
+
/**
|
|
138
|
+
* Update or create an entry, independently incrementing the minute,
|
|
139
|
+
* hour, and day counters for the current request. Each window is reset
|
|
140
|
+
* to 0 when its bucket boundary rolls over.
|
|
141
|
+
*/
|
|
142
|
+
private updateEntry;
|
|
143
|
+
/**
|
|
144
|
+
* Get rate limit statistics
|
|
145
|
+
*/
|
|
146
|
+
getStats(): RateLimitStats;
|
|
147
|
+
/**
|
|
148
|
+
* Reset all rate limit counters
|
|
149
|
+
*/
|
|
150
|
+
reset(): void;
|
|
151
|
+
/**
|
|
152
|
+
* Reset specific user/IP
|
|
153
|
+
*/
|
|
154
|
+
resetIdentifier(identifier: string, type: string, endpoint?: string): void;
|
|
155
|
+
/**
|
|
156
|
+
* Get current window reset time
|
|
157
|
+
*/
|
|
158
|
+
getResetTime(): number;
|
|
159
|
+
}
|
|
160
|
+
export interface RateLimitDecoratorOptions {
|
|
161
|
+
/** Requests allowed per minute */
|
|
162
|
+
perMinute?: number;
|
|
163
|
+
/** Requests allowed per hour */
|
|
164
|
+
perHour?: number;
|
|
165
|
+
/** Requests allowed per day */
|
|
166
|
+
perDay?: number;
|
|
167
|
+
/** Custom endpoint pattern */
|
|
168
|
+
endpoint?: string;
|
|
169
|
+
/** Apply to specific roles */
|
|
170
|
+
roles?: string[];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Rate limit decorator for models
|
|
174
|
+
*
|
|
175
|
+
* Usage:
|
|
176
|
+
* @RateLimit({ perMinute: 100, perHour: 1000 })
|
|
177
|
+
* class User extends Model { ... }
|
|
178
|
+
*/
|
|
179
|
+
export declare function RateLimit(options: RateLimitDecoratorOptions): <T extends ModelStatic<any>>(target: T) => T;
|
|
180
|
+
/**
|
|
181
|
+
* Get rate limit options from a model
|
|
182
|
+
*/
|
|
183
|
+
export declare function getRateLimitOptions(model: ModelStatic<any>): RateLimitDecoratorOptions | null;
|
|
184
|
+
/**
|
|
185
|
+
* Get the global rate limiter instance
|
|
186
|
+
*/
|
|
187
|
+
export declare function getGlobalLimiter(): RateLimiter | null;
|
|
188
|
+
/**
|
|
189
|
+
* Initialize the global rate limiter
|
|
190
|
+
*/
|
|
191
|
+
export declare function initRateLimiter(prorm: Prorm, options?: RateLimiterOptions): RateLimiter;
|
|
192
|
+
/**
|
|
193
|
+
* Quick rate limit check using global limiter
|
|
194
|
+
*/
|
|
195
|
+
export declare function checkRateLimit(userId: string | null, ip: string, endpoint: string, role?: string): RateLimitResult;
|
|
196
|
+
/**
|
|
197
|
+
* Check if rate limiting satisfies a compliance framework
|
|
198
|
+
*/
|
|
199
|
+
export declare function satisfiesCompliance(framework: string): boolean;
|
|
200
|
+
/**
|
|
201
|
+
* Get recommended rate limits for a framework
|
|
202
|
+
*/
|
|
203
|
+
export declare function getRecommendedLimits(framework: string): RateLimiterOptions;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RightToErasure
|
|
3
|
+
*
|
|
4
|
+
* Handles Data Subject Access Requests (DSARs) for the right to be forgotten.
|
|
5
|
+
* Supports hard deletion or field-level anonymization (GDPR-preferred),
|
|
6
|
+
* and cascades through associated models.
|
|
7
|
+
*
|
|
8
|
+
* Covers ~57 compliance frameworks including:
|
|
9
|
+
* GDPR Art 17, CCPA, CPRA, LGPD, APPI, PIPA (South Korea),
|
|
10
|
+
* PDPA (Thailand, Singapore, Philippines, Malaysia), PoPI, DPDP India,
|
|
11
|
+
* and all US state privacy laws with deletion rights.
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* // Hard delete all records for a user:
|
|
15
|
+
* const result = await RightToErasure.erase(User, { where: { id: userId } });
|
|
16
|
+
*
|
|
17
|
+
* // Anonymize instead of delete (preserves referential integrity):
|
|
18
|
+
* const result = await RightToErasure.erase(User, { where: { id: userId } }, {
|
|
19
|
+
* mode: 'anonymize',
|
|
20
|
+
* piiFields: ['email', 'name', 'phoneNumber', 'address'],
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // Cascade to associated models:
|
|
24
|
+
* const result = await RightToErasure.erase(User, { where: { id: userId } }, {
|
|
25
|
+
* mode: 'anonymize',
|
|
26
|
+
* cascade: [
|
|
27
|
+
* { model: Order, foreignKey: 'userId', piiFields: ['shippingAddress'] },
|
|
28
|
+
* { model: Payment, foreignKey: 'userId', piiFields: ['cardLastFour'] },
|
|
29
|
+
* ],
|
|
30
|
+
* });
|
|
31
|
+
*/
|
|
32
|
+
export type ErasureMode = 'delete' | 'anonymize';
|
|
33
|
+
export interface CascadeTarget {
|
|
34
|
+
/** The associated model to erase from */
|
|
35
|
+
model: any;
|
|
36
|
+
/** The foreign key column linking to the erased subject */
|
|
37
|
+
foreignKey: string;
|
|
38
|
+
/** PII fields to anonymize (only for mode: 'anonymize') */
|
|
39
|
+
piiFields?: string[];
|
|
40
|
+
/** Sub-cascades for this model's own associations */
|
|
41
|
+
cascade?: CascadeTarget[];
|
|
42
|
+
}
|
|
43
|
+
export interface ErasureOptions {
|
|
44
|
+
/**
|
|
45
|
+
* 'delete' — hard delete rows (force: true bypasses paranoid)
|
|
46
|
+
* 'anonymize' — null out PII fields, keep the row for referential integrity
|
|
47
|
+
* Default: 'delete'
|
|
48
|
+
*/
|
|
49
|
+
mode?: ErasureMode;
|
|
50
|
+
/**
|
|
51
|
+
* Fields to anonymize in 'anonymize' mode.
|
|
52
|
+
* Uses DataClassifier PII fields if not specified.
|
|
53
|
+
*/
|
|
54
|
+
piiFields?: string[];
|
|
55
|
+
/**
|
|
56
|
+
* Replacement value for anonymized string fields.
|
|
57
|
+
* Default: '[REDACTED]'
|
|
58
|
+
*/
|
|
59
|
+
redactedValue?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Whether to use force: true for deletion (bypasses soft delete).
|
|
62
|
+
* Default: true
|
|
63
|
+
*/
|
|
64
|
+
force?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Cascade erasure to associated models.
|
|
67
|
+
*/
|
|
68
|
+
cascade?: CascadeTarget[];
|
|
69
|
+
}
|
|
70
|
+
export interface ErasureResult {
|
|
71
|
+
model: string;
|
|
72
|
+
mode: ErasureMode;
|
|
73
|
+
affected: number;
|
|
74
|
+
cascadeResults?: ErasureResult[];
|
|
75
|
+
timestamp: Date;
|
|
76
|
+
requestId: string;
|
|
77
|
+
}
|
|
78
|
+
export declare class RightToErasure {
|
|
79
|
+
/**
|
|
80
|
+
* Erase personal data for one or more data subjects.
|
|
81
|
+
*
|
|
82
|
+
* @param model - The primary model to erase from
|
|
83
|
+
* @param query - Where clause identifying the data subject(s)
|
|
84
|
+
* @param options - Erasure mode, fields, and cascade configuration
|
|
85
|
+
* @returns An ErasureResult with a unique request ID for DSAR audit purposes
|
|
86
|
+
*/
|
|
87
|
+
static erase(model: any, query: {
|
|
88
|
+
where: Record<string, any>;
|
|
89
|
+
}, options?: ErasureOptions): Promise<ErasureResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Check if records exist for a given subject (for verification before erasure).
|
|
92
|
+
*/
|
|
93
|
+
static exists(model: any, query: {
|
|
94
|
+
where: Record<string, any>;
|
|
95
|
+
}): Promise<boolean>;
|
|
96
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RowLevelSecurity
|
|
3
|
+
*
|
|
4
|
+
* Applies dynamic scoping to filter all queries by the current user's context
|
|
5
|
+
* (e.g. tenant_id, organization_id, user_id). Uses AsyncLocalStorage to
|
|
6
|
+
* store the request context so it's automatically available without passing
|
|
7
|
+
* it through every function call.
|
|
8
|
+
*
|
|
9
|
+
* Covers ~64 compliance frameworks including:
|
|
10
|
+
* GDPR, HIPAA, PCI DSS, SOX, NIST SP 800-53, NIS2, DORA, Zero Trust,
|
|
11
|
+
* FedRAMP, CJIS, APRA CPS 234, TISAX, and more.
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* // At app startup, set up the context storage:
|
|
15
|
+
* RowLevelSecurity.init();
|
|
16
|
+
*
|
|
17
|
+
* // In your request middleware, set the current user context:
|
|
18
|
+
* RowLevelSecurity.setContext({ tenantId: 'acme-corp', userId: 'user-123', role: 'admin' });
|
|
19
|
+
*
|
|
20
|
+
* // Apply RLS to a model (all queries are automatically filtered):
|
|
21
|
+
* RowLevelSecurity.apply(Document, (ctx) => ({
|
|
22
|
+
* where: { tenantId: ctx.tenantId }
|
|
23
|
+
* }));
|
|
24
|
+
*
|
|
25
|
+
* // Express middleware example:
|
|
26
|
+
* app.use((req, res, next) => {
|
|
27
|
+
* RowLevelSecurity.setContext({
|
|
28
|
+
* tenantId: req.user.tenantId,
|
|
29
|
+
* userId: req.user.id,
|
|
30
|
+
* role: req.user.role,
|
|
31
|
+
* });
|
|
32
|
+
* next();
|
|
33
|
+
* });
|
|
34
|
+
*/
|
|
35
|
+
export interface SecurityContext {
|
|
36
|
+
/** The tenant or organization identifier */
|
|
37
|
+
tenantId?: string;
|
|
38
|
+
/** The user ID */
|
|
39
|
+
userId?: string;
|
|
40
|
+
/** The user's role(s) */
|
|
41
|
+
role?: string | string[];
|
|
42
|
+
/** Any additional context keys */
|
|
43
|
+
[key: string]: any;
|
|
44
|
+
}
|
|
45
|
+
export type ScopeSelector = (ctx: SecurityContext) => {
|
|
46
|
+
where?: Record<string, any>;
|
|
47
|
+
include?: any[];
|
|
48
|
+
attributes?: string[];
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Initialize the RLS subsystem.
|
|
52
|
+
* Call once at application startup.
|
|
53
|
+
*/
|
|
54
|
+
export declare function initRLS(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Get the current security context (or undefined if not set).
|
|
57
|
+
*/
|
|
58
|
+
export declare function getContext(): SecurityContext | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Run a function within a specific security context.
|
|
61
|
+
* Use this to simulate a different user for testing.
|
|
62
|
+
*/
|
|
63
|
+
export declare function runInContext<T>(ctx: SecurityContext, fn: () => T): T;
|
|
64
|
+
/**
|
|
65
|
+
* Set the current security context for the request.
|
|
66
|
+
* Call this in your authentication middleware.
|
|
67
|
+
*
|
|
68
|
+
* @param ctx - The security context for the current request
|
|
69
|
+
*/
|
|
70
|
+
export declare function setContext(ctx: SecurityContext): void;
|
|
71
|
+
/**
|
|
72
|
+
* Clear the current security context.
|
|
73
|
+
*/
|
|
74
|
+
export declare function clearContext(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Apply row-level security to a model.
|
|
77
|
+
* Registers a dynamic scope selector that is applied to ALL queries on that model.
|
|
78
|
+
*
|
|
79
|
+
* @param Model - The model to protect
|
|
80
|
+
* @param selector - A function that returns query modifiers based on the current context
|
|
81
|
+
*/
|
|
82
|
+
export declare function apply(Model: any, selector: ScopeSelector): void;
|
|
83
|
+
/**
|
|
84
|
+
* Remove RLS protection from a model.
|
|
85
|
+
*/
|
|
86
|
+
export declare function remove(Model: any): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get the filtered query options for a model given the current context.
|
|
89
|
+
* Returns empty object if no RLS is configured or no context is set.
|
|
90
|
+
*/
|
|
91
|
+
export declare function getFilteredQuery(Model: any): {
|
|
92
|
+
where?: Record<string, any>;
|
|
93
|
+
include?: any[];
|
|
94
|
+
attributes?: string[];
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Decorator to apply RLS to a model class.
|
|
98
|
+
*
|
|
99
|
+
* @RowLevelSecurity((ctx) => ({ where: { tenantId: ctx.tenantId } }))
|
|
100
|
+
* class Document extends Model { ... }
|
|
101
|
+
*/
|
|
102
|
+
export declare function RowLevelSecurity(selector: ScopeSelector): (target: any) => void;
|
|
103
|
+
/**
|
|
104
|
+
* Middleware to integrate RLS with Express/Connect.
|
|
105
|
+
* Use after your authentication middleware.
|
|
106
|
+
*
|
|
107
|
+
* app.use(authMiddleware); // sets req.user
|
|
108
|
+
* app.use(rowLevelSecurityMiddleware);
|
|
109
|
+
*/
|
|
110
|
+
export declare function rlsMiddleware(req: any, res: any, next: () => void): void;
|
|
111
|
+
/**
|
|
112
|
+
* Register beforeFind hooks on all models that have RLS configured.
|
|
113
|
+
* Call this once after all models are defined.
|
|
114
|
+
*/
|
|
115
|
+
export declare function registerHooks(prorm: any): void;
|
|
116
|
+
export declare const RLS: {
|
|
117
|
+
init: typeof initRLS;
|
|
118
|
+
apply: typeof apply;
|
|
119
|
+
remove: typeof remove;
|
|
120
|
+
setContext: typeof setContext;
|
|
121
|
+
getContext: typeof getContext;
|
|
122
|
+
clearContext: typeof clearContext;
|
|
123
|
+
runInContext: typeof runInContext;
|
|
124
|
+
getFilteredQuery: typeof getFilteredQuery;
|
|
125
|
+
registerHooks: typeof registerHooks;
|
|
126
|
+
middleware: typeof rlsMiddleware;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Row-level security class with static methods.
|
|
130
|
+
* Provides the same functionality as the RLS object but as class methods.
|
|
131
|
+
*
|
|
132
|
+
* RowLevelSecurity.init();
|
|
133
|
+
* RowLevelSecurity.apply(Document, ctx => ({ where: { tenantId: ctx.tenantId } }));
|
|
134
|
+
* RowLevelSecurity.remove(Document);
|
|
135
|
+
* RowLevelSecurity.getFilteredQuery(Document);
|
|
136
|
+
*/
|
|
137
|
+
export declare class RowLevelSecurityAPI {
|
|
138
|
+
static init(): void;
|
|
139
|
+
static apply(Model: any, selector: ScopeSelector): void;
|
|
140
|
+
static remove(Model: any): void;
|
|
141
|
+
static setContext(ctx: SecurityContext): void;
|
|
142
|
+
static getContext(): SecurityContext | undefined;
|
|
143
|
+
static clearContext(): void;
|
|
144
|
+
static runInContext<T>(ctx: SecurityContext, fn: () => T): T;
|
|
145
|
+
static getFilteredQuery(Model: any): {
|
|
146
|
+
where?: Record<string, any>;
|
|
147
|
+
include?: any[];
|
|
148
|
+
attributes?: string[];
|
|
149
|
+
};
|
|
150
|
+
static registerHooks(prorm: any): void;
|
|
151
|
+
static middleware(req: any, res: any, next: () => void): void;
|
|
152
|
+
}
|