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.
Files changed (460) hide show
  1. package/CHANGELOG.md +95 -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 +713 -0
  239. package/dist/index.js +36 -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
@@ -1,13 +1,16 @@
1
1
  "use strict";
2
2
  /**
3
- * ModelDiagram — generates a fully-rendered SVG card for a single ORM model.
3
+ * ModelDiagram — generates a fully-rendered SVG card for a single ORM model,
4
+ * styled to the "Industry" blueprint design system.
4
5
  *
5
- * Features:
6
- * - Color-coded data types (strings, numbers, dates, booleans, JSON, UUID, …)
7
- * - Constraint badges: PK · FK · UQ · NN · AI · TS
8
- * - Left-edge accent stripe per row (gold = PK, blue = FK)
9
- * - Associations section (hasOne / hasMany / belongsTo / belongsToMany)
10
- * - Dark footer with table name + metadata
6
+ * Look:
7
+ * - Solid accent (#5980a6) header bar with the model name in Barlow Condensed
8
+ * - White card body, 1px hairline dividers, SQUARE corners, no drop shadow
9
+ * - L-shaped corner registration marks around the frame (blueprint)
10
+ * - One row per column: name (Barlow) + type (mono, neutral-700) + constraint
11
+ * badges PK/UQ (accent tint), FK (accent-2 tint), NN/AI/TS (neutral tint)
12
+ * - Associations listed at the bottom with cardinality marks
13
+ * - Hairline footer strip with table name + metadata
11
14
  * - Auto-sized SVG viewBox
12
15
  *
13
16
  * Usage:
@@ -55,30 +58,6 @@ const fs = __importStar(require("fs"));
55
58
  const path = __importStar(require("path"));
56
59
  const palette_1 = require("./palette");
57
60
  const svg_dom_1 = require("./svg-dom");
58
- const TYPE_COLORS = [
59
- { pattern: /STRING|VARCHAR|CHAR|TEXT/i, text: '#059669', bg: '#D1FAE5' },
60
- {
61
- pattern: /INT|BIGINT|SMALLINT|TINYINT|FLOAT|DOUBLE|DECIMAL|NUMERIC|NUMBER/i,
62
- text: '#7C3AED',
63
- bg: '#EDE9FE',
64
- },
65
- { pattern: /DATE|TIME|TIMESTAMP/i, text: '#EA580C', bg: '#FFEDD5' },
66
- { pattern: /BOOL/i, text: '#DB2777', bg: '#FCE7F3' },
67
- { pattern: /UUID/i, text: '#0891B2', bg: '#CFFAFE' },
68
- { pattern: /JSONB/i, text: '#4338CA', bg: '#E0E7FF' },
69
- { pattern: /JSON/i, text: '#4F46E5', bg: '#E0E7FF' },
70
- { pattern: /BLOB|BINARY|VARBINARY/i, text: '#92400E', bg: '#FEF3C7' },
71
- { pattern: /ENUM/i, text: '#B45309', bg: '#FEF3C7' },
72
- { pattern: /ARRAY/i, text: '#0369A1', bg: '#E0F2FE' },
73
- { pattern: /GEOMETRY|GEOGRAPHY/i, text: '#166534', bg: '#DCFCE7' },
74
- ];
75
- function typeColor(t) {
76
- for (const c of TYPE_COLORS) {
77
- if (c.pattern.test(t))
78
- return { text: c.text, bg: c.bg };
79
- }
80
- return { text: '#475569', bg: '#F1F5F9' };
81
- }
82
61
  function resolveType(field) {
83
62
  const t = field.type;
84
63
  if (typeof t === 'string')
@@ -91,11 +70,12 @@ function resolveType(field) {
91
70
  }
92
71
  return 'UNKNOWN';
93
72
  }
73
+ /** Cardinality marks per association type (mono, blueprint). */
94
74
  const ASSOC_META = {
95
- hasOne: { icon: '1:1', color: '#0891B2', bg: '#CFFAFE', label: 'hasOne' },
96
- hasMany: { icon: '1:N', color: '#7C3AED', bg: '#EDE9FE', label: 'hasMany' },
97
- belongsTo: { icon: 'N:1', color: '#059669', bg: '#D1FAE5', label: 'belongsTo' },
98
- belongsToMany: { icon: 'N:N', color: '#DC2626', bg: '#FEE2E2', label: 'belongsToMany' },
75
+ hasOne: { mark: '1:1', label: 'hasOne' },
76
+ hasMany: { mark: '1:N', label: 'hasMany' },
77
+ belongsTo: { mark: 'N:1', label: 'belongsTo' },
78
+ belongsToMany: { mark: 'N:N', label: 'belongsToMany' },
99
79
  };
100
80
  // ─── Main class ────────────────────────────────────────────────────────────
101
81
  class ModelDiagram {
@@ -120,41 +100,74 @@ class ModelDiagram {
120
100
  // ── Row badge helper ────────────────────────────────────────────────────
121
101
  badges(field, isTS) {
122
102
  const b = [];
103
+ const A = palette_1.BADGE_TINTS.accent;
104
+ const A2 = palette_1.BADGE_TINTS.accent2;
105
+ const N = palette_1.BADGE_TINTS.neutral;
123
106
  if (field.primaryKey)
124
- b.push({ text: 'PK', bg: '#FEF3C7', fg: '#92400E' });
107
+ b.push({ text: 'PK', bg: A.bg, fg: A.fg });
125
108
  if (field.foreignKey || field.references)
126
- b.push({ text: 'FK', bg: '#DBEAFE', fg: '#1E3A8A' });
109
+ b.push({ text: 'FK', bg: A2.bg, fg: A2.fg });
127
110
  if (field.autoIncrement)
128
- b.push({ text: 'AI', bg: '#D1FAE5', fg: '#064E3B' });
111
+ b.push({ text: 'AI', bg: N.bg, fg: N.fg });
129
112
  if (field.unique && !field.primaryKey)
130
- b.push({ text: 'UQ', bg: '#EDE9FE', fg: '#2E1065' });
113
+ b.push({ text: 'UQ', bg: A.bg, fg: A.fg });
131
114
  if (field.allowNull === false)
132
- b.push({ text: 'NN', bg: '#FEE2E2', fg: '#7F1D1D' });
115
+ b.push({ text: 'NN', bg: N.bg, fg: N.fg });
133
116
  if (isTS)
134
- b.push({ text: 'TS', bg: '#F1F5F9', fg: '#475569' });
117
+ b.push({ text: 'TS', bg: N.bg, fg: N.fg });
135
118
  return b;
136
119
  }
137
- // ── SVG badge (drawn into a parent group) ────────────────────────────────
120
+ // ── SVG badge (drawn into a parent group) — square, hairline, mono ────────
138
121
  drawBadge(parent, b, x, y) {
139
- const w = b.text.length * 7 + 12;
140
- parent.child('rect', { x, y, width: w, height: 20, rx: 5, fill: b.bg });
122
+ const w = b.text.length * 8 + 12;
123
+ parent.child('rect', {
124
+ x,
125
+ y,
126
+ width: w,
127
+ height: 18,
128
+ rx: 0,
129
+ fill: b.bg,
130
+ stroke: palette_1.INDUSTRY.divider,
131
+ 'stroke-width': 1,
132
+ });
141
133
  parent
142
134
  .child('text', {
143
135
  x: x + w / 2,
144
- y: y + 14,
145
- 'font-family': "'SF Mono','Fira Code',monospace",
146
- 'font-size': 10,
147
- 'font-weight': 700,
136
+ y: y + 13,
137
+ 'font-family': palette_1.FONTS.heading,
138
+ 'font-size': 11,
139
+ 'font-weight': 600,
140
+ 'letter-spacing': 0.4,
148
141
  fill: b.fg,
149
142
  'text-anchor': 'middle',
150
143
  })
151
144
  .text(b.text);
152
145
  return w;
153
146
  }
147
+ // ── L-shaped corner registration marks around the frame ──────────────────
148
+ cornerMarks(svg, x, y, w, h) {
149
+ const len = 9;
150
+ const col = palette_1.INDUSTRY.neutral[500];
151
+ const sw = 1;
152
+ const seg = (x1, y1, x2, y2) => svg.child('line', { x1, y1, x2, y2, stroke: col, 'stroke-width': sw });
153
+ // top-left
154
+ seg(x, y, x + len, y);
155
+ seg(x, y, x, y + len);
156
+ // top-right
157
+ seg(x + w - len, y, x + w, y);
158
+ seg(x + w, y, x + w, y + len);
159
+ // bottom-left
160
+ seg(x, y + h, x + len, y + h);
161
+ seg(x, y + h - len, x, y + h);
162
+ // bottom-right
163
+ seg(x + w - len, y + h, x + w, y + h);
164
+ seg(x + w, y + h - len, x + w, y + h);
165
+ }
154
166
  // ── Generate full SVG string (built via a real DOM document) ──────────────
155
167
  generate() {
156
168
  const { name, tableName, fields, associations, timestamps, paranoid, comment, theme, color } = this.opts;
157
169
  const accent = (0, palette_1.resolveAccent)(color);
170
+ const a2 = (0, palette_1.accent2Of)(accent);
158
171
  const t = (0, palette_1.resolveTheme)(theme);
159
172
  const W = ModelDiagram.W;
160
173
  const HDR = ModelDiagram.HDR;
@@ -164,7 +177,6 @@ class ModelDiagram {
164
177
  const ASSOC_ROW = ModelDiagram.ASSOC_ROW;
165
178
  const FOOTER = ModelDiagram.FOOTER;
166
179
  const PAD = ModelDiagram.PAD;
167
- const R = ModelDiagram.R;
168
180
  // ── Build field list (add timestamps if requested) ──────────────────
169
181
  const fieldEntries = Object.entries(fields);
170
182
  const tsFields = ['createdAt', 'updatedAt'];
@@ -178,115 +190,94 @@ class ModelDiagram {
178
190
  });
179
191
  }
180
192
  const hasAssoc = associations.length > 0;
181
- const assocBlockH = hasAssoc ? ASSOC_HDR + associations.length * ASSOC_ROW + 8 : 0;
193
+ const assocBlockH = hasAssoc ? ASSOC_HDR + associations.length * ASSOC_ROW : 0;
182
194
  const cardH = HDR + COL_HDR + fieldEntries.length * ROW_H + assocBlockH + FOOTER;
183
195
  const svgW = W + 2 * PAD;
184
196
  const svgH = cardH + 2 * PAD;
185
197
  const cx = PAD;
186
198
  const cy = PAD;
187
- const uid = name.replace(/\W/g, '');
188
199
  const doc = new svg_dom_1.SvgDocument(svgW, svgH);
189
200
  const svg = doc.root;
190
- // ── Background ──────────────────────────────────────────────────────
201
+ // Web fonts for browser renderers.
202
+ doc.style(palette_1.FONT_IMPORT);
203
+ // ── Ground ──────────────────────────────────────────────────────────
191
204
  svg.child('rect', { width: svgW, height: svgH, fill: t.canvasBg });
192
- // ── Defs: header gradient, drop shadow, card clip ───────────────────
193
- doc.linearGradient(`hg${uid}`, [
194
- [0, accent.from],
195
- [55, accent.mid],
196
- [100, accent.to],
197
- ]);
198
- const filter = doc
199
- .defs()
200
- .child('filter', { id: `sh${uid}`, x: '-6%', y: '-6%', width: '112%', height: '125%' });
201
- filter.child('feDropShadow', { dx: 0, dy: 6, stdDeviation: 10, 'flood-color': '#00000025' });
202
- doc
203
- .defs()
204
- .child('clipPath', { id: `cp${uid}` })
205
- .child('rect', { x: cx, y: cy, width: W, height: cardH, rx: R });
206
- // ── Card shell + surface ────────────────────────────────────────────
207
- svg.child('rect', {
208
- x: cx - 1,
209
- y: cy - 1,
210
- width: W + 2,
211
- height: cardH + 2,
212
- rx: R + 1,
213
- fill: t.border,
214
- filter: `url(#sh${uid})`,
215
- });
205
+ // ── Card surface + hairline frame (square) ──────────────────────────
206
+ svg.child('rect', { x: cx, y: cy, width: W, height: cardH, fill: t.cardBg });
216
207
  svg.child('rect', {
217
208
  x: cx,
218
209
  y: cy,
219
210
  width: W,
220
211
  height: cardH,
221
- rx: R,
222
- fill: t.cardBg,
223
- 'clip-path': `url(#cp${uid})`,
212
+ fill: 'none',
213
+ stroke: t.border,
214
+ 'stroke-width': 1,
224
215
  });
225
- // ── Header ──────────────────────────────────────────────────────────
226
- svg.child('rect', { x: cx, y: cy, width: W, height: HDR, fill: `url(#hg${uid})` });
227
- const icon = svg.child('g', { transform: `translate(${cx + 16}, ${cy + 14})` });
228
- icon.child('rect', { x: 0, y: 0, width: 40, height: 40, rx: 10, fill: 'rgba(255,255,255,0.18)' });
229
- icon.child('rect', { x: 12, y: 8, width: 16, height: 20, rx: 2, fill: 'white', opacity: 0.9 });
230
- icon.child('rect', { x: 15, y: 4, width: 10, height: 6, rx: 1, fill: 'white', opacity: 0.9 });
231
- icon.child('rect', { x: 17, y: 13, width: 6, height: 2, rx: 1, fill: accent.mid });
232
- icon.child('rect', { x: 17, y: 17, width: 6, height: 2, rx: 1, fill: accent.mid });
233
- icon.child('rect', { x: 17, y: 21, width: 4, height: 2, rx: 1, fill: accent.mid });
216
+ // Corner registration marks.
217
+ this.cornerMarks(svg, cx, cy, W, cardH);
218
+ // ── Header (solid accent bar) ───────────────────────────────────────
219
+ svg.child('rect', { x: cx, y: cy, width: W, height: HDR, fill: accent.mid });
234
220
  svg
235
221
  .child('text', {
236
- x: cx + 68,
237
- y: cy + 34,
238
- 'font-family': 'system-ui,-apple-system,sans-serif',
239
- 'font-size': 22,
240
- 'font-weight': 800,
222
+ x: cx + 18,
223
+ y: cy + 30,
224
+ 'font-family': palette_1.FONTS.heading,
225
+ 'font-size': 24,
226
+ 'font-weight': 600,
227
+ 'letter-spacing': 0.2,
241
228
  fill: '#FFFFFF',
242
229
  })
243
230
  .text(name);
244
231
  if (comment) {
245
232
  svg
246
233
  .child('text', {
247
- x: cx + 68,
248
- y: cy + 54,
249
- 'font-family': 'system-ui,sans-serif',
234
+ x: cx + 18,
235
+ y: cy + 47,
236
+ 'font-family': palette_1.FONTS.body,
250
237
  'font-size': 11,
251
- fill: 'rgba(255,255,255,0.65)',
238
+ fill: 'rgba(255,255,255,0.82)',
252
239
  })
253
- .text(comment);
240
+ .text(comment.length > 60 ? comment.slice(0, 59) + '…' : comment);
254
241
  }
255
- svg.child('rect', {
256
- x: cx + W - 96,
257
- y: cy + 20,
258
- width: 80,
259
- height: 26,
260
- rx: 13,
261
- fill: 'rgba(255,255,255,0.18)',
262
- });
242
+ // Right-aligned kicker label.
263
243
  svg
264
244
  .child('text', {
265
- x: cx + W - 56,
266
- y: cy + 38,
267
- 'font-family': "'SF Mono',monospace",
245
+ x: cx + W - 16,
246
+ y: cy + 22,
247
+ 'font-family': palette_1.FONTS.heading,
268
248
  'font-size': 11,
269
- 'font-weight': 700,
270
- fill: 'rgba(255,255,255,0.92)',
271
- 'text-anchor': 'middle',
249
+ 'font-weight': 600,
250
+ 'letter-spacing': 1.4,
251
+ fill: 'rgba(255,255,255,0.85)',
252
+ 'text-anchor': 'end',
272
253
  })
273
254
  .text('ORM MODEL');
255
+ svg
256
+ .child('text', {
257
+ x: cx + W - 16,
258
+ y: cy + 40,
259
+ 'font-family': palette_1.FONTS.mono,
260
+ 'font-size': 11,
261
+ fill: 'rgba(255,255,255,0.72)',
262
+ 'text-anchor': 'end',
263
+ })
264
+ .text(tableName.length > 26 ? tableName.slice(0, 25) + '…' : tableName);
274
265
  // ── Column header row ───────────────────────────────────────────────
275
266
  const colHdrY = cy + HDR;
276
267
  svg.child('rect', { x: cx, y: colHdrY, width: W, height: COL_HDR, fill: t.colHeaderBg });
277
268
  const colHdr = (x, label) => svg
278
269
  .child('text', {
279
270
  x,
280
- y: colHdrY + 22,
281
- 'font-family': 'system-ui,sans-serif',
271
+ y: colHdrY + 20,
272
+ 'font-family': palette_1.FONTS.heading,
282
273
  'font-size': 11,
283
- 'font-weight': 700,
274
+ 'font-weight': 600,
284
275
  fill: t.textSecondary,
285
- 'letter-spacing': 0.5,
276
+ 'letter-spacing': 1,
286
277
  })
287
278
  .text(label);
288
- colHdr(cx + 36, 'COLUMN');
289
- colHdr(cx + 225, 'TYPE');
279
+ colHdr(cx + 18, 'COLUMN');
280
+ colHdr(cx + 230, 'TYPE');
290
281
  colHdr(cx + 380, 'CONSTRAINTS');
291
282
  svg.child('line', {
292
283
  x1: cx,
@@ -300,116 +291,58 @@ class ModelDiagram {
300
291
  const fieldSectionY = colHdrY + COL_HDR;
301
292
  fieldEntries.forEach(([colName, field], i) => {
302
293
  const typeStr = resolveType(field);
303
- const tc = typeColor(typeStr);
304
294
  const rowY = fieldSectionY + i * ROW_H;
305
295
  const midY = rowY + ROW_H / 2;
306
- const textBase = midY + 5;
296
+ const textBase = midY + 4;
307
297
  const rowBg = i % 2 === 0 ? t.cardBg : t.rowAlt;
308
298
  const isTS = tsFields.includes(colName);
309
299
  const isPK = !!field.primaryKey;
310
300
  const isFK = !!(field.foreignKey || field.references);
311
301
  svg.child('rect', { x: cx, y: rowY, width: W, height: ROW_H, fill: rowBg });
302
+ // Left accent stripe: PK → accent, FK → accent-2.
312
303
  if (isPK)
313
- svg.child('rect', { x: cx, y: rowY, width: 5, height: ROW_H, fill: '#F59E0B' });
304
+ svg.child('rect', { x: cx, y: rowY, width: 3, height: ROW_H, fill: accent.mid });
314
305
  else if (isFK)
315
- svg.child('rect', { x: cx, y: rowY, width: 5, height: ROW_H, fill: '#3B82F6' });
316
- // Row icon
317
- const iconX = cx + 19;
318
- if (isPK) {
319
- svg
320
- .child('g', { transform: `translate(${iconX - 7}, ${textBase - 10})` })
321
- .child('path', {
322
- d: 'M12.65 10A6 6 0 0 1 6 4a6 6 0 0 1 6.65 6H12.65zM2.93 4.93l6.42 6.42a8 8 0 0 1 9.3 0l1.42-1.42a1 1 0 0 0 0-1.41l-1.42-1.42a1 1 0 0 0-1.41 0l-6.42 6.42a1 1 0 0 0 0 1.41l1.42 1.42a1 1 0 0 0 1.41 0l6.42-6.42a8 8 0 0 0 0-11.3L13.08 2.22a1 1 0 0 0-1.08-.28H12a1 1 0 0 0-.77.36L8.7 4.91 2.93 4.93z',
323
- fill: '#F59E0B',
324
- });
325
- }
326
- else if (isFK) {
327
- const g = svg.child('g', { transform: `translate(${iconX - 7}, ${textBase - 10})` });
328
- g.child('path', {
329
- d: 'M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71',
330
- stroke: '#3B82F6',
331
- 'stroke-width': 2,
332
- fill: 'none',
333
- 'stroke-linecap': 'round',
334
- });
335
- g.child('path', {
336
- d: 'M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71',
337
- stroke: '#3B82F6',
338
- 'stroke-width': 2,
339
- fill: 'none',
340
- 'stroke-linecap': 'round',
341
- });
342
- }
343
- else if (isTS) {
344
- const g = svg.child('g', { transform: `translate(${iconX - 7}, ${textBase - 10})` });
345
- g.child('circle', { cx: 8, cy: 8, r: 7, stroke: '#64748B', 'stroke-width': 1.5, fill: 'none' });
346
- g.child('path', {
347
- d: 'M8 4v4l3 2',
348
- stroke: '#64748B',
349
- 'stroke-width': 1.5,
350
- fill: 'none',
351
- 'stroke-linecap': 'round',
352
- });
353
- }
354
- else {
355
- svg.child('circle', { cx: iconX, cy: midY, r: 3.5, fill: '#CBD5E1' });
356
- }
357
- // Field name
358
- const nameW = isPK ? 700 : isFK ? 600 : 500;
359
- const nameC = isPK ? '#F59E0B' : isFK ? '#3B82F6' : t.textPrimary;
360
- const dispName = colName.length > 22 ? colName.slice(0, 21) + '…' : colName;
306
+ svg.child('rect', { x: cx, y: rowY, width: 3, height: ROW_H, fill: a2.color });
307
+ // Field name (body font).
308
+ const nameW = isPK || isFK ? 600 : 400;
309
+ const nameC = isPK ? accent.text : isFK ? a2.text : t.textPrimary;
310
+ const dispName = colName.length > 24 ? colName.slice(0, 23) + '…' : colName;
361
311
  svg
362
312
  .child('text', {
363
- x: cx + 36,
313
+ x: cx + 18,
364
314
  y: textBase,
365
- 'font-family': "'SF Mono','Fira Code',monospace",
315
+ 'font-family': palette_1.FONTS.body,
366
316
  'font-size': 13,
367
317
  'font-weight': nameW,
368
318
  fill: nameC,
369
319
  })
370
320
  .text(dispName);
371
- // Type badge
372
- const typX = cx + 225;
373
- const typTxt = typeStr.length > 18 ? typeStr.slice(0, 17) + '…' : typeStr;
374
- svg.child('rect', { x: typX, y: rowY + 11, width: 140, height: 20, rx: 6, fill: tc.bg });
321
+ // Type (mono, neutral-700).
322
+ const typTxt = typeStr.length > 22 ? typeStr.slice(0, 21) + '…' : typeStr;
375
323
  svg
376
324
  .child('text', {
377
- x: typX + 70,
378
- y: rowY + 25,
379
- 'font-family': "'SF Mono',monospace",
380
- 'font-size': 11,
381
- 'font-weight': 600,
382
- fill: tc.text,
383
- 'text-anchor': 'middle',
325
+ x: cx + 230,
326
+ y: textBase,
327
+ 'font-family': palette_1.FONTS.mono,
328
+ 'font-size': 12,
329
+ fill: palette_1.INDUSTRY.neutral[700],
384
330
  })
385
331
  .text(typTxt);
386
- // Constraint badges
332
+ // Constraint badges.
387
333
  let bx = cx + 380;
388
334
  for (const b of this.badges(field, isTS)) {
389
- bx += this.drawBadge(svg, b, bx, rowY + 11) + 4;
390
- }
391
- // Default value
392
- if (field.defaultValue !== undefined && field.defaultValue !== null && !isTS) {
393
- svg
394
- .child('text', {
395
- x: cx + W - 10,
396
- y: textBase,
397
- 'font-family': 'monospace',
398
- 'font-size': 10,
399
- fill: '#94A3B8',
400
- 'text-anchor': 'end',
401
- })
402
- .text(`default: ${String(field.defaultValue).slice(0, 10)}`);
335
+ bx += this.drawBadge(svg, b, bx, rowY + (ROW_H - 18) / 2) + 5;
403
336
  }
404
- // FK reference label
337
+ // FK reference label (below the name).
405
338
  if (isFK && field.references) {
406
339
  svg
407
340
  .child('text', {
408
- x: cx + 36,
341
+ x: cx + 18,
409
342
  y: rowY + ROW_H - 6,
410
- 'font-family': 'monospace',
343
+ 'font-family': palette_1.FONTS.mono,
411
344
  'font-size': 9,
412
- fill: '#94A3B8',
345
+ fill: t.textSecondary,
413
346
  })
414
347
  .text(`→ ${field.references.model}.${field.references.key}`);
415
348
  }
@@ -425,15 +358,16 @@ class ModelDiagram {
425
358
  // ── Associations ────────────────────────────────────────────────────
426
359
  const assocBaseY = fieldSectionY + fieldEntries.length * ROW_H;
427
360
  if (hasAssoc) {
428
- svg.child('rect', { x: cx, y: assocBaseY, width: W, height: ASSOC_HDR, fill: '#F0F9FF' });
361
+ svg.child('rect', { x: cx, y: assocBaseY, width: W, height: ASSOC_HDR, fill: palette_1.INDUSTRY.accentLight });
362
+ svg.child('rect', { x: cx, y: assocBaseY, width: 3, height: ASSOC_HDR, fill: accent.mid });
429
363
  svg
430
364
  .child('text', {
431
- x: cx + 16,
432
- y: assocBaseY + 24,
433
- 'font-family': 'system-ui,sans-serif',
365
+ x: cx + 18,
366
+ y: assocBaseY + 22,
367
+ 'font-family': palette_1.FONTS.heading,
434
368
  'font-size': 12,
435
- 'font-weight': 700,
436
- fill: '#0369A1',
369
+ 'font-weight': 600,
370
+ fill: accent.text,
437
371
  'letter-spacing': 1,
438
372
  })
439
373
  .text('ASSOCIATIONS');
@@ -442,86 +376,87 @@ class ModelDiagram {
442
376
  y1: assocBaseY + ASSOC_HDR,
443
377
  x2: cx + W,
444
378
  y2: assocBaseY + ASSOC_HDR,
445
- stroke: '#BAE6FD',
379
+ stroke: t.border,
446
380
  'stroke-width': 1,
447
381
  });
448
382
  associations.forEach((assoc, i) => {
449
383
  const aY = assocBaseY + ASSOC_HDR + i * ASSOC_ROW;
450
- const meta = ASSOC_META[assoc.type] ?? {
451
- icon: '?',
452
- color: '#475569',
453
- bg: '#F1F5F9',
454
- label: assoc.type,
455
- };
456
- const rowBg = i % 2 === 0 ? '#F0F9FF' : '#E0F2FE';
457
- const aTextY = aY + 20;
384
+ const meta = ASSOC_META[assoc.type] ?? { mark: '?', label: assoc.type };
385
+ const rowBg = i % 2 === 0 ? t.cardBg : t.rowAlt;
386
+ const aTextY = aY + 18;
458
387
  svg.child('rect', { x: cx, y: aY, width: W, height: ASSOC_ROW, fill: rowBg });
459
- const cbw = 34;
460
- svg.child('rect', { x: cx + 10, y: aY + 6, width: cbw, height: 18, rx: 5, fill: meta.bg });
388
+ // Cardinality mark (mono, accent tint chip).
389
+ const cbw = 36;
390
+ svg.child('rect', {
391
+ x: cx + 14,
392
+ y: aY + 5,
393
+ width: cbw,
394
+ height: 18,
395
+ fill: palette_1.INDUSTRY.accentLight,
396
+ stroke: palette_1.INDUSTRY.divider,
397
+ 'stroke-width': 1,
398
+ });
461
399
  svg
462
400
  .child('text', {
463
- x: cx + 10 + cbw / 2,
464
- y: aY + 19,
465
- 'font-family': 'monospace',
466
- 'font-size': 10,
467
- 'font-weight': 700,
468
- fill: meta.color,
401
+ x: cx + 14 + cbw / 2,
402
+ y: aY + 18,
403
+ 'font-family': palette_1.FONTS.mono,
404
+ 'font-size': 11,
405
+ 'font-weight': 600,
406
+ fill: accent.text,
469
407
  'text-anchor': 'middle',
470
408
  })
471
- .text(meta.icon);
409
+ .text(meta.mark);
472
410
  svg
473
411
  .child('text', {
474
- x: cx + 52,
412
+ x: cx + 60,
475
413
  y: aTextY,
476
- 'font-family': 'system-ui,sans-serif',
414
+ 'font-family': palette_1.FONTS.body,
477
415
  'font-size': 12,
478
- 'font-weight': 600,
479
- fill: '#374151',
416
+ 'font-weight': 500,
417
+ fill: t.textPrimary,
480
418
  })
481
419
  .text(meta.label);
482
- svg
483
- .child('text', { x: cx + 148, y: aTextY, 'font-size': 14, fill: '#94A3B8' })
484
- .text('→');
485
420
  svg
486
421
  .child('text', {
487
- x: cx + 168,
422
+ x: cx + 162,
488
423
  y: aTextY,
489
- 'font-family': "'SF Mono',monospace",
424
+ 'font-family': palette_1.FONTS.mono,
490
425
  'font-size': 12,
491
- 'font-weight': 700,
492
- fill: meta.color,
426
+ 'font-weight': 600,
427
+ fill: accent.text,
493
428
  })
494
429
  .text(assoc.target);
495
430
  if (assoc.foreignKey) {
496
431
  svg
497
432
  .child('text', {
498
- x: cx + 290,
433
+ x: cx + 300,
499
434
  y: aTextY,
500
- 'font-family': 'monospace',
435
+ 'font-family': palette_1.FONTS.mono,
501
436
  'font-size': 10,
502
- fill: '#64748B',
437
+ fill: t.textSecondary,
503
438
  })
504
439
  .text(`(${assoc.foreignKey})`);
505
440
  }
506
441
  if (assoc.through) {
507
442
  svg
508
443
  .child('text', {
509
- x: cx + 370,
444
+ x: cx + 400,
510
445
  y: aTextY,
511
- 'font-family': 'monospace',
446
+ 'font-family': palette_1.FONTS.mono,
512
447
  'font-size': 10,
513
- fill: '#7C3AED',
448
+ fill: a2.text,
514
449
  })
515
450
  .text(`via: ${assoc.through}`);
516
451
  }
517
452
  if (assoc.as) {
518
453
  svg
519
454
  .child('text', {
520
- x: cx + W - 10,
455
+ x: cx + W - 14,
521
456
  y: aTextY,
522
- 'font-family': 'monospace',
457
+ 'font-family': palette_1.FONTS.mono,
523
458
  'font-size': 10,
524
- fill: '#6366F1',
459
+ fill: t.textSecondary,
525
460
  'text-anchor': 'end',
526
461
  })
527
462
  .text(`as: ${assoc.as}`);
@@ -531,60 +466,64 @@ class ModelDiagram {
531
466
  y1: aY + ASSOC_ROW,
532
467
  x2: cx + W,
533
468
  y2: aY + ASSOC_ROW,
534
- stroke: '#BAE6FD',
535
- 'stroke-width': 0.5,
469
+ stroke: t.border,
470
+ 'stroke-width': 1,
536
471
  });
537
472
  });
538
473
  }
539
- // ── Footer ──────────────────────────────────────────────────────────
474
+ // ── Footer (hairline strip) ─────────────────────────────────────────
540
475
  const footerY = assocBaseY + assocBlockH;
541
476
  svg.child('rect', { x: cx, y: footerY, width: W, height: FOOTER, fill: t.footerBg });
542
- svg.child('rect', {
543
- x: cx,
544
- y: footerY + FOOTER - R,
545
- width: W,
546
- height: R,
547
- rx: R,
548
- fill: t.footerBg,
477
+ svg.child('line', {
478
+ x1: cx,
479
+ y1: footerY,
480
+ x2: cx + W,
481
+ y2: footerY,
482
+ stroke: t.border,
483
+ 'stroke-width': 1,
549
484
  });
550
485
  const footTable = svg.child('text', {
551
- x: cx + 16,
552
- y: footerY + 28,
553
- 'font-family': 'system-ui,sans-serif',
486
+ x: cx + 18,
487
+ y: footerY + 25,
488
+ 'font-family': palette_1.FONTS.heading,
554
489
  'font-size': 11,
555
- fill: '#94A3B8',
490
+ 'font-weight': 600,
491
+ 'letter-spacing': 0.6,
492
+ fill: t.textSecondary,
556
493
  });
557
- footTable.text('TABLE: ');
558
- footTable.child('tspan', { 'font-family': "'SF Mono',monospace", fill: accent.to }).text(tableName);
494
+ footTable.text('TABLE ');
495
+ footTable
496
+ .child('tspan', { 'font-family': palette_1.FONTS.mono, 'font-weight': 400, fill: accent.text })
497
+ .text(tableName);
559
498
  if (timestamps) {
560
- const ts = svg.child('text', {
561
- x: cx + 230,
562
- y: footerY + 28,
563
- 'font-family': 'system-ui,sans-serif',
499
+ svg
500
+ .child('text', {
501
+ x: cx + 250,
502
+ y: footerY + 25,
503
+ 'font-family': palette_1.FONTS.body,
564
504
  'font-size': 11,
565
- fill: '#94A3B8',
566
- });
567
- ts.child('tspan', { fill: accent.to }).text('');
568
- ts.text(' timestamps');
505
+ fill: t.textSecondary,
506
+ })
507
+ .text('timestamps');
569
508
  }
570
509
  if (paranoid) {
571
- const pn = svg.child('text', {
572
- x: cx + 340,
573
- y: footerY + 28,
574
- 'font-family': 'system-ui,sans-serif',
510
+ svg
511
+ .child('text', {
512
+ x: cx + 350,
513
+ y: footerY + 25,
514
+ 'font-family': palette_1.FONTS.body,
575
515
  'font-size': 11,
576
- fill: '#94A3B8',
577
- });
578
- pn.child('tspan', { fill: '#F87171' }).text('');
579
- pn.text(' paranoid');
516
+ fill: t.textSecondary,
517
+ })
518
+ .text('paranoid');
580
519
  }
581
520
  svg
582
521
  .child('text', {
583
- x: cx + W - 10,
584
- y: footerY + 28,
585
- 'font-family': 'system-ui,sans-serif',
522
+ x: cx + W - 14,
523
+ y: footerY + 25,
524
+ 'font-family': palette_1.FONTS.body,
586
525
  'font-size': 11,
587
- fill: '#475569',
526
+ fill: t.textSecondary,
588
527
  'text-anchor': 'end',
589
528
  })
590
529
  .text(`${fieldEntries.length} column${fieldEntries.length !== 1 ? 's' : ''}`);
@@ -606,11 +545,10 @@ class ModelDiagram {
606
545
  exports.ModelDiagram = ModelDiagram;
607
546
  // Layout constants (px)
608
547
  ModelDiagram.W = 600;
609
- ModelDiagram.HDR = 68;
610
- ModelDiagram.COL_HDR = 32;
611
- ModelDiagram.ROW_H = 40;
612
- ModelDiagram.ASSOC_HDR = 36;
613
- ModelDiagram.ASSOC_ROW = 30;
614
- ModelDiagram.FOOTER = 42;
615
- ModelDiagram.PAD = 24;
616
- ModelDiagram.R = 14; // border-radius
548
+ ModelDiagram.HDR = 56;
549
+ ModelDiagram.COL_HDR = 30;
550
+ ModelDiagram.ROW_H = 38;
551
+ ModelDiagram.ASSOC_HDR = 34;
552
+ ModelDiagram.ASSOC_ROW = 28;
553
+ ModelDiagram.FOOTER = 40;
554
+ ModelDiagram.PAD = 28;