ts-prorm-orm 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +713 -0
- package/dist/index.js +36 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- package/package.json +20 -5
|
@@ -123,42 +123,38 @@ class RelationalDiagram {
|
|
|
123
123
|
}
|
|
124
124
|
// ── Render a single entity box ───────────────────────────────────────────
|
|
125
125
|
renderBox(doc, svg, box, idx) {
|
|
126
|
+
void doc;
|
|
126
127
|
const { entity, x, y, w, h } = box;
|
|
127
128
|
const t = (0, palette_1.resolveTheme)(this.opts.theme);
|
|
128
|
-
const
|
|
129
|
-
const
|
|
129
|
+
const primary = (0, palette_1.resolveAccent)(this.opts.color);
|
|
130
|
+
const secondary = (0, palette_1.accent2Of)(primary);
|
|
131
|
+
// Two-tone blueprint: even entities accent, odd accent-2.
|
|
132
|
+
const header = idx % 2 === 0 ? primary.mid : secondary.color;
|
|
133
|
+
const accentText = primary.text;
|
|
134
|
+
const accent2Text = secondary.text;
|
|
130
135
|
const HDR = RelationalDiagram.HDR_H;
|
|
131
136
|
const ROW = RelationalDiagram.ROW_H;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
// Header gradient (accent-driven → responds to `color`).
|
|
135
|
-
const gradId = doc.linearGradient(`relhg${uid}`, [
|
|
136
|
-
[0, accent.from],
|
|
137
|
-
[100, accent.mid],
|
|
138
|
-
]);
|
|
139
|
-
// Shell / shadow.
|
|
137
|
+
// Surface + hairline frame (square).
|
|
138
|
+
svg.child('rect', { x, y, width: w, height: h, fill: t.cardBg });
|
|
140
139
|
svg.child('rect', {
|
|
141
|
-
x
|
|
142
|
-
y
|
|
143
|
-
width: w
|
|
144
|
-
height: h
|
|
145
|
-
|
|
146
|
-
|
|
140
|
+
x,
|
|
141
|
+
y,
|
|
142
|
+
width: w,
|
|
143
|
+
height: h,
|
|
144
|
+
fill: 'none',
|
|
145
|
+
stroke: t.border,
|
|
146
|
+
'stroke-width': 1,
|
|
147
147
|
});
|
|
148
|
-
//
|
|
149
|
-
svg.child('rect', { x, y, width: w, height:
|
|
150
|
-
// Header band (rounded top, flattened bottom).
|
|
151
|
-
svg.child('rect', { x, y, width: w, height: HDR, rx: R, fill: `url(#${gradId})` });
|
|
152
|
-
svg.child('rect', { x, y: y + HDR - R, width: w, height: R, fill: `url(#${gradId})` });
|
|
148
|
+
// Header (solid accent bar).
|
|
149
|
+
svg.child('rect', { x, y, width: w, height: HDR, fill: header });
|
|
153
150
|
svg
|
|
154
151
|
.child('text', {
|
|
155
|
-
x: x +
|
|
156
|
-
y: y +
|
|
157
|
-
'font-family':
|
|
152
|
+
x: x + 12,
|
|
153
|
+
y: y + 25,
|
|
154
|
+
'font-family': palette_1.FONTS.heading,
|
|
158
155
|
'font-size': 16,
|
|
159
|
-
'font-weight':
|
|
156
|
+
'font-weight': 600,
|
|
160
157
|
fill: '#FFFFFF',
|
|
161
|
-
'text-anchor': 'middle',
|
|
162
158
|
})
|
|
163
159
|
.text(entity.name);
|
|
164
160
|
// Column rows.
|
|
@@ -173,46 +169,45 @@ class RelationalDiagram {
|
|
|
173
169
|
// Key marker.
|
|
174
170
|
const markX = x + 14;
|
|
175
171
|
if (isPK) {
|
|
176
|
-
svg.child('circle', { cx: markX, cy: midY, r:
|
|
172
|
+
svg.child('circle', { cx: markX, cy: midY, r: 3.5, fill: primary.mid });
|
|
177
173
|
}
|
|
178
174
|
else if (isFK) {
|
|
179
175
|
svg.child('circle', {
|
|
180
176
|
cx: markX,
|
|
181
177
|
cy: midY,
|
|
182
|
-
r:
|
|
178
|
+
r: 3.5,
|
|
183
179
|
fill: 'none',
|
|
184
|
-
stroke:
|
|
180
|
+
stroke: secondary.color,
|
|
185
181
|
'stroke-width': 1.6,
|
|
186
182
|
});
|
|
187
183
|
}
|
|
188
184
|
else {
|
|
189
|
-
svg.child('circle', { cx: markX, cy: midY, r: 2
|
|
185
|
+
svg.child('circle', { cx: markX, cy: midY, r: 2, fill: palette_1.INDUSTRY.neutral[400] });
|
|
190
186
|
}
|
|
191
187
|
// Column name (PK underlined, PK/FK colored+bold).
|
|
192
|
-
const nameColor = isPK ?
|
|
193
|
-
const nameWeight = isPK ?
|
|
188
|
+
const nameColor = isPK ? accentText : isFK ? accent2Text : t.textPrimary;
|
|
189
|
+
const nameWeight = isPK ? 600 : isFK ? 600 : 400;
|
|
194
190
|
const nameX = x + 28;
|
|
195
191
|
svg
|
|
196
192
|
.child('text', {
|
|
197
193
|
x: nameX,
|
|
198
194
|
y: textY,
|
|
199
|
-
'font-family':
|
|
195
|
+
'font-family': palette_1.FONTS.mono,
|
|
200
196
|
'font-size': 11,
|
|
201
197
|
'font-weight': nameWeight,
|
|
202
198
|
'text-decoration': isPK ? 'underline' : undefined,
|
|
203
199
|
fill: nameColor,
|
|
204
200
|
})
|
|
205
201
|
.text(colDef.name);
|
|
206
|
-
// Type (right-aligned).
|
|
202
|
+
// Type (right-aligned, mono neutral).
|
|
207
203
|
if (colDef.type) {
|
|
208
204
|
svg
|
|
209
205
|
.child('text', {
|
|
210
206
|
x: x + w - 10,
|
|
211
207
|
y: textY,
|
|
212
|
-
'font-family':
|
|
208
|
+
'font-family': palette_1.FONTS.mono,
|
|
213
209
|
'font-size': 10,
|
|
214
|
-
|
|
215
|
-
fill: t.textSecondary,
|
|
210
|
+
fill: palette_1.INDUSTRY.neutral[700],
|
|
216
211
|
'text-anchor': 'end',
|
|
217
212
|
})
|
|
218
213
|
.text(colDef.type);
|
|
@@ -223,21 +218,21 @@ class RelationalDiagram {
|
|
|
223
218
|
.child('text', {
|
|
224
219
|
x: nameX,
|
|
225
220
|
y: ry + ROW - 4,
|
|
226
|
-
'font-family':
|
|
227
|
-
'font-size':
|
|
228
|
-
'font-weight':
|
|
229
|
-
fill: isPK ?
|
|
221
|
+
'font-family': palette_1.FONTS.heading,
|
|
222
|
+
'font-size': 8,
|
|
223
|
+
'font-weight': 600,
|
|
224
|
+
fill: isPK ? accentText : accent2Text,
|
|
230
225
|
})
|
|
231
226
|
.text(isPK ? 'PK' : 'FK');
|
|
232
227
|
}
|
|
233
|
-
// Row separator.
|
|
228
|
+
// Row separator (hairline).
|
|
234
229
|
svg.child('line', {
|
|
235
230
|
x1: x,
|
|
236
231
|
y1: ry + ROW,
|
|
237
232
|
x2: x + w,
|
|
238
233
|
y2: ry + ROW,
|
|
239
234
|
stroke: t.border,
|
|
240
|
-
'stroke-width':
|
|
235
|
+
'stroke-width': 1,
|
|
241
236
|
});
|
|
242
237
|
});
|
|
243
238
|
}
|
|
@@ -359,28 +354,27 @@ class RelationalDiagram {
|
|
|
359
354
|
this.crowFoot(group, q.x, q.y, sideB, color);
|
|
360
355
|
else
|
|
361
356
|
this.oneBar(group, q.x, q.y, sideB, color);
|
|
362
|
-
// Midpoint label.
|
|
357
|
+
// Midpoint label (mono, hairline chip).
|
|
363
358
|
const label = rel.label ?? rel.type;
|
|
364
359
|
const mx = (p.x + q.x) / 2;
|
|
365
360
|
const my = (p.y + q.y) / 2;
|
|
366
|
-
const lw = label.length *
|
|
361
|
+
const lw = label.length * 7 + 14;
|
|
367
362
|
group.child('rect', {
|
|
368
363
|
x: mx - lw / 2,
|
|
369
364
|
y: my - 10,
|
|
370
365
|
width: lw,
|
|
371
366
|
height: 18,
|
|
372
|
-
rx:
|
|
367
|
+
rx: 0,
|
|
373
368
|
fill: (0, palette_1.resolveTheme)(this.opts.theme).cardBg,
|
|
374
369
|
stroke: color,
|
|
375
370
|
'stroke-width': 1,
|
|
376
|
-
opacity: 0.95,
|
|
377
371
|
});
|
|
378
372
|
group
|
|
379
373
|
.child('text', {
|
|
380
374
|
x: mx,
|
|
381
375
|
y: my + 3,
|
|
382
|
-
'font-family':
|
|
383
|
-
'font-size':
|
|
376
|
+
'font-family': palette_1.FONTS.mono,
|
|
377
|
+
'font-size': 10,
|
|
384
378
|
'font-weight': 600,
|
|
385
379
|
fill: color,
|
|
386
380
|
'text-anchor': 'middle',
|
|
@@ -404,21 +398,19 @@ class RelationalDiagram {
|
|
|
404
398
|
const totalH = maxY + MARGIN;
|
|
405
399
|
const doc = new svg_dom_1.SvgDocument(totalW, totalH);
|
|
406
400
|
const svg = doc.root;
|
|
407
|
-
//
|
|
401
|
+
// Web fonts for browser renderers.
|
|
402
|
+
doc.style(palette_1.FONT_IMPORT);
|
|
403
|
+
// Canvas ground (theme-driven → responds to `theme`).
|
|
408
404
|
svg.child('rect', { width: totalW, height: totalH, fill: t.canvasBg });
|
|
409
|
-
// Banner (accent
|
|
410
|
-
|
|
411
|
-
[0, accent.from],
|
|
412
|
-
[100, accent.mid],
|
|
413
|
-
], { x2: 1, y2: 0 });
|
|
414
|
-
svg.child('rect', { width: totalW, height: BANNER, fill: `url(#${bannerGrad})` });
|
|
405
|
+
// Banner (solid accent bar so `color` shows here too).
|
|
406
|
+
svg.child('rect', { width: totalW, height: BANNER, fill: accent.mid });
|
|
415
407
|
svg
|
|
416
408
|
.child('text', {
|
|
417
409
|
x: 24,
|
|
418
410
|
y: 38,
|
|
419
|
-
'font-family':
|
|
420
|
-
'font-size':
|
|
421
|
-
'font-weight':
|
|
411
|
+
'font-family': palette_1.FONTS.heading,
|
|
412
|
+
'font-size': 24,
|
|
413
|
+
'font-weight': 600,
|
|
422
414
|
fill: '#FFFFFF',
|
|
423
415
|
})
|
|
424
416
|
.text(title);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SchemaDocDiagram — generates a print-friendly "data dictionary" / schema
|
|
3
|
+
* documentation sheet as SVG.
|
|
4
|
+
*
|
|
5
|
+
* Where ERDiagram / ModelDiagram render the *visual* shape of a schema, this
|
|
6
|
+
* generator renders the *reference* counterpart: for every table a titled
|
|
7
|
+
* section followed by a tabular grid with one row per column, listing
|
|
8
|
+
* Column · Type · Nullable · Key · Default · Description. Rows are
|
|
9
|
+
* zebra-striped and each grid's header row is painted in the accent color.
|
|
10
|
+
* A document title banner and a summary line ("N tables, M columns") top the
|
|
11
|
+
* sheet.
|
|
12
|
+
*
|
|
13
|
+
* All markup is built against a real DOM document (see ./svg-dom) — never by
|
|
14
|
+
* concatenating strings — and both `--theme` and `--color` genuinely change
|
|
15
|
+
* fill/stroke values in the output.
|
|
16
|
+
*
|
|
17
|
+
* Usage:
|
|
18
|
+
* const doc = new SchemaDocDiagram({ tables: [...], title: 'My Schema' });
|
|
19
|
+
* doc.save('./diagrams/schema.svg');
|
|
20
|
+
* // or:
|
|
21
|
+
* const svgString = doc.generate();
|
|
22
|
+
*/
|
|
23
|
+
export interface DocColumn {
|
|
24
|
+
name: string;
|
|
25
|
+
type: string;
|
|
26
|
+
nullable?: boolean;
|
|
27
|
+
key?: 'PK' | 'FK' | 'UQ' | '';
|
|
28
|
+
default?: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface DocTable {
|
|
32
|
+
name: string;
|
|
33
|
+
comment?: string;
|
|
34
|
+
columns: DocColumn[];
|
|
35
|
+
}
|
|
36
|
+
export interface SchemaDocDiagramOptions {
|
|
37
|
+
tables: DocTable[];
|
|
38
|
+
title?: string;
|
|
39
|
+
theme?: 'light' | 'dark';
|
|
40
|
+
/** Named palette (e.g. "emerald") or hex color for banner/header rows */
|
|
41
|
+
color?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare class SchemaDocDiagram {
|
|
44
|
+
private opts;
|
|
45
|
+
constructor(options: SchemaDocDiagramOptions);
|
|
46
|
+
/** Total column count across all tables. */
|
|
47
|
+
private totalColumns;
|
|
48
|
+
/** Height of one table's rendered section. */
|
|
49
|
+
private sectionHeight;
|
|
50
|
+
generate(): string;
|
|
51
|
+
/** Draw one table section starting at `y`; returns the y after the section. */
|
|
52
|
+
private drawTable;
|
|
53
|
+
/**
|
|
54
|
+
* Write the SVG to a file. Creates parent directories if needed.
|
|
55
|
+
*/
|
|
56
|
+
save(outputPath: string): string;
|
|
57
|
+
}
|
|
@@ -69,7 +69,7 @@ const SECTION_TITLE_H = 40; // per-table section title bar
|
|
|
69
69
|
const COL_HDR_H = 30; // grid header row
|
|
70
70
|
const ROW_H = 28; // grid data row
|
|
71
71
|
const SECTION_GAP = 22; // space between tables
|
|
72
|
-
const R =
|
|
72
|
+
const R = 0; // border radius (blueprint = square corners)
|
|
73
73
|
// Column layout: [label, x offset, width]
|
|
74
74
|
const COLS = [
|
|
75
75
|
{ label: 'Column', x: 0, w: 170 },
|
|
@@ -79,8 +79,9 @@ const COLS = [
|
|
|
79
79
|
{ label: 'Default', x: 450, w: 130 },
|
|
80
80
|
{ label: 'Description', x: 580, w: 240 },
|
|
81
81
|
];
|
|
82
|
-
const FONT_SANS =
|
|
83
|
-
const
|
|
82
|
+
const FONT_SANS = palette_1.FONTS.body;
|
|
83
|
+
const FONT_HEAD = palette_1.FONTS.heading;
|
|
84
|
+
const FONT_MONO = palette_1.FONTS.mono;
|
|
84
85
|
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
85
86
|
/** Truncate text to roughly fit `width` px at the given font size. */
|
|
86
87
|
function truncate(text, width, fontSize) {
|
|
@@ -125,29 +126,26 @@ class SchemaDocDiagram {
|
|
|
125
126
|
const cx = PAD;
|
|
126
127
|
const doc = new svg_dom_1.SvgDocument(svgW, svgH);
|
|
127
128
|
const svg = doc.root;
|
|
128
|
-
//
|
|
129
|
+
// Web fonts for browser renderers.
|
|
130
|
+
doc.style(palette_1.FONT_IMPORT);
|
|
131
|
+
// ── Canvas ground (theme) ───────────────────────────────────────────
|
|
129
132
|
svg.child('rect', { width: svgW, height: svgH, fill: t.canvasBg });
|
|
130
|
-
// ── Title banner (accent)
|
|
131
|
-
const uid = 'sd';
|
|
132
|
-
doc.linearGradient(`bg${uid}`, [
|
|
133
|
-
[0, accent.from],
|
|
134
|
-
[100, accent.mid],
|
|
135
|
-
]);
|
|
133
|
+
// ── Title banner (solid accent bar) ─────────────────────────────────
|
|
136
134
|
svg.child('rect', {
|
|
137
135
|
x: cx,
|
|
138
136
|
y: PAD,
|
|
139
137
|
width: W,
|
|
140
138
|
height: BANNER_H,
|
|
141
139
|
rx: R,
|
|
142
|
-
fill:
|
|
140
|
+
fill: accent.mid,
|
|
143
141
|
});
|
|
144
142
|
svg
|
|
145
143
|
.child('text', {
|
|
146
144
|
x: cx + 22,
|
|
147
|
-
y: PAD +
|
|
148
|
-
'font-family':
|
|
149
|
-
'font-size':
|
|
150
|
-
'font-weight':
|
|
145
|
+
y: PAD + 36,
|
|
146
|
+
'font-family': FONT_HEAD,
|
|
147
|
+
'font-size': 26,
|
|
148
|
+
'font-weight': 600,
|
|
151
149
|
fill: '#FFFFFF',
|
|
152
150
|
})
|
|
153
151
|
.text(truncate(title, W - 44, 24));
|
|
@@ -155,11 +153,11 @@ class SchemaDocDiagram {
|
|
|
155
153
|
.child('text', {
|
|
156
154
|
x: cx + 22,
|
|
157
155
|
y: PAD + 58,
|
|
158
|
-
'font-family':
|
|
156
|
+
'font-family': FONT_HEAD,
|
|
159
157
|
'font-size': 12,
|
|
160
158
|
'font-weight': 600,
|
|
161
159
|
fill: 'rgba(255,255,255,0.85)',
|
|
162
|
-
'letter-spacing': 1,
|
|
160
|
+
'letter-spacing': 1.4,
|
|
163
161
|
})
|
|
164
162
|
.text('DATA DICTIONARY');
|
|
165
163
|
// ── Summary line ────────────────────────────────────────────────────
|
|
@@ -193,17 +191,27 @@ class SchemaDocDiagram {
|
|
|
193
191
|
y,
|
|
194
192
|
width: W,
|
|
195
193
|
height: SECTION_TITLE_H,
|
|
196
|
-
rx:
|
|
194
|
+
rx: 0,
|
|
197
195
|
fill: t.colHeaderBg,
|
|
198
196
|
});
|
|
199
|
-
svg.child('rect', {
|
|
197
|
+
svg.child('rect', {
|
|
198
|
+
x: cx,
|
|
199
|
+
y,
|
|
200
|
+
width: W,
|
|
201
|
+
height: SECTION_TITLE_H,
|
|
202
|
+
fill: 'none',
|
|
203
|
+
stroke: t.border,
|
|
204
|
+
'stroke-width': 1,
|
|
205
|
+
});
|
|
206
|
+
svg.child('rect', { x: cx, y, width: 4, height: SECTION_TITLE_H, fill: accent.mid });
|
|
200
207
|
svg
|
|
201
208
|
.child('text', {
|
|
202
209
|
x: cx + 18,
|
|
203
|
-
y: y +
|
|
204
|
-
'font-family':
|
|
205
|
-
'font-size':
|
|
206
|
-
'font-weight':
|
|
210
|
+
y: y + 27,
|
|
211
|
+
'font-family': FONT_HEAD,
|
|
212
|
+
'font-size': 18,
|
|
213
|
+
'font-weight': 600,
|
|
214
|
+
'letter-spacing': 0.3,
|
|
207
215
|
fill: t.textPrimary,
|
|
208
216
|
})
|
|
209
217
|
.text(truncate(table.name, 420, 16));
|
|
@@ -227,20 +235,20 @@ class SchemaDocDiagram {
|
|
|
227
235
|
y: rowY,
|
|
228
236
|
width: W,
|
|
229
237
|
height: COL_HDR_H,
|
|
230
|
-
fill: accent.
|
|
238
|
+
fill: accent.mid,
|
|
231
239
|
});
|
|
232
240
|
COLS.forEach((c) => {
|
|
233
241
|
svg
|
|
234
242
|
.child('text', {
|
|
235
243
|
x: gridX + c.x + 10,
|
|
236
244
|
y: rowY + 20,
|
|
237
|
-
'font-family':
|
|
245
|
+
'font-family': FONT_HEAD,
|
|
238
246
|
'font-size': 11,
|
|
239
|
-
'font-weight':
|
|
247
|
+
'font-weight': 600,
|
|
240
248
|
fill: '#FFFFFF',
|
|
241
|
-
'letter-spacing':
|
|
249
|
+
'letter-spacing': 1,
|
|
242
250
|
})
|
|
243
|
-
.text(c.label);
|
|
251
|
+
.text(c.label.toUpperCase());
|
|
244
252
|
});
|
|
245
253
|
// ── Data rows (zebra) ─────────────────────────────────────────────
|
|
246
254
|
rowY += COL_HDR_H;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SequenceDiagram — generates a UML sequence diagram as an SVG.
|
|
3
|
+
*
|
|
4
|
+
* Renders participants (actors / objects / databases) as header boxes across
|
|
5
|
+
* the top, each dropping a vertical dashed lifeline. Messages are drawn as
|
|
6
|
+
* numbered horizontal arrows between lifelines in order: a solid arrow is a
|
|
7
|
+
* synchronous call, a dashed arrow is a return / async message. Activation
|
|
8
|
+
* bars (thin rectangles) are drawn on a lifeline while it is active.
|
|
9
|
+
*
|
|
10
|
+
* The accent color (via resolveAccent) drives participant header boxes and
|
|
11
|
+
* arrowheads; the theme (via resolveTheme) drives the canvas, lifelines and
|
|
12
|
+
* text. Both `theme` and `color` genuinely change fill/stroke values in the
|
|
13
|
+
* generated SVG. The viewBox is auto-sized to fit all content.
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* const diag = new SequenceDiagram({ participants: […], messages: […] });
|
|
17
|
+
* diag.save('./diagrams/flow.svg');
|
|
18
|
+
* // or:
|
|
19
|
+
* const svgString = diag.generate();
|
|
20
|
+
*/
|
|
21
|
+
export interface SeqParticipant {
|
|
22
|
+
name: string;
|
|
23
|
+
kind?: 'actor' | 'object' | 'database';
|
|
24
|
+
}
|
|
25
|
+
export interface SeqMessage {
|
|
26
|
+
from: string;
|
|
27
|
+
to: string;
|
|
28
|
+
label: string;
|
|
29
|
+
/** Render as a dashed return / async arrow instead of a solid call. */
|
|
30
|
+
return?: boolean;
|
|
31
|
+
/** Draw an activation bar on the receiving lifeline for this message. */
|
|
32
|
+
activate?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface SequenceDiagramOptions {
|
|
35
|
+
participants: SeqParticipant[];
|
|
36
|
+
messages: SeqMessage[];
|
|
37
|
+
title?: string;
|
|
38
|
+
theme?: 'light' | 'dark';
|
|
39
|
+
/** Custom accent color (named palette or hex) for headers / arrowheads. */
|
|
40
|
+
color?: string;
|
|
41
|
+
}
|
|
42
|
+
export declare class SequenceDiagram {
|
|
43
|
+
private opts;
|
|
44
|
+
private static readonly PAD;
|
|
45
|
+
private static readonly LANE;
|
|
46
|
+
private static readonly HDR_W;
|
|
47
|
+
private static readonly HDR_H;
|
|
48
|
+
private static readonly TITLE_H;
|
|
49
|
+
private static readonly MSG_GAP;
|
|
50
|
+
private static readonly TOP_GAP;
|
|
51
|
+
private static readonly BOT_GAP;
|
|
52
|
+
private static readonly ACT_W;
|
|
53
|
+
constructor(options: SequenceDiagramOptions);
|
|
54
|
+
/** Kind glyph drawn inside a participant header. */
|
|
55
|
+
private kindGlyph;
|
|
56
|
+
generate(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Write the SVG to a file. Creates parent directories if needed.
|
|
59
|
+
*/
|
|
60
|
+
save(outputPath: string): string;
|
|
61
|
+
}
|
|
@@ -58,6 +58,15 @@ const fs = __importStar(require("fs"));
|
|
|
58
58
|
const path = __importStar(require("path"));
|
|
59
59
|
const palette_1 = require("./palette");
|
|
60
60
|
const svg_dom_1 = require("./svg-dom");
|
|
61
|
+
// ─── Industry design system ────────────────────────────────────────────────
|
|
62
|
+
// Barlow / JetBrains Mono typography, hairline borders and square "blueprint"
|
|
63
|
+
// corners are fixed by the Industry spec; accent + surface colours still route
|
|
64
|
+
// through resolveAccent / resolveTheme so --color / --theme keep working.
|
|
65
|
+
const IND_FONT_HEAD = '"Barlow Condensed", system-ui, sans-serif';
|
|
66
|
+
const IND_FONT_BODY = '"Barlow", system-ui, sans-serif';
|
|
67
|
+
const IND_FONT_MONO = 'ui-monospace, "JetBrains Mono", "SF Mono", Menlo, monospace';
|
|
68
|
+
const IND_HAIRLINE = 'rgba(29,31,32,0.16)';
|
|
69
|
+
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');";
|
|
61
70
|
// ─── Main class ────────────────────────────────────────────────────────────
|
|
62
71
|
class SequenceDiagram {
|
|
63
72
|
constructor(options) {
|
|
@@ -107,8 +116,9 @@ class SequenceDiagram {
|
|
|
107
116
|
const svgH = lifelineBottom + PAD;
|
|
108
117
|
const doc = new svg_dom_1.SvgDocument(svgW, svgH);
|
|
109
118
|
const svg = doc.root;
|
|
110
|
-
// ── Canvas background
|
|
119
|
+
// ── Canvas background + embedded Industry web-fonts ─────────────────
|
|
111
120
|
svg.child('rect', { width: svgW, height: svgH, fill: t.canvasBg });
|
|
121
|
+
svg.child('style').text(IND_FONT_IMPORT);
|
|
112
122
|
// ── Arrowhead marker (accent-colored) ───────────────────────────────
|
|
113
123
|
const headId = `seqhead${accent.name.replace(/\W/g, '')}`;
|
|
114
124
|
const marker = doc.defs().child('marker', {
|
|
@@ -127,9 +137,9 @@ class SequenceDiagram {
|
|
|
127
137
|
.child('text', {
|
|
128
138
|
x: svgW / 2,
|
|
129
139
|
y: PAD + 24,
|
|
130
|
-
'font-family':
|
|
140
|
+
'font-family': IND_FONT_HEAD,
|
|
131
141
|
'font-size': 20,
|
|
132
|
-
'font-weight':
|
|
142
|
+
'font-weight': 600,
|
|
133
143
|
fill: t.textPrimary,
|
|
134
144
|
'text-anchor': 'middle',
|
|
135
145
|
})
|
|
@@ -177,17 +187,16 @@ class SequenceDiagram {
|
|
|
177
187
|
y: headerTop,
|
|
178
188
|
width: HDR_W,
|
|
179
189
|
height: HDR_H,
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
stroke:
|
|
183
|
-
'stroke-width': 1.5,
|
|
190
|
+
fill: accent.mid,
|
|
191
|
+
stroke: accent.from,
|
|
192
|
+
'stroke-width': 1,
|
|
184
193
|
class: 'participant',
|
|
185
194
|
});
|
|
186
195
|
svg
|
|
187
196
|
.child('text', {
|
|
188
197
|
x: cxLine,
|
|
189
198
|
y: headerTop + 20,
|
|
190
|
-
'font-family':
|
|
199
|
+
'font-family': IND_FONT_HEAD,
|
|
191
200
|
'font-size': 13,
|
|
192
201
|
fill: '#FFFFFF',
|
|
193
202
|
'text-anchor': 'middle',
|
|
@@ -197,7 +206,7 @@ class SequenceDiagram {
|
|
|
197
206
|
.child('text', {
|
|
198
207
|
x: cxLine,
|
|
199
208
|
y: headerTop + 38,
|
|
200
|
-
'font-family':
|
|
209
|
+
'font-family': IND_FONT_MONO,
|
|
201
210
|
'font-size': 13,
|
|
202
211
|
'font-weight': 700,
|
|
203
212
|
fill: '#FFFFFF',
|
|
@@ -259,7 +268,7 @@ class SequenceDiagram {
|
|
|
259
268
|
.child('text', {
|
|
260
269
|
x: badgeX,
|
|
261
270
|
y: y - 8,
|
|
262
|
-
'font-family':
|
|
271
|
+
'font-family': IND_FONT_MONO,
|
|
263
272
|
'font-size': 10,
|
|
264
273
|
'font-weight': 700,
|
|
265
274
|
fill: '#FFFFFF',
|
|
@@ -272,7 +281,7 @@ class SequenceDiagram {
|
|
|
272
281
|
.child('text', {
|
|
273
282
|
x: fromI === toI ? x1 + 66 : midX,
|
|
274
283
|
y: y - 8,
|
|
275
|
-
'font-family':
|
|
284
|
+
'font-family': IND_FONT_HEAD,
|
|
276
285
|
'font-size': 12,
|
|
277
286
|
'font-weight': 600,
|
|
278
287
|
fill: t.textPrimary,
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StateDiagram — generates a UML state-machine diagram as an SVG.
|
|
3
|
+
*
|
|
4
|
+
* Renders:
|
|
5
|
+
* - normal states as rounded rectangles
|
|
6
|
+
* - an initial pseudo-state as a filled black circle
|
|
7
|
+
* - a final state as a ringed (double) circle
|
|
8
|
+
* - transitions as arrows between states, labeled with their trigger/event
|
|
9
|
+
* - self-transitions as loop arrows
|
|
10
|
+
*
|
|
11
|
+
* Great for showing a record lifecycle (e.g. draft → active → archived →
|
|
12
|
+
* deleted). States are auto-placed left-to-right in a wrapping grid unless
|
|
13
|
+
* explicit x/y hints are supplied per state. The SVG viewBox is auto-sized.
|
|
14
|
+
*
|
|
15
|
+
* Both `--theme light|dark` and `--color <name|hex>` genuinely change the
|
|
16
|
+
* output: the accent drives state fills + arrowheads, the theme drives the
|
|
17
|
+
* canvas background, text and borders.
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* const diag = new StateDiagram({
|
|
21
|
+
* states: [
|
|
22
|
+
* { name: 'start', initial: true },
|
|
23
|
+
* { name: 'draft' },
|
|
24
|
+
* { name: 'active' },
|
|
25
|
+
* { name: 'archived', final: true },
|
|
26
|
+
* ],
|
|
27
|
+
* transitions: [
|
|
28
|
+
* { from: 'start', to: 'draft' },
|
|
29
|
+
* { from: 'draft', to: 'active', event: 'publish' },
|
|
30
|
+
* { from: 'active', to: 'active', event: 'edit' },
|
|
31
|
+
* { from: 'active', to: 'archived', event: 'archive' },
|
|
32
|
+
* ],
|
|
33
|
+
* });
|
|
34
|
+
* diag.save('./diagrams/lifecycle.svg');
|
|
35
|
+
* // or:
|
|
36
|
+
* const svgString = diag.generate();
|
|
37
|
+
*/
|
|
38
|
+
export interface StateNode {
|
|
39
|
+
name: string;
|
|
40
|
+
/** Marks this as an initial pseudo-state (filled black circle). */
|
|
41
|
+
initial?: boolean;
|
|
42
|
+
/** Marks this as a final state (ringed circle). */
|
|
43
|
+
final?: boolean;
|
|
44
|
+
/** Optional explicit x position hint (top-left of the node box). */
|
|
45
|
+
x?: number;
|
|
46
|
+
/** Optional explicit y position hint (top-left of the node box). */
|
|
47
|
+
y?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface StateTransition {
|
|
50
|
+
from: string;
|
|
51
|
+
to: string;
|
|
52
|
+
/** Trigger/event label drawn on the arrow. */
|
|
53
|
+
event?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface StateDiagramOptions {
|
|
56
|
+
states: StateNode[];
|
|
57
|
+
transitions: StateTransition[];
|
|
58
|
+
title?: string;
|
|
59
|
+
theme?: 'light' | 'dark';
|
|
60
|
+
/** Custom accent color (named palette entry or hex). */
|
|
61
|
+
color?: string;
|
|
62
|
+
}
|
|
63
|
+
export declare class StateDiagram {
|
|
64
|
+
private opts;
|
|
65
|
+
private static readonly PAD;
|
|
66
|
+
private static readonly TITLE_H;
|
|
67
|
+
private static readonly BOX_W;
|
|
68
|
+
private static readonly BOX_H;
|
|
69
|
+
private static readonly PSEUDO_R;
|
|
70
|
+
private static readonly GAP_X;
|
|
71
|
+
private static readonly GAP_Y;
|
|
72
|
+
private static readonly PER_ROW;
|
|
73
|
+
private static readonly R;
|
|
74
|
+
constructor(options: StateDiagramOptions);
|
|
75
|
+
private layout;
|
|
76
|
+
private edgePoint;
|
|
77
|
+
generate(): string;
|
|
78
|
+
private drawTransition;
|
|
79
|
+
private drawSelfLoop;
|
|
80
|
+
private drawEventLabel;
|
|
81
|
+
/**
|
|
82
|
+
* Write the SVG to a file. Creates parent directories if needed.
|
|
83
|
+
*/
|
|
84
|
+
save(outputPath: string): string;
|
|
85
|
+
}
|