@mp3wizard/figma-console-mcp 1.14.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 (201) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +816 -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/base.js +5 -0
  62. package/dist/cloudflare/browser/cloudflare.js +156 -0
  63. package/dist/cloudflare/browser-manager.js +157 -0
  64. package/dist/cloudflare/core/cloud-websocket-connector.js +267 -0
  65. package/dist/cloudflare/core/cloud-websocket-relay.js +199 -0
  66. package/dist/cloudflare/core/comment-tools.js +292 -0
  67. package/dist/cloudflare/core/config.js +161 -0
  68. package/dist/cloudflare/core/console-monitor.js +427 -0
  69. package/dist/cloudflare/core/design-code-tools.js +2504 -0
  70. package/dist/cloudflare/core/design-system-manifest.js +260 -0
  71. package/dist/cloudflare/core/design-system-tools.js +863 -0
  72. package/dist/cloudflare/core/enrichment/enrichment-service.js +272 -0
  73. package/dist/cloudflare/core/enrichment/index.js +7 -0
  74. package/dist/cloudflare/core/enrichment/relationship-mapper.js +351 -0
  75. package/dist/cloudflare/core/enrichment/style-resolver.js +326 -0
  76. package/dist/cloudflare/core/figma-api.js +409 -0
  77. package/dist/cloudflare/core/figma-connector.js +7 -0
  78. package/dist/cloudflare/core/figma-desktop-connector.js +1184 -0
  79. package/dist/cloudflare/core/figma-reconstruction-spec.js +402 -0
  80. package/dist/cloudflare/core/figma-style-extractor.js +311 -0
  81. package/dist/cloudflare/core/figma-tools.js +2947 -0
  82. package/dist/cloudflare/core/logger.js +53 -0
  83. package/dist/cloudflare/core/port-discovery.js +282 -0
  84. package/dist/cloudflare/core/snippet-injector.js +96 -0
  85. package/dist/cloudflare/core/types/design-code.js +4 -0
  86. package/dist/cloudflare/core/types/enriched.js +5 -0
  87. package/dist/cloudflare/core/types/index.js +4 -0
  88. package/dist/cloudflare/core/websocket-connector.js +256 -0
  89. package/dist/cloudflare/core/websocket-server.js +646 -0
  90. package/dist/cloudflare/core/write-tools.js +2091 -0
  91. package/dist/cloudflare/index.js +2899 -0
  92. package/dist/cloudflare/test-browser.js +88 -0
  93. package/dist/core/comment-tools.d.ts +11 -0
  94. package/dist/core/comment-tools.d.ts.map +1 -0
  95. package/dist/core/comment-tools.js +293 -0
  96. package/dist/core/comment-tools.js.map +1 -0
  97. package/dist/core/config.d.ts +17 -0
  98. package/dist/core/config.d.ts.map +1 -0
  99. package/dist/core/config.js +162 -0
  100. package/dist/core/config.js.map +1 -0
  101. package/dist/core/console-monitor.d.ts +82 -0
  102. package/dist/core/console-monitor.d.ts.map +1 -0
  103. package/dist/core/console-monitor.js +428 -0
  104. package/dist/core/console-monitor.js.map +1 -0
  105. package/dist/core/design-code-tools.d.ts +127 -0
  106. package/dist/core/design-code-tools.d.ts.map +1 -0
  107. package/dist/core/design-code-tools.js +2505 -0
  108. package/dist/core/design-code-tools.js.map +1 -0
  109. package/dist/core/design-system-manifest.d.ts +272 -0
  110. package/dist/core/design-system-manifest.d.ts.map +1 -0
  111. package/dist/core/design-system-manifest.js +261 -0
  112. package/dist/core/design-system-manifest.js.map +1 -0
  113. package/dist/core/design-system-tools.d.ts +17 -0
  114. package/dist/core/design-system-tools.d.ts.map +1 -0
  115. package/dist/core/design-system-tools.js +864 -0
  116. package/dist/core/design-system-tools.js.map +1 -0
  117. package/dist/core/enrichment/enrichment-service.d.ts +52 -0
  118. package/dist/core/enrichment/enrichment-service.d.ts.map +1 -0
  119. package/dist/core/enrichment/enrichment-service.js +273 -0
  120. package/dist/core/enrichment/enrichment-service.js.map +1 -0
  121. package/dist/core/enrichment/index.d.ts +8 -0
  122. package/dist/core/enrichment/index.d.ts.map +1 -0
  123. package/dist/core/enrichment/index.js +8 -0
  124. package/dist/core/enrichment/index.js.map +1 -0
  125. package/dist/core/enrichment/relationship-mapper.d.ts +106 -0
  126. package/dist/core/enrichment/relationship-mapper.d.ts.map +1 -0
  127. package/dist/core/enrichment/relationship-mapper.js +352 -0
  128. package/dist/core/enrichment/relationship-mapper.js.map +1 -0
  129. package/dist/core/enrichment/style-resolver.d.ts +80 -0
  130. package/dist/core/enrichment/style-resolver.d.ts.map +1 -0
  131. package/dist/core/enrichment/style-resolver.js +327 -0
  132. package/dist/core/enrichment/style-resolver.js.map +1 -0
  133. package/dist/core/figma-api.d.ts +201 -0
  134. package/dist/core/figma-api.d.ts.map +1 -0
  135. package/dist/core/figma-api.js +410 -0
  136. package/dist/core/figma-api.js.map +1 -0
  137. package/dist/core/figma-connector.d.ts +48 -0
  138. package/dist/core/figma-connector.d.ts.map +1 -0
  139. package/dist/core/figma-connector.js +8 -0
  140. package/dist/core/figma-connector.js.map +1 -0
  141. package/dist/core/figma-desktop-connector.d.ts +265 -0
  142. package/dist/core/figma-desktop-connector.d.ts.map +1 -0
  143. package/dist/core/figma-desktop-connector.js +1184 -0
  144. package/dist/core/figma-desktop-connector.js.map +1 -0
  145. package/dist/core/figma-reconstruction-spec.d.ts +166 -0
  146. package/dist/core/figma-reconstruction-spec.d.ts.map +1 -0
  147. package/dist/core/figma-reconstruction-spec.js +403 -0
  148. package/dist/core/figma-reconstruction-spec.js.map +1 -0
  149. package/dist/core/figma-style-extractor.d.ts +76 -0
  150. package/dist/core/figma-style-extractor.d.ts.map +1 -0
  151. package/dist/core/figma-style-extractor.js +312 -0
  152. package/dist/core/figma-style-extractor.js.map +1 -0
  153. package/dist/core/figma-tools.d.ts +23 -0
  154. package/dist/core/figma-tools.d.ts.map +1 -0
  155. package/dist/core/figma-tools.js +2948 -0
  156. package/dist/core/figma-tools.js.map +1 -0
  157. package/dist/core/logger.d.ts +22 -0
  158. package/dist/core/logger.d.ts.map +1 -0
  159. package/dist/core/logger.js +54 -0
  160. package/dist/core/logger.js.map +1 -0
  161. package/dist/core/port-discovery.d.ts +110 -0
  162. package/dist/core/port-discovery.d.ts.map +1 -0
  163. package/dist/core/port-discovery.js +283 -0
  164. package/dist/core/port-discovery.js.map +1 -0
  165. package/dist/core/snippet-injector.d.ts +24 -0
  166. package/dist/core/snippet-injector.d.ts.map +1 -0
  167. package/dist/core/snippet-injector.js +97 -0
  168. package/dist/core/snippet-injector.js.map +1 -0
  169. package/dist/core/types/design-code.d.ts +262 -0
  170. package/dist/core/types/design-code.d.ts.map +1 -0
  171. package/dist/core/types/design-code.js +5 -0
  172. package/dist/core/types/design-code.js.map +1 -0
  173. package/dist/core/types/enriched.d.ts +213 -0
  174. package/dist/core/types/enriched.d.ts.map +1 -0
  175. package/dist/core/types/enriched.js +6 -0
  176. package/dist/core/types/enriched.js.map +1 -0
  177. package/dist/core/types/index.d.ts +112 -0
  178. package/dist/core/types/index.d.ts.map +1 -0
  179. package/dist/core/types/index.js +5 -0
  180. package/dist/core/types/index.js.map +1 -0
  181. package/dist/core/websocket-connector.d.ts +55 -0
  182. package/dist/core/websocket-connector.d.ts.map +1 -0
  183. package/dist/core/websocket-connector.js +257 -0
  184. package/dist/core/websocket-connector.js.map +1 -0
  185. package/dist/core/websocket-server.d.ts +191 -0
  186. package/dist/core/websocket-server.d.ts.map +1 -0
  187. package/dist/core/websocket-server.js +647 -0
  188. package/dist/core/websocket-server.js.map +1 -0
  189. package/dist/core/write-tools.d.ts +7 -0
  190. package/dist/core/write-tools.d.ts.map +1 -0
  191. package/dist/core/write-tools.js +2092 -0
  192. package/dist/core/write-tools.js.map +1 -0
  193. package/dist/local.d.ts +84 -0
  194. package/dist/local.d.ts.map +1 -0
  195. package/dist/local.js +5039 -0
  196. package/dist/local.js.map +1 -0
  197. package/figma-desktop-bridge/README.md +313 -0
  198. package/figma-desktop-bridge/code.js +2818 -0
  199. package/figma-desktop-bridge/manifest.json +67 -0
  200. package/figma-desktop-bridge/ui.html +1236 -0
  201. package/package.json +87 -0
@@ -0,0 +1,352 @@
1
+ /**
2
+ * Relationship Mapper
3
+ * Maps relationships between styles, variables, and components
4
+ * Tracks usage counts and builds reverse lookup indexes
5
+ */
6
+ export class RelationshipMapper {
7
+ constructor(logger) {
8
+ // Relationship indexes
9
+ this.componentsByStyle = new Map();
10
+ this.componentsByVariable = new Map();
11
+ this.stylesByVariable = new Map();
12
+ this.variableDependencies = new Map();
13
+ // Usage counters
14
+ this.styleUsageCount = new Map();
15
+ this.variableUsageCount = new Map();
16
+ this.logger = logger;
17
+ }
18
+ /**
19
+ * Build all relationship indexes from file data
20
+ */
21
+ async buildRelationships(fileData) {
22
+ this.logger.info("Building relationship indexes");
23
+ try {
24
+ // Clear existing indexes
25
+ this.clear();
26
+ // Build variable dependencies first
27
+ if (fileData.variables) {
28
+ await this.buildVariableDependencies(fileData.variables);
29
+ }
30
+ // Build style-variable relationships
31
+ if (fileData.styles && fileData.variables) {
32
+ await this.buildStyleVariableRelationships(fileData.styles, fileData.variables);
33
+ }
34
+ // Build component relationships
35
+ if (fileData.document) {
36
+ await this.buildComponentRelationships(fileData.document);
37
+ }
38
+ this.logger.info({
39
+ styles: this.componentsByStyle.size,
40
+ variables: this.componentsByVariable.size,
41
+ }, "Relationship indexes built successfully");
42
+ }
43
+ catch (error) {
44
+ this.logger.error({ error }, "Error building relationships");
45
+ throw error;
46
+ }
47
+ }
48
+ /**
49
+ * Get components that use a specific style
50
+ */
51
+ getComponentsByStyle(styleId) {
52
+ return this.componentsByStyle.get(styleId) || [];
53
+ }
54
+ /**
55
+ * Get components that use a specific variable
56
+ */
57
+ getComponentsByVariable(variableId) {
58
+ return this.componentsByVariable.get(variableId) || [];
59
+ }
60
+ /**
61
+ * Get styles that use a specific variable
62
+ */
63
+ getStylesByVariable(variableId) {
64
+ return this.stylesByVariable.get(variableId) || [];
65
+ }
66
+ /**
67
+ * Get variable dependencies (what variables this variable references)
68
+ */
69
+ getVariableDependencies(variableId) {
70
+ return this.variableDependencies.get(variableId) || [];
71
+ }
72
+ /**
73
+ * Get usage count for a style
74
+ */
75
+ getStyleUsageCount(styleId) {
76
+ return this.styleUsageCount.get(styleId) || 0;
77
+ }
78
+ /**
79
+ * Get usage count for a variable
80
+ */
81
+ getVariableUsageCount(variableId) {
82
+ return this.variableUsageCount.get(variableId) || 0;
83
+ }
84
+ /**
85
+ * Find unused styles (styles with zero usage)
86
+ */
87
+ getUnusedStyles(allStyles) {
88
+ const unused = [];
89
+ for (const style of allStyles) {
90
+ const usageCount = this.getStyleUsageCount(style.node_id || style.key || style.id);
91
+ if (usageCount === 0) {
92
+ unused.push({
93
+ id: style.id || style.key,
94
+ name: style.name,
95
+ type: style.style_type || style.styleType,
96
+ node_id: style.node_id || style.key,
97
+ });
98
+ }
99
+ }
100
+ return unused;
101
+ }
102
+ /**
103
+ * Find unused variables (variables with zero usage)
104
+ */
105
+ getUnusedVariables(allVariables) {
106
+ const unused = [];
107
+ for (const variable of allVariables) {
108
+ const usageCount = this.getVariableUsageCount(variable.id);
109
+ if (usageCount === 0) {
110
+ unused.push({
111
+ id: variable.id,
112
+ name: variable.name,
113
+ collection: variable.variableCollectionId,
114
+ resolvedType: variable.resolvedType,
115
+ });
116
+ }
117
+ }
118
+ return unused;
119
+ }
120
+ /**
121
+ * Build variable dependency graph (which variables reference which)
122
+ */
123
+ async buildVariableDependencies(variables) {
124
+ for (const [variableId, variable] of variables.entries()) {
125
+ const dependencies = this.extractVariableDependencies(variable, variables);
126
+ if (dependencies.length > 0) {
127
+ this.variableDependencies.set(variableId, dependencies);
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * Extract dependencies from a single variable
133
+ */
134
+ extractVariableDependencies(variable, allVariables, depth = 0) {
135
+ const dependencies = [];
136
+ // Check all modes for variable aliases
137
+ for (const [modeId, value] of Object.entries(variable.valuesByMode || {})) {
138
+ if (typeof value === "object" &&
139
+ value !== null &&
140
+ value.type === "VARIABLE_ALIAS") {
141
+ const targetId = value.id;
142
+ const targetVariable = allVariables.get(targetId);
143
+ if (targetVariable) {
144
+ dependencies.push({
145
+ id: targetId,
146
+ name: targetVariable.name,
147
+ type: "alias",
148
+ depth,
149
+ });
150
+ // Increment usage count for the referenced variable
151
+ const currentCount = this.variableUsageCount.get(targetId) || 0;
152
+ this.variableUsageCount.set(targetId, currentCount + 1);
153
+ }
154
+ }
155
+ }
156
+ return dependencies;
157
+ }
158
+ /**
159
+ * Build relationships between styles and variables
160
+ */
161
+ async buildStyleVariableRelationships(styles, variables) {
162
+ for (const style of styles) {
163
+ const variableRefs = this.extractStyleVariableReferences(style);
164
+ for (const varRef of variableRefs) {
165
+ // Track which styles use this variable
166
+ if (!this.stylesByVariable.has(varRef)) {
167
+ this.stylesByVariable.set(varRef, []);
168
+ }
169
+ this.stylesByVariable.get(varRef)?.push({
170
+ id: style.id || style.key,
171
+ name: style.name,
172
+ type: style.style_type || style.styleType,
173
+ node_id: style.node_id || style.key,
174
+ });
175
+ // Increment variable usage count
176
+ const currentCount = this.variableUsageCount.get(varRef) || 0;
177
+ this.variableUsageCount.set(varRef, currentCount + 1);
178
+ }
179
+ }
180
+ }
181
+ /**
182
+ * Extract variable references from a style
183
+ */
184
+ extractStyleVariableReferences(style) {
185
+ const refs = [];
186
+ // Check boundVariables
187
+ if (style.boundVariables) {
188
+ const props = ["fills", "strokes", "effects", "text"];
189
+ for (const prop of props) {
190
+ if (style.boundVariables[prop]) {
191
+ const binding = style.boundVariables[prop];
192
+ if (Array.isArray(binding)) {
193
+ for (const b of binding) {
194
+ if (b.id)
195
+ refs.push(b.id);
196
+ }
197
+ }
198
+ else if (binding.id) {
199
+ refs.push(binding.id);
200
+ }
201
+ }
202
+ }
203
+ }
204
+ return refs;
205
+ }
206
+ /**
207
+ * Build component relationships by traversing the document tree
208
+ */
209
+ async buildComponentRelationships(document) {
210
+ // Traverse all pages
211
+ if (document.children) {
212
+ for (const page of document.children) {
213
+ await this.traverseNode(page, page.name);
214
+ }
215
+ }
216
+ }
217
+ /**
218
+ * Recursively traverse nodes to find component instances and their style/variable usage
219
+ */
220
+ async traverseNode(node, pageName, path = []) {
221
+ const currentPath = [...path, node.name];
222
+ // Check if this node uses any styles
223
+ if (node.styles) {
224
+ this.trackNodeStyleUsage(node, pageName, currentPath);
225
+ }
226
+ // Check if this node uses any variables (via boundVariables)
227
+ if (node.boundVariables) {
228
+ this.trackNodeVariableUsage(node, pageName, currentPath);
229
+ }
230
+ // Recurse into children
231
+ if (node.children) {
232
+ for (const child of node.children) {
233
+ await this.traverseNode(child, pageName, currentPath);
234
+ }
235
+ }
236
+ }
237
+ /**
238
+ * Track which styles a node uses
239
+ */
240
+ trackNodeStyleUsage(node, pageName, path) {
241
+ const componentUsage = {
242
+ id: node.id,
243
+ name: node.name,
244
+ type: node.type,
245
+ page: pageName,
246
+ };
247
+ // Check all style properties (fill, stroke, text, effect, grid)
248
+ const styleProps = ["fill", "stroke", "text", "effect", "grid"];
249
+ for (const prop of styleProps) {
250
+ const styleId = node.styles?.[prop];
251
+ if (styleId) {
252
+ // Add to componentsByStyle index
253
+ if (!this.componentsByStyle.has(styleId)) {
254
+ this.componentsByStyle.set(styleId, []);
255
+ }
256
+ this.componentsByStyle.get(styleId)?.push(componentUsage);
257
+ // Increment style usage count
258
+ const currentCount = this.styleUsageCount.get(styleId) || 0;
259
+ this.styleUsageCount.set(styleId, currentCount + 1);
260
+ }
261
+ }
262
+ }
263
+ /**
264
+ * Track which variables a node uses
265
+ */
266
+ trackNodeVariableUsage(node, pageName, path) {
267
+ const componentUsage = {
268
+ id: node.id,
269
+ name: node.name,
270
+ type: node.type,
271
+ page: pageName,
272
+ };
273
+ // Extract all variable IDs from boundVariables
274
+ const variableIds = this.extractNodeVariableReferences(node);
275
+ for (const varId of variableIds) {
276
+ // Add to componentsByVariable index
277
+ if (!this.componentsByVariable.has(varId)) {
278
+ this.componentsByVariable.set(varId, []);
279
+ }
280
+ this.componentsByVariable.get(varId)?.push(componentUsage);
281
+ // Increment variable usage count
282
+ const currentCount = this.variableUsageCount.get(varId) || 0;
283
+ this.variableUsageCount.set(varId, currentCount + 1);
284
+ }
285
+ }
286
+ /**
287
+ * Extract all variable references from a node's boundVariables
288
+ */
289
+ extractNodeVariableReferences(node) {
290
+ const refs = [];
291
+ if (!node.boundVariables)
292
+ return refs;
293
+ // boundVariables can have many properties (fills, strokes, etc.)
294
+ for (const [prop, binding] of Object.entries(node.boundVariables)) {
295
+ if (Array.isArray(binding)) {
296
+ for (const b of binding) {
297
+ if (b.id)
298
+ refs.push(b.id);
299
+ }
300
+ }
301
+ else if (binding && typeof binding === "object" && binding.id) {
302
+ refs.push(binding.id);
303
+ }
304
+ }
305
+ return refs;
306
+ }
307
+ /**
308
+ * Detect circular variable references
309
+ */
310
+ detectCircularReferences() {
311
+ const circular = [];
312
+ const visited = new Set();
313
+ const currentPath = [];
314
+ for (const [variableId] of this.variableDependencies) {
315
+ this.detectCircularDFS(variableId, visited, currentPath, circular);
316
+ }
317
+ return circular;
318
+ }
319
+ /**
320
+ * DFS helper for detecting circular references
321
+ */
322
+ detectCircularDFS(variableId, visited, currentPath, circular) {
323
+ if (currentPath.includes(variableId)) {
324
+ // Found a cycle
325
+ const cycleStart = currentPath.indexOf(variableId);
326
+ const cycle = currentPath.slice(cycleStart).concat(variableId);
327
+ circular.push({ chain: cycle });
328
+ return;
329
+ }
330
+ if (visited.has(variableId))
331
+ return;
332
+ visited.add(variableId);
333
+ currentPath.push(variableId);
334
+ const dependencies = this.variableDependencies.get(variableId) || [];
335
+ for (const dep of dependencies) {
336
+ this.detectCircularDFS(dep.id, visited, currentPath, circular);
337
+ }
338
+ currentPath.pop();
339
+ }
340
+ /**
341
+ * Clear all indexes and caches
342
+ */
343
+ clear() {
344
+ this.componentsByStyle.clear();
345
+ this.componentsByVariable.clear();
346
+ this.stylesByVariable.clear();
347
+ this.variableDependencies.clear();
348
+ this.styleUsageCount.clear();
349
+ this.variableUsageCount.clear();
350
+ }
351
+ }
352
+ //# sourceMappingURL=relationship-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-mapper.js","sourceRoot":"","sources":["../../../src/core/enrichment/relationship-mapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,MAAM,OAAO,kBAAkB;IAa9B,YAAY,MAAc;QAV1B,uBAAuB;QACf,sBAAiB,GAAkC,IAAI,GAAG,EAAE,CAAC;QAC7D,yBAAoB,GAAkC,IAAI,GAAG,EAAE,CAAC;QAChE,qBAAgB,GAA8B,IAAI,GAAG,EAAE,CAAC;QACxD,yBAAoB,GAAsC,IAAI,GAAG,EAAE,CAAC;QAE5E,iBAAiB;QACT,oBAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;QACjD,uBAAkB,GAAwB,IAAI,GAAG,EAAE,CAAC;QAG3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAa;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAElD,IAAI,CAAC;YACJ,yBAAyB;YACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,oCAAoC;YACpC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC1D,CAAC;YAED,qCAAqC;YACrC,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,+BAA+B,CACzC,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,SAAS,CAClB,CAAC;YACH,CAAC;YAED,gCAAgC;YAChC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChB,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI;gBACnC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI;aACzC,EAAE,yCAAyC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,UAAkB;QACzC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,UAAkB;QACzC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,UAAkB;QACvC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAgB;QAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CACzC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CACtC,CAAC;YACF,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG;oBACzB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS;oBACzC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG;iBACnC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,YAAmB;QACrC,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,oBAAoB;oBACzC,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACnC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CACtC,SAA2B;QAE3B,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC3E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACzD,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACK,2BAA2B,CAClC,QAAa,EACb,YAA8B,EAC9B,KAAK,GAAG,CAAC;QAET,MAAM,YAAY,GAAyB,EAAE,CAAC;QAE9C,uCAAuC;QACvC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAC3C,QAAQ,CAAC,YAAY,IAAI,EAAE,CAC3B,EAAE,CAAC;YACH,IACC,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,KAAK,IAAI;gBACb,KAAa,CAAC,IAAI,KAAK,gBAAgB,EACvC,CAAC;gBACF,MAAM,QAAQ,GAAI,KAAa,CAAC,EAAE,CAAC;gBACnC,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAElD,IAAI,cAAc,EAAE,CAAC;oBACpB,YAAY,CAAC,IAAI,CAAC;wBACjB,EAAE,EAAE,QAAQ;wBACZ,IAAI,EAAE,cAAc,CAAC,IAAI;wBACzB,IAAI,EAAE,OAAO;wBACb,KAAK;qBACL,CAAC,CAAC;oBAEH,oDAAoD;oBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAChE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;gBACzD,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,YAAY,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,+BAA+B,CAC5C,MAAa,EACb,SAA2B;QAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAEhE,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBACnC,uCAAuC;gBACvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACvC,CAAC;gBAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;oBACvC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG;oBACzB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS;oBACzC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG;iBACnC,CAAC,CAAC;gBAEH,iCAAiC;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACK,8BAA8B,CAAC,KAAU;QAChD,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,uBAAuB;QACvB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;4BACzB,IAAI,CAAC,CAAC,EAAE;gCAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC3B,CAAC;oBACF,CAAC;yBAAM,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACvB,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,2BAA2B,CAAC,QAAa;QACtD,qBAAqB;QACrB,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CACzB,IAAS,EACT,QAAgB,EAChB,OAAiB,EAAE;QAEnB,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzC,qCAAqC;QACrC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QAED,6DAA6D;QAC7D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACvD,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACK,mBAAmB,CAC1B,IAAS,EACT,QAAgB,EAChB,IAAc;QAEd,MAAM,cAAc,GAAmB;YACtC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ;SACd,CAAC;QAEF,gEAAgE;QAChE,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO,EAAE,CAAC;gBACb,iCAAiC;gBACjC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE1D,8BAA8B;gBAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC7B,IAAS,EACT,QAAgB,EAChB,IAAc;QAEd,MAAM,cAAc,GAAmB;YACtC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ;SACd,CAAC;QAEF,+CAA+C;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YACjC,oCAAoC;YACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAE3D,iCAAiC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IAED;;OAEG;IACK,6BAA6B,CAAC,IAAS;QAC9C,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEtC,iEAAiE;QACjE,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACnE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACzB,IAAK,CAAS,CAAC,EAAE;wBAAE,IAAI,CAAC,IAAI,CAAE,CAAS,CAAC,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;iBAAM,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAK,OAAe,CAAC,EAAE,EAAE,CAAC;gBAC1E,IAAI,CAAC,IAAI,CAAE,OAAe,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACH,wBAAwB;QACvB,MAAM,QAAQ,GAA+B,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACtD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,iBAAiB,CACxB,UAAkB,EAClB,OAAoB,EACpB,WAAqB,EACrB,QAAoC;QAEpC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,gBAAgB;YAChB,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAChC,OAAO;QACR,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO;QAEpC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAChE,CAAC;QAED,WAAW,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK;QACJ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;CACD"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Style Value Resolver
3
+ * Resolves style values from variable references and provides formatted outputs
4
+ */
5
+ import type { VariableReference, ExportFormats, ExportFormat } from "../types/enriched.js";
6
+ import type pino from "pino";
7
+ type Logger = pino.Logger;
8
+ export declare class StyleValueResolver {
9
+ private cache;
10
+ private variableCache;
11
+ private logger;
12
+ constructor(logger: Logger);
13
+ /**
14
+ * Resolve a style's value, handling variable references
15
+ */
16
+ resolveStyleValue(style: any, variables: Map<string, any>, maxDepth?: number): Promise<{
17
+ value: any;
18
+ variableRef?: VariableReference;
19
+ }>;
20
+ /**
21
+ * Resolve a variable's value, handling alias chains
22
+ */
23
+ resolveVariableValue(variable: any, allVariables: Map<string, any>, maxDepth?: number, currentDepth?: number): Promise<any>;
24
+ /**
25
+ * Format a variable value based on its type
26
+ */
27
+ private formatVariableValue;
28
+ /**
29
+ * Format a color value to hex string
30
+ */
31
+ private formatColor;
32
+ /**
33
+ * Generate export formats for a resolved value
34
+ */
35
+ generateExportFormats(name: string, value: any, type: string, formats?: ExportFormat[]): ExportFormats;
36
+ /**
37
+ * Convert token name to CSS variable format
38
+ * Example: "color/background/primary-default" -> "--color-background-primary-default"
39
+ */
40
+ private toCSSVariableName;
41
+ /**
42
+ * Convert token name to Sass variable format
43
+ * Example: "color/background/primary-default" -> "$color-background-primary-default"
44
+ */
45
+ private toSassVariableName;
46
+ /**
47
+ * Convert token name to Tailwind class format
48
+ * Example: "color/background/primary-default" -> "bg-primary"
49
+ */
50
+ private toTailwindClassName;
51
+ /**
52
+ * Convert token name to TypeScript path format
53
+ * Example: "color/background/primary-default" -> "tokens.color.background.primaryDefault"
54
+ */
55
+ private toTypeScriptPath;
56
+ /**
57
+ * Convert token name to nested JSON path
58
+ * Example: "color/background/primary-default" -> { color: { background: { primaryDefault: value } } }
59
+ */
60
+ private toJSONPath;
61
+ /**
62
+ * Get style data from Figma API
63
+ * This would be called via the Figma API client
64
+ */
65
+ private getStyleData;
66
+ /**
67
+ * Find variable reference in style data
68
+ */
69
+ private findVariableReference;
70
+ /**
71
+ * Extract direct value from style (no variable)
72
+ */
73
+ private extractDirectValue;
74
+ /**
75
+ * Clear the cache
76
+ */
77
+ clearCache(): void;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=style-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/enrichment/style-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE1B,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACG,iBAAiB,CACtB,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,QAAQ,SAAK,GACX,OAAO,CAAC;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC;IAwD3D;;OAEG;IACG,oBAAoB,CACzB,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,QAAQ,SAAK,EACb,YAAY,SAAI,GACd,OAAO,CAAC,GAAG,CAAC;IA6Df;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,qBAAqB,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAY,EAAsD,GACzE,aAAa;IAiChB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;;OAGG;IACH,OAAO,CAAC,UAAU;IA0BlB;;;OAGG;YACW,YAAY;IAM1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;OAEG;IACH,UAAU,IAAI,IAAI;CAIlB"}