@muloka/figma-console-mcp 0.1.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 (443) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +898 -0
  3. package/dist/apps/design-system-dashboard/scoring/accessibility.d.ts +14 -0
  4. package/dist/apps/design-system-dashboard/scoring/accessibility.d.ts.map +1 -0
  5. package/dist/apps/design-system-dashboard/scoring/accessibility.js +278 -0
  6. package/dist/apps/design-system-dashboard/scoring/accessibility.js.map +1 -0
  7. package/dist/apps/design-system-dashboard/scoring/component-metadata.d.ts +29 -0
  8. package/dist/apps/design-system-dashboard/scoring/component-metadata.d.ts.map +1 -0
  9. package/dist/apps/design-system-dashboard/scoring/component-metadata.js +358 -0
  10. package/dist/apps/design-system-dashboard/scoring/component-metadata.js.map +1 -0
  11. package/dist/apps/design-system-dashboard/scoring/consistency.d.ts +14 -0
  12. package/dist/apps/design-system-dashboard/scoring/consistency.d.ts.map +1 -0
  13. package/dist/apps/design-system-dashboard/scoring/consistency.js +342 -0
  14. package/dist/apps/design-system-dashboard/scoring/consistency.js.map +1 -0
  15. package/dist/apps/design-system-dashboard/scoring/coverage.d.ts +14 -0
  16. package/dist/apps/design-system-dashboard/scoring/coverage.d.ts.map +1 -0
  17. package/dist/apps/design-system-dashboard/scoring/coverage.js +231 -0
  18. package/dist/apps/design-system-dashboard/scoring/coverage.js.map +1 -0
  19. package/dist/apps/design-system-dashboard/scoring/engine.d.ts +27 -0
  20. package/dist/apps/design-system-dashboard/scoring/engine.d.ts.map +1 -0
  21. package/dist/apps/design-system-dashboard/scoring/engine.js +93 -0
  22. package/dist/apps/design-system-dashboard/scoring/engine.js.map +1 -0
  23. package/dist/apps/design-system-dashboard/scoring/naming-semantics.d.ts +14 -0
  24. package/dist/apps/design-system-dashboard/scoring/naming-semantics.d.ts.map +1 -0
  25. package/dist/apps/design-system-dashboard/scoring/naming-semantics.js +309 -0
  26. package/dist/apps/design-system-dashboard/scoring/naming-semantics.js.map +1 -0
  27. package/dist/apps/design-system-dashboard/scoring/token-architecture.d.ts +14 -0
  28. package/dist/apps/design-system-dashboard/scoring/token-architecture.d.ts.map +1 -0
  29. package/dist/apps/design-system-dashboard/scoring/token-architecture.js +350 -0
  30. package/dist/apps/design-system-dashboard/scoring/token-architecture.js.map +1 -0
  31. package/dist/apps/design-system-dashboard/scoring/types.d.ts +89 -0
  32. package/dist/apps/design-system-dashboard/scoring/types.d.ts.map +1 -0
  33. package/dist/apps/design-system-dashboard/scoring/types.js +41 -0
  34. package/dist/apps/design-system-dashboard/scoring/types.js.map +1 -0
  35. package/dist/apps/design-system-dashboard/server.d.ts +24 -0
  36. package/dist/apps/design-system-dashboard/server.d.ts.map +1 -0
  37. package/dist/apps/design-system-dashboard/server.js +160 -0
  38. package/dist/apps/design-system-dashboard/server.js.map +1 -0
  39. package/dist/apps/token-browser/server.d.ts +26 -0
  40. package/dist/apps/token-browser/server.d.ts.map +1 -0
  41. package/dist/apps/token-browser/server.js +137 -0
  42. package/dist/apps/token-browser/server.js.map +1 -0
  43. package/dist/browser/base.d.ts +58 -0
  44. package/dist/browser/base.d.ts.map +1 -0
  45. package/dist/browser/base.js +6 -0
  46. package/dist/browser/base.js.map +1 -0
  47. package/dist/browser/local.d.ts +87 -0
  48. package/dist/browser/local.d.ts.map +1 -0
  49. package/dist/browser/local.js +318 -0
  50. package/dist/browser/local.js.map +1 -0
  51. package/dist/cloudflare/apps/design-system-dashboard/scoring/accessibility.js +277 -0
  52. package/dist/cloudflare/apps/design-system-dashboard/scoring/component-metadata.js +357 -0
  53. package/dist/cloudflare/apps/design-system-dashboard/scoring/consistency.js +341 -0
  54. package/dist/cloudflare/apps/design-system-dashboard/scoring/coverage.js +230 -0
  55. package/dist/cloudflare/apps/design-system-dashboard/scoring/engine.js +92 -0
  56. package/dist/cloudflare/apps/design-system-dashboard/scoring/naming-semantics.js +308 -0
  57. package/dist/cloudflare/apps/design-system-dashboard/scoring/token-architecture.js +349 -0
  58. package/dist/cloudflare/apps/design-system-dashboard/scoring/types.js +40 -0
  59. package/dist/cloudflare/apps/design-system-dashboard/server.js +159 -0
  60. package/dist/cloudflare/apps/token-browser/server.js +136 -0
  61. package/dist/cloudflare/browser-manager.js +157 -0
  62. package/dist/cloudflare/core/accessibility-tools.js +361 -0
  63. package/dist/cloudflare/core/annotation-tools.js +230 -0
  64. package/dist/cloudflare/core/cloud-websocket-connector.js +419 -0
  65. package/dist/cloudflare/core/cloud-websocket-relay.js +198 -0
  66. package/dist/cloudflare/core/comment-tools.js +292 -0
  67. package/dist/cloudflare/core/config.js +153 -0
  68. package/dist/cloudflare/core/console-monitor.js +427 -0
  69. package/dist/cloudflare/core/deep-component-tools.js +128 -0
  70. package/dist/cloudflare/core/design-code-tools.js +2793 -0
  71. package/dist/cloudflare/core/design-system-manifest.js +265 -0
  72. package/dist/cloudflare/core/design-system-tools.js +882 -0
  73. package/dist/cloudflare/core/diagnose-tool.js +100 -0
  74. package/dist/cloudflare/core/diff/changelog-formatter.js +275 -0
  75. package/dist/cloudflare/core/diff/diff-engine.js +334 -0
  76. package/dist/cloudflare/core/diff/property-compare.js +36 -0
  77. package/dist/cloudflare/core/diff/version-cache.js +74 -0
  78. package/dist/cloudflare/core/enrichment/enrichment-service.js +374 -0
  79. package/dist/cloudflare/core/enrichment/index.js +7 -0
  80. package/dist/cloudflare/core/enrichment/relationship-mapper.js +351 -0
  81. package/dist/cloudflare/core/enrichment/style-resolver.js +346 -0
  82. package/dist/cloudflare/core/figjam-tools.js +547 -0
  83. package/dist/cloudflare/core/figma-api.js +509 -0
  84. package/dist/cloudflare/core/figma-connector.js +7 -0
  85. package/dist/cloudflare/core/figma-reconstruction-spec.js +402 -0
  86. package/dist/cloudflare/core/figma-style-extractor.js +311 -0
  87. package/dist/cloudflare/core/figma-tools.js +3302 -0
  88. package/dist/cloudflare/core/identity.js +96 -0
  89. package/dist/cloudflare/core/library-tools.js +580 -0
  90. package/dist/cloudflare/core/logger.js +53 -0
  91. package/dist/cloudflare/core/port-discovery.js +935 -0
  92. package/dist/cloudflare/core/resolve-package-root.js +11 -0
  93. package/dist/cloudflare/core/slides-tools.js +714 -0
  94. package/dist/cloudflare/core/slot-tools.js +334 -0
  95. package/dist/cloudflare/core/snippet-injector.js +96 -0
  96. package/dist/cloudflare/core/tokens/alias-resolver.js +205 -0
  97. package/dist/cloudflare/core/tokens/config.js +294 -0
  98. package/dist/cloudflare/core/tokens/dialect.js +232 -0
  99. package/dist/cloudflare/core/tokens/figma-converter.js +323 -0
  100. package/dist/cloudflare/core/tokens/formatters/css-vars.js +338 -0
  101. package/dist/cloudflare/core/tokens/formatters/dtcg.js +376 -0
  102. package/dist/cloudflare/core/tokens/formatters/index.js +45 -0
  103. package/dist/cloudflare/core/tokens/formatters/json.js +205 -0
  104. package/dist/cloudflare/core/tokens/formatters/less.js +4 -0
  105. package/dist/cloudflare/core/tokens/formatters/scss.js +258 -0
  106. package/dist/cloudflare/core/tokens/formatters/stubs.js +13 -0
  107. package/dist/cloudflare/core/tokens/formatters/style-dictionary-v3.js +213 -0
  108. package/dist/cloudflare/core/tokens/formatters/tailwind-v3.js +237 -0
  109. package/dist/cloudflare/core/tokens/formatters/tailwind-v4.js +335 -0
  110. package/dist/cloudflare/core/tokens/formatters/tokens-studio.js +256 -0
  111. package/dist/cloudflare/core/tokens/formatters/ts-module.js +198 -0
  112. package/dist/cloudflare/core/tokens/index.js +16 -0
  113. package/dist/cloudflare/core/tokens/parsers/css-vars.js +4 -0
  114. package/dist/cloudflare/core/tokens/parsers/dtcg.js +280 -0
  115. package/dist/cloudflare/core/tokens/parsers/index.js +138 -0
  116. package/dist/cloudflare/core/tokens/parsers/json.js +7 -0
  117. package/dist/cloudflare/core/tokens/parsers/scss.js +4 -0
  118. package/dist/cloudflare/core/tokens/parsers/stubs.js +20 -0
  119. package/dist/cloudflare/core/tokens/parsers/style-dictionary-v3.js +4 -0
  120. package/dist/cloudflare/core/tokens/parsers/tailwind-v3.js +4 -0
  121. package/dist/cloudflare/core/tokens/parsers/tailwind-v4.js +4 -0
  122. package/dist/cloudflare/core/tokens/parsers/tokens-studio.js +4 -0
  123. package/dist/cloudflare/core/tokens/schemas.js +152 -0
  124. package/dist/cloudflare/core/tokens/transforms/color.js +12 -0
  125. package/dist/cloudflare/core/tokens/transforms/index.js +29 -0
  126. package/dist/cloudflare/core/tokens/transforms/size.js +7 -0
  127. package/dist/cloudflare/core/tokens/types.js +18 -0
  128. package/dist/cloudflare/core/tokens-tools.js +1788 -0
  129. package/dist/cloudflare/core/types/design-code.js +4 -0
  130. package/dist/cloudflare/core/types/enriched.js +5 -0
  131. package/dist/cloudflare/core/types/index.js +4 -0
  132. package/dist/cloudflare/core/variable-resolver.js +85 -0
  133. package/dist/cloudflare/core/version-tools.js +1199 -0
  134. package/dist/cloudflare/core/websocket-connector.js +436 -0
  135. package/dist/cloudflare/core/websocket-server.js +956 -0
  136. package/dist/cloudflare/core/write-tools.js +2506 -0
  137. package/dist/cloudflare/index.js +3010 -0
  138. package/dist/core/accessibility-tools.d.ts +21 -0
  139. package/dist/core/accessibility-tools.d.ts.map +1 -0
  140. package/dist/core/accessibility-tools.js +362 -0
  141. package/dist/core/accessibility-tools.js.map +1 -0
  142. package/dist/core/annotation-tools.d.ts +14 -0
  143. package/dist/core/annotation-tools.d.ts.map +1 -0
  144. package/dist/core/annotation-tools.js +231 -0
  145. package/dist/core/annotation-tools.js.map +1 -0
  146. package/dist/core/comment-tools.d.ts +11 -0
  147. package/dist/core/comment-tools.d.ts.map +1 -0
  148. package/dist/core/comment-tools.js +293 -0
  149. package/dist/core/comment-tools.js.map +1 -0
  150. package/dist/core/config.d.ts +17 -0
  151. package/dist/core/config.d.ts.map +1 -0
  152. package/dist/core/config.js +154 -0
  153. package/dist/core/config.js.map +1 -0
  154. package/dist/core/console-monitor.d.ts +82 -0
  155. package/dist/core/console-monitor.d.ts.map +1 -0
  156. package/dist/core/console-monitor.js +428 -0
  157. package/dist/core/console-monitor.js.map +1 -0
  158. package/dist/core/deep-component-tools.d.ts +14 -0
  159. package/dist/core/deep-component-tools.d.ts.map +1 -0
  160. package/dist/core/deep-component-tools.js +129 -0
  161. package/dist/core/deep-component-tools.js.map +1 -0
  162. package/dist/core/design-code-tools.d.ts +116 -0
  163. package/dist/core/design-code-tools.d.ts.map +1 -0
  164. package/dist/core/design-code-tools.js +2794 -0
  165. package/dist/core/design-code-tools.js.map +1 -0
  166. package/dist/core/design-system-manifest.d.ts +273 -0
  167. package/dist/core/design-system-manifest.d.ts.map +1 -0
  168. package/dist/core/design-system-manifest.js +266 -0
  169. package/dist/core/design-system-manifest.js.map +1 -0
  170. package/dist/core/design-system-tools.d.ts +67 -0
  171. package/dist/core/design-system-tools.d.ts.map +1 -0
  172. package/dist/core/design-system-tools.js +883 -0
  173. package/dist/core/design-system-tools.js.map +1 -0
  174. package/dist/core/diagnose-tool.d.ts +41 -0
  175. package/dist/core/diagnose-tool.d.ts.map +1 -0
  176. package/dist/core/diagnose-tool.js +101 -0
  177. package/dist/core/diagnose-tool.js.map +1 -0
  178. package/dist/core/diff/changelog-formatter.d.ts +35 -0
  179. package/dist/core/diff/changelog-formatter.d.ts.map +1 -0
  180. package/dist/core/diff/changelog-formatter.js +276 -0
  181. package/dist/core/diff/changelog-formatter.js.map +1 -0
  182. package/dist/core/diff/diff-engine.d.ts +127 -0
  183. package/dist/core/diff/diff-engine.d.ts.map +1 -0
  184. package/dist/core/diff/diff-engine.js +335 -0
  185. package/dist/core/diff/diff-engine.js.map +1 -0
  186. package/dist/core/diff/property-compare.d.ts +19 -0
  187. package/dist/core/diff/property-compare.d.ts.map +1 -0
  188. package/dist/core/diff/property-compare.js +37 -0
  189. package/dist/core/diff/property-compare.js.map +1 -0
  190. package/dist/core/diff/version-cache.d.ts +40 -0
  191. package/dist/core/diff/version-cache.d.ts.map +1 -0
  192. package/dist/core/diff/version-cache.js +75 -0
  193. package/dist/core/diff/version-cache.js.map +1 -0
  194. package/dist/core/enrichment/enrichment-service.d.ts +52 -0
  195. package/dist/core/enrichment/enrichment-service.d.ts.map +1 -0
  196. package/dist/core/enrichment/enrichment-service.js +375 -0
  197. package/dist/core/enrichment/enrichment-service.js.map +1 -0
  198. package/dist/core/enrichment/index.d.ts +8 -0
  199. package/dist/core/enrichment/index.d.ts.map +1 -0
  200. package/dist/core/enrichment/index.js +8 -0
  201. package/dist/core/enrichment/index.js.map +1 -0
  202. package/dist/core/enrichment/relationship-mapper.d.ts +106 -0
  203. package/dist/core/enrichment/relationship-mapper.d.ts.map +1 -0
  204. package/dist/core/enrichment/relationship-mapper.js +352 -0
  205. package/dist/core/enrichment/relationship-mapper.js.map +1 -0
  206. package/dist/core/enrichment/style-resolver.d.ts +85 -0
  207. package/dist/core/enrichment/style-resolver.d.ts.map +1 -0
  208. package/dist/core/enrichment/style-resolver.js +347 -0
  209. package/dist/core/enrichment/style-resolver.js.map +1 -0
  210. package/dist/core/figjam-tools.d.ts +8 -0
  211. package/dist/core/figjam-tools.d.ts.map +1 -0
  212. package/dist/core/figjam-tools.js +548 -0
  213. package/dist/core/figjam-tools.js.map +1 -0
  214. package/dist/core/figma-api.d.ts +254 -0
  215. package/dist/core/figma-api.d.ts.map +1 -0
  216. package/dist/core/figma-api.js +510 -0
  217. package/dist/core/figma-api.js.map +1 -0
  218. package/dist/core/figma-connector.d.ts +214 -0
  219. package/dist/core/figma-connector.d.ts.map +1 -0
  220. package/dist/core/figma-connector.js +8 -0
  221. package/dist/core/figma-connector.js.map +1 -0
  222. package/dist/core/figma-desktop-connector.d.ts +312 -0
  223. package/dist/core/figma-desktop-connector.d.ts.map +1 -0
  224. package/dist/core/figma-desktop-connector.js +1298 -0
  225. package/dist/core/figma-desktop-connector.js.map +1 -0
  226. package/dist/core/figma-reconstruction-spec.d.ts +166 -0
  227. package/dist/core/figma-reconstruction-spec.d.ts.map +1 -0
  228. package/dist/core/figma-reconstruction-spec.js +403 -0
  229. package/dist/core/figma-reconstruction-spec.js.map +1 -0
  230. package/dist/core/figma-style-extractor.d.ts +76 -0
  231. package/dist/core/figma-style-extractor.d.ts.map +1 -0
  232. package/dist/core/figma-style-extractor.js +312 -0
  233. package/dist/core/figma-style-extractor.js.map +1 -0
  234. package/dist/core/figma-tools.d.ts +22 -0
  235. package/dist/core/figma-tools.d.ts.map +1 -0
  236. package/dist/core/figma-tools.js +3303 -0
  237. package/dist/core/figma-tools.js.map +1 -0
  238. package/dist/core/identity.d.ts +41 -0
  239. package/dist/core/identity.d.ts.map +1 -0
  240. package/dist/core/identity.js +97 -0
  241. package/dist/core/identity.js.map +1 -0
  242. package/dist/core/library-tools.d.ts +17 -0
  243. package/dist/core/library-tools.d.ts.map +1 -0
  244. package/dist/core/library-tools.js +581 -0
  245. package/dist/core/library-tools.js.map +1 -0
  246. package/dist/core/logger.d.ts +22 -0
  247. package/dist/core/logger.d.ts.map +1 -0
  248. package/dist/core/logger.js +54 -0
  249. package/dist/core/logger.js.map +1 -0
  250. package/dist/core/port-discovery.d.ts +211 -0
  251. package/dist/core/port-discovery.d.ts.map +1 -0
  252. package/dist/core/port-discovery.js +936 -0
  253. package/dist/core/port-discovery.js.map +1 -0
  254. package/dist/core/resolve-package-root.d.ts +2 -0
  255. package/dist/core/resolve-package-root.d.ts.map +1 -0
  256. package/dist/core/resolve-package-root.js +12 -0
  257. package/dist/core/resolve-package-root.js.map +1 -0
  258. package/dist/core/slides-tools.d.ts +8 -0
  259. package/dist/core/slides-tools.d.ts.map +1 -0
  260. package/dist/core/slides-tools.js +715 -0
  261. package/dist/core/slides-tools.js.map +1 -0
  262. package/dist/core/slot-tools.d.ts +7 -0
  263. package/dist/core/slot-tools.d.ts.map +1 -0
  264. package/dist/core/slot-tools.js +335 -0
  265. package/dist/core/slot-tools.js.map +1 -0
  266. package/dist/core/snippet-injector.d.ts +24 -0
  267. package/dist/core/snippet-injector.d.ts.map +1 -0
  268. package/dist/core/snippet-injector.js +97 -0
  269. package/dist/core/snippet-injector.js.map +1 -0
  270. package/dist/core/tokens/alias-resolver.d.ts +97 -0
  271. package/dist/core/tokens/alias-resolver.d.ts.map +1 -0
  272. package/dist/core/tokens/alias-resolver.js +206 -0
  273. package/dist/core/tokens/alias-resolver.js.map +1 -0
  274. package/dist/core/tokens/config.d.ts +380 -0
  275. package/dist/core/tokens/config.d.ts.map +1 -0
  276. package/dist/core/tokens/config.js +295 -0
  277. package/dist/core/tokens/config.js.map +1 -0
  278. package/dist/core/tokens/dialect.d.ts +107 -0
  279. package/dist/core/tokens/dialect.d.ts.map +1 -0
  280. package/dist/core/tokens/dialect.js +233 -0
  281. package/dist/core/tokens/dialect.js.map +1 -0
  282. package/dist/core/tokens/figma-converter.d.ts +102 -0
  283. package/dist/core/tokens/figma-converter.d.ts.map +1 -0
  284. package/dist/core/tokens/figma-converter.js +324 -0
  285. package/dist/core/tokens/figma-converter.js.map +1 -0
  286. package/dist/core/tokens/formatters/css-vars.d.ts +24 -0
  287. package/dist/core/tokens/formatters/css-vars.d.ts.map +1 -0
  288. package/dist/core/tokens/formatters/css-vars.js +339 -0
  289. package/dist/core/tokens/formatters/css-vars.js.map +1 -0
  290. package/dist/core/tokens/formatters/dtcg.d.ts +28 -0
  291. package/dist/core/tokens/formatters/dtcg.d.ts.map +1 -0
  292. package/dist/core/tokens/formatters/dtcg.js +377 -0
  293. package/dist/core/tokens/formatters/dtcg.js.map +1 -0
  294. package/dist/core/tokens/formatters/index.d.ts +30 -0
  295. package/dist/core/tokens/formatters/index.d.ts.map +1 -0
  296. package/dist/core/tokens/formatters/index.js +46 -0
  297. package/dist/core/tokens/formatters/index.js.map +1 -0
  298. package/dist/core/tokens/formatters/json.d.ts +37 -0
  299. package/dist/core/tokens/formatters/json.d.ts.map +1 -0
  300. package/dist/core/tokens/formatters/json.js +206 -0
  301. package/dist/core/tokens/formatters/json.js.map +1 -0
  302. package/dist/core/tokens/formatters/less.d.ts +4 -0
  303. package/dist/core/tokens/formatters/less.d.ts.map +1 -0
  304. package/dist/core/tokens/formatters/less.js +5 -0
  305. package/dist/core/tokens/formatters/less.js.map +1 -0
  306. package/dist/core/tokens/formatters/scss.d.ts +26 -0
  307. package/dist/core/tokens/formatters/scss.d.ts.map +1 -0
  308. package/dist/core/tokens/formatters/scss.js +259 -0
  309. package/dist/core/tokens/formatters/scss.js.map +1 -0
  310. package/dist/core/tokens/formatters/stubs.d.ts +9 -0
  311. package/dist/core/tokens/formatters/stubs.d.ts.map +1 -0
  312. package/dist/core/tokens/formatters/stubs.js +14 -0
  313. package/dist/core/tokens/formatters/stubs.js.map +1 -0
  314. package/dist/core/tokens/formatters/style-dictionary-v3.d.ts +45 -0
  315. package/dist/core/tokens/formatters/style-dictionary-v3.d.ts.map +1 -0
  316. package/dist/core/tokens/formatters/style-dictionary-v3.js +214 -0
  317. package/dist/core/tokens/formatters/style-dictionary-v3.js.map +1 -0
  318. package/dist/core/tokens/formatters/tailwind-v3.d.ts +37 -0
  319. package/dist/core/tokens/formatters/tailwind-v3.d.ts.map +1 -0
  320. package/dist/core/tokens/formatters/tailwind-v3.js +238 -0
  321. package/dist/core/tokens/formatters/tailwind-v3.js.map +1 -0
  322. package/dist/core/tokens/formatters/tailwind-v4.d.ts +41 -0
  323. package/dist/core/tokens/formatters/tailwind-v4.d.ts.map +1 -0
  324. package/dist/core/tokens/formatters/tailwind-v4.js +336 -0
  325. package/dist/core/tokens/formatters/tailwind-v4.js.map +1 -0
  326. package/dist/core/tokens/formatters/tokens-studio.d.ts +44 -0
  327. package/dist/core/tokens/formatters/tokens-studio.d.ts.map +1 -0
  328. package/dist/core/tokens/formatters/tokens-studio.js +257 -0
  329. package/dist/core/tokens/formatters/tokens-studio.js.map +1 -0
  330. package/dist/core/tokens/formatters/ts-module.d.ts +35 -0
  331. package/dist/core/tokens/formatters/ts-module.d.ts.map +1 -0
  332. package/dist/core/tokens/formatters/ts-module.js +199 -0
  333. package/dist/core/tokens/formatters/ts-module.js.map +1 -0
  334. package/dist/core/tokens/index.d.ts +18 -0
  335. package/dist/core/tokens/index.d.ts.map +1 -0
  336. package/dist/core/tokens/index.js +17 -0
  337. package/dist/core/tokens/index.js.map +1 -0
  338. package/dist/core/tokens/parsers/css-vars.d.ts +3 -0
  339. package/dist/core/tokens/parsers/css-vars.d.ts.map +1 -0
  340. package/dist/core/tokens/parsers/css-vars.js +5 -0
  341. package/dist/core/tokens/parsers/css-vars.js.map +1 -0
  342. package/dist/core/tokens/parsers/dtcg.d.ts +21 -0
  343. package/dist/core/tokens/parsers/dtcg.d.ts.map +1 -0
  344. package/dist/core/tokens/parsers/dtcg.js +281 -0
  345. package/dist/core/tokens/parsers/dtcg.js.map +1 -0
  346. package/dist/core/tokens/parsers/index.d.ts +37 -0
  347. package/dist/core/tokens/parsers/index.d.ts.map +1 -0
  348. package/dist/core/tokens/parsers/index.js +139 -0
  349. package/dist/core/tokens/parsers/index.js.map +1 -0
  350. package/dist/core/tokens/parsers/json.d.ts +4 -0
  351. package/dist/core/tokens/parsers/json.d.ts.map +1 -0
  352. package/dist/core/tokens/parsers/json.js +8 -0
  353. package/dist/core/tokens/parsers/json.js.map +1 -0
  354. package/dist/core/tokens/parsers/scss.d.ts +3 -0
  355. package/dist/core/tokens/parsers/scss.d.ts.map +1 -0
  356. package/dist/core/tokens/parsers/scss.js +5 -0
  357. package/dist/core/tokens/parsers/scss.js.map +1 -0
  358. package/dist/core/tokens/parsers/stubs.d.ts +15 -0
  359. package/dist/core/tokens/parsers/stubs.d.ts.map +1 -0
  360. package/dist/core/tokens/parsers/stubs.js +21 -0
  361. package/dist/core/tokens/parsers/stubs.js.map +1 -0
  362. package/dist/core/tokens/parsers/style-dictionary-v3.d.ts +3 -0
  363. package/dist/core/tokens/parsers/style-dictionary-v3.d.ts.map +1 -0
  364. package/dist/core/tokens/parsers/style-dictionary-v3.js +5 -0
  365. package/dist/core/tokens/parsers/style-dictionary-v3.js.map +1 -0
  366. package/dist/core/tokens/parsers/tailwind-v3.d.ts +3 -0
  367. package/dist/core/tokens/parsers/tailwind-v3.d.ts.map +1 -0
  368. package/dist/core/tokens/parsers/tailwind-v3.js +5 -0
  369. package/dist/core/tokens/parsers/tailwind-v3.js.map +1 -0
  370. package/dist/core/tokens/parsers/tailwind-v4.d.ts +3 -0
  371. package/dist/core/tokens/parsers/tailwind-v4.d.ts.map +1 -0
  372. package/dist/core/tokens/parsers/tailwind-v4.js +5 -0
  373. package/dist/core/tokens/parsers/tailwind-v4.js.map +1 -0
  374. package/dist/core/tokens/parsers/tokens-studio.d.ts +3 -0
  375. package/dist/core/tokens/parsers/tokens-studio.d.ts.map +1 -0
  376. package/dist/core/tokens/parsers/tokens-studio.js +5 -0
  377. package/dist/core/tokens/parsers/tokens-studio.js.map +1 -0
  378. package/dist/core/tokens/schemas.d.ts +155 -0
  379. package/dist/core/tokens/schemas.d.ts.map +1 -0
  380. package/dist/core/tokens/schemas.js +153 -0
  381. package/dist/core/tokens/schemas.js.map +1 -0
  382. package/dist/core/tokens/transforms/color.d.ts +9 -0
  383. package/dist/core/tokens/transforms/color.d.ts.map +1 -0
  384. package/dist/core/tokens/transforms/color.js +13 -0
  385. package/dist/core/tokens/transforms/color.js.map +1 -0
  386. package/dist/core/tokens/transforms/index.d.ts +36 -0
  387. package/dist/core/tokens/transforms/index.d.ts.map +1 -0
  388. package/dist/core/tokens/transforms/index.js +30 -0
  389. package/dist/core/tokens/transforms/index.js.map +1 -0
  390. package/dist/core/tokens/transforms/size.d.ts +7 -0
  391. package/dist/core/tokens/transforms/size.d.ts.map +1 -0
  392. package/dist/core/tokens/transforms/size.js +8 -0
  393. package/dist/core/tokens/transforms/size.js.map +1 -0
  394. package/dist/core/tokens/types.d.ts +284 -0
  395. package/dist/core/tokens/types.d.ts.map +1 -0
  396. package/dist/core/tokens/types.js +19 -0
  397. package/dist/core/tokens/types.js.map +1 -0
  398. package/dist/core/tokens-tools.d.ts +285 -0
  399. package/dist/core/tokens-tools.d.ts.map +1 -0
  400. package/dist/core/tokens-tools.js +1789 -0
  401. package/dist/core/tokens-tools.js.map +1 -0
  402. package/dist/core/types/design-code.d.ts +271 -0
  403. package/dist/core/types/design-code.d.ts.map +1 -0
  404. package/dist/core/types/design-code.js +5 -0
  405. package/dist/core/types/design-code.js.map +1 -0
  406. package/dist/core/types/enriched.d.ts +213 -0
  407. package/dist/core/types/enriched.d.ts.map +1 -0
  408. package/dist/core/types/enriched.js +6 -0
  409. package/dist/core/types/enriched.js.map +1 -0
  410. package/dist/core/types/index.d.ts +104 -0
  411. package/dist/core/types/index.d.ts.map +1 -0
  412. package/dist/core/types/index.js +5 -0
  413. package/dist/core/types/index.js.map +1 -0
  414. package/dist/core/variable-resolver.d.ts +45 -0
  415. package/dist/core/variable-resolver.d.ts.map +1 -0
  416. package/dist/core/variable-resolver.js +86 -0
  417. package/dist/core/variable-resolver.js.map +1 -0
  418. package/dist/core/version-tools.d.ts +59 -0
  419. package/dist/core/version-tools.d.ts.map +1 -0
  420. package/dist/core/version-tools.js +1200 -0
  421. package/dist/core/version-tools.js.map +1 -0
  422. package/dist/core/websocket-connector.d.ts +247 -0
  423. package/dist/core/websocket-connector.d.ts.map +1 -0
  424. package/dist/core/websocket-connector.js +437 -0
  425. package/dist/core/websocket-connector.js.map +1 -0
  426. package/dist/core/websocket-server.d.ts +290 -0
  427. package/dist/core/websocket-server.d.ts.map +1 -0
  428. package/dist/core/websocket-server.js +957 -0
  429. package/dist/core/websocket-server.js.map +1 -0
  430. package/dist/core/write-tools.d.ts +7 -0
  431. package/dist/core/write-tools.d.ts.map +1 -0
  432. package/dist/core/write-tools.js +2507 -0
  433. package/dist/core/write-tools.js.map +1 -0
  434. package/dist/local.d.ts +105 -0
  435. package/dist/local.d.ts.map +1 -0
  436. package/dist/local.js +3314 -0
  437. package/dist/local.js.map +1 -0
  438. package/figma-desktop-bridge/README.md +365 -0
  439. package/figma-desktop-bridge/code.js +7359 -0
  440. package/figma-desktop-bridge/icon.png +0 -0
  441. package/figma-desktop-bridge/manifest.json +67 -0
  442. package/figma-desktop-bridge/ui.html +2783 -0
  443. package/package.json +103 -0
@@ -0,0 +1,374 @@
1
+ /**
2
+ * Enrichment Service
3
+ * Coordinates enrichment of Figma API responses
4
+ */
5
+ import { StyleValueResolver } from "./style-resolver.js";
6
+ import { RelationshipMapper } from "./relationship-mapper.js";
7
+ export class EnrichmentService {
8
+ constructor(logger) {
9
+ // Caches
10
+ this.fileDataCache = new Map();
11
+ this.lastEnrichmentTime = new Map();
12
+ this.CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
13
+ this.logger = logger;
14
+ this.styleResolver = new StyleValueResolver(logger);
15
+ this.relationshipMapper = new RelationshipMapper(logger);
16
+ }
17
+ /**
18
+ * Enrich styles response
19
+ */
20
+ async enrichStyles(styles, fileKey, options = {}, fileData) {
21
+ if (!options.enrich) {
22
+ return styles; // Return as-is if enrichment not requested
23
+ }
24
+ this.logger.info({ fileKey, count: styles.length }, "Enriching styles");
25
+ try {
26
+ // Get file data for relationships (use provided data if available)
27
+ const data = fileData || await this.getFileDataForEnrichment(fileKey);
28
+ const variables = this.extractVariablesMap(data);
29
+ // Build relationships if requested
30
+ if (options.include_usage) {
31
+ await this.relationshipMapper.buildRelationships(data);
32
+ }
33
+ const enrichedStyles = [];
34
+ for (const style of styles) {
35
+ const enriched = {
36
+ ...style,
37
+ };
38
+ // Resolve value and variable reference
39
+ if (options.include_exports !== false) {
40
+ const { value, variableRef } = await this.styleResolver.resolveStyleValue(style, variables, options.max_depth);
41
+ enriched.resolved_value = value;
42
+ enriched.variable_reference = variableRef;
43
+ // Generate export formats
44
+ if (value && options.export_formats) {
45
+ enriched.export_formats = this.styleResolver.generateExportFormats(style.name, value, style.style_type, options.export_formats);
46
+ }
47
+ }
48
+ // Add usage information
49
+ if (options.include_usage) {
50
+ const styleId = style.node_id || style.key || style.id;
51
+ enriched.used_in_components =
52
+ this.relationshipMapper.getComponentsByStyle(styleId);
53
+ enriched.usage_count =
54
+ this.relationshipMapper.getStyleUsageCount(styleId);
55
+ }
56
+ enrichedStyles.push(enriched);
57
+ }
58
+ this.logger.info({ enrichedCount: enrichedStyles.length }, "Styles enrichment complete");
59
+ return enrichedStyles;
60
+ }
61
+ catch (error) {
62
+ this.logger.error({ error }, "Failed to enrich styles");
63
+ return styles; // Return original on error
64
+ }
65
+ }
66
+ /**
67
+ * Enrich variables response
68
+ */
69
+ async enrichVariables(variables, fileKey, options = {}, fileData) {
70
+ if (!options.enrich) {
71
+ return variables;
72
+ }
73
+ this.logger.info({ fileKey, count: variables.length }, "Enriching variables");
74
+ try {
75
+ const data = fileData || await this.getFileDataForEnrichment(fileKey);
76
+ const variablesMap = this.extractVariablesMap(data);
77
+ // Build relationships if requested
78
+ if (options.include_usage) {
79
+ await this.relationshipMapper.buildRelationships(data);
80
+ }
81
+ const enrichedVars = [];
82
+ for (const variable of variables) {
83
+ const enriched = {
84
+ ...variable,
85
+ };
86
+ // Resolve values for all modes — each mode must resolve ITS OWN
87
+ // value, so the modeId is threaded through the resolver (which
88
+ // also keys its cache per mode).
89
+ if (options.include_exports !== false) {
90
+ const resolved_values = {};
91
+ for (const modeId of Object.keys(variable.valuesByMode || {})) {
92
+ const resolvedValue = await this.styleResolver.resolveVariableValue(variable, variablesMap, options.max_depth, 0, modeId);
93
+ resolved_values[modeId] = resolvedValue;
94
+ }
95
+ enriched.resolved_values = resolved_values;
96
+ // Generate export formats using first mode. Guard only against
97
+ // null/undefined — legitimate falsy values (0, false, "") must
98
+ // still produce export formats.
99
+ const firstModeValue = Object.values(resolved_values)[0];
100
+ if (firstModeValue !== null &&
101
+ firstModeValue !== undefined &&
102
+ options.export_formats) {
103
+ enriched.export_formats = this.styleResolver.generateExportFormats(variable.name, firstModeValue, variable.resolvedType, options.export_formats);
104
+ }
105
+ }
106
+ // Add usage information
107
+ if (options.include_usage) {
108
+ enriched.used_in_styles =
109
+ this.relationshipMapper.getStylesByVariable(variable.id);
110
+ enriched.used_in_components =
111
+ this.relationshipMapper.getComponentsByVariable(variable.id);
112
+ enriched.usage_count =
113
+ this.relationshipMapper.getVariableUsageCount(variable.id);
114
+ }
115
+ // Add dependencies
116
+ if (options.include_dependencies) {
117
+ enriched.dependencies =
118
+ this.relationshipMapper.getVariableDependencies(variable.id);
119
+ }
120
+ enrichedVars.push(enriched);
121
+ }
122
+ this.logger.info({ enrichedCount: enrichedVars.length }, "Variables enrichment complete");
123
+ return enrichedVars;
124
+ }
125
+ catch (error) {
126
+ this.logger.error({ error }, "Failed to enrich variables");
127
+ return variables;
128
+ }
129
+ }
130
+ /**
131
+ * Enrich component response
132
+ */
133
+ async enrichComponent(component, fileKey, options = {}, fileData) {
134
+ if (!options.enrich) {
135
+ return component;
136
+ }
137
+ this.logger.info({ fileKey, componentId: component.id }, "Enriching component");
138
+ try {
139
+ const enriched = {
140
+ ...component,
141
+ };
142
+ const data = fileData || await this.getFileDataForEnrichment(fileKey);
143
+ // Build relationships
144
+ await this.relationshipMapper.buildRelationships(data);
145
+ // Extract styles used
146
+ if (component.styles) {
147
+ const stylesUsed = [];
148
+ for (const [prop, styleId] of Object.entries(component.styles)) {
149
+ const style = data.styles?.[styleId];
150
+ if (style) {
151
+ stylesUsed.push({
152
+ style_id: styleId,
153
+ style_name: style.name,
154
+ style_type: style.style_type,
155
+ property: prop,
156
+ });
157
+ }
158
+ }
159
+ enriched.styles_used = stylesUsed;
160
+ }
161
+ // Extract variables used and detect hardcoded values by walking the node tree
162
+ const varsUsed = [];
163
+ const hardcodedValues = [];
164
+ const variables = this.extractVariablesMap(data);
165
+ // Walk node tree to find boundVariables and hardcoded values
166
+ const walkForTokens = (node, path = "") => {
167
+ if (!node)
168
+ return;
169
+ const nodePath = path ? `${path} > ${node.name || node.id}` : (node.name || node.id);
170
+ const bv = node.boundVariables || {};
171
+ // Check fills
172
+ if (node.fills && Array.isArray(node.fills)) {
173
+ for (let i = 0; i < node.fills.length; i++) {
174
+ const fill = node.fills[i];
175
+ if (fill.type === "SOLID" && fill.visible !== false) {
176
+ const fillBv = bv.fills;
177
+ if (fillBv && (Array.isArray(fillBv) ? fillBv[i] : fillBv)) {
178
+ const varRef = Array.isArray(fillBv) ? fillBv[i] : fillBv;
179
+ if (varRef?.id) {
180
+ const varInfo = variables.get(varRef.id);
181
+ varsUsed.push({
182
+ variableId: varRef.id,
183
+ variableName: varInfo?.name || varRef.id,
184
+ property: "fill",
185
+ nodePath,
186
+ });
187
+ }
188
+ }
189
+ else {
190
+ // Hardcoded fill
191
+ const c = fill.color;
192
+ if (c) {
193
+ hardcodedValues.push({
194
+ property: "fill",
195
+ value: `rgb(${Math.round(c.r * 255)}, ${Math.round(c.g * 255)}, ${Math.round(c.b * 255)})`,
196
+ nodePath,
197
+ });
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ // Check strokes
204
+ if (node.strokes && Array.isArray(node.strokes)) {
205
+ for (let i = 0; i < node.strokes.length; i++) {
206
+ const stroke = node.strokes[i];
207
+ if (stroke.type === "SOLID" && stroke.visible !== false) {
208
+ const strokeBv = bv.strokes;
209
+ if (strokeBv && (Array.isArray(strokeBv) ? strokeBv[i] : strokeBv)) {
210
+ const varRef = Array.isArray(strokeBv) ? strokeBv[i] : strokeBv;
211
+ if (varRef?.id) {
212
+ const varInfo = variables.get(varRef.id);
213
+ varsUsed.push({
214
+ variableId: varRef.id,
215
+ variableName: varInfo?.name || varRef.id,
216
+ property: "stroke",
217
+ nodePath,
218
+ });
219
+ }
220
+ }
221
+ else {
222
+ const c = stroke.color;
223
+ if (c) {
224
+ hardcodedValues.push({
225
+ property: "stroke",
226
+ value: `rgb(${Math.round(c.r * 255)}, ${Math.round(c.g * 255)}, ${Math.round(c.b * 255)})`,
227
+ nodePath,
228
+ });
229
+ }
230
+ }
231
+ }
232
+ }
233
+ }
234
+ // Check spacing/sizing tokens
235
+ const spacingProps = ["itemSpacing", "paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "cornerRadius"];
236
+ for (const prop of spacingProps) {
237
+ if (node[prop] !== undefined && node[prop] !== 0) {
238
+ if (bv[prop]?.id) {
239
+ const varInfo = variables.get(bv[prop].id);
240
+ varsUsed.push({
241
+ variableId: bv[prop].id,
242
+ variableName: varInfo?.name || bv[prop].id,
243
+ property: prop,
244
+ nodePath,
245
+ });
246
+ }
247
+ else {
248
+ hardcodedValues.push({
249
+ property: prop,
250
+ value: node[prop],
251
+ nodePath,
252
+ });
253
+ }
254
+ }
255
+ }
256
+ // Recurse into children
257
+ if (node.children && Array.isArray(node.children)) {
258
+ for (const child of node.children) {
259
+ walkForTokens(child, nodePath);
260
+ }
261
+ }
262
+ };
263
+ walkForTokens(component);
264
+ enriched.variables_used = varsUsed;
265
+ enriched.hardcoded_values = hardcodedValues;
266
+ // Calculate token coverage
267
+ const totalProps = varsUsed.length + (enriched.styles_used?.length || 0) + hardcodedValues.length;
268
+ const tokenProps = varsUsed.length + (enriched.styles_used?.length || 0);
269
+ enriched.token_coverage =
270
+ totalProps > 0 ? Math.round((tokenProps / totalProps) * 100) : 100;
271
+ this.logger.info({ componentId: component.id, coverage: enriched.token_coverage }, "Component enrichment complete");
272
+ return enriched;
273
+ }
274
+ catch (error) {
275
+ this.logger.error({ error }, "Failed to enrich component");
276
+ return component;
277
+ }
278
+ }
279
+ /**
280
+ * Enrich file data response
281
+ */
282
+ async enrichFileData(fileData, options = {}) {
283
+ if (!options.enrich) {
284
+ return fileData;
285
+ }
286
+ this.logger.info({ fileKey: fileData.fileKey }, "Enriching file data");
287
+ try {
288
+ const enriched = {
289
+ ...fileData,
290
+ };
291
+ // Build relationships for statistics
292
+ await this.relationshipMapper.buildRelationships(fileData);
293
+ // Calculate statistics
294
+ const styles = Object.values(fileData.styles || {});
295
+ const variables = Array.from(this.extractVariablesMap(fileData).values());
296
+ const unusedStyles = this.relationshipMapper.getUnusedStyles(styles);
297
+ const unusedVars = this.relationshipMapper.getUnusedVariables(variables);
298
+ enriched.statistics = {
299
+ total_variables: variables.length,
300
+ total_styles: styles.length,
301
+ total_components: Object.keys(fileData.components || {}).length,
302
+ unused_variables: unusedVars.length,
303
+ unused_styles: unusedStyles.length,
304
+ average_token_coverage: 0, // TODO: Calculate from components
305
+ total_hardcoded_values: 0, // TODO: Calculate from components
306
+ audit_issues_count: 0, // TODO: Calculate from audit
307
+ };
308
+ // Calculate health score (simple formula)
309
+ const usageRate = variables.length > 0
310
+ ? ((variables.length - unusedVars.length) / variables.length) * 100
311
+ : 100;
312
+ enriched.health_score = Math.round(usageRate);
313
+ this.logger.info({ health_score: enriched.health_score }, "File data enrichment complete");
314
+ return enriched;
315
+ }
316
+ catch (error) {
317
+ this.logger.error({ error }, "Failed to enrich file data");
318
+ return fileData;
319
+ }
320
+ }
321
+ /**
322
+ * Get file data for enrichment (with caching)
323
+ * NOTE: This is a placeholder that returns the data passed in
324
+ * In a full implementation, this would fetch fresh data from Figma API
325
+ */
326
+ async getFileDataForEnrichment(fileKey, providedData) {
327
+ const now = Date.now();
328
+ const lastEnrich = this.lastEnrichmentTime.get(fileKey) || 0;
329
+ // Return cached if fresh
330
+ if (this.fileDataCache.has(fileKey) &&
331
+ now - lastEnrich < this.CACHE_TTL_MS) {
332
+ return this.fileDataCache.get(fileKey);
333
+ }
334
+ // If data is provided, use it (from the tool that called us)
335
+ // This avoids redundant API calls since the tool already fetched the data
336
+ const fileData = providedData || {
337
+ styles: {},
338
+ variables: {},
339
+ document: {},
340
+ components: {},
341
+ };
342
+ this.fileDataCache.set(fileKey, fileData);
343
+ this.lastEnrichmentTime.set(fileKey, now);
344
+ return fileData;
345
+ }
346
+ /**
347
+ * Set file data in cache (called by tools that already have the data)
348
+ */
349
+ setFileDataCache(fileKey, fileData) {
350
+ this.fileDataCache.set(fileKey, fileData);
351
+ this.lastEnrichmentTime.set(fileKey, Date.now());
352
+ }
353
+ /**
354
+ * Extract variables as a Map for efficient lookup
355
+ */
356
+ extractVariablesMap(fileData) {
357
+ const variablesMap = new Map();
358
+ if (fileData.variables) {
359
+ for (const [id, variable] of Object.entries(fileData.variables)) {
360
+ variablesMap.set(id, variable);
361
+ }
362
+ }
363
+ return variablesMap;
364
+ }
365
+ /**
366
+ * Clear all caches
367
+ */
368
+ clearCache() {
369
+ this.fileDataCache.clear();
370
+ this.lastEnrichmentTime.clear();
371
+ this.styleResolver.clearCache();
372
+ this.relationshipMapper.clear();
373
+ }
374
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Enrichment module exports
3
+ * Phase 5: Enriched Data Extraction & Design System Auditing
4
+ */
5
+ export { StyleValueResolver } from "./style-resolver.js";
6
+ export { RelationshipMapper } from "./relationship-mapper.js";
7
+ export { EnrichmentService } from "./enrichment-service.js";