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,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BackupVerification
|
|
3
|
+
*
|
|
4
|
+
* Automated backup integrity verification and test restore capabilities.
|
|
5
|
+
* Supports scheduled verification for compliance with DORA, NERC CIP,
|
|
6
|
+
* NIST CSF, and other regulatory frameworks requiring backup validation.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* // Configure backup sources
|
|
10
|
+
* BackupVerification.configure({
|
|
11
|
+
* primary: { type: 's3', bucket: 'backups', path: 'primary/' },
|
|
12
|
+
* secondary: { type: 'filesystem', path: '/backup/secondary' },
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* // Verify a backup
|
|
16
|
+
* const result = await BackupVerification.verifyBackup('backup-2024-01-15');
|
|
17
|
+
*
|
|
18
|
+
* // Test restore to staging
|
|
19
|
+
* const restoreResult = await BackupVerification.testRestore('backup-2024-01-15');
|
|
20
|
+
*
|
|
21
|
+
* // Schedule periodic verification
|
|
22
|
+
* BackupVerification.scheduleVerification('backup-2024-01-15', {
|
|
23
|
+
* frequency: 'weekly',
|
|
24
|
+
* dayOfWeek: 'sunday',
|
|
25
|
+
* time: '02:00',
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Get verification history
|
|
29
|
+
* const history = await BackupVerification.getVerificationHistory('backup-2024-01-15');
|
|
30
|
+
*/
|
|
31
|
+
import { Prorm } from '../prorm';
|
|
32
|
+
export interface BackupSource {
|
|
33
|
+
/** Storage type */
|
|
34
|
+
type: 's3' | 'filesystem' | 'azure' | 'gcp' | 'nfs';
|
|
35
|
+
/** Storage location - bucket name or path */
|
|
36
|
+
bucket?: string;
|
|
37
|
+
/** Path prefix or directory path */
|
|
38
|
+
path: string;
|
|
39
|
+
/** Optional credentials */
|
|
40
|
+
credentials?: {
|
|
41
|
+
accessKeyId?: string;
|
|
42
|
+
secretAccessKey?: string;
|
|
43
|
+
region?: string;
|
|
44
|
+
};
|
|
45
|
+
/** Encryption settings */
|
|
46
|
+
encryption?: {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
algorithm?: 'AES-256' | 'AES-256-GCM';
|
|
49
|
+
keyId?: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Optional callback that computes the real checksum (e.g. sha256 hex
|
|
53
|
+
* digest) of the backup content for `backupId`. Required for non-
|
|
54
|
+
* filesystem source types (s3/azure/gcp/nfs) if you want real checksum
|
|
55
|
+
* verification, since this library does not bundle any cloud SDKs.
|
|
56
|
+
* Without it, checksum verification for those types is inconclusive
|
|
57
|
+
* (reported as a 'warning', never fabricated as a pass).
|
|
58
|
+
*/
|
|
59
|
+
computeChecksum?: (backupId: string) => Promise<string>;
|
|
60
|
+
/**
|
|
61
|
+
* Optional callback that returns true if the backup content for
|
|
62
|
+
* `backupId` actually exists and is readable/non-corrupted at the
|
|
63
|
+
* source. Required for non-filesystem source types to get a real
|
|
64
|
+
* integrity check; otherwise integrity verification is inconclusive.
|
|
65
|
+
*/
|
|
66
|
+
checkReadable?: (backupId: string) => Promise<boolean>;
|
|
67
|
+
}
|
|
68
|
+
export interface BackupConfig {
|
|
69
|
+
/** Primary backup source */
|
|
70
|
+
primary: BackupSource;
|
|
71
|
+
/** Secondary/backup backup source (for redundancy check) */
|
|
72
|
+
secondary?: BackupSource;
|
|
73
|
+
/** Staging environment for test restores */
|
|
74
|
+
staging?: {
|
|
75
|
+
database: string;
|
|
76
|
+
host: string;
|
|
77
|
+
port?: number;
|
|
78
|
+
username: string;
|
|
79
|
+
password: string;
|
|
80
|
+
};
|
|
81
|
+
/** Verification settings */
|
|
82
|
+
verification?: {
|
|
83
|
+
/** Verify checksum integrity (default: true) */
|
|
84
|
+
verifyChecksum?: boolean;
|
|
85
|
+
/** Verify encryption (default: true) */
|
|
86
|
+
verifyEncryption?: boolean;
|
|
87
|
+
/** Verify backup is not corrupted (default: true) */
|
|
88
|
+
verifyIntegrity?: boolean;
|
|
89
|
+
/** Minimum backup age to verify (default: 0) */
|
|
90
|
+
minAgeHours?: number;
|
|
91
|
+
};
|
|
92
|
+
/** Notification settings */
|
|
93
|
+
notifications?: {
|
|
94
|
+
onSuccess?: boolean;
|
|
95
|
+
onFailure?: boolean;
|
|
96
|
+
emailRecipients?: string[];
|
|
97
|
+
webhookUrl?: string;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export interface BackupMetadata {
|
|
101
|
+
backupId: string;
|
|
102
|
+
source: string;
|
|
103
|
+
timestamp: Date;
|
|
104
|
+
size: number;
|
|
105
|
+
checksum?: string;
|
|
106
|
+
encrypted: boolean;
|
|
107
|
+
compression?: string;
|
|
108
|
+
retentionDays?: number;
|
|
109
|
+
/**
|
|
110
|
+
* Optional snapshot of database state captured at backup time (e.g. via
|
|
111
|
+
* BackupVerification.captureSnapshot()). Used by testRestore() to
|
|
112
|
+
* compare row counts against current live state, since this library
|
|
113
|
+
* cannot perform a true restore-and-diff without a real backup/restore
|
|
114
|
+
* engine or a second staging database connection.
|
|
115
|
+
*/
|
|
116
|
+
snapshot?: {
|
|
117
|
+
rowCounts: Record<string, number>;
|
|
118
|
+
capturedAt: Date;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export interface VerificationResult {
|
|
122
|
+
/** Unique verification ID */
|
|
123
|
+
verificationId: string;
|
|
124
|
+
/** The backup ID being verified */
|
|
125
|
+
backupId: string;
|
|
126
|
+
/** Verification status */
|
|
127
|
+
status: 'passed' | 'failed' | 'warning';
|
|
128
|
+
/** Timestamp of verification */
|
|
129
|
+
timestamp: Date;
|
|
130
|
+
/** Checksum verification result */
|
|
131
|
+
checksumValid?: boolean;
|
|
132
|
+
/** Encryption verification result */
|
|
133
|
+
encryptionValid?: boolean;
|
|
134
|
+
/** Integrity check result */
|
|
135
|
+
integrityValid?: boolean;
|
|
136
|
+
/** Test restore result */
|
|
137
|
+
restoreResult?: {
|
|
138
|
+
success: boolean;
|
|
139
|
+
rowsRestored?: number;
|
|
140
|
+
duration?: number;
|
|
141
|
+
errorMessage?: string;
|
|
142
|
+
/**
|
|
143
|
+
* Clarifying note about what this restore check does/does not
|
|
144
|
+
* guarantee (e.g. "reachability-only, no snapshot to compare"). May be
|
|
145
|
+
* present alongside success: true.
|
|
146
|
+
*/
|
|
147
|
+
note?: string;
|
|
148
|
+
};
|
|
149
|
+
/** Detailed messages */
|
|
150
|
+
messages: string[];
|
|
151
|
+
/** Compliance frameworks this verification satisfies */
|
|
152
|
+
complianceFrameworks: string[];
|
|
153
|
+
/** Duration of verification in milliseconds */
|
|
154
|
+
durationMs: number;
|
|
155
|
+
}
|
|
156
|
+
export interface VerificationSchedule {
|
|
157
|
+
/** Frequency of verification */
|
|
158
|
+
frequency: 'daily' | 'weekly' | 'monthly';
|
|
159
|
+
/** Day of week for weekly (0=sunday, 6=saturday) */
|
|
160
|
+
dayOfWeek?: number;
|
|
161
|
+
/** Day of month for monthly (1-31) */
|
|
162
|
+
dayOfMonth?: number;
|
|
163
|
+
/** Time in HH:MM format (24-hour) */
|
|
164
|
+
time: string;
|
|
165
|
+
/** Next scheduled run */
|
|
166
|
+
nextRun?: Date;
|
|
167
|
+
/** Whether the schedule is active */
|
|
168
|
+
active: boolean;
|
|
169
|
+
}
|
|
170
|
+
export interface VerificationHistoryEntry {
|
|
171
|
+
verificationId: string;
|
|
172
|
+
backupId: string;
|
|
173
|
+
status: 'passed' | 'failed' | 'warning';
|
|
174
|
+
timestamp: Date;
|
|
175
|
+
durationMs: number;
|
|
176
|
+
checksumValid?: boolean;
|
|
177
|
+
integrityValid?: boolean;
|
|
178
|
+
restoreSuccess?: boolean;
|
|
179
|
+
}
|
|
180
|
+
export declare class BackupVerification {
|
|
181
|
+
/**
|
|
182
|
+
* Configure backup sources and verification settings.
|
|
183
|
+
*
|
|
184
|
+
* @param config - Backup configuration including primary/secondary sources,
|
|
185
|
+
* staging environment, and verification options
|
|
186
|
+
*/
|
|
187
|
+
static configure(config: BackupConfig): void;
|
|
188
|
+
/**
|
|
189
|
+
* Register a backup in the system for tracking.
|
|
190
|
+
*
|
|
191
|
+
* @param metadata - Backup metadata including ID, source, timestamp, etc.
|
|
192
|
+
* @param source - Source identifier ('primary' or 'secondary')
|
|
193
|
+
*/
|
|
194
|
+
static registerBackup(metadata: BackupMetadata, source?: string): void;
|
|
195
|
+
/**
|
|
196
|
+
* Capture a real row-count snapshot of a live database, intended to be
|
|
197
|
+
* taken at (or immediately before/after) backup time and stored on
|
|
198
|
+
* `BackupMetadata.snapshot`. This is the "strongest achievable"
|
|
199
|
+
* verification baseline this library can produce without a real
|
|
200
|
+
* restore/import engine: it lets testRestore() report what the backup
|
|
201
|
+
* *should* contain, even though it cannot prove the backup file itself
|
|
202
|
+
* restores to that state.
|
|
203
|
+
*
|
|
204
|
+
* @param prorm - A connected Prorm instance to query
|
|
205
|
+
* @param tables - Table names to count rows for
|
|
206
|
+
* @returns A snapshot with real row counts per table
|
|
207
|
+
*/
|
|
208
|
+
static captureSnapshot(prorm: Prorm, tables: string[]): Promise<NonNullable<BackupMetadata['snapshot']>>;
|
|
209
|
+
/**
|
|
210
|
+
* Verify the integrity of a backup without performing a full restore.
|
|
211
|
+
*
|
|
212
|
+
* @param backupId - The backup ID to verify
|
|
213
|
+
* @returns Verification result with status and details
|
|
214
|
+
*/
|
|
215
|
+
static verifyBackup(backupId: string): Promise<VerificationResult>;
|
|
216
|
+
/**
|
|
217
|
+
* Test restore a backup to a staging environment.
|
|
218
|
+
* This performs an actual restore to verify backup is valid.
|
|
219
|
+
*
|
|
220
|
+
* @param backupId - The backup ID to test restore
|
|
221
|
+
* @returns Verification result including restore details
|
|
222
|
+
*/
|
|
223
|
+
static testRestore(backupId: string): Promise<VerificationResult>;
|
|
224
|
+
/**
|
|
225
|
+
* Schedule periodic verification for a backup.
|
|
226
|
+
*
|
|
227
|
+
* @param backupId - The backup ID to schedule verification for
|
|
228
|
+
* @param schedule - Verification schedule configuration
|
|
229
|
+
*/
|
|
230
|
+
static scheduleVerification(backupId: string, schedule: VerificationSchedule): void;
|
|
231
|
+
/**
|
|
232
|
+
* Remove a scheduled verification.
|
|
233
|
+
*
|
|
234
|
+
* @param backupId - The backup ID to remove schedule for
|
|
235
|
+
*/
|
|
236
|
+
static removeScheduledVerification(backupId: string): boolean;
|
|
237
|
+
/**
|
|
238
|
+
* Get all scheduled verifications.
|
|
239
|
+
*
|
|
240
|
+
* @returns Array of scheduled verification entries
|
|
241
|
+
*/
|
|
242
|
+
static getScheduledVerifications(): Array<{
|
|
243
|
+
backupId: string;
|
|
244
|
+
schedule: VerificationSchedule;
|
|
245
|
+
nextRun: Date;
|
|
246
|
+
}>;
|
|
247
|
+
/**
|
|
248
|
+
* Get verification history for a backup.
|
|
249
|
+
*
|
|
250
|
+
* @param backupId - The backup ID to get history for
|
|
251
|
+
* @returns Array of verification history entries
|
|
252
|
+
*/
|
|
253
|
+
static getVerificationHistory(backupId: string): VerificationHistoryEntry[];
|
|
254
|
+
/**
|
|
255
|
+
* Get all backups registered in the system.
|
|
256
|
+
*
|
|
257
|
+
* @returns Array of backup entries
|
|
258
|
+
*/
|
|
259
|
+
static listBackups(): Array<{
|
|
260
|
+
backupId: string;
|
|
261
|
+
metadata: BackupMetadata;
|
|
262
|
+
source: string;
|
|
263
|
+
}>;
|
|
264
|
+
/**
|
|
265
|
+
* Get the current configuration.
|
|
266
|
+
*
|
|
267
|
+
* @returns Current backup configuration
|
|
268
|
+
*/
|
|
269
|
+
static getConfiguration(): {
|
|
270
|
+
sources: Map<string, BackupSource>;
|
|
271
|
+
staging: BackupConfig['staging'] | undefined;
|
|
272
|
+
verification: BackupConfig['verification'] | undefined;
|
|
273
|
+
notifications: BackupConfig['notifications'] | undefined;
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Clear all configuration (useful for testing).
|
|
277
|
+
*/
|
|
278
|
+
static clear(): void;
|
|
279
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BreachDetector
|
|
3
|
+
*
|
|
4
|
+
* A comprehensive breach detection and monitoring system for identifying
|
|
5
|
+
* unusual access patterns, mass exports, failed authentication attempts,
|
|
6
|
+
* and suspicious query patterns.
|
|
7
|
+
*
|
|
8
|
+
* Required for compliance with:
|
|
9
|
+
* - NIST CSF (PR.AC-1, PR.AC-2, PR.DS-5)
|
|
10
|
+
* - CIS Controls (CIS 3.4, 8.2, 8.5)
|
|
11
|
+
* - MITRE ATT&CK (TA0001, TA0009, TA0010)
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* // Initialize breach detection
|
|
15
|
+
* const detector = BreachDetector.create(prorm, {
|
|
16
|
+
* alertCallback: (alert) => securityTeam.notify(alert),
|
|
17
|
+
* massExportThreshold: 1000,
|
|
18
|
+
* rateLimitWindow: 60000,
|
|
19
|
+
* rateLimitMax: 100,
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // Start monitoring
|
|
23
|
+
* await detector.start();
|
|
24
|
+
*
|
|
25
|
+
* // Query alerts and stats
|
|
26
|
+
* const alerts = detector.getAlerts();
|
|
27
|
+
* const stats = detector.getStats();
|
|
28
|
+
*/
|
|
29
|
+
import { Prorm } from '../prorm';
|
|
30
|
+
/** Alert severity levels */
|
|
31
|
+
export type BreachSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
32
|
+
/** Categories of breaches detected */
|
|
33
|
+
export type BreachCategory = 'mass_export' | 'failed_auth' | 'unusual_access_time' | 'rate_limit_exceeded' | 'suspicious_query_pattern' | 'bulk_download';
|
|
34
|
+
/** A breach alert */
|
|
35
|
+
export interface BreachAlert {
|
|
36
|
+
id: string;
|
|
37
|
+
timestamp: Date;
|
|
38
|
+
severity: BreachSeverity;
|
|
39
|
+
category: BreachCategory;
|
|
40
|
+
message: string;
|
|
41
|
+
details: Record<string, unknown>;
|
|
42
|
+
userId?: string;
|
|
43
|
+
ipAddress?: string;
|
|
44
|
+
query?: string;
|
|
45
|
+
}
|
|
46
|
+
/** Configuration options for BreachDetector */
|
|
47
|
+
export interface BreachDetectorOptions {
|
|
48
|
+
/** Callback for real-time alerts to security team */
|
|
49
|
+
alertCallback?: (alert: BreachAlert) => void;
|
|
50
|
+
/** Maximum records that can be exported in a single query before alerting */
|
|
51
|
+
massExportThreshold?: number;
|
|
52
|
+
/** Time window for rate limiting in milliseconds */
|
|
53
|
+
rateLimitWindow?: number;
|
|
54
|
+
/** Maximum queries allowed per rate limit window */
|
|
55
|
+
rateLimitMax?: number;
|
|
56
|
+
/** Number of failed auth attempts before alerting */
|
|
57
|
+
failedAuthThreshold?: number;
|
|
58
|
+
/** Time window for failed auth tracking in milliseconds */
|
|
59
|
+
failedAuthWindow?: number;
|
|
60
|
+
/** Enable detection of unusual access times */
|
|
61
|
+
detectUnusualAccessTime?: boolean;
|
|
62
|
+
/** Allowed hours (24h format) for normal access */
|
|
63
|
+
allowedHours?: number[];
|
|
64
|
+
/** Enable suspicious query pattern detection */
|
|
65
|
+
detectSuspiciousPatterns?: boolean;
|
|
66
|
+
/** Maximum alerts to keep in memory */
|
|
67
|
+
maxAlerts?: number;
|
|
68
|
+
/** Minimum severity to trigger alert callback */
|
|
69
|
+
minAlertSeverity?: BreachSeverity;
|
|
70
|
+
/** Custom suspicious query patterns (regex) */
|
|
71
|
+
customPatterns?: RegExp[];
|
|
72
|
+
/** Track queries by user ID */
|
|
73
|
+
trackByUser?: boolean;
|
|
74
|
+
/** Track queries by IP address */
|
|
75
|
+
trackByIP?: boolean;
|
|
76
|
+
}
|
|
77
|
+
export declare class BreachDetector {
|
|
78
|
+
private prorm;
|
|
79
|
+
private options;
|
|
80
|
+
private alerts;
|
|
81
|
+
private isRunning;
|
|
82
|
+
private originalQuery;
|
|
83
|
+
private queryTimestamps;
|
|
84
|
+
private failedAuthAttempts;
|
|
85
|
+
private accessPatterns;
|
|
86
|
+
private startTime;
|
|
87
|
+
private stats;
|
|
88
|
+
private constructor();
|
|
89
|
+
/**
|
|
90
|
+
* Create a new BreachDetector instance
|
|
91
|
+
*/
|
|
92
|
+
static create(prorm: Prorm, options?: BreachDetectorOptions): BreachDetector;
|
|
93
|
+
/**
|
|
94
|
+
* Start monitoring queries for breaches
|
|
95
|
+
*/
|
|
96
|
+
start(): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Stop monitoring
|
|
99
|
+
*/
|
|
100
|
+
stop(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Setup hooks for bulk operation monitoring
|
|
103
|
+
*/
|
|
104
|
+
private setupBulkOperationHooks;
|
|
105
|
+
/**
|
|
106
|
+
* Analyze a query for breach patterns
|
|
107
|
+
*/
|
|
108
|
+
private analyzeQuery;
|
|
109
|
+
/**
|
|
110
|
+
* Analyze errors for security events
|
|
111
|
+
*/
|
|
112
|
+
private analyzeError;
|
|
113
|
+
/**
|
|
114
|
+
* Check for bulk operations
|
|
115
|
+
*/
|
|
116
|
+
private checkBulkOperation;
|
|
117
|
+
/**
|
|
118
|
+
* Check rate limiting
|
|
119
|
+
*/
|
|
120
|
+
private checkRateLimit;
|
|
121
|
+
/**
|
|
122
|
+
* Check for unusual access time
|
|
123
|
+
*/
|
|
124
|
+
private checkUnusualAccessTime;
|
|
125
|
+
/**
|
|
126
|
+
* Check for suspicious query patterns
|
|
127
|
+
*/
|
|
128
|
+
private checkSuspiciousPatterns;
|
|
129
|
+
/**
|
|
130
|
+
* Track failed authentication attempts
|
|
131
|
+
*/
|
|
132
|
+
private trackFailedAuth;
|
|
133
|
+
/**
|
|
134
|
+
* Get identifier key for rate limiting
|
|
135
|
+
*/
|
|
136
|
+
private getIdentifierKey;
|
|
137
|
+
/**
|
|
138
|
+
* Add an alert
|
|
139
|
+
*/
|
|
140
|
+
private addAlert;
|
|
141
|
+
/**
|
|
142
|
+
* Check if alert severity meets callback threshold
|
|
143
|
+
*/
|
|
144
|
+
private shouldTriggerCallback;
|
|
145
|
+
/**
|
|
146
|
+
* Get all breach alerts
|
|
147
|
+
*/
|
|
148
|
+
getAlerts(options?: {
|
|
149
|
+
severity?: BreachSeverity;
|
|
150
|
+
category?: BreachCategory;
|
|
151
|
+
limit?: number;
|
|
152
|
+
}): BreachAlert[];
|
|
153
|
+
/**
|
|
154
|
+
* Get detection statistics
|
|
155
|
+
*/
|
|
156
|
+
getStats(): {
|
|
157
|
+
uptime: number;
|
|
158
|
+
totalQueries: number;
|
|
159
|
+
totalAlerts: number;
|
|
160
|
+
massExportAlerts: number;
|
|
161
|
+
failedAuthAlerts: number;
|
|
162
|
+
rateLimitAlerts: number;
|
|
163
|
+
unusualTimeAlerts: number;
|
|
164
|
+
suspiciousPatternAlerts: number;
|
|
165
|
+
bulkDownloadAlerts: number;
|
|
166
|
+
alertsBySeverity: Record<BreachSeverity, number>;
|
|
167
|
+
alertsByCategory: Record<BreachCategory, number>;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Clear all alerts
|
|
171
|
+
*/
|
|
172
|
+
clearAlerts(): void;
|
|
173
|
+
/**
|
|
174
|
+
* Check if monitoring is active
|
|
175
|
+
*/
|
|
176
|
+
isActive(): boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Manually trigger an alert (for custom checks)
|
|
179
|
+
*/
|
|
180
|
+
alert(options: Omit<BreachAlert, 'id' | 'timestamp'>): void;
|
|
181
|
+
/**
|
|
182
|
+
* Record a query execution (for external tracking)
|
|
183
|
+
*/
|
|
184
|
+
recordQuery(userId?: string, ipAddress?: string, recordsAffected?: number): void;
|
|
185
|
+
/**
|
|
186
|
+
* Record authentication failure
|
|
187
|
+
*/
|
|
188
|
+
recordAuthFailure(userId?: string, ipAddress?: string): void;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get the global BreachDetector instance
|
|
192
|
+
*/
|
|
193
|
+
export declare function getGlobalBreachDetector(): BreachDetector | null;
|
|
194
|
+
/**
|
|
195
|
+
* Initialize the global BreachDetector instance
|
|
196
|
+
*/
|
|
197
|
+
export declare function initBreachDetector(prorm: Prorm, options?: BreachDetectorOptions): BreachDetector;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConsentRecord
|
|
3
|
+
*
|
|
4
|
+
* A ready-made model and service for storing, managing, and querying
|
|
5
|
+
* data subject consent — including purpose, legal basis, version, and withdrawal.
|
|
6
|
+
*
|
|
7
|
+
* Covers ~62 compliance frameworks including:
|
|
8
|
+
* GDPR Art 6/7, CCPA, CPRA, LGPD, APPI, ePrivacy Directive, CASL,
|
|
9
|
+
* PDPA (Thailand, Singapore, Philippines, Malaysia, Indonesia, Vietnam),
|
|
10
|
+
* DPDP India, PIPA South Korea, PIPL, KVKK, PoPI, and more.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* // Initialize once (creates the consent_records table):
|
|
14
|
+
* await ConsentRecord.initialize(prorm);
|
|
15
|
+
*
|
|
16
|
+
* // Record consent:
|
|
17
|
+
* await ConsentRecord.grant({
|
|
18
|
+
* subjectId: 'user-123',
|
|
19
|
+
* purpose: 'marketing_emails',
|
|
20
|
+
* legalBasis: 'consent',
|
|
21
|
+
* version: '2.1',
|
|
22
|
+
* ipAddress: req.ip,
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Check active consent:
|
|
26
|
+
* const active = await ConsentRecord.isActive('user-123', 'marketing_emails');
|
|
27
|
+
*
|
|
28
|
+
* // Withdraw consent (GDPR Art 7(3)):
|
|
29
|
+
* await ConsentRecord.withdraw('user-123', 'marketing_emails');
|
|
30
|
+
*
|
|
31
|
+
* // Get full consent history for a subject:
|
|
32
|
+
* const history = await ConsentRecord.getHistory('user-123');
|
|
33
|
+
*/
|
|
34
|
+
export type LegalBasis = 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_task' | 'legitimate_interests';
|
|
35
|
+
/**
|
|
36
|
+
* Companion enum for {@link LegalBasis}. Provided for callers who prefer
|
|
37
|
+
* enum-based ergonomics (autocomplete, refactor-safety) over raw string
|
|
38
|
+
* literals. The underlying values are identical to the `LegalBasis`
|
|
39
|
+
* string literals, so either form may be used interchangeably.
|
|
40
|
+
*/
|
|
41
|
+
export declare enum LegalBasisEnum {
|
|
42
|
+
Consent = "consent",
|
|
43
|
+
Contract = "contract",
|
|
44
|
+
LegalObligation = "legal_obligation",
|
|
45
|
+
VitalInterests = "vital_interests",
|
|
46
|
+
PublicTask = "public_task",
|
|
47
|
+
LegitimateInterests = "legitimate_interests"
|
|
48
|
+
}
|
|
49
|
+
export interface ConsentGrantOptions {
|
|
50
|
+
/** Unique identifier of the data subject */
|
|
51
|
+
subjectId: string;
|
|
52
|
+
/** Purpose of the processing (e.g. 'marketing_emails', 'analytics') */
|
|
53
|
+
purpose: string;
|
|
54
|
+
/** GDPR/equivalent legal basis for processing */
|
|
55
|
+
legalBasis?: LegalBasis | LegalBasisEnum;
|
|
56
|
+
/** Version of the privacy notice / consent form shown */
|
|
57
|
+
version?: string;
|
|
58
|
+
/** IP address of the consenting user */
|
|
59
|
+
ipAddress?: string;
|
|
60
|
+
/** Additional metadata (e.g. consent UI element ID, A/B test variant) */
|
|
61
|
+
metadata?: Record<string, any>;
|
|
62
|
+
}
|
|
63
|
+
export interface ConsentWithdrawOptions {
|
|
64
|
+
/** Reason for withdrawal, if provided by the user */
|
|
65
|
+
reason?: string;
|
|
66
|
+
}
|
|
67
|
+
export declare class ConsentRecord {
|
|
68
|
+
/**
|
|
69
|
+
* Initialize the ConsentRecord model and sync the table.
|
|
70
|
+
* Call once at application startup.
|
|
71
|
+
*
|
|
72
|
+
* @param prorm - The Prorm instance
|
|
73
|
+
* @param tableName - Override the default table name 'consent_records'
|
|
74
|
+
*/
|
|
75
|
+
static initialize(prorm: any, tableName?: string): Promise<void>;
|
|
76
|
+
private static requireModel;
|
|
77
|
+
/**
|
|
78
|
+
* Record a new consent grant.
|
|
79
|
+
* If an active consent already exists for the same subject + purpose,
|
|
80
|
+
* a new record is created (audit trail is preserved).
|
|
81
|
+
*/
|
|
82
|
+
static grant(options: ConsentGrantOptions): Promise<any>;
|
|
83
|
+
/**
|
|
84
|
+
* Withdraw consent for a subject + purpose.
|
|
85
|
+
* Sets withdrawnAt on the most recent active consent record.
|
|
86
|
+
*
|
|
87
|
+
* @returns true if a consent record was found and updated, false if none existed.
|
|
88
|
+
*/
|
|
89
|
+
static withdraw(subjectId: string, purpose: string, options?: ConsentWithdrawOptions): Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* Check whether an active (non-withdrawn) consent exists.
|
|
92
|
+
*/
|
|
93
|
+
static isActive(subjectId: string, purpose: string): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Get the full consent history for a subject (all purposes).
|
|
96
|
+
*/
|
|
97
|
+
static getHistory(subjectId: string): Promise<any[]>;
|
|
98
|
+
/**
|
|
99
|
+
* Get active consents for a subject grouped by purpose.
|
|
100
|
+
*/
|
|
101
|
+
static getActiveConsents(subjectId: string): Promise<any[]>;
|
|
102
|
+
/**
|
|
103
|
+
* List all subjects who have active consent for a specific purpose.
|
|
104
|
+
* Useful for marketing campaign validation.
|
|
105
|
+
*/
|
|
106
|
+
static getConsented(purpose: string): Promise<string[]>;
|
|
107
|
+
}
|