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.
Files changed (460) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +711 -0
  239. package/dist/index.js +19 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. 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;
@@ -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, '&quot;');
81
92
  }
82
93
  function typeBadgeColor(type) {
83
- const t = type.toUpperCase();
84
- if (/STRING|VARCHAR|CHAR|TEXT/i.test(t))
85
- return { text: '#059669', bg: '#D1FAE5' };
86
- if (/INT|BIGINT|SMALLINT|FLOAT|DOUBLE|DECIMAL/i.test(t))
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 ?? 'blue',
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
- <defs>
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="system-ui" font-size="22" font-weight="800" fill="white">${xmlEsc(title)}</text>
159
- <text x="58" y="54" font-family="system-ui" font-size="12" fill="rgba(255,255,255,0.75)">${xmlEsc(description)}</text>
160
- <text x="${totalW - 30}" y="54" font-family="'SF Mono',monospace" font-size="11" fill="rgba(255,255,255,0.6)" text-anchor="end">${timestamp}</text>
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" rx="13" fill="rgba(255,255,255,0.15)"/>
164
- <text x="${totalW - 80}" y="38" font-family="'SF Mono',monospace" font-size="11" font-weight="700" fill="white" text-anchor="middle">MIGRATION</text>`;
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
- // Shadow
185
- out += `\n <defs>
186
- <filter id="migSh${safeId}" x="-8%" y="-8%" width="116%" height="130%">
187
- <feDropShadow dx="0" dy="3" stdDeviation="5" flood-color="#00000015"/>
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" rx="6" fill="${colors.light}"/>`;
196
- out += `\n <text x="${x + 40}" y="${y + 25}" font-family="'SF Mono',monospace" font-size="10" font-weight="700" fill="${colors.text}" text-anchor="middle">${xmlEsc(String(change.type ?? '').toUpperCase())}</text>`;
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="system-ui" font-size="15" font-weight="700" fill="white">${xmlEsc(change.table)}</text>`;
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="'SF Mono',monospace" font-size="12" font-weight="${nameW}" fill="#1E293B">${xmlEsc(col.name)}</text>`;
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="'SF Mono',monospace" font-size="9" fill="#94A3B8" text-anchor="end">${xmlEsc(col.oldType)} → ${xmlEsc(col.type)}</text>`;
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" rx="4" fill="${tc.bg}"/>`;
236
- out += `\n <text x="${x + w - tbW / 2 - 8}" y="${fy + 18}" font-family="'SF Mono',monospace" font-size="9" font-weight="600" fill="${tc.text}" text-anchor="middle">${xmlEsc(col.type.slice(0, 12))}</text>`;
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="#E2E8F0"/>`;
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}" rx="0 0 ${R} ${R}"/>`;
244
- out += `\n <text x="${x + 12}" y="${footY + 18}" font-family="system-ui" font-size="10" fill="${colors.text}" font-weight="600">${changes.length} change${changes.length !== 1 ? 's' : ''}</text>`;
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" rx="6" fill="${item.bg}"/>`;
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="system-ui" font-size="11" font-weight="600" fill="${item.color}">${item.label}</text>`;
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
- ` <rect width="${totalW}" height="${totalH}" fill="#F8FAFC"/>`,
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
+ }