ts-prorm-orm 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +713 -0
- package/dist/index.js +36 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- package/package.json +20 -5
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataLineage
|
|
3
|
+
*
|
|
4
|
+
* Tracks data origin, transformation history, and provenance chain for records.
|
|
5
|
+
* Enables compliance with BCBS 239, GDPR Art 30, HIPAA, and SOX requirements
|
|
6
|
+
* for data lineage and auditability.
|
|
7
|
+
*
|
|
8
|
+
* Covers ~45 compliance frameworks including:
|
|
9
|
+
* BCBS 239, GDPR Art 25/30/32, HIPAA, SOX, SOC 2, ISO 27001,
|
|
10
|
+
* NIST SP 800-53, PCI DSS, FINRA, and data lineage requirements.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* // Enable lineage tracking on a model:
|
|
14
|
+
* DataLineage.enable(Order, prorm, { tableName: 'OrderLineage' });
|
|
15
|
+
*
|
|
16
|
+
* // Track a data source:
|
|
17
|
+
* await DataLineage.trackSource(Order, 'import', { source: 'csv_upload', importedAt: new Date() });
|
|
18
|
+
*
|
|
19
|
+
* // Get full lineage chain:
|
|
20
|
+
* const lineage = await DataLineage.getLineage(orderId, 'Orders');
|
|
21
|
+
*
|
|
22
|
+
* // Get just the origin:
|
|
23
|
+
* const provenance = await DataLineage.getProvenance(orderId, 'Orders');
|
|
24
|
+
*
|
|
25
|
+
* // Get transformation history:
|
|
26
|
+
* const transforms = await DataLineage.getTransformations(orderId, 'Orders');
|
|
27
|
+
*
|
|
28
|
+
* // Using the decorator:
|
|
29
|
+
* @LineageTrack({ fields: ['amount', 'total'] })
|
|
30
|
+
* class Order extends Model { ... }
|
|
31
|
+
*/
|
|
32
|
+
import { ModelStatic, Prorm } from '../prorm';
|
|
33
|
+
/** The origin of data - how it entered the system */
|
|
34
|
+
export type DataSource =
|
|
35
|
+
/** Data imported from external systems (ETL, CSV, API sync) */
|
|
36
|
+
'import'
|
|
37
|
+
/** Data entered directly by a user */
|
|
38
|
+
| 'user_input'
|
|
39
|
+
/** Data computed from other values (calculated fields) */
|
|
40
|
+
| 'computed'
|
|
41
|
+
/** Data derived from other records (aggregates, rollups) */
|
|
42
|
+
| 'derived';
|
|
43
|
+
/** A transformation operation applied to a record */
|
|
44
|
+
export interface TransformationRecord {
|
|
45
|
+
/** Unique identifier for this transformation */
|
|
46
|
+
id: number;
|
|
47
|
+
/** Record ID this transformation applies to */
|
|
48
|
+
recordId: string | number;
|
|
49
|
+
/** Table name */
|
|
50
|
+
tableName: string;
|
|
51
|
+
/** Type of transformation */
|
|
52
|
+
operation: string;
|
|
53
|
+
/** Description of what was done */
|
|
54
|
+
description?: string;
|
|
55
|
+
/** User who performed the transformation */
|
|
56
|
+
performedBy?: string | number;
|
|
57
|
+
/** When the transformation occurred */
|
|
58
|
+
timestamp: Date;
|
|
59
|
+
/** Input values before transformation */
|
|
60
|
+
inputValues?: Record<string, any>;
|
|
61
|
+
/** Output values after transformation */
|
|
62
|
+
outputValues?: Record<string, any>;
|
|
63
|
+
/** Additional metadata */
|
|
64
|
+
metadata?: Record<string, any>;
|
|
65
|
+
}
|
|
66
|
+
/** A single lineage record tracking data origin */
|
|
67
|
+
export interface LineageRecord {
|
|
68
|
+
/** Unique identifier */
|
|
69
|
+
id: number;
|
|
70
|
+
/** Record ID this lineage applies to */
|
|
71
|
+
recordId: string | number;
|
|
72
|
+
/** Table name */
|
|
73
|
+
tableName: string;
|
|
74
|
+
/** Original data source */
|
|
75
|
+
source: DataSource;
|
|
76
|
+
/** Source system or origin details */
|
|
77
|
+
sourceDetails?: string;
|
|
78
|
+
/** Additional metadata about the origin */
|
|
79
|
+
originMetadata?: Record<string, any>;
|
|
80
|
+
/** ID of parent record (for derived/computed data) */
|
|
81
|
+
parentRecordId?: string | number;
|
|
82
|
+
/** Parent table name */
|
|
83
|
+
parentTableName?: string;
|
|
84
|
+
/** When the record was created */
|
|
85
|
+
createdAt: Date;
|
|
86
|
+
}
|
|
87
|
+
/** Full lineage chain for a record */
|
|
88
|
+
export interface LineageChain {
|
|
89
|
+
/** The record ID */
|
|
90
|
+
recordId: string | number;
|
|
91
|
+
/** The table name */
|
|
92
|
+
tableName: string;
|
|
93
|
+
/** Origin/provenance information */
|
|
94
|
+
provenance: LineageRecord;
|
|
95
|
+
/** All transformations applied */
|
|
96
|
+
transformations: TransformationRecord[];
|
|
97
|
+
/** Full chain including parent lineages */
|
|
98
|
+
chain: LineageRecord[];
|
|
99
|
+
}
|
|
100
|
+
/** Options for DataLineage.enable() */
|
|
101
|
+
export interface LineageOptions {
|
|
102
|
+
/** Custom table name for lineage storage. Default: 'DataLineageRecords' */
|
|
103
|
+
tableName?: string;
|
|
104
|
+
/** Function to get current user ID */
|
|
105
|
+
getUserId?: () => string | number | undefined;
|
|
106
|
+
/** Whether to automatically track all creates/updates. Default: true */
|
|
107
|
+
autoTrack?: boolean;
|
|
108
|
+
/** Fields to track specifically (used with decorator) */
|
|
109
|
+
trackedFields?: string[];
|
|
110
|
+
/** Whether to integrate with AuditLogger. Default: true */
|
|
111
|
+
integrateWithAudit?: boolean;
|
|
112
|
+
}
|
|
113
|
+
interface LineageConfig {
|
|
114
|
+
model: any;
|
|
115
|
+
prorm: Prorm;
|
|
116
|
+
options: Required<LineageOptions>;
|
|
117
|
+
lineageModel: ModelStatic<any>;
|
|
118
|
+
transformationModel: ModelStatic<any>;
|
|
119
|
+
}
|
|
120
|
+
export interface LineageTrackOptions {
|
|
121
|
+
/** Fields to specifically track for lineage */
|
|
122
|
+
fields?: string[];
|
|
123
|
+
/** Custom source type for decorated model */
|
|
124
|
+
source?: DataSource;
|
|
125
|
+
/** Source details template */
|
|
126
|
+
sourceDetails?: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Decorator to mark fields for lineage tracking.
|
|
130
|
+
*
|
|
131
|
+
* @LineageTrack({ fields: ['amount', 'total', 'tax'] })
|
|
132
|
+
* class Order extends Model { ... }
|
|
133
|
+
*/
|
|
134
|
+
export declare function LineageTrack(options?: LineageTrackOptions): (target: Function) => void;
|
|
135
|
+
/**
|
|
136
|
+
* Get the lineage fields for a model.
|
|
137
|
+
*/
|
|
138
|
+
export declare function getLineageFields(Model: any): string[];
|
|
139
|
+
/**
|
|
140
|
+
* Get the lineage options for a model.
|
|
141
|
+
*/
|
|
142
|
+
export declare function getLineageOptions(Model: any): LineageTrackOptions | undefined;
|
|
143
|
+
export declare class DataLineage {
|
|
144
|
+
/**
|
|
145
|
+
* Enable lineage tracking on a model.
|
|
146
|
+
* Creates necessary tables and registers hooks.
|
|
147
|
+
*
|
|
148
|
+
* @param model - The model class to track
|
|
149
|
+
* @param prorm - The Prorm instance
|
|
150
|
+
* @param options - Optional configuration
|
|
151
|
+
*/
|
|
152
|
+
static enable(model: any, prorm: Prorm, options?: LineageOptions): void;
|
|
153
|
+
/**
|
|
154
|
+
* Apply hooks to a model for automatic lineage tracking.
|
|
155
|
+
* Called automatically by enable() when autoTrack is true.
|
|
156
|
+
*
|
|
157
|
+
* @param model - The model class
|
|
158
|
+
* @param config - The lineage configuration
|
|
159
|
+
*/
|
|
160
|
+
static applyHooks(model: any, config?: LineageConfig): void;
|
|
161
|
+
/**
|
|
162
|
+
* Track a data source for a record.
|
|
163
|
+
* Call this when data is imported or computed.
|
|
164
|
+
*
|
|
165
|
+
* @param model - The model class
|
|
166
|
+
* @param source - The data source type
|
|
167
|
+
* @param details - Additional details about the source
|
|
168
|
+
*/
|
|
169
|
+
static trackSource(model: any, source: DataSource, details?: {
|
|
170
|
+
sourceDetails?: string;
|
|
171
|
+
metadata?: Record<string, any>;
|
|
172
|
+
parentRecordId?: string | number;
|
|
173
|
+
parentTableName?: string;
|
|
174
|
+
}): Promise<void>;
|
|
175
|
+
/**
|
|
176
|
+
* Track a transformation for a record.
|
|
177
|
+
*
|
|
178
|
+
* @param model - The model class
|
|
179
|
+
* @param recordId - The record ID
|
|
180
|
+
* @param operation - The transformation operation
|
|
181
|
+
* @param details - Additional transformation details
|
|
182
|
+
*/
|
|
183
|
+
static trackTransformation(model: any, recordId: string | number, operation: string, details?: {
|
|
184
|
+
description?: string;
|
|
185
|
+
performedBy?: string | number;
|
|
186
|
+
inputValues?: Record<string, any>;
|
|
187
|
+
outputValues?: Record<string, any>;
|
|
188
|
+
metadata?: Record<string, any>;
|
|
189
|
+
}): Promise<void>;
|
|
190
|
+
/**
|
|
191
|
+
* Get the full lineage chain for a record.
|
|
192
|
+
* Includes provenance and all transformations.
|
|
193
|
+
*
|
|
194
|
+
* @param recordId - The record ID
|
|
195
|
+
* @param tableName - The table name
|
|
196
|
+
*/
|
|
197
|
+
static getLineage(recordId: string | number, tableName: string): Promise<LineageChain | null>;
|
|
198
|
+
/**
|
|
199
|
+
* Get just the provenance/origin for a record.
|
|
200
|
+
*
|
|
201
|
+
* @param recordId - The record ID
|
|
202
|
+
* @param tableName - The table name
|
|
203
|
+
*/
|
|
204
|
+
static getProvenance(recordId: string | number, tableName: string): Promise<LineageRecord | null>;
|
|
205
|
+
/**
|
|
206
|
+
* Get transformation history for a record.
|
|
207
|
+
*
|
|
208
|
+
* @param recordId - The record ID
|
|
209
|
+
* @param tableName - The table name
|
|
210
|
+
*/
|
|
211
|
+
static getTransformations(recordId: string | number, tableName: string): Promise<TransformationRecord[]>;
|
|
212
|
+
/**
|
|
213
|
+
* Disable lineage tracking for a model.
|
|
214
|
+
*
|
|
215
|
+
* @param model - The model class
|
|
216
|
+
*/
|
|
217
|
+
static disable(model: any): void;
|
|
218
|
+
/**
|
|
219
|
+
* Get the lineage model for a model.
|
|
220
|
+
*
|
|
221
|
+
* @param model - The model class
|
|
222
|
+
*/
|
|
223
|
+
static getLineageModel(model: any): ModelStatic<any> | undefined;
|
|
224
|
+
/**
|
|
225
|
+
* Get the transformation model for a model.
|
|
226
|
+
*
|
|
227
|
+
* @param model - The model class
|
|
228
|
+
*/
|
|
229
|
+
static getTransformationModel(model: any): ModelStatic<any> | undefined;
|
|
230
|
+
/**
|
|
231
|
+
* List all models with lineage tracking enabled.
|
|
232
|
+
*/
|
|
233
|
+
static listTrackedModels(): Array<{
|
|
234
|
+
modelName: string;
|
|
235
|
+
options: LineageOptions;
|
|
236
|
+
}>;
|
|
237
|
+
/**
|
|
238
|
+
* Check if a model has lineage tracking enabled.
|
|
239
|
+
*
|
|
240
|
+
* @param model - The model class
|
|
241
|
+
*/
|
|
242
|
+
static isEnabled(model: any): boolean;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Apply hooks to a model (exported for convenience).
|
|
246
|
+
*
|
|
247
|
+
* @param model - The model class
|
|
248
|
+
*/
|
|
249
|
+
export declare function applyHooks(model: any): void;
|
|
250
|
+
/**
|
|
251
|
+
* Create a derived record with lineage tracking.
|
|
252
|
+
* Useful for creating aggregated or computed records.
|
|
253
|
+
*
|
|
254
|
+
* @param model - The model class
|
|
255
|
+
* @param data - The data to create
|
|
256
|
+
* @param parentId - The parent record ID
|
|
257
|
+
*/
|
|
258
|
+
export declare function createDerivedRecord(model: any, data: Record<string, any>, parentId: string | number): Promise<any>;
|
|
259
|
+
/**
|
|
260
|
+
* Create a computed record with lineage tracking.
|
|
261
|
+
* Useful for creating calculated fields.
|
|
262
|
+
*
|
|
263
|
+
* @param model - The model class
|
|
264
|
+
* @param data - The computed data
|
|
265
|
+
* @param inputData - The input values used in computation
|
|
266
|
+
*/
|
|
267
|
+
export declare function createComputedRecord(model: any, data: Record<string, any>, inputData?: Record<string, any>): Promise<any>;
|
|
268
|
+
export {};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataMasker
|
|
3
|
+
*
|
|
4
|
+
* Masks sensitive fields in query output. Supports built-in masking patterns
|
|
5
|
+
* (PAN, SSN, email, phone) and custom patterns. Works with the permission
|
|
6
|
+
* system to provide role-aware masking.
|
|
7
|
+
*
|
|
8
|
+
* Covers ~14 compliance frameworks including:
|
|
9
|
+
* PCI DSS (cardholder data), GLBA (financial), SOX, HIPAA,
|
|
10
|
+
* NYDFS 23 NYCRR 500, GDPR Art 25/32, NIST SP 800-122, and more.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* // Register a masking rule:
|
|
14
|
+
* DataMasker.maskField(User, 'ssn', { pattern: 'ssn' });
|
|
15
|
+
* DataMasker.maskField(Payment, 'cardNumber', { pattern: 'card-last4', showLast: 4 });
|
|
16
|
+
* DataMasker.maskField(Customer, 'email', { pattern: 'email' });
|
|
17
|
+
*
|
|
18
|
+
* // Or use the decorator:
|
|
19
|
+
* @Mask('ssn', { pattern: 'ssn' })
|
|
20
|
+
* class User extends Model { ... }
|
|
21
|
+
*
|
|
22
|
+
* // At query time, mask the output:
|
|
23
|
+
* const user = await User.findByPk(1);
|
|
24
|
+
* const masked = DataMasker.mask(user, 'admin'); // respects role
|
|
25
|
+
*
|
|
26
|
+
* // Or use the automatic hook:
|
|
27
|
+
* DataMasker.applyHooks(User);
|
|
28
|
+
*/
|
|
29
|
+
/** Built-in masking pattern identifiers; see {@link MaskPatternEnum} for the enum form. */
|
|
30
|
+
export type MaskPattern = 'ssn' | 'card-last4' | 'card-first6' | 'email' | 'phone' | 'full' | 'none' | 'custom';
|
|
31
|
+
/**
|
|
32
|
+
* Companion enum for {@link MaskPattern}. Provided for callers who prefer
|
|
33
|
+
* enum-based ergonomics (autocomplete, refactor-safety) over raw string
|
|
34
|
+
* literals. The underlying values are identical to the `MaskPattern`
|
|
35
|
+
* string literals, so either form may be used interchangeably.
|
|
36
|
+
*/
|
|
37
|
+
export declare enum MaskPatternEnum {
|
|
38
|
+
SSN = "ssn",
|
|
39
|
+
CardLast4 = "card-last4",
|
|
40
|
+
CardFirst6 = "card-first6",
|
|
41
|
+
Email = "email",
|
|
42
|
+
Phone = "phone",
|
|
43
|
+
Full = "full",
|
|
44
|
+
None = "none",
|
|
45
|
+
Custom = "custom"
|
|
46
|
+
}
|
|
47
|
+
export interface MaskOptions {
|
|
48
|
+
/** The masking pattern to apply */
|
|
49
|
+
pattern?: MaskPattern | MaskPatternEnum;
|
|
50
|
+
/** For custom pattern, a function that transforms the value */
|
|
51
|
+
customMasker?: (value: string) => string;
|
|
52
|
+
/** Number of trailing characters to show (for card-last4, etc.) */
|
|
53
|
+
showLast?: number;
|
|
54
|
+
/** Number of leading characters to show */
|
|
55
|
+
showFirst?: number;
|
|
56
|
+
/** Character to use for masking. Default: '*' */
|
|
57
|
+
maskChar?: string;
|
|
58
|
+
}
|
|
59
|
+
interface MaskRule {
|
|
60
|
+
field: string;
|
|
61
|
+
options: MaskOptions;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Register a masking rule for a field on a model.
|
|
65
|
+
*/
|
|
66
|
+
export declare function maskField(Model: any, field: string, options?: MaskOptions): void;
|
|
67
|
+
/**
|
|
68
|
+
* Get all masking rules for a model.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getMaskRules(Model: any): MaskRule[];
|
|
71
|
+
/**
|
|
72
|
+
* Decorator to mark a field for masking.
|
|
73
|
+
*
|
|
74
|
+
* @Mask('ssn', { pattern: 'ssn' })
|
|
75
|
+
* class User extends Model { ... }
|
|
76
|
+
*/
|
|
77
|
+
export declare function Mask(field: string, options?: MaskOptions): (target: Function) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Apply masking to a single value.
|
|
80
|
+
*/
|
|
81
|
+
export declare function maskValue(value: any, options: MaskOptions): string;
|
|
82
|
+
/**
|
|
83
|
+
* Apply masking to a model instance, respecting both permission rules
|
|
84
|
+
* and masking rules.
|
|
85
|
+
*
|
|
86
|
+
* @param instance - The model instance or plain object
|
|
87
|
+
* @param role - The current user's role (for permission filtering)
|
|
88
|
+
* @param Model - The model class (optional, inferred from instance.constructor)
|
|
89
|
+
*/
|
|
90
|
+
export declare function mask(instance: any, role: string, Model?: any): Record<string, any>;
|
|
91
|
+
/**
|
|
92
|
+
* Apply masking to an array of instances.
|
|
93
|
+
*/
|
|
94
|
+
export declare function maskMany(instances: any[], role: string, Model?: any): Record<string, any>[];
|
|
95
|
+
/**
|
|
96
|
+
* Wire afterFind hooks onto a model to automatically mask results.
|
|
97
|
+
*
|
|
98
|
+
* DataMasker.applyHooks(User);
|
|
99
|
+
*/
|
|
100
|
+
export declare function applyHooks(Model: any): void;
|
|
101
|
+
/** Static facade bundling the masking API (mirrors the module-level functions). */
|
|
102
|
+
export declare class DataMasker {
|
|
103
|
+
static maskField: typeof maskField;
|
|
104
|
+
static getRules: typeof getMaskRules;
|
|
105
|
+
static mask: typeof mask;
|
|
106
|
+
static maskMany: typeof maskMany;
|
|
107
|
+
static maskValue: typeof maskValue;
|
|
108
|
+
static applyHooks: typeof applyHooks;
|
|
109
|
+
}
|
|
110
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataPortabilityExporter
|
|
3
|
+
*
|
|
4
|
+
* Exports data in machine-readable formats (JSON, CSV, NDJSON) for
|
|
5
|
+
* GDPR Art 20 / CCPA / CPRA data subject access requests (DSARs).
|
|
6
|
+
* Respects field-level permissions — strips restricted fields from export.
|
|
7
|
+
*
|
|
8
|
+
* Covers ~25 compliance frameworks including:
|
|
9
|
+
* GDPR Art 20, CCPA, CPRA, LGPD, APPI, PDPA (Singapore, Philippines),
|
|
10
|
+
* PoPI (South Africa), PIPEDA, and other data portability rights.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* // Export all data for a user (JSON):
|
|
14
|
+
* const export = await DataPortabilityExporter.export(User, {
|
|
15
|
+
* where: { id: userId },
|
|
16
|
+
* format: 'json',
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // Export in CSV format:
|
|
20
|
+
* const csv = await DataPortabilityExporter.export(User, {
|
|
21
|
+
* where: { id: userId },
|
|
22
|
+
* format: 'csv',
|
|
23
|
+
* include: [Order, Address], // also export associated models
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Export as NDJSON (newline-delimited JSON, better for large datasets):
|
|
27
|
+
* const ndjson = await DataPortabilityExporter.export(User, {
|
|
28
|
+
* where: { id: userId },
|
|
29
|
+
* format: 'ndjson',
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Stream export (for very large datasets):
|
|
33
|
+
* await DataPortabilityExporter.exportStream(User, {
|
|
34
|
+
* where: { userId },
|
|
35
|
+
* format: 'ndjson',
|
|
36
|
+
* onChunk: (chunk) => stream.write(chunk),
|
|
37
|
+
* });
|
|
38
|
+
*/
|
|
39
|
+
export type ExportFormat = 'json' | 'csv' | 'ndjson';
|
|
40
|
+
export interface ExportOptions {
|
|
41
|
+
/** Where clause to select records */
|
|
42
|
+
where?: Record<string, any>;
|
|
43
|
+
/** Include associated models */
|
|
44
|
+
include?: any[];
|
|
45
|
+
/** Output format. Default: 'json' */
|
|
46
|
+
format?: ExportFormat;
|
|
47
|
+
/** Roles whose fields should be excluded from export */
|
|
48
|
+
excludeForRole?: string;
|
|
49
|
+
/** Maximum records to export. Default: unlimited */
|
|
50
|
+
limit?: number;
|
|
51
|
+
/** Order clause */
|
|
52
|
+
order?: any[];
|
|
53
|
+
}
|
|
54
|
+
export interface StreamExportOptions extends ExportOptions {
|
|
55
|
+
/** Callback for each chunk of data */
|
|
56
|
+
onChunk: (chunk: string) => void | Promise<void>;
|
|
57
|
+
/** Batch size for streaming. Default: 100 */
|
|
58
|
+
batchSize?: number;
|
|
59
|
+
}
|
|
60
|
+
interface ExportResult {
|
|
61
|
+
format: ExportFormat;
|
|
62
|
+
content: string;
|
|
63
|
+
recordCount: number;
|
|
64
|
+
exportedAt: Date;
|
|
65
|
+
includedModels: string[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Main export function.
|
|
69
|
+
*/
|
|
70
|
+
export declare function exportData(Model: any, options: ExportOptions): Promise<ExportResult>;
|
|
71
|
+
/**
|
|
72
|
+
* Stream export for large datasets.
|
|
73
|
+
* Writes directly to a callback to avoid loading everything in memory.
|
|
74
|
+
*/
|
|
75
|
+
export declare function exportStream(Model: any, options: StreamExportOptions): Promise<{
|
|
76
|
+
recordCount: number;
|
|
77
|
+
exportedAt: Date;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* Generate a DSAR response object ready for API return.
|
|
81
|
+
*/
|
|
82
|
+
export declare function createDSARResponse(subjectId: string, models: Array<{
|
|
83
|
+
model: any;
|
|
84
|
+
where?: Record<string, any>;
|
|
85
|
+
}>, options?: {
|
|
86
|
+
format?: ExportFormat;
|
|
87
|
+
include?: any[];
|
|
88
|
+
}): Promise<{
|
|
89
|
+
subjectId: string;
|
|
90
|
+
requestedAt: Date;
|
|
91
|
+
exports: ExportResult[];
|
|
92
|
+
}>;
|
|
93
|
+
export declare class DataPortabilityExporter {
|
|
94
|
+
static export: typeof exportData;
|
|
95
|
+
static exportStream: typeof exportStream;
|
|
96
|
+
static createDSARResponse: typeof createDSARResponse;
|
|
97
|
+
}
|
|
98
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataRetentionPolicy
|
|
3
|
+
*
|
|
4
|
+
* Attach a mandatory data retention period to any model.
|
|
5
|
+
* Records older than the policy window are purged (deleted or anonymized)
|
|
6
|
+
* when DataRetentionPolicy.purge() is called.
|
|
7
|
+
*
|
|
8
|
+
* Covers ~80 compliance frameworks including:
|
|
9
|
+
* GDPR (storage limitation), SOX (7yr), MiFID II (5yr), SEC 17a-4,
|
|
10
|
+
* FINRA, HIPAA, PIPEDA, LGPD, APPI, PDPA variants, and more.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* // Set a 7-year retention on financial records:
|
|
14
|
+
* DataRetentionPolicy.set(FinancialRecord, {
|
|
15
|
+
* maxAge: { years: 7 },
|
|
16
|
+
* field: 'createdAt',
|
|
17
|
+
* onExpiry: 'delete',
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Purge expired records (call from a scheduled job):
|
|
21
|
+
* const { deleted } = await DataRetentionPolicy.purge(FinancialRecord, prorm);
|
|
22
|
+
*
|
|
23
|
+
* // Or purge all registered models:
|
|
24
|
+
* const report = await DataRetentionPolicy.purgeAll(prorm);
|
|
25
|
+
*/
|
|
26
|
+
export interface RetentionDuration {
|
|
27
|
+
years?: number;
|
|
28
|
+
months?: number;
|
|
29
|
+
days?: number;
|
|
30
|
+
hours?: number;
|
|
31
|
+
/** Direct millisecond override — takes precedence over the above. */
|
|
32
|
+
ms?: number;
|
|
33
|
+
}
|
|
34
|
+
export type RetentionExpiryMode = 'delete' | 'anonymize';
|
|
35
|
+
export interface RetentionPolicyOptions {
|
|
36
|
+
/**
|
|
37
|
+
* Maximum age of records to keep.
|
|
38
|
+
* Records older than this will be purged.
|
|
39
|
+
*/
|
|
40
|
+
maxAge: RetentionDuration;
|
|
41
|
+
/**
|
|
42
|
+
* The date field used to determine record age.
|
|
43
|
+
* Default: 'createdAt'
|
|
44
|
+
*/
|
|
45
|
+
field?: string;
|
|
46
|
+
/**
|
|
47
|
+
* What to do when a record expires.
|
|
48
|
+
* 'delete' — hard delete the row (default)
|
|
49
|
+
* 'anonymize' — set all string/non-id fields to null
|
|
50
|
+
*/
|
|
51
|
+
onExpiry?: RetentionExpiryMode;
|
|
52
|
+
/**
|
|
53
|
+
* Fields to preserve during anonymization (only relevant when onExpiry='anonymize').
|
|
54
|
+
* Primary key and the date field are always preserved.
|
|
55
|
+
*/
|
|
56
|
+
preserveFields?: string[];
|
|
57
|
+
}
|
|
58
|
+
export declare class DataRetentionPolicy {
|
|
59
|
+
/**
|
|
60
|
+
* Register a retention policy on a model.
|
|
61
|
+
* This does not start any background process — call purge() on a schedule.
|
|
62
|
+
*
|
|
63
|
+
* @param model - The model class
|
|
64
|
+
* @param options - Retention configuration
|
|
65
|
+
*/
|
|
66
|
+
static set(model: any, options: RetentionPolicyOptions): void;
|
|
67
|
+
/**
|
|
68
|
+
* Remove the retention policy from a model.
|
|
69
|
+
*/
|
|
70
|
+
static unset(model: any): void;
|
|
71
|
+
/**
|
|
72
|
+
* Get the registered policy for a model, or undefined.
|
|
73
|
+
*/
|
|
74
|
+
static get(model: any): RetentionPolicyOptions | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Purge expired records for a specific model.
|
|
77
|
+
*
|
|
78
|
+
* @param model - The model class
|
|
79
|
+
* @param prorm - The Prorm instance (for Op support)
|
|
80
|
+
* @returns Number of records deleted or anonymized
|
|
81
|
+
*/
|
|
82
|
+
static purge(model: any, prorm?: any): Promise<{
|
|
83
|
+
affected: number;
|
|
84
|
+
mode: string;
|
|
85
|
+
}>;
|
|
86
|
+
/**
|
|
87
|
+
* Purge all models that have a registered retention policy.
|
|
88
|
+
*
|
|
89
|
+
* @param prorm - The Prorm instance
|
|
90
|
+
* @returns A map of model name → purge result
|
|
91
|
+
*/
|
|
92
|
+
static purgeAll(prorm?: any): Promise<Map<string, {
|
|
93
|
+
affected: number;
|
|
94
|
+
mode: string;
|
|
95
|
+
}>>;
|
|
96
|
+
/**
|
|
97
|
+
* List all models with registered retention policies.
|
|
98
|
+
*/
|
|
99
|
+
static listPolicies(): Array<{
|
|
100
|
+
modelName: string;
|
|
101
|
+
options: RetentionPolicyOptions;
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* Calculate the cutoff date for a given retention duration.
|
|
105
|
+
* Useful for displaying "records older than X will be deleted on Y".
|
|
106
|
+
*/
|
|
107
|
+
static cutoffDate(maxAge: RetentionDuration): Date;
|
|
108
|
+
}
|