@mcp-consultant-tools/figma 20.0.0 → 23.0.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.
- package/build/FigmaService.d.ts +18 -1
- package/build/FigmaService.d.ts.map +1 -1
- package/build/FigmaService.js +58 -4
- package/build/FigmaService.js.map +1 -1
- package/build/figma/extractors/built-in.d.ts +2 -1
- package/build/figma/extractors/built-in.d.ts.map +1 -1
- package/build/figma/extractors/built-in.js +4 -1
- package/build/figma/extractors/built-in.js.map +1 -1
- package/build/figma/extractors/connector-extractor.d.ts +34 -0
- package/build/figma/extractors/connector-extractor.d.ts.map +1 -0
- package/build/figma/extractors/connector-extractor.js +111 -0
- package/build/figma/extractors/connector-extractor.js.map +1 -0
- package/build/figma/extractors/node-walker.d.ts.map +1 -1
- package/build/figma/extractors/node-walker.js +10 -0
- package/build/figma/extractors/node-walker.js.map +1 -1
- package/build/figma/extractors/types.d.ts +33 -0
- package/build/figma/extractors/types.d.ts.map +1 -1
- package/build/figma/transformers/component-simplifier.d.ts +43 -0
- package/build/figma/transformers/component-simplifier.d.ts.map +1 -0
- package/build/figma/transformers/component-simplifier.js +127 -0
- package/build/figma/transformers/component-simplifier.js.map +1 -0
- package/build/figma/transformers/style-stripper.d.ts +33 -0
- package/build/figma/transformers/style-stripper.d.ts.map +1 -0
- package/build/figma/transformers/style-stripper.js +94 -0
- package/build/figma/transformers/style-stripper.js.map +1 -0
- package/build/figma/transformers/table-to-markdown.d.ts +27 -0
- package/build/figma/transformers/table-to-markdown.d.ts.map +1 -0
- package/build/figma/transformers/table-to-markdown.js +123 -0
- package/build/figma/transformers/table-to-markdown.js.map +1 -0
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +17 -3
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/build/FigmaService.d.ts
CHANGED
|
@@ -4,6 +4,22 @@ export interface FigmaConfig {
|
|
|
4
4
|
oauthToken?: string;
|
|
5
5
|
useOAuth: boolean;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Options for controlling what data is extracted and how it's formatted.
|
|
9
|
+
* All options default to false to preserve backward compatibility.
|
|
10
|
+
*/
|
|
11
|
+
export interface FigmaDataOptions {
|
|
12
|
+
/** Remove all styling info (fills, strokes, effects, textStyle, opacity, borderRadius) */
|
|
13
|
+
excludeStyles?: boolean;
|
|
14
|
+
/** Convert TABLE nodes to markdown format */
|
|
15
|
+
tablesToMarkdown?: boolean;
|
|
16
|
+
/** Simplify CONNECTOR nodes to just endpoints (startNodeId, endNodeId) */
|
|
17
|
+
simplifyConnectors?: boolean;
|
|
18
|
+
/** Keep componentId and componentProperties but remove visual styling from INSTANCE nodes */
|
|
19
|
+
simplifyComponentInstances?: boolean;
|
|
20
|
+
/** Override which extractors to use: "layout", "text", "visuals", "component" */
|
|
21
|
+
extractors?: ("layout" | "text" | "visuals" | "component")[];
|
|
22
|
+
}
|
|
7
23
|
/**
|
|
8
24
|
* Service for interacting with the Figma API
|
|
9
25
|
* Follows the service pattern established by PowerPlatformService
|
|
@@ -40,8 +56,9 @@ export declare class FigmaService {
|
|
|
40
56
|
* @param fileKey - The Figma file key from the URL
|
|
41
57
|
* @param nodeId - Optional specific node ID(s) to fetch (format: "1:10" or "1:10;2:20")
|
|
42
58
|
* @param depth - Optional tree traversal depth limit
|
|
59
|
+
* @param dataOptions - Optional optimization options for reducing output size
|
|
43
60
|
* @returns Simplified design data ready for AI consumption
|
|
44
61
|
*/
|
|
45
|
-
getFigmaData(fileKey: string, nodeId?: string, depth?: number): Promise<SimplifiedDesign>;
|
|
62
|
+
getFigmaData(fileKey: string, nodeId?: string, depth?: number, dataOptions?: FigmaDataOptions): Promise<SimplifiedDesign>;
|
|
46
63
|
}
|
|
47
64
|
//# sourceMappingURL=FigmaService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FigmaService.d.ts","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FigmaService.d.ts","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,6BAA6B,CAAC;AAInG,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,6FAA6F;IAC7F,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,iFAAiF;IACjF,UAAU,CAAC,EAAE,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC;CAC9D;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;gBAE1C,MAAM,EAAE,WAAW;IAiB/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;YACW,OAAO;IAgBrB;;;;OAIG;YACW,YAAY;IAQ1B;;;;;OAKG;YACW,aAAa;IAc3B;;;;;;;;;OASG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,gBAAgB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;CAyF7B"}
|
package/build/FigmaService.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { fetchWithRetry } from "./figma/utils/fetch-with-retry.js";
|
|
2
2
|
import { simplifyRawFigmaObject } from "./figma/extractors/design-extractor.js";
|
|
3
|
-
import { allExtractors } from "./figma/extractors/built-in.js";
|
|
3
|
+
import { allExtractors, layoutExtractor, textExtractor, visualsExtractor, componentExtractor, connectorExtractor, simplifyAllConnectors, } from "./figma/extractors/built-in.js";
|
|
4
|
+
import { stripStylesFromDesign } from "./figma/transformers/style-stripper.js";
|
|
5
|
+
import { simplifyAllComponentInstances } from "./figma/transformers/component-simplifier.js";
|
|
4
6
|
/**
|
|
5
7
|
* Service for interacting with the Figma API
|
|
6
8
|
* Follows the service pattern established by PowerPlatformService
|
|
@@ -78,10 +80,19 @@ export class FigmaService {
|
|
|
78
80
|
* @param fileKey - The Figma file key from the URL
|
|
79
81
|
* @param nodeId - Optional specific node ID(s) to fetch (format: "1:10" or "1:10;2:20")
|
|
80
82
|
* @param depth - Optional tree traversal depth limit
|
|
83
|
+
* @param dataOptions - Optional optimization options for reducing output size
|
|
81
84
|
* @returns Simplified design data ready for AI consumption
|
|
82
85
|
*/
|
|
83
|
-
async getFigmaData(fileKey, nodeId, depth) {
|
|
86
|
+
async getFigmaData(fileKey, nodeId, depth, dataOptions) {
|
|
84
87
|
try {
|
|
88
|
+
// Apply defaults - optimizations ON by default for reduced context usage
|
|
89
|
+
const effectiveOptions = {
|
|
90
|
+
excludeStyles: dataOptions?.excludeStyles ?? true,
|
|
91
|
+
tablesToMarkdown: dataOptions?.tablesToMarkdown ?? true,
|
|
92
|
+
simplifyConnectors: dataOptions?.simplifyConnectors ?? true,
|
|
93
|
+
simplifyComponentInstances: dataOptions?.simplifyComponentInstances ?? true,
|
|
94
|
+
extractors: dataOptions?.extractors,
|
|
95
|
+
};
|
|
85
96
|
// Fetch raw data from Figma API
|
|
86
97
|
let rawData;
|
|
87
98
|
if (nodeId) {
|
|
@@ -92,11 +103,54 @@ export class FigmaService {
|
|
|
92
103
|
else {
|
|
93
104
|
rawData = await this.getFigmaFile(fileKey, depth);
|
|
94
105
|
}
|
|
106
|
+
// Build extractor array based on options
|
|
107
|
+
let extractorList = [...allExtractors];
|
|
108
|
+
if (effectiveOptions.extractors) {
|
|
109
|
+
// Use custom extractor selection
|
|
110
|
+
extractorList = [];
|
|
111
|
+
if (effectiveOptions.extractors.includes("layout")) {
|
|
112
|
+
extractorList.push(layoutExtractor);
|
|
113
|
+
}
|
|
114
|
+
if (effectiveOptions.extractors.includes("text")) {
|
|
115
|
+
extractorList.push(textExtractor);
|
|
116
|
+
}
|
|
117
|
+
if (effectiveOptions.extractors.includes("visuals")) {
|
|
118
|
+
extractorList.push(visualsExtractor);
|
|
119
|
+
}
|
|
120
|
+
if (effectiveOptions.extractors.includes("component")) {
|
|
121
|
+
extractorList.push(componentExtractor);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Always add connector extractor for relationship data
|
|
125
|
+
extractorList.push(connectorExtractor);
|
|
95
126
|
// Transform raw Figma data into simplified format using extractors
|
|
96
|
-
const
|
|
127
|
+
const traversalOptions = {
|
|
97
128
|
maxDepth: depth,
|
|
129
|
+
optimization: {
|
|
130
|
+
tablesToMarkdown: effectiveOptions.tablesToMarkdown,
|
|
131
|
+
// Note: simplifyConnectors and simplifyComponentInstances are applied post-processing
|
|
132
|
+
},
|
|
98
133
|
};
|
|
99
|
-
|
|
134
|
+
let simplifiedData = simplifyRawFigmaObject(rawData, extractorList, traversalOptions);
|
|
135
|
+
// Apply post-processing transformations
|
|
136
|
+
// Order matters: apply connector simplification before style stripping
|
|
137
|
+
// so connector endpoints are preserved
|
|
138
|
+
if (effectiveOptions.simplifyConnectors) {
|
|
139
|
+
simplifiedData = {
|
|
140
|
+
...simplifiedData,
|
|
141
|
+
nodes: simplifyAllConnectors(simplifiedData.nodes),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
if (effectiveOptions.simplifyComponentInstances) {
|
|
145
|
+
simplifiedData = {
|
|
146
|
+
...simplifiedData,
|
|
147
|
+
nodes: simplifyAllComponentInstances(simplifiedData.nodes),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
// Apply style stripping last - it removes styling from all nodes
|
|
151
|
+
if (effectiveOptions.excludeStyles) {
|
|
152
|
+
simplifiedData = stripStylesFromDesign(simplifiedData);
|
|
153
|
+
}
|
|
100
154
|
return simplifiedData;
|
|
101
155
|
}
|
|
102
156
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FigmaService.js","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,
|
|
1
|
+
{"version":3,"file":"FigmaService.js","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAyB7F;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAc;IACX,OAAO,GAAG,0BAA0B,CAAC;IAEtD,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,iDAAiD,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC7D,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QAC/D,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAI,QAAgB;QACvC,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtC,OAAO,MAAM,cAAc,CAA0B,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE;gBACjF,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CACb,iDAAiD,QAAQ,MAAM,YAAY,EAAE,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,KAAc;QACxD,MAAM,QAAQ,GAAG,UAAU,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,YAAY,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;QAElF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkB,QAAQ,CAAC,CAAC;QAC/D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,aAAa,CACzB,OAAe,EACf,OAAiB,EACjB,KAAc;QAEd,MAAM,QAAQ,GAAG,UAAU,OAAO,cAAc,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACrG,OAAO,CAAC,KAAK,CACX,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,YAAY,KAAK,IAAI,SAAS,GAAG,CAC/F,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,QAAQ,CAAC,CAAC;QACpE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,MAAe,EACf,KAAc,EACd,WAA8B;QAE9B,IAAI,CAAC;YACH,yEAAyE;YACzE,MAAM,gBAAgB,GAAG;gBACvB,aAAa,EAAE,WAAW,EAAE,aAAa,IAAI,IAAI;gBACjD,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,IAAI,IAAI;gBACvD,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,IAAI,IAAI;gBAC3D,0BAA0B,EAAE,WAAW,EAAE,0BAA0B,IAAI,IAAI;gBAC3E,UAAU,EAAE,WAAW,EAAE,UAAU;aACpC,CAAC;YAEF,gCAAgC;YAChC,IAAI,OAA+C,CAAC;YAEpD,IAAI,MAAM,EAAE,CAAC;gBACX,yEAAyE;gBACzE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnF,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;YAED,yCAAyC;YACzC,IAAI,aAAa,GAAkB,CAAC,GAAG,aAAa,CAAC,CAAC;YAEtD,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBAChC,iCAAiC;gBACjC,aAAa,GAAG,EAAE,CAAC;gBACnB,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnD,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjD,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpD,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtD,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,uDAAuD;YACvD,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAEvC,mEAAmE;YACnE,MAAM,gBAAgB,GAAqB;gBACzC,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE;oBACZ,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;oBACnD,sFAAsF;iBACvF;aACF,CAAC;YAEF,IAAI,cAAc,GAAG,sBAAsB,CACzC,OAAO,EACP,aAAa,EACb,gBAAgB,CACjB,CAAC;YAEF,wCAAwC;YACxC,uEAAuE;YACvE,uCAAuC;YAEvC,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;gBACxC,cAAc,GAAG;oBACf,GAAG,cAAc;oBACjB,KAAK,EAAE,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC;iBACnD,CAAC;YACJ,CAAC;YAED,IAAI,gBAAgB,CAAC,0BAA0B,EAAE,CAAC;gBAChD,cAAc,GAAG;oBACf,GAAG,cAAc;oBACjB,KAAK,EAAE,6BAA6B,CAAC,cAAc,CAAC,KAAK,CAAC;iBAC3D,CAAC;YACJ,CAAC;YAED,iEAAiE;YACjE,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;gBACnC,cAAc,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -16,8 +16,9 @@ export declare const visualsExtractor: ExtractorFn;
|
|
|
16
16
|
* Extracts component-related properties from INSTANCE nodes.
|
|
17
17
|
*/
|
|
18
18
|
export declare const componentExtractor: ExtractorFn;
|
|
19
|
+
export { connectorExtractor, simplifiedConnectorExtractor, simplifyConnectorNode, simplifyAllConnectors, } from "./connector-extractor.js";
|
|
19
20
|
/**
|
|
20
|
-
* All extractors -
|
|
21
|
+
* All extractors - includes connector extraction for relationship data.
|
|
21
22
|
*/
|
|
22
23
|
export declare const allExtractors: ExtractorFn[];
|
|
23
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAIX,cAAc,EACf,MAAM,YAAY,CAAC;AAYpB,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsBtE;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,WAK7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAoB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WA0D9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAiBhC,CAAC;
|
|
1
|
+
{"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAIX,cAAc,EACf,MAAM,YAAY,CAAC;AAYpB,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsBtE;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,WAK7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAoB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WA0D9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAiBhC,CAAC;AAuBF,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAIlC;;GAEG;AACH,eAAO,MAAM,aAAa,eAAyE,CAAC;AAEpG;;GAEG;AACH,eAAO,MAAM,aAAa,eAAmC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,WAAW,eAAkB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,eAAqB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,UAAU,eAAoB,CAAC;AAI5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,aAO7B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,EAAE,GACzB,cAAc,EAAE,CAgBlB"}
|
|
@@ -146,9 +146,12 @@ function getStyleName(node, context, keys) {
|
|
|
146
146
|
}
|
|
147
147
|
return undefined;
|
|
148
148
|
}
|
|
149
|
+
// -------------------- CONNECTOR EXTRACTOR --------------------
|
|
150
|
+
// Re-export connector extractors from dedicated module
|
|
151
|
+
export { connectorExtractor, simplifiedConnectorExtractor, simplifyConnectorNode, simplifyAllConnectors, } from "./connector-extractor.js";
|
|
149
152
|
// -------------------- CONVENIENCE COMBINATIONS --------------------
|
|
150
153
|
/**
|
|
151
|
-
* All extractors -
|
|
154
|
+
* All extractors - includes connector extraction for relationship data.
|
|
152
155
|
*/
|
|
153
156
|
export const allExtractors = [layoutExtractor, textExtractor, visualsExtractor, componentExtractor];
|
|
154
157
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in.js","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"built-in.js","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ExtractorFn, SimplifiedNode } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Extracts connector-related properties from CONNECTOR nodes.
|
|
4
|
+
* Preserves connection endpoints which are critical for understanding relationships.
|
|
5
|
+
*
|
|
6
|
+
* This is the full connector extractor - it includes visual properties.
|
|
7
|
+
*/
|
|
8
|
+
export declare const connectorExtractor: ExtractorFn;
|
|
9
|
+
/**
|
|
10
|
+
* Simplified connector extractor for optimization mode.
|
|
11
|
+
* Only extracts connection endpoints and text labels, ignoring all visual properties.
|
|
12
|
+
*
|
|
13
|
+
* Use this when simplifyConnectors is true to reduce token usage while
|
|
14
|
+
* preserving the essential relationship data.
|
|
15
|
+
*
|
|
16
|
+
* Output: { id, name, type: "CONNECTOR", startNodeId?, endNodeId?, text? }
|
|
17
|
+
*/
|
|
18
|
+
export declare const simplifiedConnectorExtractor: ExtractorFn;
|
|
19
|
+
/**
|
|
20
|
+
* Post-processor to simplify connector nodes in the final output.
|
|
21
|
+
* This is an alternative approach that runs after all extraction is complete.
|
|
22
|
+
*
|
|
23
|
+
* @param node - The SimplifiedNode to process
|
|
24
|
+
* @returns Simplified connector or original node
|
|
25
|
+
*/
|
|
26
|
+
export declare function simplifyConnectorNode(node: SimplifiedNode): SimplifiedNode;
|
|
27
|
+
/**
|
|
28
|
+
* Apply connector simplification to all nodes in an array.
|
|
29
|
+
*
|
|
30
|
+
* @param nodes - Array of SimplifiedNodes to process
|
|
31
|
+
* @returns Array with simplified connector nodes
|
|
32
|
+
*/
|
|
33
|
+
export declare function simplifyAllConnectors(nodes: SimplifiedNode[]): SimplifiedNode[];
|
|
34
|
+
//# sourceMappingURL=connector-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-extractor.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/connector-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAY9D;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAiBhC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAiC1C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAiC1E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAE/E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { hasValue } from "../utils/identity.js";
|
|
2
|
+
/**
|
|
3
|
+
* Extracts connector-related properties from CONNECTOR nodes.
|
|
4
|
+
* Preserves connection endpoints which are critical for understanding relationships.
|
|
5
|
+
*
|
|
6
|
+
* This is the full connector extractor - it includes visual properties.
|
|
7
|
+
*/
|
|
8
|
+
export const connectorExtractor = (node, result, _context) => {
|
|
9
|
+
if (node.type !== "CONNECTOR")
|
|
10
|
+
return;
|
|
11
|
+
// Extract connection endpoints - these contain the connected node IDs
|
|
12
|
+
if (hasValue("connectorStart", node)) {
|
|
13
|
+
const start = node.connectorStart;
|
|
14
|
+
if (start.endpointNodeId) {
|
|
15
|
+
result.startNodeId = start.endpointNodeId;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (hasValue("connectorEnd", node)) {
|
|
19
|
+
const end = node.connectorEnd;
|
|
20
|
+
if (end.endpointNodeId) {
|
|
21
|
+
result.endNodeId = end.endpointNodeId;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Simplified connector extractor for optimization mode.
|
|
27
|
+
* Only extracts connection endpoints and text labels, ignoring all visual properties.
|
|
28
|
+
*
|
|
29
|
+
* Use this when simplifyConnectors is true to reduce token usage while
|
|
30
|
+
* preserving the essential relationship data.
|
|
31
|
+
*
|
|
32
|
+
* Output: { id, name, type: "CONNECTOR", startNodeId?, endNodeId?, text? }
|
|
33
|
+
*/
|
|
34
|
+
export const simplifiedConnectorExtractor = (node, result, _context) => {
|
|
35
|
+
if (node.type !== "CONNECTOR")
|
|
36
|
+
return;
|
|
37
|
+
// Clear any visual properties that may have been added by other extractors
|
|
38
|
+
// This ensures the simplified output is clean
|
|
39
|
+
delete result.fills;
|
|
40
|
+
delete result.strokes;
|
|
41
|
+
delete result.strokeWeight;
|
|
42
|
+
delete result.strokeDashes;
|
|
43
|
+
delete result.strokeWeights;
|
|
44
|
+
delete result.effects;
|
|
45
|
+
delete result.layout;
|
|
46
|
+
delete result.opacity;
|
|
47
|
+
delete result.borderRadius;
|
|
48
|
+
delete result.textStyle;
|
|
49
|
+
// Extract only connection endpoints
|
|
50
|
+
if (hasValue("connectorStart", node)) {
|
|
51
|
+
const start = node.connectorStart;
|
|
52
|
+
if (start.endpointNodeId) {
|
|
53
|
+
result.startNodeId = start.endpointNodeId;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (hasValue("connectorEnd", node)) {
|
|
57
|
+
const end = node.connectorEnd;
|
|
58
|
+
if (end.endpointNodeId) {
|
|
59
|
+
result.endNodeId = end.endpointNodeId;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Keep text label if present (extracted by textExtractor)
|
|
63
|
+
// result.text is preserved as it's critical for understanding the connector's purpose
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Post-processor to simplify connector nodes in the final output.
|
|
67
|
+
* This is an alternative approach that runs after all extraction is complete.
|
|
68
|
+
*
|
|
69
|
+
* @param node - The SimplifiedNode to process
|
|
70
|
+
* @returns Simplified connector or original node
|
|
71
|
+
*/
|
|
72
|
+
export function simplifyConnectorNode(node) {
|
|
73
|
+
if (node.type !== "CONNECTOR") {
|
|
74
|
+
// Recursively process children
|
|
75
|
+
if (node.children) {
|
|
76
|
+
return {
|
|
77
|
+
...node,
|
|
78
|
+
children: node.children.map(simplifyConnectorNode),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return node;
|
|
82
|
+
}
|
|
83
|
+
// For CONNECTOR nodes, keep only essential properties
|
|
84
|
+
const simplified = {
|
|
85
|
+
id: node.id,
|
|
86
|
+
name: node.name,
|
|
87
|
+
type: node.type,
|
|
88
|
+
};
|
|
89
|
+
// Preserve connection endpoints
|
|
90
|
+
if (node.startNodeId) {
|
|
91
|
+
simplified.startNodeId = node.startNodeId;
|
|
92
|
+
}
|
|
93
|
+
if (node.endNodeId) {
|
|
94
|
+
simplified.endNodeId = node.endNodeId;
|
|
95
|
+
}
|
|
96
|
+
// Preserve text label if present
|
|
97
|
+
if (node.text) {
|
|
98
|
+
simplified.text = node.text;
|
|
99
|
+
}
|
|
100
|
+
return simplified;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Apply connector simplification to all nodes in an array.
|
|
104
|
+
*
|
|
105
|
+
* @param nodes - Array of SimplifiedNodes to process
|
|
106
|
+
* @returns Array with simplified connector nodes
|
|
107
|
+
*/
|
|
108
|
+
export function simplifyAllConnectors(nodes) {
|
|
109
|
+
return nodes.map(simplifyConnectorNode);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=connector-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector-extractor.js","sourceRoot":"","sources":["../../../src/figma/extractors/connector-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-walker.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EAChB,UAAU,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"node-walker.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EAChB,UAAU,EACV,cAAc,EAEf,MAAM,YAAY,CAAC;AAGpB;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,EAAE,WAAW,EAAE,EACzB,OAAO,GAAE,gBAAqB,EAC9B,UAAU,GAAE,UAA2B,GACtC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAerD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isVisible } from "../utils/common.js";
|
|
2
2
|
import { hasValue } from "../utils/identity.js";
|
|
3
|
+
import { isTableNode, convertTableToMarkdown } from "../transformers/table-to-markdown.js";
|
|
3
4
|
/**
|
|
4
5
|
* Extract data from Figma nodes using a flexible, single-pass approach.
|
|
5
6
|
*
|
|
@@ -30,6 +31,15 @@ function processNodeWithExtractors(node, extractors, context, options) {
|
|
|
30
31
|
if (!shouldProcessNode(node, options)) {
|
|
31
32
|
return null;
|
|
32
33
|
}
|
|
34
|
+
// Handle TABLE nodes with markdown conversion if enabled
|
|
35
|
+
if (options.optimization?.tablesToMarkdown && isTableNode(node)) {
|
|
36
|
+
const markdownTable = convertTableToMarkdown(node);
|
|
37
|
+
if (markdownTable) {
|
|
38
|
+
// Return the markdown representation instead of the full node tree
|
|
39
|
+
return markdownTable;
|
|
40
|
+
}
|
|
41
|
+
// If conversion fails, fall through to normal processing
|
|
42
|
+
}
|
|
33
43
|
// Always include base metadata
|
|
34
44
|
const result = {
|
|
35
45
|
id: node.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-walker.js","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-walker.js","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,20 @@ export type StyleTypes = SimplifiedTextStyle | SimplifiedFill[] | SimplifiedLayo
|
|
|
8
8
|
export type GlobalVars = {
|
|
9
9
|
styles: Record<string, StyleTypes>;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Optimization options for reducing output size and context window usage.
|
|
13
|
+
* All options default to false to preserve backward compatibility.
|
|
14
|
+
*/
|
|
15
|
+
export interface OptimizationOptions {
|
|
16
|
+
/** Remove all styling info (fills, strokes, effects, textStyle, opacity, borderRadius) */
|
|
17
|
+
excludeStyles?: boolean;
|
|
18
|
+
/** Convert TABLE nodes to markdown format */
|
|
19
|
+
tablesToMarkdown?: boolean;
|
|
20
|
+
/** Simplify CONNECTOR nodes to just endpoints (startNodeId, endNodeId) */
|
|
21
|
+
simplifyConnectors?: boolean;
|
|
22
|
+
/** Keep componentId and componentProperties but remove visual styling from INSTANCE nodes */
|
|
23
|
+
simplifyComponentInstances?: boolean;
|
|
24
|
+
}
|
|
11
25
|
export interface TraversalContext {
|
|
12
26
|
globalVars: GlobalVars & {
|
|
13
27
|
extraStyles?: Record<string, Style>;
|
|
@@ -28,6 +42,8 @@ export interface TraversalOptions {
|
|
|
28
42
|
* @returns Children to include (return empty array to omit children)
|
|
29
43
|
*/
|
|
30
44
|
afterChildren?: (node: FigmaDocumentNode, result: SimplifiedNode, children: SimplifiedNode[]) => SimplifiedNode[];
|
|
45
|
+
/** Optimization options for reducing output size */
|
|
46
|
+
optimization?: OptimizationOptions;
|
|
31
47
|
}
|
|
32
48
|
/**
|
|
33
49
|
* An extractor function that can modify a SimplifiedNode during traversal.
|
|
@@ -62,8 +78,25 @@ export interface SimplifiedNode {
|
|
|
62
78
|
layout?: string;
|
|
63
79
|
componentId?: string;
|
|
64
80
|
componentProperties?: ComponentProperties[];
|
|
81
|
+
startNodeId?: string;
|
|
82
|
+
endNodeId?: string;
|
|
65
83
|
children?: SimplifiedNode[];
|
|
66
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Simplified representation of a markdown table (used when tablesToMarkdown is true).
|
|
87
|
+
* Replaces the nested TABLE node structure with a compact markdown string.
|
|
88
|
+
*/
|
|
89
|
+
export interface MarkdownTableNode {
|
|
90
|
+
id: string;
|
|
91
|
+
name: string;
|
|
92
|
+
type: "TABLE_MARKDOWN";
|
|
93
|
+
/** Markdown representation of the table */
|
|
94
|
+
markdown: string;
|
|
95
|
+
/** Original row count for reference */
|
|
96
|
+
rowCount: number;
|
|
97
|
+
/** Original column count for reference */
|
|
98
|
+
columnCount: number;
|
|
99
|
+
}
|
|
67
100
|
export interface BoundingBox {
|
|
68
101
|
x: number;
|
|
69
102
|
y: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EACV,mBAAmB,EACnB,6BAA6B,EAC7B,gCAAgC,EACjC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,cAAc,EAAE,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,MAAM,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,UAAU,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;KAAE,CAAC;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAClD;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,EAAE,KACvB,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { SimplifiedNode } from "../extractors/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Simplify an INSTANCE node to keep only semantic data.
|
|
4
|
+
* Preserves componentId, componentProperties, and text content.
|
|
5
|
+
* Removes all visual styling properties.
|
|
6
|
+
*
|
|
7
|
+
* This is specifically designed for ADO User Story components where:
|
|
8
|
+
* - componentProperties contains the ADO links and implementation details
|
|
9
|
+
* - Text content may contain important labels or descriptions
|
|
10
|
+
* - Visual styling is not relevant for understanding the architecture
|
|
11
|
+
*
|
|
12
|
+
* Non-INSTANCE nodes are passed through with recursive child processing.
|
|
13
|
+
*
|
|
14
|
+
* @param node - The node to simplify
|
|
15
|
+
* @returns Simplified node for INSTANCE, or original with processed children
|
|
16
|
+
*/
|
|
17
|
+
export declare function simplifyComponentInstance(node: SimplifiedNode): SimplifiedNode;
|
|
18
|
+
/**
|
|
19
|
+
* Apply component instance simplification to all nodes in an array.
|
|
20
|
+
*
|
|
21
|
+
* @param nodes - Array of SimplifiedNodes to process
|
|
22
|
+
* @returns Array with simplified component instances
|
|
23
|
+
*/
|
|
24
|
+
export declare function simplifyAllComponentInstances(nodes: SimplifiedNode[]): SimplifiedNode[];
|
|
25
|
+
/**
|
|
26
|
+
* Extract all text content from an INSTANCE node and its children.
|
|
27
|
+
* Useful for getting a flat text representation of a component.
|
|
28
|
+
*
|
|
29
|
+
* @param node - The node to extract text from
|
|
30
|
+
* @returns All text content concatenated
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractAllTextFromInstance(node: SimplifiedNode): string;
|
|
33
|
+
/**
|
|
34
|
+
* Create an ultra-simplified version of an INSTANCE node.
|
|
35
|
+
* Returns just the componentProperties and flattened text content.
|
|
36
|
+
* Use this for maximum context window savings when you only need
|
|
37
|
+
* the ADO links and text content.
|
|
38
|
+
*
|
|
39
|
+
* @param node - The INSTANCE node to flatten
|
|
40
|
+
* @returns Ultra-simplified node
|
|
41
|
+
*/
|
|
42
|
+
export declare function flattenComponentInstance(node: SimplifiedNode): SimplifiedNode;
|
|
43
|
+
//# sourceMappingURL=component-simplifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-simplifier.d.ts","sourceRoot":"","sources":["../../../src/figma/transformers/component-simplifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CA+C9E;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAiBvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAmC7E"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simplify an INSTANCE node to keep only semantic data.
|
|
3
|
+
* Preserves componentId, componentProperties, and text content.
|
|
4
|
+
* Removes all visual styling properties.
|
|
5
|
+
*
|
|
6
|
+
* This is specifically designed for ADO User Story components where:
|
|
7
|
+
* - componentProperties contains the ADO links and implementation details
|
|
8
|
+
* - Text content may contain important labels or descriptions
|
|
9
|
+
* - Visual styling is not relevant for understanding the architecture
|
|
10
|
+
*
|
|
11
|
+
* Non-INSTANCE nodes are passed through with recursive child processing.
|
|
12
|
+
*
|
|
13
|
+
* @param node - The node to simplify
|
|
14
|
+
* @returns Simplified node for INSTANCE, or original with processed children
|
|
15
|
+
*/
|
|
16
|
+
export function simplifyComponentInstance(node) {
|
|
17
|
+
if (node.type !== "INSTANCE") {
|
|
18
|
+
// For non-INSTANCE nodes, just recursively process children
|
|
19
|
+
if (node.children) {
|
|
20
|
+
return {
|
|
21
|
+
...node,
|
|
22
|
+
children: node.children.map(simplifyComponentInstance),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return node;
|
|
26
|
+
}
|
|
27
|
+
// For INSTANCE nodes, keep only essential properties
|
|
28
|
+
const simplified = {
|
|
29
|
+
id: node.id,
|
|
30
|
+
name: node.name,
|
|
31
|
+
type: node.type,
|
|
32
|
+
};
|
|
33
|
+
// Always preserve componentId - this links to the component definition
|
|
34
|
+
if (node.componentId !== undefined) {
|
|
35
|
+
simplified.componentId = node.componentId;
|
|
36
|
+
}
|
|
37
|
+
// Always preserve componentProperties - this is where ADO links and other
|
|
38
|
+
// critical data lives
|
|
39
|
+
if (node.componentProperties !== undefined) {
|
|
40
|
+
simplified.componentProperties = node.componentProperties;
|
|
41
|
+
}
|
|
42
|
+
// Preserve text content if present
|
|
43
|
+
if (node.text !== undefined) {
|
|
44
|
+
simplified.text = node.text;
|
|
45
|
+
}
|
|
46
|
+
// Recursively simplify children - they may contain nested text or instances
|
|
47
|
+
if (node.children) {
|
|
48
|
+
// For INSTANCE children, we extract text content but simplify structure
|
|
49
|
+
const simplifiedChildren = node.children.map(simplifyComponentInstance);
|
|
50
|
+
// Only include children if there are any after simplification
|
|
51
|
+
if (simplifiedChildren.length > 0) {
|
|
52
|
+
simplified.children = simplifiedChildren;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return simplified;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Apply component instance simplification to all nodes in an array.
|
|
59
|
+
*
|
|
60
|
+
* @param nodes - Array of SimplifiedNodes to process
|
|
61
|
+
* @returns Array with simplified component instances
|
|
62
|
+
*/
|
|
63
|
+
export function simplifyAllComponentInstances(nodes) {
|
|
64
|
+
return nodes.map(simplifyComponentInstance);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Extract all text content from an INSTANCE node and its children.
|
|
68
|
+
* Useful for getting a flat text representation of a component.
|
|
69
|
+
*
|
|
70
|
+
* @param node - The node to extract text from
|
|
71
|
+
* @returns All text content concatenated
|
|
72
|
+
*/
|
|
73
|
+
export function extractAllTextFromInstance(node) {
|
|
74
|
+
const texts = [];
|
|
75
|
+
if (node.text) {
|
|
76
|
+
texts.push(node.text);
|
|
77
|
+
}
|
|
78
|
+
if (node.children) {
|
|
79
|
+
for (const child of node.children) {
|
|
80
|
+
const childText = extractAllTextFromInstance(child);
|
|
81
|
+
if (childText) {
|
|
82
|
+
texts.push(childText);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return texts.join(" ").trim();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create an ultra-simplified version of an INSTANCE node.
|
|
90
|
+
* Returns just the componentProperties and flattened text content.
|
|
91
|
+
* Use this for maximum context window savings when you only need
|
|
92
|
+
* the ADO links and text content.
|
|
93
|
+
*
|
|
94
|
+
* @param node - The INSTANCE node to flatten
|
|
95
|
+
* @returns Ultra-simplified node
|
|
96
|
+
*/
|
|
97
|
+
export function flattenComponentInstance(node) {
|
|
98
|
+
if (node.type !== "INSTANCE") {
|
|
99
|
+
// Recursively process children for non-INSTANCE nodes
|
|
100
|
+
if (node.children) {
|
|
101
|
+
return {
|
|
102
|
+
...node,
|
|
103
|
+
children: node.children.map(flattenComponentInstance),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return node;
|
|
107
|
+
}
|
|
108
|
+
const flattened = {
|
|
109
|
+
id: node.id,
|
|
110
|
+
name: node.name,
|
|
111
|
+
type: node.type,
|
|
112
|
+
};
|
|
113
|
+
if (node.componentId !== undefined) {
|
|
114
|
+
flattened.componentId = node.componentId;
|
|
115
|
+
}
|
|
116
|
+
if (node.componentProperties !== undefined) {
|
|
117
|
+
flattened.componentProperties = node.componentProperties;
|
|
118
|
+
}
|
|
119
|
+
// Flatten all nested text into a single text field
|
|
120
|
+
const allText = extractAllTextFromInstance(node);
|
|
121
|
+
if (allText) {
|
|
122
|
+
flattened.text = allText;
|
|
123
|
+
}
|
|
124
|
+
// No children - text is flattened into the text field
|
|
125
|
+
return flattened;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=component-simplifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-simplifier.js","sourceRoot":"","sources":["../../../src/figma/transformers/component-simplifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { SimplifiedNode, SimplifiedDesign } from "../extractors/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Remove all style-related properties from a single node.
|
|
4
|
+
* Recursively processes children.
|
|
5
|
+
*
|
|
6
|
+
* This preserves:
|
|
7
|
+
* - Node identity (id, name, type)
|
|
8
|
+
* - Text content (text)
|
|
9
|
+
* - Component data (componentId, componentProperties)
|
|
10
|
+
* - Connector endpoints (startNodeId, endNodeId)
|
|
11
|
+
* - Hierarchy (children)
|
|
12
|
+
*
|
|
13
|
+
* @param node - The node to strip styles from
|
|
14
|
+
* @returns A new node without style properties
|
|
15
|
+
*/
|
|
16
|
+
export declare function stripStylesFromNode(node: SimplifiedNode): SimplifiedNode;
|
|
17
|
+
/**
|
|
18
|
+
* Remove all style-related data from the entire design.
|
|
19
|
+
* Clears globalVars.styles and strips styles from all nodes.
|
|
20
|
+
*
|
|
21
|
+
* @param design - The full SimplifiedDesign to process
|
|
22
|
+
* @returns A new design without style data
|
|
23
|
+
*/
|
|
24
|
+
export declare function stripStylesFromDesign(design: SimplifiedDesign): SimplifiedDesign;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a node has any style properties.
|
|
27
|
+
* Useful for debugging or selective processing.
|
|
28
|
+
*
|
|
29
|
+
* @param node - The node to check
|
|
30
|
+
* @returns true if the node has any style properties
|
|
31
|
+
*/
|
|
32
|
+
export declare function hasStyleProperties(node: SimplifiedNode): boolean;
|
|
33
|
+
//# sourceMappingURL=style-stripper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-stripper.d.ts","sourceRoot":"","sources":["../../../src/figma/transformers/style-stripper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA2B/E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAmCxE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAMhF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEhE"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Properties to remove when excludeStyles is true.
|
|
3
|
+
* These are all visual styling properties that don't affect the semantic structure.
|
|
4
|
+
*
|
|
5
|
+
* Note: We preserve the following critical properties:
|
|
6
|
+
* - id, name, type (node identity)
|
|
7
|
+
* - text (content)
|
|
8
|
+
* - componentId, componentProperties (component relationships)
|
|
9
|
+
* - startNodeId, endNodeId (connector relationships)
|
|
10
|
+
* - children (hierarchy)
|
|
11
|
+
*/
|
|
12
|
+
const STYLE_PROPERTIES = [
|
|
13
|
+
"fills",
|
|
14
|
+
"strokes",
|
|
15
|
+
"strokeWeight",
|
|
16
|
+
"strokeDashes",
|
|
17
|
+
"strokeWeights",
|
|
18
|
+
"effects",
|
|
19
|
+
"textStyle",
|
|
20
|
+
"opacity",
|
|
21
|
+
"borderRadius",
|
|
22
|
+
"layout",
|
|
23
|
+
"styles", // Named style references
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Remove all style-related properties from a single node.
|
|
27
|
+
* Recursively processes children.
|
|
28
|
+
*
|
|
29
|
+
* This preserves:
|
|
30
|
+
* - Node identity (id, name, type)
|
|
31
|
+
* - Text content (text)
|
|
32
|
+
* - Component data (componentId, componentProperties)
|
|
33
|
+
* - Connector endpoints (startNodeId, endNodeId)
|
|
34
|
+
* - Hierarchy (children)
|
|
35
|
+
*
|
|
36
|
+
* @param node - The node to strip styles from
|
|
37
|
+
* @returns A new node without style properties
|
|
38
|
+
*/
|
|
39
|
+
export function stripStylesFromNode(node) {
|
|
40
|
+
// Create a shallow copy
|
|
41
|
+
const stripped = {
|
|
42
|
+
id: node.id,
|
|
43
|
+
name: node.name,
|
|
44
|
+
type: node.type,
|
|
45
|
+
};
|
|
46
|
+
// Preserve text content
|
|
47
|
+
if (node.text !== undefined) {
|
|
48
|
+
stripped.text = node.text;
|
|
49
|
+
}
|
|
50
|
+
// Preserve component data (critical for ADO User Story components)
|
|
51
|
+
if (node.componentId !== undefined) {
|
|
52
|
+
stripped.componentId = node.componentId;
|
|
53
|
+
}
|
|
54
|
+
if (node.componentProperties !== undefined) {
|
|
55
|
+
stripped.componentProperties = node.componentProperties;
|
|
56
|
+
}
|
|
57
|
+
// Preserve connector endpoints
|
|
58
|
+
if (node.startNodeId !== undefined) {
|
|
59
|
+
stripped.startNodeId = node.startNodeId;
|
|
60
|
+
}
|
|
61
|
+
if (node.endNodeId !== undefined) {
|
|
62
|
+
stripped.endNodeId = node.endNodeId;
|
|
63
|
+
}
|
|
64
|
+
// Recursively strip children
|
|
65
|
+
if (node.children) {
|
|
66
|
+
stripped.children = node.children.map(stripStylesFromNode);
|
|
67
|
+
}
|
|
68
|
+
return stripped;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Remove all style-related data from the entire design.
|
|
72
|
+
* Clears globalVars.styles and strips styles from all nodes.
|
|
73
|
+
*
|
|
74
|
+
* @param design - The full SimplifiedDesign to process
|
|
75
|
+
* @returns A new design without style data
|
|
76
|
+
*/
|
|
77
|
+
export function stripStylesFromDesign(design) {
|
|
78
|
+
return {
|
|
79
|
+
...design,
|
|
80
|
+
nodes: design.nodes.map(stripStylesFromNode),
|
|
81
|
+
globalVars: { styles: {} }, // Empty styles object
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if a node has any style properties.
|
|
86
|
+
* Useful for debugging or selective processing.
|
|
87
|
+
*
|
|
88
|
+
* @param node - The node to check
|
|
89
|
+
* @returns true if the node has any style properties
|
|
90
|
+
*/
|
|
91
|
+
export function hasStyleProperties(node) {
|
|
92
|
+
return STYLE_PROPERTIES.some((prop) => node[prop] !== undefined);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=style-stripper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-stripper.js","sourceRoot":"","sources":["../../../src/figma/transformers/style-stripper.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GAA6B;IACjD,OAAO;IACP,SAAS;IACT,cAAc;IACd,cAAc;IACd,eAAe;IACf,SAAS;IACT,WAAW;IACX,SAAS;IACT,cAAc;IACd,QAAQ;IACR,QAAQ,EAAE,yBAAyB;CACpC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,wBAAwB;IACxB,MAAM,QAAQ,GAAmB;QAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IAEF,wBAAwB;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,mEAAmE;IACnE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QAC3C,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAC1D,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACtC,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,OAAO;QACL,GAAG,MAAM;QACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC5C,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,sBAAsB;KACnD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Node as FigmaDocumentNode } from "@figma/rest-api-spec";
|
|
2
|
+
import type { MarkdownTableNode } from "../extractors/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Detect if a node is a native Figma TABLE node.
|
|
5
|
+
* TABLE nodes have a specific type and contain TABLE_CELL children.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isTableNode(node: FigmaDocumentNode): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Convert a Figma TABLE node to a markdown table.
|
|
10
|
+
*
|
|
11
|
+
* TABLE nodes in Figma have a flat list of TABLE_CELL children.
|
|
12
|
+
* We reconstruct the grid by grouping cells by their Y position (rows)
|
|
13
|
+
* and sorting within each row by X position (columns).
|
|
14
|
+
*
|
|
15
|
+
* @param node - The TABLE node to convert
|
|
16
|
+
* @returns MarkdownTableNode or null if conversion fails
|
|
17
|
+
*/
|
|
18
|
+
export declare function convertTableToMarkdown(node: FigmaDocumentNode): MarkdownTableNode | null;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a node should be converted to markdown table.
|
|
21
|
+
* Currently only handles native TABLE nodes.
|
|
22
|
+
*
|
|
23
|
+
* Note: We intentionally don't detect "table-like" FRAME structures
|
|
24
|
+
* to avoid false positives. Only native TABLE nodes are converted.
|
|
25
|
+
*/
|
|
26
|
+
export declare function shouldConvertToMarkdown(node: FigmaDocumentNode): boolean;
|
|
27
|
+
//# sourceMappingURL=table-to-markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-to-markdown.d.ts","sourceRoot":"","sources":["../../../src/figma/transformers/table-to-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAE5D;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,IAAI,CA6FxF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAExE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { hasValue } from "../utils/identity.js";
|
|
2
|
+
/**
|
|
3
|
+
* Detect if a node is a native Figma TABLE node.
|
|
4
|
+
* TABLE nodes have a specific type and contain TABLE_CELL children.
|
|
5
|
+
*/
|
|
6
|
+
export function isTableNode(node) {
|
|
7
|
+
return node.type === "TABLE";
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Recursively extract text content from a node tree.
|
|
11
|
+
* Searches through children to find all TEXT nodes and concatenates their content.
|
|
12
|
+
*/
|
|
13
|
+
function extractTextFromNode(node) {
|
|
14
|
+
// Direct text node
|
|
15
|
+
if (node.type === "TEXT" && hasValue("characters", node)) {
|
|
16
|
+
return node.characters || "";
|
|
17
|
+
}
|
|
18
|
+
// Search children recursively
|
|
19
|
+
if (hasValue("children", node) && Array.isArray(node.children)) {
|
|
20
|
+
const texts = node.children.map((child) => extractTextFromNode(child));
|
|
21
|
+
return texts.filter((t) => t.length > 0).join(" ").trim();
|
|
22
|
+
}
|
|
23
|
+
return "";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert a Figma TABLE node to a markdown table.
|
|
27
|
+
*
|
|
28
|
+
* TABLE nodes in Figma have a flat list of TABLE_CELL children.
|
|
29
|
+
* We reconstruct the grid by grouping cells by their Y position (rows)
|
|
30
|
+
* and sorting within each row by X position (columns).
|
|
31
|
+
*
|
|
32
|
+
* @param node - The TABLE node to convert
|
|
33
|
+
* @returns MarkdownTableNode or null if conversion fails
|
|
34
|
+
*/
|
|
35
|
+
export function convertTableToMarkdown(node) {
|
|
36
|
+
if (!hasValue("children", node) || !Array.isArray(node.children)) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
// Filter to TABLE_CELL nodes only
|
|
40
|
+
const cells = node.children.filter((c) => c.type === "TABLE_CELL");
|
|
41
|
+
if (cells.length === 0) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
// Extract positioned cells with their bounding boxes
|
|
45
|
+
const positionedCells = [];
|
|
46
|
+
for (const cell of cells) {
|
|
47
|
+
if (!hasValue("absoluteBoundingBox", cell)) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const bbox = cell.absoluteBoundingBox;
|
|
51
|
+
const text = extractTextFromNode(cell);
|
|
52
|
+
positionedCells.push({
|
|
53
|
+
x: bbox.x,
|
|
54
|
+
y: Math.round(bbox.y), // Round Y to handle small floating point differences
|
|
55
|
+
text,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (positionedCells.length === 0) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
// Group cells by Y position to form rows
|
|
62
|
+
const cellsByRow = new Map();
|
|
63
|
+
for (const cell of positionedCells) {
|
|
64
|
+
if (!cellsByRow.has(cell.y)) {
|
|
65
|
+
cellsByRow.set(cell.y, []);
|
|
66
|
+
}
|
|
67
|
+
cellsByRow.get(cell.y).push(cell);
|
|
68
|
+
}
|
|
69
|
+
// Sort rows by Y position, then cells within each row by X position
|
|
70
|
+
const sortedYs = Array.from(cellsByRow.keys()).sort((a, b) => a - b);
|
|
71
|
+
const rows = [];
|
|
72
|
+
for (const y of sortedYs) {
|
|
73
|
+
const rowCells = cellsByRow.get(y).sort((a, b) => a.x - b.x);
|
|
74
|
+
rows.push(rowCells.map((c) => c.text));
|
|
75
|
+
}
|
|
76
|
+
if (rows.length === 0) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
// Build markdown table
|
|
80
|
+
const columnCount = Math.max(...rows.map((r) => r.length));
|
|
81
|
+
const lines = [];
|
|
82
|
+
// Helper to escape pipe characters and format cell content
|
|
83
|
+
const formatCell = (text) => {
|
|
84
|
+
return text.replace(/\|/g, "\\|").replace(/\n/g, " ");
|
|
85
|
+
};
|
|
86
|
+
// Header row (first row)
|
|
87
|
+
const headerRow = rows[0] || [];
|
|
88
|
+
// Pad to column count
|
|
89
|
+
while (headerRow.length < columnCount) {
|
|
90
|
+
headerRow.push("");
|
|
91
|
+
}
|
|
92
|
+
lines.push("| " + headerRow.map(formatCell).join(" | ") + " |");
|
|
93
|
+
// Separator row
|
|
94
|
+
lines.push("| " + Array(columnCount).fill("---").join(" | ") + " |");
|
|
95
|
+
// Data rows
|
|
96
|
+
for (let i = 1; i < rows.length; i++) {
|
|
97
|
+
const row = [...rows[i]];
|
|
98
|
+
// Pad row to match column count
|
|
99
|
+
while (row.length < columnCount) {
|
|
100
|
+
row.push("");
|
|
101
|
+
}
|
|
102
|
+
lines.push("| " + row.map(formatCell).join(" | ") + " |");
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
id: node.id,
|
|
106
|
+
name: node.name,
|
|
107
|
+
type: "TABLE_MARKDOWN",
|
|
108
|
+
markdown: lines.join("\n"),
|
|
109
|
+
rowCount: rows.length,
|
|
110
|
+
columnCount,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if a node should be converted to markdown table.
|
|
115
|
+
* Currently only handles native TABLE nodes.
|
|
116
|
+
*
|
|
117
|
+
* Note: We intentionally don't detect "table-like" FRAME structures
|
|
118
|
+
* to avoid false positives. Only native TABLE nodes are converted.
|
|
119
|
+
*/
|
|
120
|
+
export function shouldConvertToMarkdown(node) {
|
|
121
|
+
return isTableNode(node);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=table-to-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-to-markdown.js","sourceRoot":"","sources":["../../../src/figma/transformers/table-to-markdown.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -16,5 +16,5 @@ export declare function registerFigmaTools(server: any, figmaService?: FigmaServ
|
|
|
16
16
|
* Export service class for direct usage
|
|
17
17
|
*/
|
|
18
18
|
export { FigmaService } from "./FigmaService.js";
|
|
19
|
-
export type { FigmaConfig } from "./FigmaService.js";
|
|
19
|
+
export type { FigmaConfig, FigmaDataOptions } from "./FigmaService.js";
|
|
20
20
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,YAAY,QAqG1E;AAED;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -39,14 +39,28 @@ export function registerFigmaTools(server, figmaService) {
|
|
|
39
39
|
return service;
|
|
40
40
|
}
|
|
41
41
|
// Tool: get-figma-data
|
|
42
|
-
server.tool("get-figma-data", "Get comprehensive Figma design data including layout, text, styles, and components. Fetches from Figma API and transforms into simplified, AI-friendly format. Can fetch entire files or specific nodes. Automatically deduplicates styles.", {
|
|
42
|
+
server.tool("get-figma-data", "Get comprehensive Figma design data including layout, text, styles, and components. Fetches from Figma API and transforms into simplified, AI-friendly format. Can fetch entire files or specific nodes. Automatically deduplicates styles. Supports optimization options to reduce context window usage.", {
|
|
43
43
|
fileKey: z.string().describe("Figma file key (alphanumeric string from URL). Example: From 'https://figma.com/file/ABC123/MyFile', use 'ABC123'"),
|
|
44
44
|
nodeId: z.string().optional().describe("Optional specific node ID(s) to fetch. Format: '1234:5678' or multiple '1:10;2:20'. If omitted, fetches entire file."),
|
|
45
45
|
depth: z.number().optional().describe("Optional tree traversal depth limit. Useful for large files. Example: depth=3 stops after 3 levels of children."),
|
|
46
|
-
|
|
46
|
+
// Optimization options for reducing context window usage
|
|
47
|
+
excludeStyles: z.boolean().optional().describe("Remove all styling info (fills, strokes, effects, textStyle, opacity, borderRadius) and globalVars.styles. Useful for understanding architecture without visual details. Default: true. Set to false for full styling data."),
|
|
48
|
+
tablesToMarkdown: z.boolean().optional().describe("Convert TABLE nodes to markdown table format instead of nested node structures. Significantly reduces token usage for tables. Default: true. Set to false for full node tree."),
|
|
49
|
+
simplifyConnectors: z.boolean().optional().describe("Simplify CONNECTOR nodes to just connection endpoints (startNodeId, endNodeId, text). Preserves relationship data while removing visual properties. Default: true. Set to false for full connector data."),
|
|
50
|
+
simplifyComponentInstances: z.boolean().optional().describe("Keep componentId and componentProperties on INSTANCE nodes but remove visual styling. Ideal for ADO User Story components. Default: true. Set to false for full instance data."),
|
|
51
|
+
extractors: z.array(z.enum(["layout", "text", "visuals", "component"])).optional().describe("Override which extractors to use. Options: layout, text, visuals, component. Default uses all. Example: ['text', 'component'] for content-focused extraction."),
|
|
52
|
+
}, async ({ fileKey, nodeId, depth, excludeStyles, tablesToMarkdown, simplifyConnectors, simplifyComponentInstances, extractors }) => {
|
|
47
53
|
try {
|
|
48
54
|
const figmaService = getFigmaService();
|
|
49
|
-
|
|
55
|
+
// Build data options from parameters
|
|
56
|
+
const dataOptions = {
|
|
57
|
+
excludeStyles,
|
|
58
|
+
tablesToMarkdown,
|
|
59
|
+
simplifyConnectors,
|
|
60
|
+
simplifyComponentInstances,
|
|
61
|
+
extractors,
|
|
62
|
+
};
|
|
63
|
+
const result = await figmaService.getFigmaData(fileKey, nodeId, depth, dataOptions);
|
|
50
64
|
return createSuccessResponse(result);
|
|
51
65
|
}
|
|
52
66
|
catch (error) {
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC1H,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAW,EAAE,YAA2B;IACzE,IAAI,OAAO,GAAwB,YAAY,IAAI,IAAI,CAAC;IAExD,SAAS,eAAe;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBACjE,aAAa,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,yCAAyC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACrE,8DAA8D,CAC/D,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAgB;gBAC1B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBACjC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBACzC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;aACjD,CAAC;YAEF,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uBAAuB;IACvB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|