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,661 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Firewall / Query Allowlist
|
|
3
|
+
*
|
|
4
|
+
* A security layer that:
|
|
5
|
+
* - Blocks dangerous queries or commands
|
|
6
|
+
* - Allows only approved query patterns
|
|
7
|
+
* - Logs and alerts on blocked queries
|
|
8
|
+
* - Required for: OWASP, CIS Benchmarks compliance
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* // Create firewall instance
|
|
12
|
+
* const firewall = QueryFirewall.create(prorm, {
|
|
13
|
+
* mode: 'allowlist',
|
|
14
|
+
* onBlock: (block) => console.log('Blocked:', block.query),
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Add allowed patterns
|
|
18
|
+
* firewall.allow('^SELECT \\* FROM users WHERE');
|
|
19
|
+
* firewall.allow('^INSERT INTO orders');
|
|
20
|
+
*
|
|
21
|
+
* // Add blocked patterns (dangerous commands)
|
|
22
|
+
* firewall.block('^DROP (TABLE|DATABASE)');
|
|
23
|
+
* firewall.block('^TRUNCATE');
|
|
24
|
+
*
|
|
25
|
+
* // Check if query is allowed
|
|
26
|
+
* const result = firewall.checkQuery('SELECT * FROM users WHERE id = 1');
|
|
27
|
+
* if (!result.allowed) {
|
|
28
|
+
* console.log('Query blocked:', result.reason);
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* // Get blocked history
|
|
32
|
+
* const history = firewall.getBlockedHistory();
|
|
33
|
+
*/
|
|
34
|
+
import { Prorm } from '../prorm';
|
|
35
|
+
export type FirewallRuleType = 'allow' | 'block';
|
|
36
|
+
export type FirewallMode = 'allowlist' | 'blocklist' | 'strict';
|
|
37
|
+
/**
|
|
38
|
+
* Companion enum for {@link FirewallMode}. Provided for callers who prefer
|
|
39
|
+
* enum-based ergonomics (autocomplete, refactor-safety) over raw string
|
|
40
|
+
* literals. The underlying values are identical to the `FirewallMode`
|
|
41
|
+
* string literals, so either form may be used interchangeably.
|
|
42
|
+
*/
|
|
43
|
+
export declare enum FirewallModeEnum {
|
|
44
|
+
Allowlist = "allowlist",
|
|
45
|
+
Blocklist = "blocklist",
|
|
46
|
+
Strict = "strict"
|
|
47
|
+
}
|
|
48
|
+
export interface FirewallRule {
|
|
49
|
+
id: string;
|
|
50
|
+
type: FirewallRuleType;
|
|
51
|
+
pattern: string | RegExp;
|
|
52
|
+
description?: string;
|
|
53
|
+
createdAt: Date;
|
|
54
|
+
}
|
|
55
|
+
export interface QueryAnalysis {
|
|
56
|
+
query: string;
|
|
57
|
+
allowed: boolean;
|
|
58
|
+
reason?: string;
|
|
59
|
+
matchedRule?: string;
|
|
60
|
+
riskScore: number;
|
|
61
|
+
operation: QueryOperation;
|
|
62
|
+
tables: string[];
|
|
63
|
+
containsSensitiveData: boolean;
|
|
64
|
+
}
|
|
65
|
+
export type QueryOperation = 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE' | 'DROP' | 'TRUNCATE' | 'ALTER' | 'CREATE' | 'EXECUTE' | 'UNKNOWN';
|
|
66
|
+
export interface BlockedQuery {
|
|
67
|
+
id: string;
|
|
68
|
+
timestamp: Date;
|
|
69
|
+
query: string;
|
|
70
|
+
reason: string;
|
|
71
|
+
matchedRule: string;
|
|
72
|
+
operation: QueryOperation;
|
|
73
|
+
user?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface FirewallOptions {
|
|
76
|
+
/** Firewall mode: allowlist (only allow matching), blocklist (block matching), strict (both) */
|
|
77
|
+
mode?: FirewallMode | FirewallModeEnum;
|
|
78
|
+
/** Default blocked patterns for dangerous operations */
|
|
79
|
+
blockDangerousByDefault?: boolean;
|
|
80
|
+
/** Callback when a query is blocked */
|
|
81
|
+
onBlock?: (blocked: BlockedQuery) => void;
|
|
82
|
+
/** Callback when a query is allowed */
|
|
83
|
+
onAllow?: (analysis: QueryAnalysis) => void;
|
|
84
|
+
/** Maximum blocked queries to keep in history */
|
|
85
|
+
maxHistory?: number;
|
|
86
|
+
/** Log all queries (including allowed) */
|
|
87
|
+
logAllQueries?: boolean;
|
|
88
|
+
/** Enable case-insensitive matching */
|
|
89
|
+
caseInsensitive?: boolean;
|
|
90
|
+
/** Custom rules to apply at startup */
|
|
91
|
+
rules?: Array<{
|
|
92
|
+
type: FirewallRuleType;
|
|
93
|
+
pattern: string;
|
|
94
|
+
description?: string;
|
|
95
|
+
}>;
|
|
96
|
+
/** Active compliance frameworks for auto-configuration */
|
|
97
|
+
frameworks?: string[];
|
|
98
|
+
}
|
|
99
|
+
/** Exportable rule constants for custom configurations */
|
|
100
|
+
export declare const FIREWALL_RULES: {
|
|
101
|
+
readonly DESTRUCTIVE: readonly [{
|
|
102
|
+
readonly pattern: RegExp;
|
|
103
|
+
readonly description: "DROP object";
|
|
104
|
+
}, {
|
|
105
|
+
readonly pattern: RegExp;
|
|
106
|
+
readonly description: "TRUNCATE table";
|
|
107
|
+
}, {
|
|
108
|
+
readonly pattern: RegExp;
|
|
109
|
+
readonly description: "DELETE without WHERE clause";
|
|
110
|
+
}, {
|
|
111
|
+
readonly pattern: RegExp;
|
|
112
|
+
readonly description: "ALTER TABLE DROP";
|
|
113
|
+
}, {
|
|
114
|
+
readonly pattern: RegExp;
|
|
115
|
+
readonly description: "ALTER TABLE RENAME";
|
|
116
|
+
}, {
|
|
117
|
+
readonly pattern: RegExp;
|
|
118
|
+
readonly description: "DROP index";
|
|
119
|
+
}, {
|
|
120
|
+
readonly pattern: RegExp;
|
|
121
|
+
readonly description: "DROP trigger";
|
|
122
|
+
}, {
|
|
123
|
+
readonly pattern: RegExp;
|
|
124
|
+
readonly description: "DROP sequence";
|
|
125
|
+
}];
|
|
126
|
+
readonly SCHEMA_MODIFICATION: readonly [{
|
|
127
|
+
readonly pattern: RegExp;
|
|
128
|
+
readonly description: "CREATE table/database/schema";
|
|
129
|
+
}, {
|
|
130
|
+
readonly pattern: RegExp;
|
|
131
|
+
readonly description: "ADD column";
|
|
132
|
+
}, {
|
|
133
|
+
readonly pattern: RegExp;
|
|
134
|
+
readonly description: "MODIFY column";
|
|
135
|
+
}, {
|
|
136
|
+
readonly pattern: RegExp;
|
|
137
|
+
readonly description: "CHANGE column";
|
|
138
|
+
}, {
|
|
139
|
+
readonly pattern: RegExp;
|
|
140
|
+
readonly description: "ADD index";
|
|
141
|
+
}, {
|
|
142
|
+
readonly pattern: RegExp;
|
|
143
|
+
readonly description: "CREATE index";
|
|
144
|
+
}, {
|
|
145
|
+
readonly pattern: RegExp;
|
|
146
|
+
readonly description: "CREATE index";
|
|
147
|
+
}];
|
|
148
|
+
readonly PERMISSIONS: readonly [{
|
|
149
|
+
readonly pattern: RegExp;
|
|
150
|
+
readonly description: "GRANT permissions";
|
|
151
|
+
}, {
|
|
152
|
+
readonly pattern: RegExp;
|
|
153
|
+
readonly description: "REVOKE permissions";
|
|
154
|
+
}, {
|
|
155
|
+
readonly pattern: RegExp;
|
|
156
|
+
readonly description: "CREATE user";
|
|
157
|
+
}, {
|
|
158
|
+
readonly pattern: RegExp;
|
|
159
|
+
readonly description: "DROP user";
|
|
160
|
+
}, {
|
|
161
|
+
readonly pattern: RegExp;
|
|
162
|
+
readonly description: "ALTER user";
|
|
163
|
+
}, {
|
|
164
|
+
readonly pattern: RegExp;
|
|
165
|
+
readonly description: "SET password";
|
|
166
|
+
}];
|
|
167
|
+
readonly CODE_EXECUTION: readonly [{
|
|
168
|
+
readonly pattern: RegExp;
|
|
169
|
+
readonly description: "EXEC stored procedure";
|
|
170
|
+
}, {
|
|
171
|
+
readonly pattern: RegExp;
|
|
172
|
+
readonly description: "EXECUTE stored procedure";
|
|
173
|
+
}, {
|
|
174
|
+
readonly pattern: RegExp;
|
|
175
|
+
readonly description: "CALL procedure/function";
|
|
176
|
+
}, {
|
|
177
|
+
readonly pattern: RegExp;
|
|
178
|
+
readonly description: "xp_cmdshell (SQL Server)";
|
|
179
|
+
}, {
|
|
180
|
+
readonly pattern: RegExp;
|
|
181
|
+
readonly description: "sp_executesql (SQL Server)";
|
|
182
|
+
}, {
|
|
183
|
+
readonly pattern: RegExp;
|
|
184
|
+
readonly description: "CREATE function/procedure";
|
|
185
|
+
}, {
|
|
186
|
+
readonly pattern: RegExp;
|
|
187
|
+
readonly description: "DROP function/procedure";
|
|
188
|
+
}];
|
|
189
|
+
readonly FILE_OPERATIONS: readonly [{
|
|
190
|
+
readonly pattern: RegExp;
|
|
191
|
+
readonly description: "LOAD_FILE() - read file";
|
|
192
|
+
}, {
|
|
193
|
+
readonly pattern: RegExp;
|
|
194
|
+
readonly description: "INTO OUTFILE - write file";
|
|
195
|
+
}, {
|
|
196
|
+
readonly pattern: RegExp;
|
|
197
|
+
readonly description: "INTO DUMPFILE - write binary file";
|
|
198
|
+
}, {
|
|
199
|
+
readonly pattern: RegExp;
|
|
200
|
+
readonly description: "Path traversal attempt";
|
|
201
|
+
}, {
|
|
202
|
+
readonly pattern: RegExp;
|
|
203
|
+
readonly description: "Access /etc/passwd";
|
|
204
|
+
}, {
|
|
205
|
+
readonly pattern: RegExp;
|
|
206
|
+
readonly description: "Access Windows system32";
|
|
207
|
+
}];
|
|
208
|
+
readonly INFORMATION_GATHERING: readonly [{
|
|
209
|
+
readonly pattern: RegExp;
|
|
210
|
+
readonly description: "SHOW databases/tables/columns";
|
|
211
|
+
}, {
|
|
212
|
+
readonly pattern: RegExp;
|
|
213
|
+
readonly description: "DESCRIBE table";
|
|
214
|
+
}, {
|
|
215
|
+
readonly pattern: RegExp;
|
|
216
|
+
readonly description: "EXPLAIN query";
|
|
217
|
+
}, {
|
|
218
|
+
readonly pattern: RegExp;
|
|
219
|
+
readonly description: "Get database version";
|
|
220
|
+
}, {
|
|
221
|
+
readonly pattern: RegExp;
|
|
222
|
+
readonly description: "Get current user";
|
|
223
|
+
}, {
|
|
224
|
+
readonly pattern: RegExp;
|
|
225
|
+
readonly description: "Get current user";
|
|
226
|
+
}, {
|
|
227
|
+
readonly pattern: RegExp;
|
|
228
|
+
readonly description: "Get data directory";
|
|
229
|
+
}, {
|
|
230
|
+
readonly pattern: RegExp;
|
|
231
|
+
readonly description: "Access information_schema";
|
|
232
|
+
}];
|
|
233
|
+
readonly TRANSACTION_CONTROL: readonly [{
|
|
234
|
+
readonly pattern: RegExp;
|
|
235
|
+
readonly description: "BEGIN transaction";
|
|
236
|
+
}, {
|
|
237
|
+
readonly pattern: RegExp;
|
|
238
|
+
readonly description: "START TRANSACTION";
|
|
239
|
+
}, {
|
|
240
|
+
readonly pattern: RegExp;
|
|
241
|
+
readonly description: "COMMIT transaction";
|
|
242
|
+
}, {
|
|
243
|
+
readonly pattern: RegExp;
|
|
244
|
+
readonly description: "ROLLBACK transaction";
|
|
245
|
+
}, {
|
|
246
|
+
readonly pattern: RegExp;
|
|
247
|
+
readonly description: "SET TRANSACTION ISOLATION";
|
|
248
|
+
}];
|
|
249
|
+
readonly BULK_OPERATIONS: readonly [{
|
|
250
|
+
readonly pattern: RegExp;
|
|
251
|
+
readonly description: "BULK INSERT";
|
|
252
|
+
}, {
|
|
253
|
+
readonly pattern: RegExp;
|
|
254
|
+
readonly description: "Bulk insert with wildcard";
|
|
255
|
+
}];
|
|
256
|
+
readonly REMOTE_OPERATIONS: readonly [{
|
|
257
|
+
readonly pattern: RegExp;
|
|
258
|
+
readonly description: "Cross-database query";
|
|
259
|
+
}, {
|
|
260
|
+
readonly pattern: RegExp;
|
|
261
|
+
readonly description: "Remote execution (Oracle)";
|
|
262
|
+
}, {
|
|
263
|
+
readonly pattern: RegExp;
|
|
264
|
+
readonly description: "OPENQUERY - linked server";
|
|
265
|
+
}, {
|
|
266
|
+
readonly pattern: RegExp;
|
|
267
|
+
readonly description: "OPENDATASOURCE";
|
|
268
|
+
}];
|
|
269
|
+
readonly CRYPTO_OPERATIONS: readonly [{
|
|
270
|
+
readonly pattern: RegExp;
|
|
271
|
+
readonly description: "CREATE asymmetric key";
|
|
272
|
+
}, {
|
|
273
|
+
readonly pattern: RegExp;
|
|
274
|
+
readonly description: "CREATE symmetric key";
|
|
275
|
+
}, {
|
|
276
|
+
readonly pattern: RegExp;
|
|
277
|
+
readonly description: "CREATE certificate";
|
|
278
|
+
}];
|
|
279
|
+
readonly BACKUP_OPERATIONS: readonly [{
|
|
280
|
+
readonly pattern: RegExp;
|
|
281
|
+
readonly description: "BACKUP database/log";
|
|
282
|
+
}, {
|
|
283
|
+
readonly pattern: RegExp;
|
|
284
|
+
readonly description: "RESTORE database/log";
|
|
285
|
+
}, {
|
|
286
|
+
readonly pattern: RegExp;
|
|
287
|
+
readonly description: "mysqldump command";
|
|
288
|
+
}, {
|
|
289
|
+
readonly pattern: RegExp;
|
|
290
|
+
readonly description: "pg_dump command";
|
|
291
|
+
}];
|
|
292
|
+
};
|
|
293
|
+
/** OWASP Top 10 SQL Injection patterns */
|
|
294
|
+
export declare const OWASP_SQL_INJECTION_PATTERNS: RegExp[];
|
|
295
|
+
/** CIS Benchmarks database security rules */
|
|
296
|
+
export declare const CIS_BENCHMARK_RULES: {
|
|
297
|
+
pattern: RegExp;
|
|
298
|
+
description: string;
|
|
299
|
+
}[];
|
|
300
|
+
/** PCI DSS compliance rules */
|
|
301
|
+
export declare const PCI_DSS_RULES: {
|
|
302
|
+
pattern: RegExp;
|
|
303
|
+
description: string;
|
|
304
|
+
}[];
|
|
305
|
+
/** HIPAA compliance rules */
|
|
306
|
+
export declare const HIPAA_RULES: {
|
|
307
|
+
pattern: RegExp;
|
|
308
|
+
description: string;
|
|
309
|
+
}[];
|
|
310
|
+
/** SOX compliance rules */
|
|
311
|
+
export declare const SOX_RULES: {
|
|
312
|
+
pattern: RegExp;
|
|
313
|
+
description: string;
|
|
314
|
+
}[];
|
|
315
|
+
/** NIST CSF rules */
|
|
316
|
+
export declare const NIST_CSF_RULES: {
|
|
317
|
+
pattern: RegExp;
|
|
318
|
+
description: string;
|
|
319
|
+
}[];
|
|
320
|
+
/** PostgreSQL-specific dangerous patterns */
|
|
321
|
+
export declare const POSTGRESQL_RULES: {
|
|
322
|
+
pattern: RegExp;
|
|
323
|
+
description: string;
|
|
324
|
+
}[];
|
|
325
|
+
/** MySQL-specific dangerous patterns */
|
|
326
|
+
export declare const MYSQL_RULES: {
|
|
327
|
+
pattern: RegExp;
|
|
328
|
+
description: string;
|
|
329
|
+
}[];
|
|
330
|
+
/** MariaDB-specific dangerous patterns */
|
|
331
|
+
export declare const MARIADB_RULES: {
|
|
332
|
+
pattern: RegExp;
|
|
333
|
+
description: string;
|
|
334
|
+
}[];
|
|
335
|
+
/** Microsoft SQL Server-specific dangerous patterns */
|
|
336
|
+
export declare const MSSQL_RULES: {
|
|
337
|
+
pattern: RegExp;
|
|
338
|
+
description: string;
|
|
339
|
+
}[];
|
|
340
|
+
/** Oracle-specific dangerous patterns */
|
|
341
|
+
export declare const ORACLE_RULES: {
|
|
342
|
+
pattern: RegExp;
|
|
343
|
+
description: string;
|
|
344
|
+
}[];
|
|
345
|
+
/** SQLite-specific dangerous patterns */
|
|
346
|
+
export declare const SQLITE_RULES: {
|
|
347
|
+
pattern: RegExp;
|
|
348
|
+
description: string;
|
|
349
|
+
}[];
|
|
350
|
+
/** Database type union */
|
|
351
|
+
export type DatabaseType = 'postgresql' | 'mysql' | 'mariadb' | 'mssql' | 'oracle' | 'sqlite';
|
|
352
|
+
/** All database-specific rules */
|
|
353
|
+
export declare const DATABASE_RULES: Record<DatabaseType, readonly {
|
|
354
|
+
pattern: RegExp;
|
|
355
|
+
description: string;
|
|
356
|
+
}[]>;
|
|
357
|
+
export declare class QueryFirewall {
|
|
358
|
+
private prorm;
|
|
359
|
+
private options;
|
|
360
|
+
private allowRules;
|
|
361
|
+
private blockRules;
|
|
362
|
+
private blockedHistory;
|
|
363
|
+
private queryLog;
|
|
364
|
+
private originalQuery;
|
|
365
|
+
private isActive;
|
|
366
|
+
private static instances;
|
|
367
|
+
private constructor();
|
|
368
|
+
/**
|
|
369
|
+
* Create a new firewall instance (factory method)
|
|
370
|
+
*/
|
|
371
|
+
static create(prorm: Prorm, options?: FirewallOptions): QueryFirewall;
|
|
372
|
+
/**
|
|
373
|
+
* Get existing instance for a Prorm instance
|
|
374
|
+
*/
|
|
375
|
+
static getInstance(prorm: Prorm): QueryFirewall | undefined;
|
|
376
|
+
/**
|
|
377
|
+
* Initialize default rules
|
|
378
|
+
*/
|
|
379
|
+
private initializeRules;
|
|
380
|
+
/**
|
|
381
|
+
* Add an allowed pattern
|
|
382
|
+
*/
|
|
383
|
+
allow(pattern: string | RegExp, description?: string): FirewallRule;
|
|
384
|
+
/**
|
|
385
|
+
* Add a blocked pattern
|
|
386
|
+
*/
|
|
387
|
+
block(pattern: string | RegExp, description?: string): FirewallRule;
|
|
388
|
+
/**
|
|
389
|
+
* Remove a rule by ID
|
|
390
|
+
*/
|
|
391
|
+
removeRule(ruleId: string): boolean;
|
|
392
|
+
/**
|
|
393
|
+
* Check if a query is allowed
|
|
394
|
+
*/
|
|
395
|
+
checkQuery(sql: string): QueryAnalysis;
|
|
396
|
+
/**
|
|
397
|
+
* Analyze a query without applying firewall rules
|
|
398
|
+
*/
|
|
399
|
+
analyzeQuery(sql: string): QueryAnalysis;
|
|
400
|
+
/**
|
|
401
|
+
* Match a pattern against a query
|
|
402
|
+
*/
|
|
403
|
+
private matchPattern;
|
|
404
|
+
/**
|
|
405
|
+
* Get blocked query history
|
|
406
|
+
*/
|
|
407
|
+
getBlockedHistory(options?: {
|
|
408
|
+
since?: Date;
|
|
409
|
+
operation?: QueryOperation;
|
|
410
|
+
limit?: number;
|
|
411
|
+
}): BlockedQuery[];
|
|
412
|
+
/**
|
|
413
|
+
* Get query log (if logging enabled)
|
|
414
|
+
*/
|
|
415
|
+
getQueryLog(limit?: number): QueryAnalysis[];
|
|
416
|
+
/**
|
|
417
|
+
* Get all rules
|
|
418
|
+
*/
|
|
419
|
+
getRules(): {
|
|
420
|
+
allowRules: FirewallRule[];
|
|
421
|
+
blockRules: FirewallRule[];
|
|
422
|
+
};
|
|
423
|
+
/**
|
|
424
|
+
* Get statistics
|
|
425
|
+
*/
|
|
426
|
+
getStats(): {
|
|
427
|
+
totalBlocked: number;
|
|
428
|
+
totalAllowed: number;
|
|
429
|
+
blockedByOperation: Record<QueryOperation, number>;
|
|
430
|
+
allowRulesCount: number;
|
|
431
|
+
blockRulesCount: number;
|
|
432
|
+
isActive: boolean;
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* Apply CIS Benchmarks rules
|
|
436
|
+
*/
|
|
437
|
+
applyCisRules(): void;
|
|
438
|
+
/**
|
|
439
|
+
* Apply PCI DSS rules
|
|
440
|
+
*/
|
|
441
|
+
applyPciRules(): void;
|
|
442
|
+
/**
|
|
443
|
+
* Apply HIPAA rules
|
|
444
|
+
*/
|
|
445
|
+
applyHipaaRules(): void;
|
|
446
|
+
/**
|
|
447
|
+
* Apply SOX rules
|
|
448
|
+
*/
|
|
449
|
+
applySoxRules(): void;
|
|
450
|
+
/**
|
|
451
|
+
* Apply NIST CSF rules
|
|
452
|
+
*/
|
|
453
|
+
applyNistRules(): void;
|
|
454
|
+
/**
|
|
455
|
+
* Apply OWASP SQL Injection patterns
|
|
456
|
+
*/
|
|
457
|
+
applyOwaspRules(): void;
|
|
458
|
+
/**
|
|
459
|
+
* Apply all destructive operation rules
|
|
460
|
+
*/
|
|
461
|
+
applyDestructiveRules(): void;
|
|
462
|
+
/**
|
|
463
|
+
* Apply all schema modification rules
|
|
464
|
+
*/
|
|
465
|
+
applySchemaRules(): void;
|
|
466
|
+
/**
|
|
467
|
+
* Apply all permission rules
|
|
468
|
+
*/
|
|
469
|
+
applyPermissionRules(): void;
|
|
470
|
+
/**
|
|
471
|
+
* Apply all file operation rules
|
|
472
|
+
*/
|
|
473
|
+
applyFileRules(): void;
|
|
474
|
+
/**
|
|
475
|
+
* Apply all information gathering rules
|
|
476
|
+
*/
|
|
477
|
+
applyInfoGatheringRules(): void;
|
|
478
|
+
/**
|
|
479
|
+
* Apply all code execution rules
|
|
480
|
+
*/
|
|
481
|
+
applyCodeExecutionRules(): void;
|
|
482
|
+
/**
|
|
483
|
+
* Apply all transaction control rules
|
|
484
|
+
*/
|
|
485
|
+
applyTransactionRules(): void;
|
|
486
|
+
/**
|
|
487
|
+
* Apply all remote operation rules
|
|
488
|
+
*/
|
|
489
|
+
applyRemoteOperationRules(): void;
|
|
490
|
+
/**
|
|
491
|
+
* Apply all crypto operation rules
|
|
492
|
+
*/
|
|
493
|
+
applyCryptoRules(): void;
|
|
494
|
+
/**
|
|
495
|
+
* Apply all backup operation rules
|
|
496
|
+
*/
|
|
497
|
+
applyBackupRules(): void;
|
|
498
|
+
/**
|
|
499
|
+
* Apply database-specific rules
|
|
500
|
+
* @param database - 'postgresql' | 'mysql' | 'mariadb' | 'mssql' | 'oracle' | 'sqlite'
|
|
501
|
+
*/
|
|
502
|
+
applyDatabaseRules(database: DatabaseType): void;
|
|
503
|
+
/**
|
|
504
|
+
* Apply all predefined security rules
|
|
505
|
+
*/
|
|
506
|
+
applyAllSecurityRules(): void;
|
|
507
|
+
/**
|
|
508
|
+
* Apply predefined compliance framework rules
|
|
509
|
+
* @param framework - 'CIS', 'PCI', 'HIPAA', 'SOX', 'NIST', 'OWASP'
|
|
510
|
+
*/
|
|
511
|
+
applyFrameworkRules(framework: 'CIS' | 'PCI' | 'HIPAA' | 'SOX' | 'NIST' | 'OWASP'): void;
|
|
512
|
+
/**
|
|
513
|
+
* Start the firewall - intercept queries
|
|
514
|
+
*/
|
|
515
|
+
start(): void;
|
|
516
|
+
/**
|
|
517
|
+
* Stop the firewall - restore original query method
|
|
518
|
+
*/
|
|
519
|
+
stop(): void;
|
|
520
|
+
/**
|
|
521
|
+
* Check if firewall is active
|
|
522
|
+
*/
|
|
523
|
+
isFirewallActive(): boolean;
|
|
524
|
+
/**
|
|
525
|
+
* Clear blocked history
|
|
526
|
+
*/
|
|
527
|
+
clearHistory(): void;
|
|
528
|
+
/**
|
|
529
|
+
* Clear query log
|
|
530
|
+
*/
|
|
531
|
+
clearLog(): void;
|
|
532
|
+
/**
|
|
533
|
+
* Export rules for audit purposes
|
|
534
|
+
*/
|
|
535
|
+
exportRules(): string;
|
|
536
|
+
/**
|
|
537
|
+
* Import rules from JSON
|
|
538
|
+
*/
|
|
539
|
+
importRules(json: string): void;
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Analyze a query for security issues (static method)
|
|
543
|
+
*/
|
|
544
|
+
export declare function analyzeQuerySecurity(query: string): {
|
|
545
|
+
isSQLInjection: boolean;
|
|
546
|
+
isDangerousOperation: boolean;
|
|
547
|
+
riskLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
548
|
+
detectedPatterns: string[];
|
|
549
|
+
};
|
|
550
|
+
/**
|
|
551
|
+
* Get recommended firewall rules for compliance frameworks
|
|
552
|
+
*/
|
|
553
|
+
export declare function getRecommendedRules(frameworks: string[]): Array<{
|
|
554
|
+
type: FirewallRuleType;
|
|
555
|
+
pattern: string;
|
|
556
|
+
description: string;
|
|
557
|
+
}>;
|
|
558
|
+
export interface FirewallRuleDecoratorOptions {
|
|
559
|
+
/** Database type for database-specific rules */
|
|
560
|
+
database?: DatabaseType;
|
|
561
|
+
/** Additional rules to apply */
|
|
562
|
+
rules?: Array<{
|
|
563
|
+
pattern: string | RegExp;
|
|
564
|
+
description: string;
|
|
565
|
+
}>;
|
|
566
|
+
/** Block all Destructive operations */
|
|
567
|
+
blockDestructive?: boolean;
|
|
568
|
+
/** Block all Schema modifications */
|
|
569
|
+
blockSchemaModification?: boolean;
|
|
570
|
+
/** Block all Permission changes */
|
|
571
|
+
blockPermissions?: boolean;
|
|
572
|
+
/** Block all File operations */
|
|
573
|
+
blockFileOperations?: boolean;
|
|
574
|
+
/** Block all Information gathering */
|
|
575
|
+
blockInfoGathering?: boolean;
|
|
576
|
+
/** Block all Code execution */
|
|
577
|
+
blockCodeExecution?: boolean;
|
|
578
|
+
/** Block all Transaction control */
|
|
579
|
+
blockTransactions?: boolean;
|
|
580
|
+
/** Block all Remote operations */
|
|
581
|
+
blockRemoteOperations?: boolean;
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Decorator to apply firewall rules to a model class
|
|
585
|
+
*
|
|
586
|
+
* @example
|
|
587
|
+
* // Block destructive operations and file operations on a model
|
|
588
|
+
* @FirewallRules({
|
|
589
|
+
* blockDestructive: true,
|
|
590
|
+
* blockFileOperations: true,
|
|
591
|
+
* })
|
|
592
|
+
* class SensitiveData extends Model { ... }
|
|
593
|
+
*
|
|
594
|
+
* // Apply database-specific rules
|
|
595
|
+
* @FirewallRules({
|
|
596
|
+
* database: 'postgresql',
|
|
597
|
+
* blockCodeExecution: true,
|
|
598
|
+
* })
|
|
599
|
+
* class UserDefinedFunction extends Model { ... }
|
|
600
|
+
*
|
|
601
|
+
* // Custom rules
|
|
602
|
+
* @FirewallRules({
|
|
603
|
+
* rules: [
|
|
604
|
+
* { pattern: /^SELECT\s+FROM\s+logs/i, description: 'Block log access' },
|
|
605
|
+
* ],
|
|
606
|
+
* })
|
|
607
|
+
* class AuditLog extends Model { ... }
|
|
608
|
+
*/
|
|
609
|
+
export declare function FirewallRules(options?: FirewallRuleDecoratorOptions): (target: any) => void;
|
|
610
|
+
/**
|
|
611
|
+
* Decorator for PostgreSQL-specific firewall rules
|
|
612
|
+
*
|
|
613
|
+
* @example
|
|
614
|
+
* @PostgreSQLFirewall()
|
|
615
|
+
* class PostgresSensitive extends Model { ... }
|
|
616
|
+
*/
|
|
617
|
+
export declare function PostgreSQLFirewall(): (target: any) => void;
|
|
618
|
+
/**
|
|
619
|
+
* Decorator for MySQL-specific firewall rules
|
|
620
|
+
*
|
|
621
|
+
* @example
|
|
622
|
+
* @MySQLFirewall()
|
|
623
|
+
* class MySQLSensitive extends Model { ... }
|
|
624
|
+
*/
|
|
625
|
+
export declare function MySQLFirewall(): (target: any) => void;
|
|
626
|
+
/**
|
|
627
|
+
* Decorator for MariaDB-specific firewall rules
|
|
628
|
+
*
|
|
629
|
+
* @example
|
|
630
|
+
* @MariaDBFirewall()
|
|
631
|
+
* class MariaDBSensitive extends Model { ... }
|
|
632
|
+
*/
|
|
633
|
+
export declare function MariaDBFirewall(): (target: any) => void;
|
|
634
|
+
/**
|
|
635
|
+
* Decorator for SQL Server-specific firewall rules
|
|
636
|
+
*
|
|
637
|
+
* @example
|
|
638
|
+
* @MSSQLFirewall()
|
|
639
|
+
* class MSSQLSensitive extends Model { ... }
|
|
640
|
+
*/
|
|
641
|
+
export declare function MSSQLFirewall(): (target: any) => void;
|
|
642
|
+
/**
|
|
643
|
+
* Decorator for Oracle-specific firewall rules
|
|
644
|
+
*
|
|
645
|
+
* @example
|
|
646
|
+
* @OracleFirewall()
|
|
647
|
+
* class OracleSensitive extends Model { ... }
|
|
648
|
+
*/
|
|
649
|
+
export declare function OracleFirewall(): (target: any) => void;
|
|
650
|
+
/**
|
|
651
|
+
* Decorator for SQLite-specific firewall rules
|
|
652
|
+
*
|
|
653
|
+
* @example
|
|
654
|
+
* @SQLiteFirewall()
|
|
655
|
+
* class SQLiteSensitive extends Model { ... }
|
|
656
|
+
*/
|
|
657
|
+
export declare function SQLiteFirewall(): (target: any) => void;
|
|
658
|
+
/**
|
|
659
|
+
* Apply firewall rules from a decorated model to a firewall instance
|
|
660
|
+
*/
|
|
661
|
+
export declare function applyFirewallRulesToModel(model: any, firewall: QueryFirewall): void;
|