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,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module diagrams
|
|
3
|
+
*
|
|
4
|
+
* SVG diagram generators for ORM models and ER schemas.
|
|
5
|
+
*
|
|
6
|
+
* ─── Quick-start ────────────────────────────────────────────────────────
|
|
7
|
+
*
|
|
8
|
+
* 1) Single-model card
|
|
9
|
+
* ─────────────────
|
|
10
|
+
* import { ModelDiagram } from './diagrams';
|
|
11
|
+
*
|
|
12
|
+
* const diag = new ModelDiagram({
|
|
13
|
+
* name: 'User',
|
|
14
|
+
* tableName: 'users',
|
|
15
|
+
* fields: {
|
|
16
|
+
* id: { type: 'INTEGER', primaryKey: true, autoIncrement: true },
|
|
17
|
+
* name: { type: 'VARCHAR(100)', allowNull: false },
|
|
18
|
+
* email: { type: 'VARCHAR(255)', unique: true, allowNull: false },
|
|
19
|
+
* role: { type: 'ENUM', enum: ['admin','user'], defaultValue: 'user' },
|
|
20
|
+
* createdAt: { type: 'DATE' },
|
|
21
|
+
* },
|
|
22
|
+
* associations: [
|
|
23
|
+
* { type: 'hasMany', target: 'Post', foreignKey: 'userId', as: 'posts' },
|
|
24
|
+
* { type: 'hasOne', target: 'Profile', foreignKey: 'userId' },
|
|
25
|
+
* { type: 'belongsToMany', target: 'Team', through: 'UserTeam' },
|
|
26
|
+
* ],
|
|
27
|
+
* timestamps: true,
|
|
28
|
+
* comment: 'Application users',
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* diag.save('./diagrams/User.svg');
|
|
32
|
+
* // or get SVG string: const svg = diag.generate();
|
|
33
|
+
*
|
|
34
|
+
*
|
|
35
|
+
* 2) Full ER diagram
|
|
36
|
+
* ────────────────
|
|
37
|
+
* import { ERDiagram } from './diagrams';
|
|
38
|
+
*
|
|
39
|
+
* const er = new ERDiagram({
|
|
40
|
+
* title: 'E-Commerce Schema',
|
|
41
|
+
* columns: 3,
|
|
42
|
+
* models: [ userModel, productModel, orderModel, orderItemModel ],
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* er.save('./diagrams/schema.svg');
|
|
46
|
+
*
|
|
47
|
+
*
|
|
48
|
+
* 3) CLI
|
|
49
|
+
* ────
|
|
50
|
+
* # Single model (from JSON spec)
|
|
51
|
+
* cli diagram:model --file ./User.json --out ./diagrams/User.svg
|
|
52
|
+
*
|
|
53
|
+
* # Full ER diagram (from schema JSON)
|
|
54
|
+
* cli diagram:er --file ./schema.json --out ./diagrams/er.svg
|
|
55
|
+
*
|
|
56
|
+
* # Inline model
|
|
57
|
+
* cli diagram:model --name User \
|
|
58
|
+
* --fields "id:INTEGER:pk,name:VARCHAR(100):nn,email:VARCHAR(255):uq nn" \
|
|
59
|
+
* --assoc "hasMany:Post:userId" \
|
|
60
|
+
* --out ./diagrams/User.svg
|
|
61
|
+
*
|
|
62
|
+
* ─── JSON spec format ───────────────────────────────────────────────────
|
|
63
|
+
*
|
|
64
|
+
* Single model file:
|
|
65
|
+
* {
|
|
66
|
+
* "name": "User",
|
|
67
|
+
* "tableName": "users",
|
|
68
|
+
* "fields": {
|
|
69
|
+
* "id": { "type": "INTEGER", "primaryKey": true, "autoIncrement": true },
|
|
70
|
+
* "email": { "type": "VARCHAR(255)", "unique": true, "allowNull": false }
|
|
71
|
+
* },
|
|
72
|
+
* "associations": [
|
|
73
|
+
* { "type": "hasMany", "target": "Post", "foreignKey": "userId" }
|
|
74
|
+
* ],
|
|
75
|
+
* "timestamps": true
|
|
76
|
+
* }
|
|
77
|
+
*
|
|
78
|
+
* ER schema file:
|
|
79
|
+
* {
|
|
80
|
+
* "title": "My App Schema",
|
|
81
|
+
* "columns": 3,
|
|
82
|
+
* "models": [ <model-spec>, <model-spec>, … ]
|
|
83
|
+
* }
|
|
84
|
+
*/
|
|
85
|
+
export { ModelDiagram } from './model-diagram';
|
|
86
|
+
export type { ModelDiagramOptions, FieldDefinition, AssociationDefinition } from './model-diagram';
|
|
87
|
+
export { ERDiagram } from './er-diagram';
|
|
88
|
+
export type { ERDiagramOptions } from './er-diagram';
|
|
89
|
+
export { MigrationDiagram } from './migration-diagram';
|
|
90
|
+
export type { MigrationDiagramOptions, TableChange, ColumnChange } from './migration-diagram';
|
|
91
|
+
export { ClassDiagram } from './class-diagram';
|
|
92
|
+
export type { ClassDiagramOptions, UmlClass, UmlAttribute, UmlMethod } from './class-diagram';
|
|
93
|
+
export { RelationalDiagram } from './relational-diagram';
|
|
94
|
+
export type { RelationalDiagramOptions, RelEntity, RelColumn, RelRelationship, } from './relational-diagram';
|
|
95
|
+
export { SequenceDiagram } from './sequence-diagram';
|
|
96
|
+
export type { SequenceDiagramOptions, SeqParticipant, SeqMessage } from './sequence-diagram';
|
|
97
|
+
export { StateDiagram } from './state-diagram';
|
|
98
|
+
export type { StateDiagramOptions, StateNode, StateTransition } from './state-diagram';
|
|
99
|
+
export { DependencyDiagram } from './dependency-diagram';
|
|
100
|
+
export type { DependencyDiagramOptions } from './dependency-diagram';
|
|
101
|
+
export { SchemaDocDiagram } from './schemadoc-diagram';
|
|
102
|
+
export type { SchemaDocDiagramOptions, DocTable, DocColumn } from './schemadoc-diagram';
|
|
103
|
+
export { IndexDiagram } from './index-diagram';
|
|
104
|
+
export type { IndexDiagramOptions, IdxIndex, IdxColumn } from './index-diagram';
|
|
105
|
+
export { FlowDiagram } from './flow-diagram';
|
|
106
|
+
export type { FlowDiagramOptions, FlowNode, FlowEdge } from './flow-diagram';
|
|
107
|
+
export { TreeDiagram } from './tree-diagram';
|
|
108
|
+
export type { TreeDiagramOptions, TreeNode } from './tree-diagram';
|
|
109
|
+
export { ChenDiagram } from './chen-diagram';
|
|
110
|
+
export type { ChenDiagramOptions, ChenEntity, ChenAttribute, ChenRelationship, } from './chen-diagram';
|
|
111
|
+
export { PackageDiagram } from './package-diagram';
|
|
112
|
+
export type { PackageDiagramOptions, PackageBox, PackageMember, PackageDependency, } from './package-diagram';
|
|
113
|
+
export { GanttDiagram } from './gantt-diagram';
|
|
114
|
+
export type { GanttDiagramOptions, GanttTask } from './gantt-diagram';
|
|
115
|
+
export { SvgDocument, El } from './svg-dom';
|
|
116
|
+
export { resolveAccent, resolveTheme, rotatedPalettes, accent2Of, ACCENT_PALETTES, INDUSTRY, FONTS, FONT_IMPORT, BADGE_TINTS, } from './palette';
|
|
117
|
+
export type { AccentPalette, ThemeColors } from './palette';
|
|
118
|
+
import { ModelDiagramOptions } from './model-diagram';
|
|
119
|
+
import { ERDiagramOptions } from './er-diagram';
|
|
120
|
+
/**
|
|
121
|
+
* Create and immediately save a model SVG diagram.
|
|
122
|
+
*
|
|
123
|
+
* @param options Model definition
|
|
124
|
+
* @param outPath Output SVG file path
|
|
125
|
+
* @returns Resolved output path
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* generateModelDiagram(
|
|
129
|
+
* { name:'User', fields:{ id:{type:'INTEGER',primaryKey:true} } },
|
|
130
|
+
* './diagrams/User.svg'
|
|
131
|
+
* );
|
|
132
|
+
*/
|
|
133
|
+
export declare function generateModelDiagram(options: ModelDiagramOptions, outPath: string): string;
|
|
134
|
+
/**
|
|
135
|
+
* Create and immediately save an ER diagram.
|
|
136
|
+
*
|
|
137
|
+
* @param options ER diagram options (title + models array)
|
|
138
|
+
* @param outPath Output SVG file path
|
|
139
|
+
* @returns Resolved output path
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* generateERDiagram(
|
|
143
|
+
* { title:'My Schema', models:[userDef, postDef] },
|
|
144
|
+
* './diagrams/schema.svg'
|
|
145
|
+
* );
|
|
146
|
+
*/
|
|
147
|
+
export declare function generateERDiagram(options: ERDiagramOptions, outPath: string): string;
|
|
148
|
+
/**
|
|
149
|
+
* Load a model definition from a JSON file and generate its SVG diagram.
|
|
150
|
+
*/
|
|
151
|
+
export declare function generateModelDiagramFromFile(specPath: string, outPath?: string): string;
|
|
152
|
+
/**
|
|
153
|
+
* Load an ER schema from a JSON file and generate the SVG diagram.
|
|
154
|
+
*/
|
|
155
|
+
export declare function generateERDiagramFromFile(schemaPath: string, outPath?: string): string;
|
package/dist/diagrams/index.js
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
* }
|
|
85
85
|
*/
|
|
86
86
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
87
|
-
exports.ACCENT_PALETTES = exports.rotatedPalettes = exports.resolveTheme = exports.resolveAccent = exports.El = exports.SvgDocument = exports.GanttDiagram = exports.PackageDiagram = exports.ChenDiagram = exports.TreeDiagram = exports.FlowDiagram = exports.IndexDiagram = exports.SchemaDocDiagram = exports.DependencyDiagram = exports.StateDiagram = exports.SequenceDiagram = exports.RelationalDiagram = exports.ClassDiagram = exports.MigrationDiagram = exports.ERDiagram = exports.ModelDiagram = void 0;
|
|
87
|
+
exports.BADGE_TINTS = exports.FONT_IMPORT = exports.FONTS = exports.INDUSTRY = exports.ACCENT_PALETTES = exports.accent2Of = exports.rotatedPalettes = exports.resolveTheme = exports.resolveAccent = exports.El = exports.SvgDocument = exports.GanttDiagram = exports.PackageDiagram = exports.ChenDiagram = exports.TreeDiagram = exports.FlowDiagram = exports.IndexDiagram = exports.SchemaDocDiagram = exports.DependencyDiagram = exports.StateDiagram = exports.SequenceDiagram = exports.RelationalDiagram = exports.ClassDiagram = exports.MigrationDiagram = exports.ERDiagram = exports.ModelDiagram = void 0;
|
|
88
88
|
exports.generateModelDiagram = generateModelDiagram;
|
|
89
89
|
exports.generateERDiagram = generateERDiagram;
|
|
90
90
|
exports.generateModelDiagramFromFile = generateModelDiagramFromFile;
|
|
@@ -128,7 +128,13 @@ var palette_1 = require("./palette");
|
|
|
128
128
|
Object.defineProperty(exports, "resolveAccent", { enumerable: true, get: function () { return palette_1.resolveAccent; } });
|
|
129
129
|
Object.defineProperty(exports, "resolveTheme", { enumerable: true, get: function () { return palette_1.resolveTheme; } });
|
|
130
130
|
Object.defineProperty(exports, "rotatedPalettes", { enumerable: true, get: function () { return palette_1.rotatedPalettes; } });
|
|
131
|
+
Object.defineProperty(exports, "accent2Of", { enumerable: true, get: function () { return palette_1.accent2Of; } });
|
|
131
132
|
Object.defineProperty(exports, "ACCENT_PALETTES", { enumerable: true, get: function () { return palette_1.ACCENT_PALETTES; } });
|
|
133
|
+
// Industry design-system tokens
|
|
134
|
+
Object.defineProperty(exports, "INDUSTRY", { enumerable: true, get: function () { return palette_1.INDUSTRY; } });
|
|
135
|
+
Object.defineProperty(exports, "FONTS", { enumerable: true, get: function () { return palette_1.FONTS; } });
|
|
136
|
+
Object.defineProperty(exports, "FONT_IMPORT", { enumerable: true, get: function () { return palette_1.FONT_IMPORT; } });
|
|
137
|
+
Object.defineProperty(exports, "BADGE_TINTS", { enumerable: true, get: function () { return palette_1.BADGE_TINTS; } });
|
|
132
138
|
// ─── Convenience factory functions ──────────────────────────────────────────
|
|
133
139
|
const model_diagram_2 = require("./model-diagram");
|
|
134
140
|
const er_diagram_2 = require("./er-diagram");
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MigrationDiagram — generates an SVG showing database schema changes.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Shows tables with their columns (before/after or just new state)
|
|
6
|
+
* - Color-coded change indicators: green (added), red (removed), yellow (modified)
|
|
7
|
+
* - Migration metadata header with timestamp and description
|
|
8
|
+
* - Support for multiple migration steps
|
|
9
|
+
* - Compact field rows with type badges
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* const diag = new MigrationDiagram({
|
|
13
|
+
* title: 'User Migration',
|
|
14
|
+
* description: 'Add email verification fields',
|
|
15
|
+
* changes: [
|
|
16
|
+
* { table: 'users', type: 'modify', changes: [...] },
|
|
17
|
+
* { table: 'sessions', type: 'add', changes: [...] },
|
|
18
|
+
* ]
|
|
19
|
+
* });
|
|
20
|
+
* diag.save('./diagrams/migration.svg');
|
|
21
|
+
*/
|
|
22
|
+
export interface ColumnChange {
|
|
23
|
+
name: string;
|
|
24
|
+
type: string;
|
|
25
|
+
action: 'add' | 'remove' | 'modify';
|
|
26
|
+
oldType?: string;
|
|
27
|
+
constraints?: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface TableChange {
|
|
30
|
+
table: string;
|
|
31
|
+
type: 'add' | 'remove' | 'modify';
|
|
32
|
+
changes: ColumnChange[];
|
|
33
|
+
}
|
|
34
|
+
export interface MigrationDiagramOptions {
|
|
35
|
+
/** Diagram title */
|
|
36
|
+
title?: string;
|
|
37
|
+
/** Migration description */
|
|
38
|
+
description?: string;
|
|
39
|
+
/** Migration timestamp */
|
|
40
|
+
timestamp?: string;
|
|
41
|
+
/** All table changes to visualize */
|
|
42
|
+
changes: TableChange[];
|
|
43
|
+
/** Theme */
|
|
44
|
+
theme?: 'light' | 'dark';
|
|
45
|
+
/** Custom accent color */
|
|
46
|
+
color?: string;
|
|
47
|
+
}
|
|
48
|
+
export declare class MigrationDiagram {
|
|
49
|
+
private opts;
|
|
50
|
+
private static readonly BOX_W;
|
|
51
|
+
private static readonly BOX_HDR;
|
|
52
|
+
private static readonly BOX_ROW;
|
|
53
|
+
private static readonly FOOT_H;
|
|
54
|
+
private static readonly MARGIN;
|
|
55
|
+
private static readonly BANNER_H;
|
|
56
|
+
private static readonly V_GAP;
|
|
57
|
+
constructor(options: MigrationDiagramOptions);
|
|
58
|
+
private computeLayout;
|
|
59
|
+
private renderBanner;
|
|
60
|
+
private renderChangeBox;
|
|
61
|
+
private renderLegend;
|
|
62
|
+
generate(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Write the SVG to a file.
|
|
65
|
+
*/
|
|
66
|
+
save(outputPath: string): string;
|
|
67
|
+
}
|
|
@@ -57,6 +57,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
57
57
|
exports.MigrationDiagram = void 0;
|
|
58
58
|
const fs = __importStar(require("fs"));
|
|
59
59
|
const path = __importStar(require("path"));
|
|
60
|
+
const palette_1 = require("./palette");
|
|
61
|
+
// ─── Industry design system ────────────────────────────────────────────────
|
|
62
|
+
// Barlow / JetBrains Mono typography, hairline borders and square "blueprint"
|
|
63
|
+
// corners are fixed by the Industry spec; the banner accent + canvas colours
|
|
64
|
+
// route through resolveAccent / resolveTheme so --color / --theme keep working.
|
|
65
|
+
// Family names are single-quoted so they nest inside double-quoted SVG attrs.
|
|
66
|
+
const IND_FONT_HEAD = "'Barlow Condensed', system-ui, sans-serif";
|
|
67
|
+
const IND_FONT_BODY = "'Barlow', system-ui, sans-serif";
|
|
68
|
+
const IND_FONT_MONO = "ui-monospace, 'JetBrains Mono', 'SF Mono', Menlo, monospace";
|
|
69
|
+
const IND_HAIRLINE = 'rgba(29,31,32,0.16)';
|
|
70
|
+
const IND_FONT_IMPORT = "@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;700&family=Barlow+Condensed:wght@400;600&family=JetBrains+Mono&display=swap');";
|
|
60
71
|
// ─── Constants ─────────────────────────────────────────────────────────────
|
|
61
72
|
const CHANGE_COLORS = {
|
|
62
73
|
add: { header: '#065F46', mid: '#059669', light: '#D1FAE5', text: '#065F46', icon: '#059669' },
|
|
@@ -80,20 +91,10 @@ function xmlEsc(s) {
|
|
|
80
91
|
.replace(/"/g, '"');
|
|
81
92
|
}
|
|
82
93
|
function typeBadgeColor(type) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return { text: '#7C3AED', bg: '#EDE9FE' };
|
|
88
|
-
if (/DATE|TIME|TIMESTAMP/i.test(t))
|
|
89
|
-
return { text: '#EA580C', bg: '#FFEDD5' };
|
|
90
|
-
if (/BOOL/i.test(t))
|
|
91
|
-
return { text: '#DB2777', bg: '#FCE7F3' };
|
|
92
|
-
if (/UUID/i.test(t))
|
|
93
|
-
return { text: '#0891B2', bg: '#CFFAFE' };
|
|
94
|
-
if (/JSON/i.test(t))
|
|
95
|
-
return { text: '#4F46E5', bg: '#E0E7FF' };
|
|
96
|
-
return { text: '#475569', bg: '#F1F5F9' };
|
|
94
|
+
// Industry blueprint: type badges share one muted accent tint so the box
|
|
95
|
+
// stays restrained; the type text itself carries the meaning.
|
|
96
|
+
void type;
|
|
97
|
+
return { text: '#2c455d', bg: '#eef6ff' };
|
|
97
98
|
}
|
|
98
99
|
// ─── Main class ────────────────────────────────────────────────────────────
|
|
99
100
|
class MigrationDiagram {
|
|
@@ -104,7 +105,7 @@ class MigrationDiagram {
|
|
|
104
105
|
timestamp: options.timestamp ?? new Date().toISOString(),
|
|
105
106
|
changes: options.changes ?? [],
|
|
106
107
|
theme: options.theme ?? 'light',
|
|
107
|
-
color: options.color ?? '
|
|
108
|
+
color: options.color ?? '',
|
|
108
109
|
};
|
|
109
110
|
}
|
|
110
111
|
// ── Compute layout positions ─────────────────────────────────────────
|
|
@@ -133,19 +134,11 @@ class MigrationDiagram {
|
|
|
133
134
|
renderBanner(totalW) {
|
|
134
135
|
const H = MigrationDiagram.BANNER_H;
|
|
135
136
|
const { title, description, timestamp } = this.opts;
|
|
137
|
+
// Solid accent banner (blueprint label bar) — no gradient, no drop shadow.
|
|
138
|
+
const accent = (0, palette_1.resolveAccent)(this.opts.color);
|
|
136
139
|
return `
|
|
137
140
|
<!-- ═══ BANNER ═══ -->
|
|
138
|
-
<
|
|
139
|
-
<linearGradient id="migBanner" x1="0" y1="0" x2="1" y2="0"
|
|
140
|
-
gradientUnits="objectBoundingBox">
|
|
141
|
-
<stop offset="0%" stop-color="#7C3AED"/>
|
|
142
|
-
<stop offset="100%" stop-color="#A855F7"/>
|
|
143
|
-
</linearGradient>
|
|
144
|
-
<filter id="migBannerSh" x="-5%" y="-5%" width="110%" height="120%">
|
|
145
|
-
<feDropShadow dx="0" dy="4" stdDeviation="8" flood-color="#7C3AED30"/>
|
|
146
|
-
</filter>
|
|
147
|
-
</defs>
|
|
148
|
-
<rect width="${totalW}" height="${H}" fill="url(#migBanner)" filter="url(#migBannerSh)"/>
|
|
141
|
+
<rect width="${totalW}" height="${H}" fill="${accent.mid}"/>
|
|
149
142
|
|
|
150
143
|
<!-- Database icon (SVG) -->
|
|
151
144
|
<g transform="translate(30, 24)">
|
|
@@ -155,13 +148,13 @@ class MigrationDiagram {
|
|
|
155
148
|
<path d="M2 20c0 2.2 5.4 4 12 4s12-1.8 12-4" fill="none" stroke="white" stroke-width="1.5" opacity="0.3"/>
|
|
156
149
|
</g>
|
|
157
150
|
|
|
158
|
-
<text x="58" y="36" font-family="
|
|
159
|
-
<text x="58" y="54" font-family="
|
|
160
|
-
<text x="${totalW - 30}" y="54" font-family="
|
|
151
|
+
<text x="58" y="36" font-family="${IND_FONT_HEAD}" font-size="22" font-weight="600" fill="white">${xmlEsc(title)}</text>
|
|
152
|
+
<text x="58" y="54" font-family="${IND_FONT_BODY}" font-size="12" fill="rgba(255,255,255,0.78)">${xmlEsc(description)}</text>
|
|
153
|
+
<text x="${totalW - 30}" y="54" font-family="${IND_FONT_MONO}" font-size="11" fill="rgba(255,255,255,0.7)" text-anchor="end">${timestamp}</text>
|
|
161
154
|
|
|
162
|
-
<!-- Migration tag -->
|
|
163
|
-
<rect x="${totalW - 130}" y="20" width="100" height="26"
|
|
164
|
-
<text x="${totalW - 80}" y="38" font-family="
|
|
155
|
+
<!-- Migration tag (square blueprint chip) -->
|
|
156
|
+
<rect x="${totalW - 130}" y="20" width="100" height="26" fill="rgba(255,255,255,0.15)"/>
|
|
157
|
+
<text x="${totalW - 80}" y="38" font-family="${IND_FONT_MONO}" font-size="11" font-weight="700" fill="white" text-anchor="middle">MIGRATION</text>`;
|
|
165
158
|
}
|
|
166
159
|
// ── Render a table change box ─────────────────────────────────────────
|
|
167
160
|
renderChangeBox(item) {
|
|
@@ -175,27 +168,20 @@ class MigrationDiagram {
|
|
|
175
168
|
text: '#334155',
|
|
176
169
|
icon: '#475569',
|
|
177
170
|
};
|
|
178
|
-
const R = 10;
|
|
179
171
|
// Sanitize the table name for use in an SVG element id (must be a valid,
|
|
180
172
|
// unique NCName) and escape it wherever it lands in markup/comments.
|
|
181
173
|
const safeId = String(change.table ?? 'table').replace(/\W/g, '') + colorIdx;
|
|
182
174
|
const changes = change.changes ?? [];
|
|
183
175
|
let out = `\n <!-- Change: ${xmlEsc(change.table)} (${xmlEsc(change.type)}) -->`;
|
|
184
|
-
//
|
|
185
|
-
out += `\n <
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
</filter>
|
|
189
|
-
</defs>`;
|
|
190
|
-
// Box background
|
|
191
|
-
out += `\n <rect x="${x}" y="${y}" width="${w}" height="${h}" rx="${R}" fill="white" filter="url(#migSh${safeId})"/>`;
|
|
192
|
-
// Header with change type indicator
|
|
193
|
-
out += `\n <rect x="${x}" y="${y}" width="${w}" height="${MigrationDiagram.BOX_HDR}" rx="${R}" fill="${colors.header}"/>`;
|
|
176
|
+
// Box background (white interior, hairline border, square — blueprint).
|
|
177
|
+
out += `\n <rect x="${x}" y="${y}" width="${w}" height="${h}" fill="white" stroke="${IND_HAIRLINE}" stroke-width="1"/>`;
|
|
178
|
+
// Header with change type indicator (solid, no radius)
|
|
179
|
+
out += `\n <rect x="${x}" y="${y}" width="${w}" height="${MigrationDiagram.BOX_HDR}" fill="${colors.header}"/>`;
|
|
194
180
|
// Change type badge
|
|
195
|
-
out += `\n <rect x="${x + 12}" y="${y + 10}" width="56" height="22"
|
|
196
|
-
out += `\n <text x="${x + 40}" y="${y + 25}" font-family="
|
|
181
|
+
out += `\n <rect x="${x + 12}" y="${y + 10}" width="56" height="22" fill="${colors.light}"/>`;
|
|
182
|
+
out += `\n <text x="${x + 40}" y="${y + 25}" font-family="${IND_FONT_MONO}" font-size="10" font-weight="700" fill="${colors.text}" text-anchor="middle">${xmlEsc(String(change.type ?? '').toUpperCase())}</text>`;
|
|
197
183
|
// Table name
|
|
198
|
-
out += `\n <text x="${x + 80}" y="${y + 27}" font-family="
|
|
184
|
+
out += `\n <text x="${x + 80}" y="${y + 27}" font-family="${IND_FONT_HEAD}" font-size="15" font-weight="700" fill="white">${xmlEsc(change.table)}</text>`;
|
|
199
185
|
// Column changes
|
|
200
186
|
changes.forEach((col, i) => {
|
|
201
187
|
const fy = y + MigrationDiagram.BOX_HDR + i * MigrationDiagram.BOX_ROW;
|
|
@@ -224,24 +210,24 @@ class MigrationDiagram {
|
|
|
224
210
|
// Column name
|
|
225
211
|
const nameX = x + 36;
|
|
226
212
|
const nameW = col.action === 'modify' && col.oldType ? '600' : '500';
|
|
227
|
-
out += `\n <text x="${nameX}" y="${iy + 4}" font-family="
|
|
213
|
+
out += `\n <text x="${nameX}" y="${iy + 4}" font-family="${IND_FONT_MONO}" font-size="12" font-weight="${nameW}" fill="#1d1f20">${xmlEsc(col.name)}</text>`;
|
|
228
214
|
// Type badge
|
|
229
215
|
if (col.action === 'modify' && col.oldType) {
|
|
230
216
|
// Show old → new type
|
|
231
|
-
out += `\n <text x="${x + w - 10}" y="${iy + 4}" font-family="
|
|
217
|
+
out += `\n <text x="${x + w - 10}" y="${iy + 4}" font-family="${IND_FONT_MONO}" font-size="9" fill="#7a7a7d" text-anchor="end">${xmlEsc(col.oldType)} → ${xmlEsc(col.type)}</text>`;
|
|
232
218
|
}
|
|
233
219
|
else {
|
|
234
220
|
const tbW = col.type.length * 6 + 12;
|
|
235
|
-
out += `\n <rect x="${x + w - tbW - 8}" y="${fy + 6}" width="${tbW}" height="16"
|
|
236
|
-
out += `\n <text x="${x + w - tbW / 2 - 8}" y="${fy + 18}" font-family="
|
|
221
|
+
out += `\n <rect x="${x + w - tbW - 8}" y="${fy + 6}" width="${tbW}" height="16" fill="${tc.bg}"/>`;
|
|
222
|
+
out += `\n <text x="${x + w - tbW / 2 - 8}" y="${fy + 18}" font-family="${IND_FONT_MONO}" font-size="9" font-weight="600" fill="${tc.text}" text-anchor="middle">${xmlEsc(col.type.slice(0, 12))}</text>`;
|
|
237
223
|
}
|
|
238
|
-
// Row separator
|
|
239
|
-
out += `\n <line x1="${x}" y1="${fy + MigrationDiagram.BOX_ROW}" x2="${x + w}" y2="${fy + MigrationDiagram.BOX_ROW}" stroke="
|
|
224
|
+
// Row separator (hairline)
|
|
225
|
+
out += `\n <line x1="${x}" y1="${fy + MigrationDiagram.BOX_ROW}" x2="${x + w}" y2="${fy + MigrationDiagram.BOX_ROW}" stroke="${IND_HAIRLINE}"/>`;
|
|
240
226
|
});
|
|
241
227
|
// Footer
|
|
242
228
|
const footY = y + MigrationDiagram.BOX_HDR + changes.length * MigrationDiagram.BOX_ROW;
|
|
243
|
-
out += `\n <rect x="${x}" y="${footY}" width="${w}" height="${MigrationDiagram.FOOT_H}" fill="${colors.light}"
|
|
244
|
-
out += `\n <text x="${x + 12}" y="${footY + 18}" font-family="
|
|
229
|
+
out += `\n <rect x="${x}" y="${footY}" width="${w}" height="${MigrationDiagram.FOOT_H}" fill="${colors.light}"/>`;
|
|
230
|
+
out += `\n <text x="${x + 12}" y="${footY + 18}" font-family="${IND_FONT_HEAD}" font-size="10" fill="${colors.text}" font-weight="600">${changes.length} change${changes.length !== 1 ? 's' : ''}</text>`;
|
|
245
231
|
return out;
|
|
246
232
|
}
|
|
247
233
|
// ── Render legend ────────────────────────────────────────────────────
|
|
@@ -254,9 +240,9 @@ class MigrationDiagram {
|
|
|
254
240
|
let out = `\n <!-- LEGEND -->`;
|
|
255
241
|
items.forEach((item, i) => {
|
|
256
242
|
const ix = x + i * 110;
|
|
257
|
-
out += `\n <rect x="${ix}" y="${y}" width="90" height="28"
|
|
243
|
+
out += `\n <rect x="${ix}" y="${y}" width="90" height="28" fill="${item.bg}"/>`;
|
|
258
244
|
out += `\n <circle cx="${ix + 16}" cy="${y + 14}" r="6" fill="${item.color}"/>`;
|
|
259
|
-
out += `\n <text x="${ix + 30}" y="${y + 18}" font-family="
|
|
245
|
+
out += `\n <text x="${ix + 30}" y="${y + 18}" font-family="${IND_FONT_HEAD}" font-size="11" font-weight="600" fill="${item.color}">${item.label}</text>`;
|
|
260
246
|
});
|
|
261
247
|
return out;
|
|
262
248
|
}
|
|
@@ -273,11 +259,13 @@ class MigrationDiagram {
|
|
|
273
259
|
const lastItem = layout[layout.length - 1];
|
|
274
260
|
totalH = lastItem.y + lastItem.h + MARGIN + 50;
|
|
275
261
|
}
|
|
262
|
+
const theme = (0, palette_1.resolveTheme)(this.opts.theme);
|
|
276
263
|
const svg = [
|
|
277
264
|
`<?xml version="1.0" encoding="UTF-8"?>`,
|
|
278
265
|
`<!-- Generated by ts-prorm-orm MigrationDiagram -->`,
|
|
279
266
|
`<svg xmlns="http://www.w3.org/2000/svg" width="${totalW}" height="${totalH}" viewBox="0 0 ${totalW} ${totalH}">`,
|
|
280
|
-
` <
|
|
267
|
+
` <style>${IND_FONT_IMPORT}</style>`,
|
|
268
|
+
` <rect width="${totalW}" height="${totalH}" fill="${theme.canvasBg}"/>`,
|
|
281
269
|
];
|
|
282
270
|
// Banner
|
|
283
271
|
svg.push(this.renderBanner(totalW));
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModelDiagram — generates a fully-rendered SVG card for a single ORM model,
|
|
3
|
+
* styled to the "Industry" blueprint design system.
|
|
4
|
+
*
|
|
5
|
+
* Look:
|
|
6
|
+
* - Solid accent (#5980a6) header bar with the model name in Barlow Condensed
|
|
7
|
+
* - White card body, 1px hairline dividers, SQUARE corners, no drop shadow
|
|
8
|
+
* - L-shaped corner registration marks around the frame (blueprint)
|
|
9
|
+
* - One row per column: name (Barlow) + type (mono, neutral-700) + constraint
|
|
10
|
+
* badges — PK/UQ (accent tint), FK (accent-2 tint), NN/AI/TS (neutral tint)
|
|
11
|
+
* - Associations listed at the bottom with cardinality marks
|
|
12
|
+
* - Hairline footer strip with table name + metadata
|
|
13
|
+
* - Auto-sized SVG viewBox
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* const diag = new ModelDiagram({ name: 'User', fields: { … }, associations: […] });
|
|
17
|
+
* diag.save('./diagrams/User.svg');
|
|
18
|
+
* // or:
|
|
19
|
+
* const svgString = diag.generate();
|
|
20
|
+
*/
|
|
21
|
+
export interface FieldDefinition {
|
|
22
|
+
name?: string;
|
|
23
|
+
type: string | {
|
|
24
|
+
key?: string;
|
|
25
|
+
toSqlString?: () => string;
|
|
26
|
+
};
|
|
27
|
+
primaryKey?: boolean;
|
|
28
|
+
/** Treated as FK even without `references` when set to true */
|
|
29
|
+
foreignKey?: boolean;
|
|
30
|
+
unique?: boolean;
|
|
31
|
+
allowNull?: boolean;
|
|
32
|
+
defaultValue?: any;
|
|
33
|
+
autoIncrement?: boolean;
|
|
34
|
+
references?: {
|
|
35
|
+
model: string;
|
|
36
|
+
key: string;
|
|
37
|
+
};
|
|
38
|
+
comment?: string;
|
|
39
|
+
validate?: Record<string, any>;
|
|
40
|
+
enum?: string[];
|
|
41
|
+
}
|
|
42
|
+
export interface AssociationDefinition {
|
|
43
|
+
type: 'hasOne' | 'hasMany' | 'belongsTo' | 'belongsToMany';
|
|
44
|
+
target: string;
|
|
45
|
+
foreignKey?: string;
|
|
46
|
+
sourceKey?: string;
|
|
47
|
+
through?: string;
|
|
48
|
+
as?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ModelDiagramOptions {
|
|
51
|
+
/** Model class name, e.g. "User" */
|
|
52
|
+
name: string;
|
|
53
|
+
/** Override database table name */
|
|
54
|
+
tableName?: string;
|
|
55
|
+
/** Map of column-name → field definition */
|
|
56
|
+
fields: Record<string, FieldDefinition>;
|
|
57
|
+
associations?: AssociationDefinition[];
|
|
58
|
+
timestamps?: boolean;
|
|
59
|
+
paranoid?: boolean;
|
|
60
|
+
underscored?: boolean;
|
|
61
|
+
comment?: string;
|
|
62
|
+
theme?: 'light' | 'dark';
|
|
63
|
+
/** Named palette (e.g. "industry") or hex color for the accent header */
|
|
64
|
+
color?: string;
|
|
65
|
+
}
|
|
66
|
+
export declare class ModelDiagram {
|
|
67
|
+
private opts;
|
|
68
|
+
private static readonly W;
|
|
69
|
+
private static readonly HDR;
|
|
70
|
+
private static readonly COL_HDR;
|
|
71
|
+
private static readonly ROW_H;
|
|
72
|
+
private static readonly ASSOC_HDR;
|
|
73
|
+
private static readonly ASSOC_ROW;
|
|
74
|
+
private static readonly FOOTER;
|
|
75
|
+
private static readonly PAD;
|
|
76
|
+
constructor(options: ModelDiagramOptions);
|
|
77
|
+
private badges;
|
|
78
|
+
private drawBadge;
|
|
79
|
+
private cornerMarks;
|
|
80
|
+
generate(): string;
|
|
81
|
+
/**
|
|
82
|
+
* Write the SVG to a file. Creates parent directories if needed.
|
|
83
|
+
*/
|
|
84
|
+
save(outputPath: string): string;
|
|
85
|
+
}
|