@specship/specship-win32-arm64 0.28.0 → 0.30.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 (323) hide show
  1. package/lib/dist/.claude-plugin/plugin.json +15 -3
  2. package/lib/dist/activation/cheatsheet.d.ts +10 -7
  3. package/lib/dist/activation/cheatsheet.d.ts.map +1 -1
  4. package/lib/dist/activation/cheatsheet.js +21 -5
  5. package/lib/dist/activation/cheatsheet.js.map +1 -1
  6. package/lib/dist/activation/hook-output.d.ts +75 -2
  7. package/lib/dist/activation/hook-output.d.ts.map +1 -1
  8. package/lib/dist/activation/hook-output.js +114 -3
  9. package/lib/dist/activation/hook-output.js.map +1 -1
  10. package/lib/dist/activation/search-intercept.d.ts +20 -7
  11. package/lib/dist/activation/search-intercept.d.ts.map +1 -1
  12. package/lib/dist/activation/search-intercept.js +27 -5
  13. package/lib/dist/activation/search-intercept.js.map +1 -1
  14. package/lib/dist/activation/steering.d.ts +7 -4
  15. package/lib/dist/activation/steering.d.ts.map +1 -1
  16. package/lib/dist/activation/steering.js +10 -8
  17. package/lib/dist/activation/steering.js.map +1 -1
  18. package/lib/dist/agents/detect.d.ts +32 -0
  19. package/lib/dist/agents/detect.d.ts.map +1 -0
  20. package/lib/dist/agents/detect.js +54 -0
  21. package/lib/dist/agents/detect.js.map +1 -0
  22. package/lib/dist/agents/recent-project.d.ts +18 -0
  23. package/lib/dist/agents/recent-project.d.ts.map +1 -0
  24. package/lib/dist/agents/recent-project.js +92 -0
  25. package/lib/dist/agents/recent-project.js.map +1 -0
  26. package/lib/dist/analytics/canonical-tools.d.ts +23 -0
  27. package/lib/dist/analytics/canonical-tools.d.ts.map +1 -0
  28. package/lib/dist/analytics/canonical-tools.js +36 -0
  29. package/lib/dist/analytics/canonical-tools.js.map +1 -0
  30. package/lib/dist/analytics/canonical-tools.json +16 -0
  31. package/lib/dist/analytics/specship-impact.d.ts +3 -2
  32. package/lib/dist/analytics/specship-impact.d.ts.map +1 -1
  33. package/lib/dist/analytics/specship-impact.js +6 -4
  34. package/lib/dist/analytics/specship-impact.js.map +1 -1
  35. package/lib/dist/bin/specship.js +252 -170
  36. package/lib/dist/bin/specship.js.map +1 -1
  37. package/lib/dist/bin/uninstall.js +2 -2
  38. package/lib/dist/bin/uninstall.js.map +1 -1
  39. package/lib/dist/claudemd/audit.d.ts +12 -3
  40. package/lib/dist/claudemd/audit.d.ts.map +1 -1
  41. package/lib/dist/claudemd/audit.js +65 -22
  42. package/lib/dist/claudemd/audit.js.map +1 -1
  43. package/lib/dist/commands/specship/spec.md +16 -1
  44. package/lib/dist/db/migrations.d.ts +1 -1
  45. package/lib/dist/db/migrations.d.ts.map +1 -1
  46. package/lib/dist/db/migrations.js +18 -4
  47. package/lib/dist/db/migrations.js.map +1 -1
  48. package/lib/dist/db/schema.sql +8 -0
  49. package/lib/dist/db/spec-queries.d.ts +13 -1
  50. package/lib/dist/db/spec-queries.d.ts.map +1 -1
  51. package/lib/dist/db/spec-queries.js +21 -0
  52. package/lib/dist/db/spec-queries.js.map +1 -1
  53. package/lib/dist/design-md/check.d.ts +51 -0
  54. package/lib/dist/design-md/check.d.ts.map +1 -0
  55. package/lib/dist/design-md/check.js +335 -0
  56. package/lib/dist/design-md/check.js.map +1 -0
  57. package/lib/dist/design-md/css.d.ts +40 -0
  58. package/lib/dist/design-md/css.d.ts.map +1 -0
  59. package/lib/dist/design-md/css.js +224 -0
  60. package/lib/dist/design-md/css.js.map +1 -0
  61. package/lib/dist/design-md/extract.d.ts +84 -0
  62. package/lib/dist/design-md/extract.d.ts.map +1 -0
  63. package/lib/dist/design-md/extract.js +595 -0
  64. package/lib/dist/design-md/extract.js.map +1 -0
  65. package/lib/dist/design-md/maintain.d.ts +45 -0
  66. package/lib/dist/design-md/maintain.d.ts.map +1 -0
  67. package/lib/dist/design-md/maintain.js +127 -0
  68. package/lib/dist/design-md/maintain.js.map +1 -0
  69. package/lib/dist/design-md/render.d.ts +28 -0
  70. package/lib/dist/design-md/render.d.ts.map +1 -0
  71. package/lib/dist/design-md/render.js +178 -0
  72. package/lib/dist/design-md/render.js.map +1 -0
  73. package/lib/dist/design-md/upkeep.d.ts +48 -0
  74. package/lib/dist/design-md/upkeep.d.ts.map +1 -0
  75. package/lib/dist/design-md/upkeep.js +169 -0
  76. package/lib/dist/design-md/upkeep.js.map +1 -0
  77. package/lib/dist/design-md/verify.d.ts +65 -0
  78. package/lib/dist/design-md/verify.d.ts.map +1 -0
  79. package/lib/dist/design-md/verify.js +311 -0
  80. package/lib/dist/design-md/verify.js.map +1 -0
  81. package/lib/dist/enforce/changed-files.d.ts +7 -0
  82. package/lib/dist/enforce/changed-files.d.ts.map +1 -1
  83. package/lib/dist/enforce/changed-files.js +17 -0
  84. package/lib/dist/enforce/changed-files.js.map +1 -1
  85. package/lib/dist/enforce/enforce.d.ts +35 -1
  86. package/lib/dist/enforce/enforce.d.ts.map +1 -1
  87. package/lib/dist/enforce/enforce.js +66 -2
  88. package/lib/dist/enforce/enforce.js.map +1 -1
  89. package/lib/dist/extraction/index.d.ts +50 -4
  90. package/lib/dist/extraction/index.d.ts.map +1 -1
  91. package/lib/dist/extraction/index.js +105 -13
  92. package/lib/dist/extraction/index.js.map +1 -1
  93. package/lib/dist/extraction/parse-warnings.d.ts +16 -0
  94. package/lib/dist/extraction/parse-warnings.d.ts.map +1 -0
  95. package/lib/dist/extraction/parse-warnings.js +30 -0
  96. package/lib/dist/extraction/parse-warnings.js.map +1 -0
  97. package/lib/dist/extraction/tree-sitter.d.ts +27 -0
  98. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  99. package/lib/dist/extraction/tree-sitter.js +168 -1
  100. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  101. package/lib/dist/health/smoke-check.js +1 -1
  102. package/lib/dist/health/smoke-check.js.map +1 -1
  103. package/lib/dist/hooks/hooks.json +16 -1
  104. package/lib/dist/index.d.ts +63 -3
  105. package/lib/dist/index.d.ts.map +1 -1
  106. package/lib/dist/index.js +235 -9
  107. package/lib/dist/index.js.map +1 -1
  108. package/lib/dist/installer/agent-record.d.ts +80 -0
  109. package/lib/dist/installer/agent-record.d.ts.map +1 -0
  110. package/lib/dist/installer/agent-record.js +351 -0
  111. package/lib/dist/installer/agent-record.js.map +1 -0
  112. package/lib/dist/installer/auto-migrate.d.ts +56 -0
  113. package/lib/dist/installer/auto-migrate.d.ts.map +1 -0
  114. package/lib/dist/installer/auto-migrate.js +328 -0
  115. package/lib/dist/installer/auto-migrate.js.map +1 -0
  116. package/lib/dist/installer/index.d.ts +37 -8
  117. package/lib/dist/installer/index.d.ts.map +1 -1
  118. package/lib/dist/installer/index.js +156 -46
  119. package/lib/dist/installer/index.js.map +1 -1
  120. package/lib/dist/installer/install-defaults.d.ts +4 -3
  121. package/lib/dist/installer/install-defaults.d.ts.map +1 -1
  122. package/lib/dist/installer/install-defaults.js +6 -5
  123. package/lib/dist/installer/install-defaults.js.map +1 -1
  124. package/lib/dist/installer/{config-writer.d.ts → targets/claude-config-writer.d.ts} +1 -1
  125. package/lib/dist/installer/targets/claude-config-writer.d.ts.map +1 -0
  126. package/lib/dist/installer/{config-writer.js → targets/claude-config-writer.js} +7 -6
  127. package/lib/dist/installer/targets/claude-config-writer.js.map +1 -0
  128. package/lib/dist/installer/targets/claude-projects.d.ts +9 -0
  129. package/lib/dist/installer/targets/claude-projects.d.ts.map +1 -0
  130. package/lib/dist/installer/targets/claude-projects.js +151 -0
  131. package/lib/dist/installer/targets/claude-projects.js.map +1 -0
  132. package/lib/dist/installer/targets/claude.d.ts +29 -2
  133. package/lib/dist/installer/targets/claude.d.ts.map +1 -1
  134. package/lib/dist/installer/targets/claude.js +44 -20
  135. package/lib/dist/installer/targets/claude.js.map +1 -1
  136. package/lib/dist/installer/targets/feature-parity.d.ts +28 -0
  137. package/lib/dist/installer/targets/feature-parity.d.ts.map +1 -0
  138. package/lib/dist/installer/targets/feature-parity.js +32 -0
  139. package/lib/dist/installer/targets/feature-parity.js.map +1 -0
  140. package/lib/dist/installer/{gemini-commands.d.ts → targets/gemini-commands.d.ts} +7 -3
  141. package/lib/dist/installer/targets/gemini-commands.d.ts.map +1 -0
  142. package/lib/dist/installer/{gemini-commands.js → targets/gemini-commands.js} +37 -9
  143. package/lib/dist/installer/targets/gemini-commands.js.map +1 -0
  144. package/lib/dist/installer/targets/gemini-projects.d.ts +11 -0
  145. package/lib/dist/installer/targets/gemini-projects.d.ts.map +1 -0
  146. package/lib/dist/installer/targets/gemini-projects.js +84 -0
  147. package/lib/dist/installer/targets/gemini-projects.js.map +1 -0
  148. package/lib/dist/installer/targets/gemini.d.ts +94 -8
  149. package/lib/dist/installer/targets/gemini.d.ts.map +1 -1
  150. package/lib/dist/installer/targets/gemini.js +392 -33
  151. package/lib/dist/installer/targets/gemini.js.map +1 -1
  152. package/lib/dist/installer/targets/registry.d.ts +8 -1
  153. package/lib/dist/installer/targets/registry.d.ts.map +1 -1
  154. package/lib/dist/installer/targets/registry.js +14 -5
  155. package/lib/dist/installer/targets/registry.js.map +1 -1
  156. package/lib/dist/installer/targets/shared.d.ts +44 -1
  157. package/lib/dist/installer/targets/shared.d.ts.map +1 -1
  158. package/lib/dist/installer/targets/shared.js +130 -3
  159. package/lib/dist/installer/targets/shared.js.map +1 -1
  160. package/lib/dist/installer/targets/types.d.ts +23 -1
  161. package/lib/dist/installer/targets/types.d.ts.map +1 -1
  162. package/lib/dist/jira/auto-publish.d.ts +22 -2
  163. package/lib/dist/jira/auto-publish.d.ts.map +1 -1
  164. package/lib/dist/jira/auto-publish.js +54 -9
  165. package/lib/dist/jira/auto-publish.js.map +1 -1
  166. package/lib/dist/jira/board-first.d.ts +15 -2
  167. package/lib/dist/jira/board-first.d.ts.map +1 -1
  168. package/lib/dist/jira/board-first.js +16 -0
  169. package/lib/dist/jira/board-first.js.map +1 -1
  170. package/lib/dist/jira/ci-publish.d.ts +72 -0
  171. package/lib/dist/jira/ci-publish.d.ts.map +1 -0
  172. package/lib/dist/jira/ci-publish.js +162 -0
  173. package/lib/dist/jira/ci-publish.js.map +1 -0
  174. package/lib/dist/jira/publish.d.ts +23 -0
  175. package/lib/dist/jira/publish.d.ts.map +1 -1
  176. package/lib/dist/jira/publish.js +0 -0
  177. package/lib/dist/jira/publish.js.map +1 -1
  178. package/lib/dist/jira/regression-pack.d.ts.map +1 -1
  179. package/lib/dist/jira/regression-pack.js +7 -1
  180. package/lib/dist/jira/regression-pack.js.map +1 -1
  181. package/lib/dist/jira/repo-config.d.ts.map +1 -1
  182. package/lib/dist/jira/repo-config.js +8 -0
  183. package/lib/dist/jira/repo-config.js.map +1 -1
  184. package/lib/dist/jira/types.d.ts +8 -0
  185. package/lib/dist/jira/types.d.ts.map +1 -1
  186. package/lib/dist/jira/types.js.map +1 -1
  187. package/lib/dist/knowledge/enforce.d.ts.map +1 -1
  188. package/lib/dist/knowledge/enforce.js +6 -1
  189. package/lib/dist/knowledge/enforce.js.map +1 -1
  190. package/lib/dist/mcp/jira-tools.d.ts +5 -0
  191. package/lib/dist/mcp/jira-tools.d.ts.map +1 -1
  192. package/lib/dist/mcp/jira-tools.js +59 -4
  193. package/lib/dist/mcp/jira-tools.js.map +1 -1
  194. package/lib/dist/mcp/proxy.d.ts.map +1 -1
  195. package/lib/dist/mcp/proxy.js +2 -1
  196. package/lib/dist/mcp/proxy.js.map +1 -1
  197. package/lib/dist/mcp/server-instructions.d.ts +16 -10
  198. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  199. package/lib/dist/mcp/server-instructions.js +69 -20
  200. package/lib/dist/mcp/server-instructions.js.map +1 -1
  201. package/lib/dist/mcp/session.d.ts +11 -0
  202. package/lib/dist/mcp/session.d.ts.map +1 -1
  203. package/lib/dist/mcp/session.js +43 -1
  204. package/lib/dist/mcp/session.js.map +1 -1
  205. package/lib/dist/mcp/tools.d.ts.map +1 -1
  206. package/lib/dist/mcp/tools.js +8 -0
  207. package/lib/dist/mcp/tools.js.map +1 -1
  208. package/lib/dist/reflect/apply.d.ts +2 -2
  209. package/lib/dist/reflect/apply.d.ts.map +1 -1
  210. package/lib/dist/reflect/apply.js +6 -5
  211. package/lib/dist/reflect/apply.js.map +1 -1
  212. package/lib/dist/reflect/miner.d.ts.map +1 -1
  213. package/lib/dist/reflect/miner.js +28 -15
  214. package/lib/dist/reflect/miner.js.map +1 -1
  215. package/lib/dist/reflect/session-outcomes.d.ts.map +1 -1
  216. package/lib/dist/reflect/session-outcomes.js +8 -3
  217. package/lib/dist/reflect/session-outcomes.js.map +1 -1
  218. package/lib/dist/reflect/targets.d.ts.map +1 -1
  219. package/lib/dist/reflect/targets.js +25 -5
  220. package/lib/dist/reflect/targets.js.map +1 -1
  221. package/lib/dist/reflect/types.d.ts +7 -0
  222. package/lib/dist/reflect/types.d.ts.map +1 -1
  223. package/lib/dist/resolution/spec-link-resolver.d.ts +14 -2
  224. package/lib/dist/resolution/spec-link-resolver.d.ts.map +1 -1
  225. package/lib/dist/resolution/spec-link-resolver.js +13 -3
  226. package/lib/dist/resolution/spec-link-resolver.js.map +1 -1
  227. package/lib/dist/server/canonical-tools.js +50 -0
  228. package/lib/dist/server/cli.js +2 -2
  229. package/lib/dist/server/host-profiles.js +39 -0
  230. package/lib/dist/server/ingest/index.js +2 -1
  231. package/lib/dist/server/ingest/ingestor.js +195 -76
  232. package/lib/dist/server/ingest/project-paths.js +8 -2
  233. package/lib/dist/server/ingest/recorded-projects.js +43 -0
  234. package/lib/dist/server/ingest/specship-classify.js +7 -2
  235. package/lib/dist/server/ingest/transcripts/claude-jsonl.js +54 -0
  236. package/lib/dist/server/ingest/transcripts/claude.js +64 -0
  237. package/lib/dist/server/ingest/transcripts/gemini.js +469 -0
  238. package/lib/dist/server/ingest/transcripts/index.js +14 -0
  239. package/lib/dist/server/ingest/{parser.js → transcripts/shared.js} +3 -49
  240. package/lib/dist/server/ingest/transcripts/types.js +4 -0
  241. package/lib/dist/server/ingest/watcher.js +31 -30
  242. package/lib/dist/server/routes/claude.js +27 -10
  243. package/lib/dist/server/routes/graph.js +64 -3
  244. package/lib/dist/server/routes/mcp.js +57 -15
  245. package/lib/dist/server/routes/memory.js +54 -35
  246. package/lib/dist/server/routes/projects.js +78 -7
  247. package/lib/dist/server/routes/spec.js +125 -0
  248. package/lib/dist/server/server.js +8 -2
  249. package/lib/dist/skills/design-md/SKILL.md +172 -0
  250. package/lib/dist/skills/design-md/references/authored-sections.md +90 -0
  251. package/lib/dist/skills/design-md/references/sources.md +71 -0
  252. package/lib/dist/skills/spec-author/SKILL.md +1 -1
  253. package/lib/dist/skills/spec-author/references/gap-questions.md +1 -1
  254. package/lib/dist/spec-lint/lint.d.ts +26 -1
  255. package/lib/dist/spec-lint/lint.d.ts.map +1 -1
  256. package/lib/dist/spec-lint/lint.js +96 -7
  257. package/lib/dist/spec-lint/lint.js.map +1 -1
  258. package/lib/dist/spec-quality/postcheck.d.ts +7 -1
  259. package/lib/dist/spec-quality/postcheck.d.ts.map +1 -1
  260. package/lib/dist/spec-quality/postcheck.js +31 -0
  261. package/lib/dist/spec-quality/postcheck.js.map +1 -1
  262. package/lib/dist/sync/worktree.d.ts +48 -0
  263. package/lib/dist/sync/worktree.d.ts.map +1 -1
  264. package/lib/dist/sync/worktree.js +109 -0
  265. package/lib/dist/sync/worktree.js.map +1 -1
  266. package/lib/dist/ui/assets/bricolage-latin-C23fTOVi.woff2 +0 -0
  267. package/lib/dist/ui/assets/bricolage-latin-ext-B82pxkPf.woff2 +0 -0
  268. package/lib/dist/ui/assets/index-54vorjyq.css +1 -0
  269. package/lib/dist/ui/assets/index-BZQonCVb.js +52 -0
  270. package/lib/dist/ui/assets/space-grotesk-latin-DPT1xrvW.woff2 +0 -0
  271. package/lib/dist/ui/assets/space-grotesk-latin-ext-wJGaI8U0.woff2 +0 -0
  272. package/lib/dist/ui/index.html +2 -2
  273. package/lib/dist/update/updater.d.ts +6 -0
  274. package/lib/dist/update/updater.d.ts.map +1 -1
  275. package/lib/dist/update/updater.js +13 -1
  276. package/lib/dist/update/updater.js.map +1 -1
  277. package/lib/dist/workflows/agents/claude.d.ts +9 -0
  278. package/lib/dist/workflows/agents/claude.d.ts.map +1 -1
  279. package/lib/dist/workflows/agents/claude.js +22 -3
  280. package/lib/dist/workflows/agents/claude.js.map +1 -1
  281. package/lib/dist/workflows/agents/gemini-version.d.ts +18 -0
  282. package/lib/dist/workflows/agents/gemini-version.d.ts.map +1 -0
  283. package/lib/dist/workflows/agents/gemini-version.js +81 -0
  284. package/lib/dist/workflows/agents/gemini-version.js.map +1 -0
  285. package/lib/dist/workflows/agents/gemini.d.ts +1 -1
  286. package/lib/dist/workflows/agents/gemini.d.ts.map +1 -1
  287. package/lib/dist/workflows/agents/gemini.js +12 -2
  288. package/lib/dist/workflows/agents/gemini.js.map +1 -1
  289. package/lib/dist/workflows/agents/index.d.ts +2 -0
  290. package/lib/dist/workflows/agents/index.d.ts.map +1 -1
  291. package/lib/dist/workflows/agents/index.js +5 -0
  292. package/lib/dist/workflows/agents/index.js.map +1 -1
  293. package/lib/dist/workflows/agents/types.d.ts +13 -0
  294. package/lib/dist/workflows/agents/types.d.ts.map +1 -1
  295. package/lib/dist/workflows/agents/types.js.map +1 -1
  296. package/lib/dist/workflows/condition-evaluator.d.ts +8 -0
  297. package/lib/dist/workflows/condition-evaluator.d.ts.map +1 -1
  298. package/lib/dist/workflows/condition-evaluator.js +7 -0
  299. package/lib/dist/workflows/condition-evaluator.js.map +1 -1
  300. package/lib/dist/workflows/defaults/claude-design-implement.yaml +44 -15
  301. package/lib/dist/workflows/defaults/spec-author.yaml +9 -9
  302. package/lib/dist/workflows/defaults/spec-fix.yaml +8 -8
  303. package/lib/dist/workflows/defaults/spec-implement.yaml +54 -23
  304. package/lib/dist/workflows/defaults/spec-relink.yaml +5 -5
  305. package/lib/dist/workflows/defaults/spec-verify.yaml +3 -3
  306. package/lib/dist/workflows/executor.d.ts +7 -0
  307. package/lib/dist/workflows/executor.d.ts.map +1 -1
  308. package/lib/dist/workflows/executor.js +22 -5
  309. package/lib/dist/workflows/executor.js.map +1 -1
  310. package/lib/node_modules/.package-lock.json +1 -1
  311. package/lib/package.json +3 -2
  312. package/package.json +1 -1
  313. package/lib/dist/installer/config-writer.d.ts.map +0 -1
  314. package/lib/dist/installer/config-writer.js.map +0 -1
  315. package/lib/dist/installer/gemini-commands.d.ts.map +0 -1
  316. package/lib/dist/installer/gemini-commands.js.map +0 -1
  317. package/lib/dist/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  318. package/lib/dist/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  319. package/lib/dist/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  320. package/lib/dist/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  321. package/lib/dist/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  322. package/lib/dist/ui/assets/index-BzuUWUAE.js +0 -50
  323. package/lib/dist/ui/assets/index-ezwX2EfG.css +0 -1
@@ -0,0 +1,595 @@
1
+ "use strict";
2
+ /**
3
+ * Deterministic design-value extraction for design.md (DESIGNMD-DOC,
4
+ * REQ-DESIGNMD-001).
5
+ *
6
+ * A low-end model asked to read a 2,000-line design snapshot rounds values,
7
+ * invents near-miss colors and misses state rules. This module does that
8
+ * reading in code instead: every custom property, every rule, every literal
9
+ * value, counted and attributed to the selectors that use it. Nothing here
10
+ * interprets the design — it records what is written.
11
+ *
12
+ * Sources: Claude Design snapshots (`.html` + the local stylesheets they
13
+ * link), plain `.css`, Figma code exports (`.tsx` / `.jsx`), and Figma
14
+ * variables exports (`.json`).
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.splitTopLevel = exports.OUTLINE_LIMIT = exports.DesignSourceError = exports.INVENTORY_KINDS = void 0;
51
+ exports.colorLiterals = colorLiterals;
52
+ exports.extractDesign = extractDesign;
53
+ const crypto = __importStar(require("crypto"));
54
+ const fs = __importStar(require("fs"));
55
+ const path = __importStar(require("path"));
56
+ const css_1 = require("./css");
57
+ Object.defineProperty(exports, "splitTopLevel", { enumerable: true, get: function () { return css_1.splitTopLevel; } });
58
+ exports.INVENTORY_KINDS = [
59
+ 'Colors',
60
+ 'Font families',
61
+ 'Font sizes',
62
+ 'Font weights',
63
+ 'Line heights',
64
+ 'Letter spacing',
65
+ 'Spacing',
66
+ 'Sizes',
67
+ 'Radii',
68
+ 'Borders',
69
+ 'Shadows',
70
+ 'Motion',
71
+ 'Opacity',
72
+ 'Z-index',
73
+ 'Breakpoints',
74
+ ];
75
+ class DesignSourceError extends Error {
76
+ }
77
+ exports.DesignSourceError = DesignSourceError;
78
+ /** Max outline lines — the verbatim snapshot carries the rest. */
79
+ exports.OUTLINE_LIMIT = 3000;
80
+ const COLOR_RE = /#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{4}|[0-9a-fA-F]{3})\b|\b(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([^()]*(?:\([^()]*\)[^()]*)*\)/g;
81
+ /** Every color literal written in a value, in order. */
82
+ function colorLiterals(value) {
83
+ return (value.match(COLOR_RE) ?? []).map((c) => (0, css_1.collapse)(c));
84
+ }
85
+ function sha256(buf) {
86
+ return crypto.createHash('sha256').update(buf).digest('hex');
87
+ }
88
+ function toProjectPath(abs, projectRoot) {
89
+ const rel = path.relative(projectRoot, abs);
90
+ return (rel && !rel.startsWith('..') && !path.isAbsolute(rel) ? rel : abs).split(path.sep).join('/');
91
+ }
92
+ function kindOf(file) {
93
+ const ext = path.extname(file).toLowerCase();
94
+ if (ext === '.html' || ext === '.htm')
95
+ return 'html';
96
+ if (ext === '.css')
97
+ return 'css';
98
+ if (ext === '.json')
99
+ return 'variables';
100
+ return 'code';
101
+ }
102
+ /** Property → inventory, for the properties whose whole value is the token. */
103
+ function inventoryFor(property) {
104
+ if (property === 'font-family')
105
+ return 'Font families';
106
+ if (property === 'font-size')
107
+ return 'Font sizes';
108
+ if (property === 'font-weight')
109
+ return 'Font weights';
110
+ if (property === 'line-height')
111
+ return 'Line heights';
112
+ if (property === 'letter-spacing')
113
+ return 'Letter spacing';
114
+ if (/^(margin|padding|gap|row-gap|column-gap|inset|top|right|bottom|left)(-|$)/.test(property))
115
+ return 'Spacing';
116
+ if (/^(width|height|min-width|max-width|min-height|max-height|flex-basis|inline-size|block-size)$/.test(property))
117
+ return 'Sizes';
118
+ if (/^border(-[a-z]+)*-radius$/.test(property))
119
+ return 'Radii';
120
+ if (/^(border|outline)(-(top|right|bottom|left|width|style))?$/.test(property))
121
+ return 'Borders';
122
+ if (property === 'box-shadow' || property === 'text-shadow')
123
+ return 'Shadows';
124
+ if (/^(transition|animation)(-|$)/.test(property))
125
+ return 'Motion';
126
+ if (property === 'opacity')
127
+ return 'Opacity';
128
+ if (property === 'z-index')
129
+ return 'Z-index';
130
+ return null;
131
+ }
132
+ class Inventory {
133
+ entries = new Map();
134
+ add(value, by) {
135
+ const e = this.entries.get(value) ?? { count: 0, usedBy: new Set() };
136
+ e.count++;
137
+ e.usedBy.add(by);
138
+ this.entries.set(value, e);
139
+ }
140
+ list() {
141
+ return [...this.entries.entries()]
142
+ .map(([value, e]) => ({ value, count: e.count, usedBy: [...e.usedBy].sort() }))
143
+ .sort((a, b) => b.count - a.count || (a.value < b.value ? -1 : a.value > b.value ? 1 : 0));
144
+ }
145
+ }
146
+ class Collector {
147
+ projectRoot;
148
+ sources = [];
149
+ customProperties = [];
150
+ variables = [];
151
+ rules = [];
152
+ keyframes = [];
153
+ fontFaces = [];
154
+ fontLinks = new Set();
155
+ inventories = new Map(exports.INVENTORY_KINDS.map((k) => [k, new Inventory()]));
156
+ utilities = new Inventory();
157
+ assets = new Inventory();
158
+ outline = [];
159
+ outlineTruncated = false;
160
+ missingLinks = new Set();
161
+ seen = new Set();
162
+ constructor(projectRoot) {
163
+ this.projectRoot = projectRoot;
164
+ }
165
+ inv(kind) {
166
+ return this.inventories.get(kind);
167
+ }
168
+ /** Register a source file once; returns its text, or null when already read. */
169
+ read(abs, kind) {
170
+ const key = path.resolve(abs);
171
+ if (this.seen.has(key))
172
+ return null;
173
+ let buf;
174
+ try {
175
+ buf = fs.readFileSync(key);
176
+ }
177
+ catch (err) {
178
+ throw new DesignSourceError(`cannot read design source ${toProjectPath(key, this.projectRoot)}: ${err instanceof Error ? err.message : String(err)}`);
179
+ }
180
+ this.seen.add(key);
181
+ this.sources.push({ path: toProjectPath(key, this.projectRoot), sha256: sha256(buf), kind });
182
+ return buf.toString('utf-8');
183
+ }
184
+ declaration(decl, by, media) {
185
+ for (const c of colorLiterals(decl.value))
186
+ this.inv('Colors').add(c, by);
187
+ const kind = inventoryFor(decl.property);
188
+ if (kind)
189
+ this.inv(kind).add(decl.value, by);
190
+ for (const m of decl.value.matchAll(/url\(\s*(['"]?)([^'")]+)\1\s*\)/g)) {
191
+ if (!m[2].startsWith('data:'))
192
+ this.assets.add(m[2], by);
193
+ }
194
+ if (decl.property.startsWith('--')) {
195
+ this.customProperties.push({ selector: by, name: decl.property, value: decl.value, ...(media ? { media } : {}) });
196
+ }
197
+ }
198
+ css(text, origin) {
199
+ const parsed = (0, css_1.parseCss)(text);
200
+ for (const rule of parsed.rules) {
201
+ this.rules.push(rule);
202
+ for (const decl of rule.declarations)
203
+ this.declaration(decl, rule.selector, rule.media);
204
+ if (rule.media)
205
+ this.breakpoints(rule.media);
206
+ }
207
+ for (const kf of parsed.keyframes) {
208
+ this.keyframes.push(kf);
209
+ for (const c of colorLiterals(kf.body))
210
+ this.inv('Colors').add(c, `@keyframes ${kf.name}`);
211
+ }
212
+ for (const face of parsed.fontFaces) {
213
+ this.fontFaces.push(face);
214
+ for (const d of face) {
215
+ for (const m of d.value.matchAll(/url\(\s*(['"]?)([^'")]+)\1\s*\)/g)) {
216
+ if (!m[2].startsWith('data:'))
217
+ this.assets.add(m[2], '@font-face');
218
+ }
219
+ }
220
+ }
221
+ for (const imp of parsed.imports) {
222
+ const url = /url\(\s*(['"]?)([^'")]+)\1\s*\)|(['"])([^'"]+)\3/.exec(imp);
223
+ const target = url?.[2] ?? url?.[4];
224
+ if (target && /^https?:/.test(target))
225
+ this.fontLinks.add(target);
226
+ else if (target && origin)
227
+ this.linked(path.resolve(path.dirname(origin), target));
228
+ }
229
+ }
230
+ breakpoints(media) {
231
+ for (const m of media.matchAll(/\(\s*((?:min|max)-(?:width|height)|width|height)\s*(?::|[<>]=?)\s*([^)]+)\)/g)) {
232
+ this.inv('Breakpoints').add((0, css_1.collapse)(m[0]), media);
233
+ }
234
+ }
235
+ /** A stylesheet referenced by another source: record it as missing instead of failing. */
236
+ linked(abs) {
237
+ if (!fs.existsSync(abs)) {
238
+ this.missingLinks.add(toProjectPath(abs, this.projectRoot));
239
+ return;
240
+ }
241
+ this.file(abs);
242
+ }
243
+ file(abs) {
244
+ const kind = kindOf(abs);
245
+ const text = this.read(abs, kind);
246
+ if (text === null)
247
+ return;
248
+ if (kind === 'html')
249
+ this.html(text, abs);
250
+ else if (kind === 'css')
251
+ this.css(text, abs);
252
+ else if (kind === 'variables')
253
+ this.variablesJson(text, abs);
254
+ else
255
+ this.code(text, toProjectPath(abs, this.projectRoot));
256
+ }
257
+ html(text, abs) {
258
+ for (const m of text.matchAll(/<style\b[^>]*>([\s\S]*?)<\/style>/gi))
259
+ this.css(m[1], abs);
260
+ for (const m of text.matchAll(/<link\b[^>]*>/gi)) {
261
+ const tag = m[0];
262
+ const href = attr(tag, 'href');
263
+ if (!href)
264
+ continue;
265
+ const rel = (attr(tag, 'rel') ?? '').toLowerCase();
266
+ if (/^(https?:)?\/\//.test(href)) {
267
+ if (rel.includes('stylesheet') || /fonts\.(googleapis|gstatic)|typekit|fonts\./.test(href))
268
+ this.fontLinks.add(href);
269
+ }
270
+ else if (rel.includes('stylesheet')) {
271
+ this.linked(path.resolve(path.dirname(abs), href.split(/[?#]/)[0]));
272
+ }
273
+ else if (rel.includes('icon')) {
274
+ this.assets.add(href, '<link rel=icon>');
275
+ }
276
+ }
277
+ this.markup(text);
278
+ }
279
+ /**
280
+ * Inline styles, image references, inline SVG and the element outline.
281
+ *
282
+ * Each outline line is one element with its own inline declarations in
283
+ * braces, so a design whose styling lives in `style=""` attributes (every
284
+ * React-rendered Claude Design export) keeps each value next to the element
285
+ * it belongs to. Text nodes are their own quoted lines, in document order.
286
+ * Inline SVG is written verbatim on its own outline line: an id-and-lookup
287
+ * scheme let a small model paste the wrong icon (design-md pixel eval).
288
+ */
289
+ markup(text) {
290
+ const body = text.replace(/<(script|style|template|head|title)\b[\s\S]*?<\/\1>/gi, '').replace(/<!--[\s\S]*?-->/g, '').replace(/<![^>]*>/g, '');
291
+ const VOID = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'source', 'track', 'wbr']);
292
+ // <html> stays: a theme class on it (`html.dark`) changes every color.
293
+ const SKIP = new Set(['head', 'meta', 'link', 'title', 'base']);
294
+ let depth = 0;
295
+ let svgUntil = -1;
296
+ const push = (line) => {
297
+ if (this.outline.length < exports.OUTLINE_LIMIT)
298
+ this.outline.push(line);
299
+ else
300
+ this.outlineTruncated = true;
301
+ };
302
+ const tagRe = /<(\/?)([a-zA-Z][\w:-]*)((?:[^>"']|"[^"]*"|'[^']*')*)>|([^<]+)/g;
303
+ for (const m of body.matchAll(tagRe)) {
304
+ if (m.index < svgUntil)
305
+ continue;
306
+ if (m[4] !== undefined) {
307
+ // Collapse runs but keep one edge space: in inline text it renders
308
+ // ("account? " + <a>Sign up</a> — trimming it glued the words).
309
+ const t = decodeEntities(m[4]).replace(/\s+/g, ' ');
310
+ // A whitespace-only node with no newline is a real space between
311
+ // inline siblings (`</span> <span>` in serialized live DOM) and it
312
+ // renders; newline-indented whitespace is source pretty-printing.
313
+ if (t.trim() || (t === ' ' && !/\n/.test(m[4])))
314
+ push(`${' '.repeat(depth)}"${t}"`);
315
+ continue;
316
+ }
317
+ const closing = m[1] === '/';
318
+ const tag = m[2].toLowerCase();
319
+ const attrs = m[3] ?? '';
320
+ if (closing) {
321
+ if (!VOID.has(tag) && !SKIP.has(tag))
322
+ depth = Math.max(0, depth - 1);
323
+ continue;
324
+ }
325
+ const selfClosing = /\/\s*$/.test(attrs);
326
+ const label = elementLabel(tag, attrs);
327
+ // Decode before parsing: live DOM serializes quotes as `&quot;`, whose
328
+ // `;` would otherwise end the declaration (`font-family: &quot`).
329
+ const rawStyle = attr(attrs, 'style');
330
+ const style = rawStyle === null ? null : decodeEntities(rawStyle);
331
+ const decls = style ? (0, css_1.parseDeclarationList)(style) : [];
332
+ if (decls.length > 0) {
333
+ for (const decl of decls)
334
+ this.declaration(decl, `inline ${label}`);
335
+ this.rules.push({ selector: `inline ${label}`, declarations: decls });
336
+ }
337
+ for (const name of ['src', 'srcset', 'poster']) {
338
+ const v = attr(attrs, name);
339
+ if (v && !v.startsWith('data:'))
340
+ for (const part of v.split(','))
341
+ this.assets.add(part.trim().split(/\s+/)[0], label);
342
+ }
343
+ if (SKIP.has(tag))
344
+ continue;
345
+ const styleText = decls.length > 0 ? ` { ${decls.map((d) => `${d.property}: ${d.value};`).join(' ')} }` : '';
346
+ if (tag === 'svg' && !selfClosing) {
347
+ const end = matchingClose(body, m.index, 'svg');
348
+ const markup = (0, css_1.collapse)(body.slice(m.index, end));
349
+ const id = this.svg(markup, label);
350
+ for (const c of colorLiterals(markup))
351
+ this.inv('Colors').add(c, id);
352
+ push(`${' '.repeat(depth)}${label}${styleText} = ${markup}`);
353
+ svgUntil = end;
354
+ continue;
355
+ }
356
+ push(`${' '.repeat(depth)}${label}${styleText}`);
357
+ if (!VOID.has(tag) && !selfClosing)
358
+ depth++;
359
+ }
360
+ }
361
+ svgIds = new Map();
362
+ svg(markup, by) {
363
+ const known = this.svgIds.get(markup);
364
+ if (known) {
365
+ known.count++;
366
+ known.usedBy.add(by);
367
+ return known.id;
368
+ }
369
+ const id = `svg-${this.svgIds.size + 1}`;
370
+ this.svgIds.set(markup, { id, usedBy: new Set([by]), count: 1 });
371
+ return id;
372
+ }
373
+ svgList() {
374
+ return [...this.svgIds.entries()].map(([markup, e]) => ({ id: e.id, markup, count: e.count }));
375
+ }
376
+ variablesJson(text, abs) {
377
+ let data;
378
+ try {
379
+ data = JSON.parse(text);
380
+ }
381
+ catch (err) {
382
+ throw new DesignSourceError(`design variables ${toProjectPath(abs, this.projectRoot)} is not valid JSON: ${err instanceof Error ? err.message : String(err)}`);
383
+ }
384
+ const visit = (node, prefix) => {
385
+ if (node === null || node === undefined)
386
+ return;
387
+ if (typeof node !== 'object') {
388
+ this.variable(prefix, String(node));
389
+ return;
390
+ }
391
+ const obj = node;
392
+ const leaf = obj['$value'] ?? obj['value'];
393
+ if (leaf !== undefined && (typeof leaf !== 'object' || leaf === null)) {
394
+ this.variable(prefix, String(leaf));
395
+ return;
396
+ }
397
+ for (const key of Object.keys(obj)) {
398
+ if (key.startsWith('$'))
399
+ continue;
400
+ visit(obj[key], prefix ? `${prefix}/${key}` : key);
401
+ }
402
+ };
403
+ visit(data, '');
404
+ }
405
+ variable(name, value) {
406
+ if (!name)
407
+ return;
408
+ this.variables.push({ name, value });
409
+ const by = `variable ${name}`;
410
+ for (const c of colorLiterals(value))
411
+ this.inv('Colors').add(c, by);
412
+ const lower = name.toLowerCase();
413
+ const guess = /font.?family|typeface/.test(lower) ? 'Font families'
414
+ : /font.?size|text.?size/.test(lower) ? 'Font sizes'
415
+ : /weight/.test(lower) ? 'Font weights'
416
+ : /line.?height|leading/.test(lower) ? 'Line heights'
417
+ : /letter|tracking/.test(lower) ? 'Letter spacing'
418
+ : /radius|rounded|corner/.test(lower) ? 'Radii'
419
+ : /shadow|elevation/.test(lower) ? 'Shadows'
420
+ : /space|spacing|gap|padding|margin/.test(lower) ? 'Spacing'
421
+ : null;
422
+ if (guess)
423
+ this.inv(guess).add(value, by);
424
+ }
425
+ /** Figma / React code exports: Tailwind arbitrary values, style objects, literals. */
426
+ code(text, file) {
427
+ const lines = text.split('\n');
428
+ lines.forEach((line, idx) => {
429
+ const by = `${file}:${idx + 1}`;
430
+ let rest = line;
431
+ for (const m of line.matchAll(/style=\{\{([^}]*)\}\}/g)) {
432
+ for (const p of m[1].matchAll(/([A-Za-z]+)\s*:\s*(?:'([^']*)'|"([^"]*)"|(-?\d+(?:\.\d+)?))/g)) {
433
+ const property = p[1].replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
434
+ const raw = p[2] ?? p[3] ?? p[4];
435
+ const unitless = /^(opacity|z-index|font-weight|line-height|flex|order)$/.test(property);
436
+ const value = p[4] !== undefined && !unitless && p[4] !== '0' ? `${raw}px` : raw;
437
+ this.declaration({ property, value }, by);
438
+ }
439
+ rest = rest.replace(m[0], ' ');
440
+ }
441
+ for (const cls of classTokens(line)) {
442
+ const arb = /^((?:[a-z]+:)*)(-?[a-z][a-z-]*)-\[([^\]]+)\]$/.exec(cls);
443
+ if (arb) {
444
+ const value = arb[3].replace(/_/g, ' ');
445
+ const kind = tailwindKind(arb[2], value);
446
+ if (kind === 'Colors')
447
+ this.inv('Colors').add(value, by);
448
+ else {
449
+ for (const c of colorLiterals(value))
450
+ this.inv('Colors').add(c, by);
451
+ if (kind)
452
+ this.inv(kind).add(value, by);
453
+ }
454
+ rest = rest.replace(cls, ' ');
455
+ }
456
+ else if (/^[a-z!-][\w:/.!-]*$/.test(cls) && /[-:]/.test(cls)) {
457
+ this.utilities.add(cls, by);
458
+ }
459
+ }
460
+ for (const c of colorLiterals(rest))
461
+ this.inv('Colors').add(c, by);
462
+ for (const m of rest.matchAll(/\b(?:src|href)=["']([^"']+\.(?:png|jpe?g|gif|svg|webp|avif|ico))["']/gi)) {
463
+ this.assets.add(m[1], by);
464
+ }
465
+ });
466
+ }
467
+ }
468
+ /** Index just past the `</tag>` that closes the element opening at `start`. */
469
+ function matchingClose(text, start, tag) {
470
+ const re = new RegExp(`<(/?)${tag}\\b[^>]*?(/?)>`, 'gi');
471
+ re.lastIndex = start;
472
+ let depth = 0;
473
+ for (let m = re.exec(text); m; m = re.exec(text)) {
474
+ if (m[1] === '/')
475
+ depth--;
476
+ else if (m[2] !== '/')
477
+ depth++;
478
+ if (depth === 0)
479
+ return m.index + m[0].length;
480
+ }
481
+ return text.length;
482
+ }
483
+ function decodeEntities(text) {
484
+ return text
485
+ .replace(/&nbsp;/g, ' ')
486
+ .replace(/&lt;/g, '<')
487
+ .replace(/&gt;/g, '>')
488
+ .replace(/&quot;/g, '"')
489
+ .replace(/&#39;|&apos;/g, "'")
490
+ .replace(/&#(\d+);/g, (_, n) => String.fromCodePoint(Number(n)))
491
+ .replace(/&#x([0-9a-f]+);/gi, (_, n) => String.fromCodePoint(parseInt(n, 16)))
492
+ .replace(/&amp;/g, '&');
493
+ }
494
+ function attr(tag, name) {
495
+ const m = new RegExp(`\\s${name}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s>]+))`, 'i').exec(` ${tag}`);
496
+ return m ? (m[1] ?? m[2] ?? m[3] ?? '') : null;
497
+ }
498
+ /**
499
+ * An element as one outline token: tag, id, EVERY class (on a utility-class
500
+ * design each class is a style — truncating them lost `bg-gray-950` and made a
501
+ * small model guess), then the attributes that change what renders.
502
+ */
503
+ function elementLabel(tag, attrs) {
504
+ const id = attr(attrs, 'id');
505
+ const cls = (attr(attrs, 'class') ?? '').split(/\s+/).filter(Boolean);
506
+ let label = tag;
507
+ if (id)
508
+ label += `#${id}`;
509
+ if (cls.length)
510
+ label += `.${cls.join('.')}`;
511
+ for (const a of ['role', 'aria-label', 'type', 'placeholder', 'value', 'alt', 'aria-selected', 'aria-current', 'aria-expanded']) {
512
+ const v = attr(attrs, a);
513
+ if (v)
514
+ label += `[${a}=${JSON.stringify(decodeEntities(v))}]`;
515
+ }
516
+ // Boolean attributes, tested with quoted values removed so a class named
517
+ // "disabled" doesn't count.
518
+ const bare = ` ${attrs.replace(/"[^"]*"|'[^']*'/g, '""')}`;
519
+ for (const flag of ['disabled', 'checked', 'selected', 'readonly']) {
520
+ if (new RegExp(`\\s${flag}(\\s|=|/|$)`, 'i').test(bare))
521
+ label += `[${flag}]`;
522
+ }
523
+ return label;
524
+ }
525
+ /** Class-like tokens from `className="…"` / `class="…"` and template strings. */
526
+ function classTokens(line) {
527
+ const out = [];
528
+ for (const m of line.matchAll(/class(?:Name)?\s*=\s*(?:\{\s*)?(?:"([^"]*)"|'([^']*)'|`([^`]*)`)/g)) {
529
+ out.push(...(m[1] ?? m[2] ?? m[3] ?? '').split(/\s+/).filter(Boolean));
530
+ }
531
+ return out;
532
+ }
533
+ function tailwindKind(prefix, value) {
534
+ const isColor = colorLiterals(value).length > 0 && colorLiterals(value)[0] === value;
535
+ const p = prefix.replace(/^-/, '');
536
+ if (/^(bg|from|via|to|fill|stroke|ring|outline|accent|caret|decoration|divide|placeholder)$/.test(p))
537
+ return isColor ? 'Colors' : null;
538
+ if (p === 'text')
539
+ return isColor ? 'Colors' : 'Font sizes';
540
+ if (p === 'border' || /^border-[trblxy]$/.test(p))
541
+ return isColor ? 'Colors' : 'Borders';
542
+ if (/^(p|px|py|pt|pr|pb|pl|ps|pe|m|mx|my|mt|mr|mb|ml|ms|me|gap|gap-x|gap-y|space-x|space-y|top|right|bottom|left|inset|inset-x|inset-y)$/.test(p))
543
+ return 'Spacing';
544
+ if (/^(w|h|min-w|max-w|min-h|max-h|size|basis)$/.test(p))
545
+ return 'Sizes';
546
+ if (/^rounded(-[a-z]+)?$/.test(p))
547
+ return 'Radii';
548
+ if (p === 'shadow')
549
+ return isColor ? 'Colors' : 'Shadows';
550
+ if (p === 'leading')
551
+ return 'Line heights';
552
+ if (p === 'tracking')
553
+ return 'Letter spacing';
554
+ if (p === 'font')
555
+ return /^\d+$/.test(value) ? 'Font weights' : 'Font families';
556
+ if (/^(duration|delay|ease|transition|animate)$/.test(p))
557
+ return 'Motion';
558
+ if (p === 'opacity')
559
+ return 'Opacity';
560
+ if (p === 'z')
561
+ return 'Z-index';
562
+ return null;
563
+ }
564
+ /**
565
+ * Extract every literal visual value from the given sources. Paths resolve
566
+ * against `projectRoot`. Throws `DesignSourceError` when a source is missing
567
+ * or unreadable — the caller writes nothing in that case (REQ-DESIGNMD-001.A6).
568
+ */
569
+ function extractDesign(paths, opts) {
570
+ if (paths.length === 0)
571
+ throw new DesignSourceError('no design source given');
572
+ const c = new Collector(opts.projectRoot);
573
+ for (const p of paths)
574
+ c.file(path.resolve(opts.projectRoot, p));
575
+ const inventories = {};
576
+ for (const k of exports.INVENTORY_KINDS)
577
+ inventories[k] = c.inv(k).list();
578
+ return {
579
+ sources: c.sources,
580
+ customProperties: c.customProperties,
581
+ variables: c.variables,
582
+ rules: c.rules,
583
+ keyframes: c.keyframes,
584
+ fontFaces: c.fontFaces,
585
+ fontLinks: [...c.fontLinks].sort(),
586
+ inventories,
587
+ utilityClasses: c.utilities.list(),
588
+ assets: c.assets.list(),
589
+ outline: c.outline,
590
+ svgs: c.svgList(),
591
+ outlineTruncated: c.outlineTruncated,
592
+ missingLinks: [...c.missingLinks].sort(),
593
+ };
594
+ }
595
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/design-md/extract.ts"],"names":[],"mappings":"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"}