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,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DSARWorkflow
|
|
3
|
+
*
|
|
4
|
+
* Manages the complete lifecycle of Data Subject Access Requests (DSARs).
|
|
5
|
+
* Tracks request status from creation through fulfillment and completion.
|
|
6
|
+
* Generates data exports for data subjects under GDPR, CCPA, HIPAA, and PIPEDA.
|
|
7
|
+
*
|
|
8
|
+
* Covers ~65 compliance frameworks including:
|
|
9
|
+
* GDPR Art 15-22, CCPA, CPRA, LGPD, APPI, PIPA, PDPA, PoPI, DPDP India,
|
|
10
|
+
* HIPAA Right to Access, PIPEDA, and all major data privacy regulations.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* // Create a new access request
|
|
14
|
+
* const request = await DSARWorkflow.createRequest('user-123', 'access');
|
|
15
|
+
*
|
|
16
|
+
* // Check request status
|
|
17
|
+
* const status = await DSARWorkflow.getRequestStatus(request.id);
|
|
18
|
+
*
|
|
19
|
+
* // Fulfill the request (generate data export)
|
|
20
|
+
* const fulfilled = await DSARWorkflow.fulfillRequest(request.id);
|
|
21
|
+
*
|
|
22
|
+
* // Mark as complete
|
|
23
|
+
* await DSARWorkflow.completeRequest(request.id);
|
|
24
|
+
*
|
|
25
|
+
* // List all requests for a data subject
|
|
26
|
+
* const allRequests = await DSARWorkflow.getRequestsForDataSubject('user-123');
|
|
27
|
+
*/
|
|
28
|
+
import { ExportOptions, ExportFormat } from './data-portability';
|
|
29
|
+
import { ErasureOptions } from './right-to-erasure';
|
|
30
|
+
/**
|
|
31
|
+
* Status of a DSAR request throughout its lifecycle.
|
|
32
|
+
*/
|
|
33
|
+
export type RequestStatus = 'pending' | 'in_progress' | 'pending_fulfillment' | 'fulfilled' | 'delivered' | 'completed' | 'rejected' | 'expired';
|
|
34
|
+
/**
|
|
35
|
+
* Types of DSAR requests supported.
|
|
36
|
+
*/
|
|
37
|
+
export type RequestType = 'access' | 'rectification' | 'erasure' | 'portability' | 'restriction' | 'objection' | 'withdrawal';
|
|
38
|
+
/**
|
|
39
|
+
* Options for fulfilling a DSAR request.
|
|
40
|
+
*/
|
|
41
|
+
export interface FulfillmentOptions {
|
|
42
|
+
/** Models to include in the data export */
|
|
43
|
+
models?: Array<{
|
|
44
|
+
model: any;
|
|
45
|
+
where?: Record<string, any>;
|
|
46
|
+
}>;
|
|
47
|
+
/** Export format - json, csv, or ndjson */
|
|
48
|
+
format?: ExportFormat;
|
|
49
|
+
/** Include associated models in export */
|
|
50
|
+
include?: any[];
|
|
51
|
+
/** Maximum records per model */
|
|
52
|
+
limit?: number;
|
|
53
|
+
/** Erasure options (only for requestType: 'erasure') */
|
|
54
|
+
erasureOptions?: ErasureOptions;
|
|
55
|
+
/** Custom export options for portability requests */
|
|
56
|
+
exportOptions?: ExportOptions;
|
|
57
|
+
/** Notes for the fulfillment */
|
|
58
|
+
notes?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Complete DSAR request record.
|
|
62
|
+
*/
|
|
63
|
+
export interface DSARRequest {
|
|
64
|
+
/** Unique request identifier */
|
|
65
|
+
id: string;
|
|
66
|
+
/** ID of the data subject (user) */
|
|
67
|
+
dataSubjectId: string;
|
|
68
|
+
/** Type of request */
|
|
69
|
+
requestType: RequestType;
|
|
70
|
+
/** Current status in the workflow */
|
|
71
|
+
status: RequestStatus;
|
|
72
|
+
/** Date the request was created */
|
|
73
|
+
createdAt: Date;
|
|
74
|
+
/** Date request was last updated */
|
|
75
|
+
updatedAt: Date;
|
|
76
|
+
/** Date request was fulfilled */
|
|
77
|
+
fulfilledAt?: Date;
|
|
78
|
+
/** Date request was completed */
|
|
79
|
+
completedAt?: Date;
|
|
80
|
+
/** Date request was delivered to data subject */
|
|
81
|
+
deliveredAt?: Date;
|
|
82
|
+
/** Deadline for fulfilling the request (typically 30 days) */
|
|
83
|
+
deadline?: Date;
|
|
84
|
+
/** Export data if fulfilled */
|
|
85
|
+
exportData?: {
|
|
86
|
+
content: string;
|
|
87
|
+
format: ExportFormat;
|
|
88
|
+
recordCount: number;
|
|
89
|
+
};
|
|
90
|
+
/** Rejection reason if rejected */
|
|
91
|
+
rejectionReason?: string;
|
|
92
|
+
/** Notes from the compliance team */
|
|
93
|
+
notes?: string;
|
|
94
|
+
/** Compliance framework(s) this request is for */
|
|
95
|
+
frameworks: string[];
|
|
96
|
+
/** Whether the request was honored */
|
|
97
|
+
honored?: boolean;
|
|
98
|
+
}
|
|
99
|
+
export declare class DSARWorkflow {
|
|
100
|
+
/**
|
|
101
|
+
* Create a new DSAR request.
|
|
102
|
+
*
|
|
103
|
+
* @param dataSubjectId - The unique identifier for the data subject
|
|
104
|
+
* @param requestType - The type of DSAR request
|
|
105
|
+
* @returns The created DSAR request
|
|
106
|
+
*/
|
|
107
|
+
static createRequest(dataSubjectId: string, requestType: RequestType): DSARRequest;
|
|
108
|
+
/**
|
|
109
|
+
* Get the status of a DSAR request.
|
|
110
|
+
*
|
|
111
|
+
* @param requestId - The request ID
|
|
112
|
+
* @returns The request if found, undefined otherwise
|
|
113
|
+
*/
|
|
114
|
+
static getRequestStatus(requestId: string): DSARRequest | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* Fulfill a DSAR request by generating the data export.
|
|
117
|
+
* For 'access' and 'portability' requests, generates data export.
|
|
118
|
+
* For 'erasure' requests, performs the erasure operation.
|
|
119
|
+
*
|
|
120
|
+
* @param requestId - The request ID
|
|
121
|
+
* @param options - Fulfillment options
|
|
122
|
+
* @returns The fulfilled request
|
|
123
|
+
*/
|
|
124
|
+
static fulfillRequest(requestId: string, options?: FulfillmentOptions): Promise<DSARRequest>;
|
|
125
|
+
/**
|
|
126
|
+
* Mark a DSAR request as complete.
|
|
127
|
+
* Valid transitions: fulfilled -> delivered -> completed
|
|
128
|
+
*
|
|
129
|
+
* @param requestId - The request ID
|
|
130
|
+
* @returns The completed request
|
|
131
|
+
*/
|
|
132
|
+
static completeRequest(requestId: string): DSARRequest;
|
|
133
|
+
/**
|
|
134
|
+
* Get all requests for a specific data subject.
|
|
135
|
+
*
|
|
136
|
+
* @param dataSubjectId - The data subject ID
|
|
137
|
+
* @returns Array of DSAR requests for the data subject
|
|
138
|
+
*/
|
|
139
|
+
static getRequestsForDataSubject(dataSubjectId: string): DSARRequest[];
|
|
140
|
+
/**
|
|
141
|
+
* Get all requests of a specific status.
|
|
142
|
+
*
|
|
143
|
+
* @param status - The status to filter by
|
|
144
|
+
* @returns Array of DSAR requests with the specified status
|
|
145
|
+
*/
|
|
146
|
+
static getRequestsByStatus(status: RequestStatus): DSARRequest[];
|
|
147
|
+
/**
|
|
148
|
+
* Get all pending requests that have exceeded their deadline.
|
|
149
|
+
*
|
|
150
|
+
* @returns Array of expired DSAR requests
|
|
151
|
+
*/
|
|
152
|
+
static getExpiredRequests(): DSARRequest[];
|
|
153
|
+
/**
|
|
154
|
+
* Reject a DSAR request with a reason.
|
|
155
|
+
*
|
|
156
|
+
* @param requestId - The request ID
|
|
157
|
+
* @param reason - The rejection reason
|
|
158
|
+
* @returns The rejected request
|
|
159
|
+
*/
|
|
160
|
+
static rejectRequest(requestId: string, reason: string): DSARRequest;
|
|
161
|
+
/**
|
|
162
|
+
* Start processing a request (transition from pending to in_progress).
|
|
163
|
+
*
|
|
164
|
+
* @param requestId - The request ID
|
|
165
|
+
* @returns The request in progress
|
|
166
|
+
*/
|
|
167
|
+
static startProcessing(requestId: string): DSARRequest;
|
|
168
|
+
/**
|
|
169
|
+
* Mark a request as delivered to the data subject.
|
|
170
|
+
*
|
|
171
|
+
* @param requestId - The request ID
|
|
172
|
+
* @returns The delivered request
|
|
173
|
+
*/
|
|
174
|
+
static markDelivered(requestId: string): DSARRequest;
|
|
175
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldEncryption
|
|
3
|
+
*
|
|
4
|
+
* AES-256-GCM reversible field-level encryption for model attributes.
|
|
5
|
+
* Unlike the existing @Secure decorator (which one-way hashes passwords),
|
|
6
|
+
* this encrypts data so it can be decrypted — suitable for PII, PHI, and PCI data.
|
|
7
|
+
*
|
|
8
|
+
* Covers ~63 compliance frameworks including:
|
|
9
|
+
* GDPR, HIPAA, PCI DSS, FIPS 140-2/140-3, NIST SP 800-111, PIPL, KVKK,
|
|
10
|
+
* PDPA (multiple), SOC 2, ISO 27001, HITRUST, and more.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* FieldEncryption.configure('32-byte-hex-key-here');
|
|
14
|
+
*
|
|
15
|
+
* // Annotate fields:
|
|
16
|
+
* Encrypt('ssn')(User);
|
|
17
|
+
* Encrypt('creditCardNumber')(User);
|
|
18
|
+
*
|
|
19
|
+
* // Apply hooks (once per model):
|
|
20
|
+
* applyEncryptionHooks(User);
|
|
21
|
+
*
|
|
22
|
+
* // Values are encrypted in the DB, transparent on read:
|
|
23
|
+
* const user = await User.findByPk(1);
|
|
24
|
+
* console.log(user.ssn); // plain text — decrypted automatically
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Configure the global encryption key.
|
|
28
|
+
* Call once at app startup before any encrypted models are used.
|
|
29
|
+
*
|
|
30
|
+
* @param key - A 32-byte key as a hex string (64 hex chars) or raw Buffer.
|
|
31
|
+
*/
|
|
32
|
+
export declare function configureFieldEncryption(key: string | Buffer): void;
|
|
33
|
+
/**
|
|
34
|
+
* Encrypt a plain-text value.
|
|
35
|
+
* Returns a prefixed base64 string: "enc:v1:<iv>:<tag>:<ciphertext>"
|
|
36
|
+
*/
|
|
37
|
+
export declare function encryptValue(plain: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Decrypt a value produced by encryptValue().
|
|
40
|
+
* Returns the original plain-text string.
|
|
41
|
+
*/
|
|
42
|
+
export declare function decryptValue(ciphertext: string): string;
|
|
43
|
+
/** Checks whether a value is already in encrypted form (prefixed with `enc:v1:`), used to avoid double-encrypting. */
|
|
44
|
+
declare function isEncrypted(value: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get the list of fields marked for encryption on a model class.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getEncryptedFields(target: Function): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Mark a field for AES-256-GCM encryption.
|
|
51
|
+
* Apply as a class decorator, passing the field name(s).
|
|
52
|
+
*
|
|
53
|
+
* Encrypt('ssn')(User);
|
|
54
|
+
* Encrypt('bankAccount')(User);
|
|
55
|
+
*
|
|
56
|
+
* Then call applyEncryptionHooks(User) once to wire the hooks.
|
|
57
|
+
*/
|
|
58
|
+
export declare function Encrypt(field: string): (target: Function) => void;
|
|
59
|
+
/**
|
|
60
|
+
* Wire beforeSave and afterFind hooks onto a model to transparently
|
|
61
|
+
* encrypt on write and decrypt on read.
|
|
62
|
+
*
|
|
63
|
+
* Call once per model after it is defined:
|
|
64
|
+
* applyEncryptionHooks(User);
|
|
65
|
+
*/
|
|
66
|
+
export declare function applyEncryptionHooks(ModelClass: any): void;
|
|
67
|
+
/**
|
|
68
|
+
* Convenience class grouping the encryption API.
|
|
69
|
+
*/
|
|
70
|
+
export declare class FieldEncryption {
|
|
71
|
+
/** Configure the global AES-256-GCM key. */
|
|
72
|
+
static configure: typeof configureFieldEncryption;
|
|
73
|
+
/** Manually encrypt a value. */
|
|
74
|
+
static encrypt: typeof encryptValue;
|
|
75
|
+
/** Manually decrypt a value. */
|
|
76
|
+
static decrypt: typeof decryptValue;
|
|
77
|
+
/** Check if a value is already encrypted. */
|
|
78
|
+
static isEncrypted: typeof isEncrypted;
|
|
79
|
+
/** Wire hooks onto a model. */
|
|
80
|
+
static applyHooks: typeof applyEncryptionHooks;
|
|
81
|
+
/** Get the list of encrypted fields on a model. */
|
|
82
|
+
static getFields: typeof getEncryptedFields;
|
|
83
|
+
}
|
|
84
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ImmutableRecord
|
|
3
|
+
*
|
|
4
|
+
* Prevents UPDATE and DELETE on a model. Only CREATE and READ are allowed.
|
|
5
|
+
* Provides an `append()` method for creating new versions of immutable data,
|
|
6
|
+
* optionally with soft versioning (storing the version number).
|
|
7
|
+
*
|
|
8
|
+
* Covers ~14 compliance frameworks including:
|
|
9
|
+
* SOX, SEC 17a-4 (WORM), 21 CFR Part 11, EU Annex 11, ALCOA+,
|
|
10
|
+
* GAMP 5, ICH E6 GCP, NATO STANAG, and financial audit requirements.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* // Make a model immutable:
|
|
14
|
+
* ImmutableRecord.makeImmutable(FinancialEntry);
|
|
15
|
+
*
|
|
16
|
+
* // Now attempting to update/delete throws:
|
|
17
|
+
* await entry.update({ amount: 100 }); // throws Error
|
|
18
|
+
* await entry.destroy(); // throws Error
|
|
19
|
+
*
|
|
20
|
+
* // Instead, create a new version:
|
|
21
|
+
* const newEntry = await FinancialEntry.append({
|
|
22
|
+
* amount: 100,
|
|
23
|
+
* description: 'Q3 adjustment',
|
|
24
|
+
* }, { parentId: entry.id });
|
|
25
|
+
*
|
|
26
|
+
* // Enable soft versioning (tracks version numbers):
|
|
27
|
+
* ImmutableRecord.enableVersioning(FinancialEntry, { versionField: 'version' });
|
|
28
|
+
*/
|
|
29
|
+
export interface ImmutableOptions {
|
|
30
|
+
/** If true, DELETE attempts are silently ignored instead of throwing. Default: false (throws) */
|
|
31
|
+
silentDelete?: boolean;
|
|
32
|
+
/** If true, allows CREATE but blocks UPDATE/DELETE. Default: true */
|
|
33
|
+
allowCreate?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface VersionOptions {
|
|
36
|
+
/** The field name to store the version number. Default: 'version' */
|
|
37
|
+
versionField?: string;
|
|
38
|
+
/** The field name for the parent record ID (for audit trail). Default: 'previousId' */
|
|
39
|
+
parentField?: string;
|
|
40
|
+
/** Starting version number. Default: 1 */
|
|
41
|
+
startAt?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Mark a model as immutable — blocks UPDATE and DELETE.
|
|
45
|
+
*
|
|
46
|
+
* @param Model - The model class to protect
|
|
47
|
+
* @param options - Immutable configuration options
|
|
48
|
+
*/
|
|
49
|
+
export declare function makeImmutable(Model: any, options?: ImmutableOptions): void;
|
|
50
|
+
/**
|
|
51
|
+
* Enable soft versioning on an immutable model.
|
|
52
|
+
* Adds version and previousId fields, and auto-increments on append.
|
|
53
|
+
*
|
|
54
|
+
* @param Model - The model class
|
|
55
|
+
* @param options - Version field configuration
|
|
56
|
+
*/
|
|
57
|
+
export declare function enableVersioning(Model: any, options?: VersionOptions): void;
|
|
58
|
+
/**
|
|
59
|
+
* Check if a model is configured as immutable.
|
|
60
|
+
*/
|
|
61
|
+
export declare function isImmutable(Model: any): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if an immutable model has versioning enabled.
|
|
64
|
+
*/
|
|
65
|
+
export declare function hasVersioning(Model: any): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get the version configuration for an immutable model.
|
|
68
|
+
*/
|
|
69
|
+
export declare function getVersionConfig(Model: any): Required<VersionOptions> | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Get all immutable models registered.
|
|
72
|
+
*/
|
|
73
|
+
export declare function listImmutableModels(): Array<{
|
|
74
|
+
model: any;
|
|
75
|
+
options: ImmutableOptions;
|
|
76
|
+
}>;
|
|
77
|
+
export declare class ImmutableRecord {
|
|
78
|
+
static makeImmutable: typeof makeImmutable;
|
|
79
|
+
static enableVersioning: typeof enableVersioning;
|
|
80
|
+
static isImmutable: typeof isImmutable;
|
|
81
|
+
static hasVersioning: typeof hasVersioning;
|
|
82
|
+
static getVersionConfig: typeof getVersionConfig;
|
|
83
|
+
static listImmutableModels: typeof listImmutableModels;
|
|
84
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance Module
|
|
3
|
+
*
|
|
4
|
+
* A set of 12 reusable classes for addressing data storage requirements
|
|
5
|
+
* from 218+ security and compliance frameworks.
|
|
6
|
+
*
|
|
7
|
+
* Each class wraps existing ORM infrastructure (hooks, decorators, scopes)
|
|
8
|
+
* into simple one-liner APIs.
|
|
9
|
+
*
|
|
10
|
+
* ---
|
|
11
|
+
*
|
|
12
|
+
* Quick reference:
|
|
13
|
+
*
|
|
14
|
+
* // 1. Audit trail for all CRUD operations
|
|
15
|
+
* import { ComplianceAuditTrail } from './compliance/audit-trail';
|
|
16
|
+
* ComplianceAuditTrail.enable(prorm, UserModel, { getUserId: () => user.id });
|
|
17
|
+
*
|
|
18
|
+
* // 2. Field-level AES-256-GCM encryption
|
|
19
|
+
* import { FieldEncryption } from './compliance/field-encryption';
|
|
20
|
+
* FieldEncryption.configure('32-byte-hex-key');
|
|
21
|
+
* @Encrypt('ssn') class User extends Model {}
|
|
22
|
+
* applyEncryptionHooks(User);
|
|
23
|
+
*
|
|
24
|
+
* // 3. TLS enforcement at connection time
|
|
25
|
+
* import { TLSEnforcer } from './compliance/tls-enforcer';
|
|
26
|
+
* TLSEnforcer.enforce(prorm);
|
|
27
|
+
*
|
|
28
|
+
* // 4. Data retention / TTL policies
|
|
29
|
+
* import { DataRetentionPolicy } from './compliance/data-retention';
|
|
30
|
+
* DataRetentionPolicy.set(FinancialRecord, { maxAge: { years: 7 } });
|
|
31
|
+
* await DataRetentionPolicy.purge(FinancialRecord);
|
|
32
|
+
*
|
|
33
|
+
* // 5. Right to erasure (DSAR response)
|
|
34
|
+
* import { RightToErasure } from './compliance/right-to-erasure';
|
|
35
|
+
* await RightToErasure.erase(User, { where: { id: userId } }, { mode: 'anonymize' });
|
|
36
|
+
*
|
|
37
|
+
* // 6. Consent record storage
|
|
38
|
+
* import { ConsentRecord } from './compliance/consent-record';
|
|
39
|
+
* await ConsentRecord.initialize(prorm);
|
|
40
|
+
* await ConsentRecord.grant({ subjectId: userId, purpose: 'marketing' });
|
|
41
|
+
*
|
|
42
|
+
* // 7. Row-level security (tenant filtering)
|
|
43
|
+
* import { RowLevelSecurity } from './compliance/row-level-security';
|
|
44
|
+
* RowLevelSecurity.apply(Document, ctx => ({ where: { tenantId: ctx.tenantId } }));
|
|
45
|
+
*
|
|
46
|
+
* // 8. Data masking in query output
|
|
47
|
+
* import { DataMasker } from './compliance/data-masker';
|
|
48
|
+
* DataMasker.maskField(User, 'ssn', { pattern: 'ssn' });
|
|
49
|
+
* const masked = DataMasker.mask(user, 'admin');
|
|
50
|
+
*
|
|
51
|
+
* // 9. Immutable records (append-only, no update/delete)
|
|
52
|
+
* import { ImmutableRecord } from './compliance/immutable-record';
|
|
53
|
+
* ImmutableRecord.makeImmutable(AuditEntry);
|
|
54
|
+
*
|
|
55
|
+
* // 10. Pseudonymization / tokenization
|
|
56
|
+
* import { PseudonymizationService } from './compliance/pseudonymization';
|
|
57
|
+
* await PseudonymizationService.configure({ secretKey: '...' });
|
|
58
|
+
* const token = await PseudonymizationService.tokenize('user-123');
|
|
59
|
+
*
|
|
60
|
+
* // 11. Data portability (DSAR export)
|
|
61
|
+
* import { DataPortabilityExporter } from './compliance/data-portability';
|
|
62
|
+
* const export = await DataPortabilityExporter.export(User, { where: { id: userId } });
|
|
63
|
+
*
|
|
64
|
+
* // 12. Data classification / sensitivity tagging
|
|
65
|
+
* import { DataClassifier } from './compliance/data-classifier';
|
|
66
|
+
* @FieldClassification('email', 'PII') class User extends Model {}
|
|
67
|
+
* const piiFields = DataClassifier.getPIIFields(User);
|
|
68
|
+
*/
|
|
69
|
+
export { ComplianceAuditTrail, AuditTrailOptions } from './audit-trail';
|
|
70
|
+
export { FieldEncryption, configureFieldEncryption, encryptValue, decryptValue, Encrypt, applyEncryptionHooks, getEncryptedFields, } from './field-encryption';
|
|
71
|
+
export { TLSEnforcer, TLSEnforcerOptions, TLSMode } from './tls-enforcer';
|
|
72
|
+
export { DataRetentionPolicy, RetentionDuration, RetentionExpiryMode, RetentionPolicyOptions, } from './data-retention';
|
|
73
|
+
export { RightToErasure, ErasureMode, CascadeTarget, ErasureOptions, ErasureResult, } from './right-to-erasure';
|
|
74
|
+
export { ConsentRecord, LegalBasis, LegalBasisEnum, ConsentGrantOptions, ConsentWithdrawOptions, } from './consent-record';
|
|
75
|
+
export { ConsentVersioning, ConsentVersion, ConsentHistoryOptions, ConsentType, RecordConsentOptions, } from './consent-versioning';
|
|
76
|
+
export { RowLevelSecurityAPI as RowLevelSecurity, RLS, SecurityContext, ScopeSelector, initRLS, apply, setContext, getContext, runInContext, rlsMiddleware, registerHooks, } from './row-level-security';
|
|
77
|
+
export { DataMasker, MaskPattern, MaskPatternEnum, MaskOptions, Mask, maskField, maskValue, mask, maskMany, applyHooks as applyMaskingHooks, } from './data-masker';
|
|
78
|
+
export { ImmutableRecord, ImmutableOptions, VersionOptions, makeImmutable, enableVersioning, isImmutable, } from './immutable-record';
|
|
79
|
+
export { PseudonymizationService, PseudonymizationConfig, StorageMode, configure, tokenize, detokenize, Pseudonymize, applyHooks as applyPseudonymizationHooks, } from './pseudonymization';
|
|
80
|
+
export { DataPortabilityExporter, ExportFormat, ExportOptions, StreamExportOptions, exportData, exportStream, createDSARResponse, } from './data-portability';
|
|
81
|
+
export { DataClassifier, SensitivityLevel, DataCategory, ClassificationMetadata, Classify, FieldClassification, getClassification, getPIIFields, getPHIFields, getPCIFields, isSensitive, autoDiscover, } from './data-classifier';
|
|
82
|
+
export { Security, SecurityFramework, SecurityFrameworkType, AllFrameworks, FrameworkCategories, FrameworkRequirements, FrameworkCount, isValidFramework, getFrameworkCategory, getAllFrameworks, setupSecurity, setupAllSecurity, Table, TableSecurityOptions, Database as DatabaseSecurity, DatabaseSecurityOptions, getTableSecurity, getDatabaseSecurity, getSecurityFrameworks, hasAudit, isImmutableModel, } from './security-decorator';
|
|
83
|
+
export { SecurityMonitor, SecurityMonitorOptions, ComplianceSecurityMonitor, AlertSeverity, AlertCategory, SecurityAlert, getGlobalMonitor, initSecurityMonitor, analyzeQuerySecurity, } from './security-monitor';
|
|
84
|
+
export { BreachDetector, BreachDetectorOptions, BreachSeverity, BreachCategory, BreachAlert, getGlobalBreachDetector, initBreachDetector, } from './breach-detector';
|
|
85
|
+
export { SessionIsolation, TenantIsolation, TenantContext, TenantKey, SessionInfo, SessionIsolationOptions, TenantIsolationDecoratorOptions, SessionStore, KeyStore, sessionIsolationMiddleware, getTenantAuditMetadata, getTenantIsolationOptions, } from './session-isolation';
|
|
86
|
+
export { WORMStorage, WORMOptions, WORMTamperLog, ArchiveState, WORM, getWORMOptions, applyWORMHooks, isFrozen, isArchived, } from './worm-storage';
|
|
87
|
+
export { RateLimiter, RateLimiterOptions, RateLimitConfig, RateLimitAction, RateLimitInfo, RateLimitResult, RateLimitStats, RateLimit, getRateLimitOptions, getGlobalLimiter, initRateLimiter, checkRateLimit, satisfiesCompliance, getRecommendedLimits, } from './rate-limiter';
|
|
88
|
+
export { SensitiveDataDiscovery, SensitiveDataType, ComplianceFramework, SensitiveField, DiscoveryPattern, ScanOptions, ScanResult, registerPattern, unregisterPattern, getPatterns, generateComplianceReport, } from './sensitive-data-discovery';
|
|
89
|
+
export { CrossBorderLog, TransferRecord, RegionConfig, TransferOptions, TransferStatus, DataTypeCategory, RegionCode, getComplianceTransfers, generateTransferReport, } from './cross-border-log';
|
|
90
|
+
export { DSARWorkflow, DSARRequest, RequestStatus, RequestType, FulfillmentOptions, } from './dsar-workflow';
|
|
91
|
+
export { PrivacyImpactAssessment, AssessmentStatus, RiskSeverity, PIARecord, RiskRecord, PIACreateOptions, RiskRecordOptions, } from './privacy-impact-assessment';
|
|
92
|
+
export { BackupVerification, BackupSource, BackupConfig, BackupMetadata, VerificationResult, VerificationSchedule, VerificationHistoryEntry, } from './backup-verification';
|
|
93
|
+
export { QueryFirewall, FirewallRule, FirewallRuleType, FirewallMode, FirewallModeEnum, FirewallOptions, QueryAnalysis, QueryOperation, BlockedQuery, getRecommendedRules, FIREWALL_RULES, OWASP_SQL_INJECTION_PATTERNS, CIS_BENCHMARK_RULES, PCI_DSS_RULES, HIPAA_RULES, SOX_RULES, NIST_CSF_RULES, POSTGRESQL_RULES, MYSQL_RULES, MARIADB_RULES, MSSQL_RULES, ORACLE_RULES, SQLITE_RULES, DATABASE_RULES, DatabaseType, FirewallRules, FirewallRuleDecoratorOptions, PostgreSQLFirewall, MySQLFirewall, MariaDBFirewall, MSSQLFirewall, OracleFirewall, SQLiteFirewall, applyFirewallRulesToModel, } from './query-firewall';
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PrivacyImpactAssessment
|
|
3
|
+
*
|
|
4
|
+
* A ready-made model and service for conducting Privacy Impact Assessments (PIA)
|
|
5
|
+
* and Data Protection Impact Assessments (DPIA) for high-risk data processing.
|
|
6
|
+
*
|
|
7
|
+
* Covers compliance frameworks including:
|
|
8
|
+
* GDPR Art. 35 (DPIA), ISO 27701, UK GDPR, CCPA, PIPEDA,
|
|
9
|
+
* LGPD (Brazil), APPI (Japan), PDPA (Thailand, Singapore), and more.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* // Initialize once (creates the pia_assessments table):
|
|
13
|
+
* await PrivacyImpactAssessment.initialize(prorm);
|
|
14
|
+
*
|
|
15
|
+
* // Create a new PIA:
|
|
16
|
+
* const assessment = await PrivacyImpactAssessment.createAssessment(
|
|
17
|
+
* 'User Analytics Processing',
|
|
18
|
+
* ['email', 'ip_address', 'behavioral_data'],
|
|
19
|
+
* 'analyze_user_behavior_for_product_improvement'
|
|
20
|
+
* );
|
|
21
|
+
*
|
|
22
|
+
* // Record identified risks:
|
|
23
|
+
* await PrivacyImpactAssessment.recordRisk(
|
|
24
|
+
* assessment.id,
|
|
25
|
+
* 'Potential data breach exposing user profiles',
|
|
26
|
+
* 'high',
|
|
27
|
+
* * 'Implement AES-256 encryption at rest and TLS 1.3 in transit'
|
|
28
|
+
* );
|
|
29
|
+
*
|
|
30
|
+
* // Approve the assessment:
|
|
31
|
+
* await PrivacyImpactAssessment.approveAssessment(assessment.id, 'DPO John Smith');
|
|
32
|
+
*
|
|
33
|
+
* // Link to a model:
|
|
34
|
+
* await PrivacyImpactAssessment.linkToModel(assessment.id, UserAnalytics);
|
|
35
|
+
*
|
|
36
|
+
* // Get assessment details:
|
|
37
|
+
* const details = await PrivacyImpactAssessment.getAssessment(assessment.id);
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Status of a Privacy Impact Assessment
|
|
41
|
+
*/
|
|
42
|
+
export type AssessmentStatus = 'draft' | 'in_review' | 'approved' | 'rejected' | 'archived';
|
|
43
|
+
/**
|
|
44
|
+
* Severity level of identified risks
|
|
45
|
+
*/
|
|
46
|
+
export type RiskSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
47
|
+
/**
|
|
48
|
+
* PIA Record containing assessment metadata
|
|
49
|
+
*/
|
|
50
|
+
export interface PIARecord {
|
|
51
|
+
id: number;
|
|
52
|
+
name: string;
|
|
53
|
+
dataTypes: string[];
|
|
54
|
+
processingPurpose: string;
|
|
55
|
+
status: AssessmentStatus;
|
|
56
|
+
approvedBy?: string;
|
|
57
|
+
approvedAt?: Date;
|
|
58
|
+
linkedModels?: string[];
|
|
59
|
+
createdAt: Date;
|
|
60
|
+
updatedAt: Date;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Risk record associated with a PIA
|
|
64
|
+
*/
|
|
65
|
+
export interface RiskRecord {
|
|
66
|
+
id: number;
|
|
67
|
+
assessmentId: number;
|
|
68
|
+
risk: string;
|
|
69
|
+
severity: RiskSeverity;
|
|
70
|
+
mitigation: string;
|
|
71
|
+
createdAt: Date;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Options for creating a new PIA
|
|
75
|
+
*/
|
|
76
|
+
export interface PIACreateOptions {
|
|
77
|
+
/** Name/title of the assessment */
|
|
78
|
+
name: string;
|
|
79
|
+
/** List of data types being processed (e.g. ['email', 'ssn', 'health_data']) */
|
|
80
|
+
dataTypes: string[];
|
|
81
|
+
/** Purpose of the processing operation */
|
|
82
|
+
processingPurpose: string;
|
|
83
|
+
/** Additional metadata about the assessment */
|
|
84
|
+
metadata?: Record<string, any>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Options for recording a risk
|
|
88
|
+
*/
|
|
89
|
+
export interface RiskRecordOptions {
|
|
90
|
+
/** Description of the identified risk */
|
|
91
|
+
risk: string;
|
|
92
|
+
/** Severity level of the risk */
|
|
93
|
+
severity: RiskSeverity;
|
|
94
|
+
/** Mitigation measure for the risk */
|
|
95
|
+
mitigation: string;
|
|
96
|
+
}
|
|
97
|
+
export declare class PrivacyImpactAssessment {
|
|
98
|
+
/**
|
|
99
|
+
* Initialize the PrivacyImpactAssessment model and sync the tables.
|
|
100
|
+
* Call once at application startup.
|
|
101
|
+
*
|
|
102
|
+
* @param prorm - The Prorm instance
|
|
103
|
+
* @param tableName - Override the default table name 'pia_assessments'
|
|
104
|
+
*/
|
|
105
|
+
static initialize(prorm: any, tableName?: string): Promise<void>;
|
|
106
|
+
private static requireModels;
|
|
107
|
+
/**
|
|
108
|
+
* Create a new Privacy Impact Assessment.
|
|
109
|
+
*
|
|
110
|
+
* @param name - Name/title of the assessment
|
|
111
|
+
* @param dataTypes - List of data types being processed
|
|
112
|
+
* @param processingPurpose - Purpose of the processing operation
|
|
113
|
+
* @returns The created PIA record
|
|
114
|
+
*/
|
|
115
|
+
static createAssessment(name: string, dataTypes: string[], processingPurpose: string): Promise<PIARecord>;
|
|
116
|
+
/**
|
|
117
|
+
* Record a risk associated with a PIA assessment.
|
|
118
|
+
*
|
|
119
|
+
* @param assessmentId - The ID of the assessment to add the risk to
|
|
120
|
+
* @param risk - Description of the identified risk
|
|
121
|
+
* @param severity - Severity level of the risk
|
|
122
|
+
* @param mitigation - Mitigation measures for the risk
|
|
123
|
+
* @returns The created risk record
|
|
124
|
+
*/
|
|
125
|
+
static recordRisk(assessmentId: number, risk: string, severity: RiskSeverity, mitigation: string): Promise<RiskRecord>;
|
|
126
|
+
/**
|
|
127
|
+
* Approve a Privacy Impact Assessment.
|
|
128
|
+
* Sets status to 'approved' and records approver information.
|
|
129
|
+
*
|
|
130
|
+
* @param assessmentId - The ID of the assessment to approve
|
|
131
|
+
* @param approver - Name/ID of the approver (e.g., DPO name)
|
|
132
|
+
* @returns The updated PIA record
|
|
133
|
+
*/
|
|
134
|
+
static approveAssessment(assessmentId: number, approver: string): Promise<PIARecord>;
|
|
135
|
+
/**
|
|
136
|
+
* Get a Privacy Impact Assessment by ID.
|
|
137
|
+
* Includes associated risks.
|
|
138
|
+
*
|
|
139
|
+
* @param assessmentId - The ID of the assessment to retrieve
|
|
140
|
+
* @returns The PIA record with associated risks
|
|
141
|
+
*/
|
|
142
|
+
static getAssessment(assessmentId: number): Promise<any>;
|
|
143
|
+
/**
|
|
144
|
+
* Link a model to a PIA assessment.
|
|
145
|
+
* Useful for tracking which models are covered by the assessment.
|
|
146
|
+
*
|
|
147
|
+
* @param assessmentId - The ID of the assessment
|
|
148
|
+
* @param model - The model class to link (can be a Prorm model or string name)
|
|
149
|
+
* @returns The updated PIA record
|
|
150
|
+
*/
|
|
151
|
+
static linkToModel(assessmentId: number, model: any): Promise<PIARecord>;
|
|
152
|
+
/**
|
|
153
|
+
* Get all assessments with a specific status.
|
|
154
|
+
*
|
|
155
|
+
* @param status - The status to filter by
|
|
156
|
+
* @returns Array of PIA records matching the status
|
|
157
|
+
*/
|
|
158
|
+
static getByStatus(status: AssessmentStatus): Promise<PIARecord[]>;
|
|
159
|
+
/**
|
|
160
|
+
* Reject a Privacy Impact Assessment.
|
|
161
|
+
*
|
|
162
|
+
* @param assessmentId - The ID of the assessment to reject
|
|
163
|
+
* @param reason - Reason for rejection
|
|
164
|
+
* @returns The updated PIA record
|
|
165
|
+
*/
|
|
166
|
+
static rejectAssessment(assessmentId: number, reason: string): Promise<PIARecord>;
|
|
167
|
+
/**
|
|
168
|
+
* Submit an assessment for review.
|
|
169
|
+
* Changes status from 'draft' to 'in_review'.
|
|
170
|
+
*
|
|
171
|
+
* @param assessmentId - The ID of the assessment to submit
|
|
172
|
+
* @returns The updated PIA record
|
|
173
|
+
*/
|
|
174
|
+
static submitForReview(assessmentId: number): Promise<PIARecord>;
|
|
175
|
+
/**
|
|
176
|
+
* Get all risks for an assessment grouped by severity.
|
|
177
|
+
*
|
|
178
|
+
* @param assessmentId - The ID of the assessment
|
|
179
|
+
* @returns Object with risks grouped by severity level
|
|
180
|
+
*/
|
|
181
|
+
static getRisksBySeverity(assessmentId: number): Promise<Record<RiskSeverity, RiskRecord[]>>;
|
|
182
|
+
/**
|
|
183
|
+
* Check if an assessment has any high or critical risks without mitigations.
|
|
184
|
+
*
|
|
185
|
+
* @param assessmentId - The ID of the assessment
|
|
186
|
+
* @returns True if there are unresolved high-risk items
|
|
187
|
+
*/
|
|
188
|
+
static hasUnresolvedHighRisks(assessmentId: number): Promise<boolean>;
|
|
189
|
+
/**
|
|
190
|
+
* List all models linked to a PIA assessment.
|
|
191
|
+
*
|
|
192
|
+
* @param assessmentId - The ID of the assessment
|
|
193
|
+
* @returns Array of linked model names
|
|
194
|
+
*/
|
|
195
|
+
static getLinkedModels(assessmentId: number): Promise<string[]>;
|
|
196
|
+
}
|