figma-console-mcp 1.28.0 โ 1.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/core/tokens/alias-resolver.d.ts +15 -0
- package/dist/core/tokens/alias-resolver.d.ts.map +1 -1
- package/dist/core/tokens/alias-resolver.js +37 -0
- package/dist/core/tokens/alias-resolver.js.map +1 -1
- package/dist/core/tokens/formatters/json.d.ts.map +1 -1
- package/dist/core/tokens/formatters/json.js +30 -21
- package/dist/core/tokens/formatters/json.js.map +1 -1
- package/dist/core/tokens/formatters/stubs.d.ts +3 -3
- package/dist/core/tokens/formatters/stubs.d.ts.map +1 -1
- package/dist/core/tokens/formatters/stubs.js +6 -4
- package/dist/core/tokens/formatters/stubs.js.map +1 -1
- package/dist/core/tokens/formatters/tailwind-v3.d.ts.map +1 -1
- package/dist/core/tokens/formatters/tailwind-v3.js +37 -23
- package/dist/core/tokens/formatters/tailwind-v3.js.map +1 -1
- package/dist/core/tokens/formatters/tailwind-v4.js +31 -15
- package/dist/core/tokens/formatters/tailwind-v4.js.map +1 -1
- package/dist/core/tokens/formatters/ts-module.d.ts.map +1 -1
- package/dist/core/tokens/formatters/ts-module.js +23 -16
- package/dist/core/tokens/formatters/ts-module.js.map +1 -1
- package/dist/core/tokens/index.d.ts +1 -1
- package/dist/core/tokens/index.d.ts.map +1 -1
- package/dist/core/tokens/index.js +1 -1
- package/dist/core/tokens/index.js.map +1 -1
- package/dist/core/tokens/parsers/stubs.d.ts +9 -5
- package/dist/core/tokens/parsers/stubs.d.ts.map +1 -1
- package/dist/core/tokens/parsers/stubs.js +13 -6
- package/dist/core/tokens/parsers/stubs.js.map +1 -1
- package/dist/core/tokens-tools.js +1 -1
- package/figma-desktop-bridge/code.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Your design system as an API.** Model Context Protocol server that bridges design and developmentโgiving AI assistants complete access to Figma for **extraction**, **creation**, **debugging**, and **bidirectional token sync**.
|
|
10
10
|
|
|
11
|
-
> **๐ Token Sync โ Full Formatter Coverage (v1.28.0):** `figma_export_tokens` now ships **10 fully-implemented output formats**: DTCG JSON (canonical), CSS custom properties, Tailwind v4 `@theme inline`, Tailwind v3 config, SCSS, TypeScript module, JSON (flat + nested), Style Dictionary v3, and Tokens Studio multi-file. Pull Figma variables and emit code in whatever styling flavor your project uses โ no Style Dictionary or Tokens Studio install required. Diff-aware merge for round-trip; one Figma API call per changed value, not full rewrites. 103 tools total. [See what's new โ](CHANGELOG.md#
|
|
11
|
+
> **๐ Token Sync โ Full Formatter Coverage (v1.28.0, patched v1.28.1):** `figma_export_tokens` now ships **10 fully-implemented output formats**: DTCG JSON (canonical), CSS custom properties, Tailwind v4 `@theme inline`, Tailwind v3 config, SCSS, TypeScript module, JSON (flat + nested), Style Dictionary v3, and Tokens Studio multi-file. Pull Figma variables and emit code in whatever styling flavor your project uses โ no Style Dictionary or Tokens Studio install required. Diff-aware merge for round-trip; one Figma API call per changed value, not full rewrites. v1.28.1 fixes four alias-resolution bugs found in live-fire testing against multi-tier semantic-token design systems. 103 tools total. [See what's new โ](CHANGELOG.md#1281---2026-05-18)
|
|
12
12
|
|
|
13
13
|
## What is this?
|
|
14
14
|
|
|
@@ -802,9 +802,10 @@ The architecture supports adding new apps with minimal boilerplate โ each app
|
|
|
802
802
|
|
|
803
803
|
## ๐ค๏ธ Roadmap
|
|
804
804
|
|
|
805
|
-
**Current Status:** v1.28.
|
|
805
|
+
**Current Status:** v1.28.1 (Stable) - Production-ready with 10-format token export pipeline (DTCG, CSS, Tailwind v4, Tailwind v3, SCSS, TS module, JSON flat/nested, Style Dictionary v3, Tokens Studio), bidirectional Figmaโcode token sync, version history & time-series awareness, FigJam + Slides support, Cloud Write Relay, Design System Kit, WebSocket-only connectivity, smart multi-file tracking, **103 tools** (Local) / **95 tools** (Cloud) / **9 tools** (Remote read-only), Comments API, cross-MCP identity disambiguation, and MCP Apps.
|
|
806
806
|
|
|
807
807
|
**Recent Releases:**
|
|
808
|
+
- [x] **v1.28.1** - Bug fix patch surfacing from live-fire testing of the v1.28.0 formatters against multi-tier semantic-token design systems. Fixes: Tailwind v3 emitted empty `module.exports` for alias-only sets (now resolves alias chains to literal values); TypeScript module + JSON flat + JSON nested formatters emitted `"{alias.path}"` strings as literal values (now resolves); Tailwind v4 namespace-prefix doubling (`--color-theme-color-X` is now `--color-theme-X`). Adds `resolveAliasChain` public helper. 1151 tests still passing.
|
|
808
809
|
- [x] **v1.28.0** - Full formatter coverage for `figma_export_tokens`. Seven new output formats: Tailwind v4 `@theme inline`, Tailwind v3 config, SCSS variables, TypeScript module, JSON flat/nested, Style Dictionary v3, Tokens Studio multi-file. Combined with DTCG + CSS variables, ships **10 fully-implemented output formats** with zero third-party build-tool dependencies. Tool description updated, docs/tools.md table all-green. 22 new Jest tests, 1151 total passing.
|
|
809
810
|
- [x] **v1.27.1** - Documentation patch. No code behavior changes. Sweeps stale "Phase 1 ships with DTCG only" claims across tool descriptions, error messages, and internal comments after CSS variables formatter and the apply phase shipped during the v1.27.0 dev cycle. Refreshes README banner + capability bullets + roadmap. Adds `Phase 3.5: Stale-Content Audit` to the release runbook so future releases get a strict pre-publish grep sweep across banners, tool descriptions, error messages, source comments, and tool-count consistency.
|
|
810
811
|
- [x] **v1.27.0** - Bidirectional token sync: `figma_export_tokens` + `figma_import_tokens` replace Style Dictionary and Tokens Studio's export pipeline. Canonical DTCG JSON + CSS custom properties. Diff-aware merge with round-trip ID preservation via `$extensions["figma-console-mcp"]`. Apply phase pushes hex-value edits back to Figma via the plugin bridge. Verified end-to-end against 713-token + 280-token design systems.
|
|
@@ -22,6 +22,21 @@ export declare function buildTokenIndex(doc: TokenDocument): Map<string, Token>;
|
|
|
22
22
|
* throws if the reference is unresolvable or cyclic.
|
|
23
23
|
*/
|
|
24
24
|
export declare function resolveReference(reference: string, mode: string, index: Map<string, Token>, seen?: Set<string>): TokenValue;
|
|
25
|
+
/**
|
|
26
|
+
* Resolve an alias chain to its final literal value, walking through
|
|
27
|
+
* intermediate alias hops. Returns the final TokenValue (with `literal` set
|
|
28
|
+
* if resolution succeeded) or `null` if the chain ends at a cross-library
|
|
29
|
+
* reference / unresolvable target / cycle.
|
|
30
|
+
*
|
|
31
|
+
* Used by formatters that can't natively express alias references in their
|
|
32
|
+
* output (Tailwind v3, TypeScript modules, plain JSON) โ those need literal
|
|
33
|
+
* values at export time.
|
|
34
|
+
*
|
|
35
|
+
* Safer counterpart of `resolveReference` because it swallows errors
|
|
36
|
+
* (unresolvable / cycle) into `null` rather than throwing; formatters can
|
|
37
|
+
* then emit a comment or skip the token instead of failing the whole export.
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveAliasChain(value: TokenValue, mode: string, index: Map<string, Token>): TokenValue | null;
|
|
25
40
|
/**
|
|
26
41
|
* Validate every alias in the document. Returns a list of error messages โ
|
|
27
42
|
* empty array means all aliases resolve cleanly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alias-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/tokens/alias-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAStE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EACzB,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,UAAU,CAsCZ;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAqB5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAI7D"}
|
|
1
|
+
{"version":3,"file":"alias-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/tokens/alias-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAStE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EACzB,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,UAAU,CAsCZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GACxB,UAAU,GAAG,IAAI,CAqBnB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAqB5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAI7D"}
|
|
@@ -56,6 +56,43 @@ export function resolveReference(reference, mode, index, seen = new Set()) {
|
|
|
56
56
|
}
|
|
57
57
|
return value;
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolve an alias chain to its final literal value, walking through
|
|
61
|
+
* intermediate alias hops. Returns the final TokenValue (with `literal` set
|
|
62
|
+
* if resolution succeeded) or `null` if the chain ends at a cross-library
|
|
63
|
+
* reference / unresolvable target / cycle.
|
|
64
|
+
*
|
|
65
|
+
* Used by formatters that can't natively express alias references in their
|
|
66
|
+
* output (Tailwind v3, TypeScript modules, plain JSON) โ those need literal
|
|
67
|
+
* values at export time.
|
|
68
|
+
*
|
|
69
|
+
* Safer counterpart of `resolveReference` because it swallows errors
|
|
70
|
+
* (unresolvable / cycle) into `null` rather than throwing; formatters can
|
|
71
|
+
* then emit a comment or skip the token instead of failing the whole export.
|
|
72
|
+
*/
|
|
73
|
+
export function resolveAliasChain(value, mode, index) {
|
|
74
|
+
if (!value.reference)
|
|
75
|
+
return value;
|
|
76
|
+
// Cross-library aliases are not resolvable โ formatters should skip with a comment.
|
|
77
|
+
const bare = value.reference.replace(/^\{|\}$/g, "");
|
|
78
|
+
if (bare.startsWith("__library:") || bare === "unknown")
|
|
79
|
+
return null;
|
|
80
|
+
try {
|
|
81
|
+
const resolved = resolveReference(value.reference, mode, index);
|
|
82
|
+
// resolveReference throws on cycles / unresolvable, so a returned value
|
|
83
|
+
// is either a literal or another reference. If still a reference,
|
|
84
|
+
// recurse (defensive โ resolveReference already chases chains, but the
|
|
85
|
+
// top-level call may return a value with `reference` if mode-fallback
|
|
86
|
+
// routes through an aliased entry).
|
|
87
|
+
if (resolved.reference) {
|
|
88
|
+
return resolveAliasChain(resolved, mode, index);
|
|
89
|
+
}
|
|
90
|
+
return resolved;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
59
96
|
/**
|
|
60
97
|
* Validate every alias in the document. Returns a list of error messages โ
|
|
61
98
|
* empty array means all aliases resolve cleanly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alias-resolver.js","sourceRoot":"","sources":["../../../src/core/tokens/alias-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alias-resolver.js","sourceRoot":"","sources":["../../../src/core/tokens/alias-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAwB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAwB,MAAM,aAAa,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,aAAa,GAClB,YAAY,CAyBd;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,aAAa,GAClB,YAAY,CAsBd"}
|
|
@@ -30,23 +30,27 @@
|
|
|
30
30
|
* Aliases resolve to the literal value where possible; cross-library
|
|
31
31
|
* aliases get a `null` (caller can decide how to fill those in).
|
|
32
32
|
*/
|
|
33
|
+
import { buildTokenIndex, resolveAliasChain } from "../alias-resolver.js";
|
|
33
34
|
export function formatJsonFlat(doc, opts) {
|
|
34
35
|
const warnings = [];
|
|
35
36
|
const files = [];
|
|
36
37
|
const splitByCollection = opts.target.splitByCollection ?? false;
|
|
37
38
|
const prefix = opts.target.prefix ?? "";
|
|
39
|
+
// Plain JSON has no native alias mechanism โ resolve aliases to their
|
|
40
|
+
// literal target so consumers get usable values, not opaque `{ref}` strings.
|
|
41
|
+
const tokenIndex = buildTokenIndex(doc);
|
|
38
42
|
if (splitByCollection) {
|
|
39
43
|
for (const set of doc.sets) {
|
|
40
44
|
files.push({
|
|
41
45
|
path: filenameFor(opts, set, "flat"),
|
|
42
|
-
content: renderFlat([set], prefix, warnings),
|
|
46
|
+
content: renderFlat([set], prefix, tokenIndex, warnings),
|
|
43
47
|
});
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
else {
|
|
47
51
|
files.push({
|
|
48
52
|
path: filenameFor(opts, undefined, "flat"),
|
|
49
|
-
content: renderFlat(doc.sets, prefix, warnings),
|
|
53
|
+
content: renderFlat(doc.sets, prefix, tokenIndex, warnings),
|
|
50
54
|
});
|
|
51
55
|
}
|
|
52
56
|
return { files, warnings };
|
|
@@ -55,18 +59,19 @@ export function formatJsonNested(doc, opts) {
|
|
|
55
59
|
const warnings = [];
|
|
56
60
|
const files = [];
|
|
57
61
|
const splitByCollection = opts.target.splitByCollection ?? false;
|
|
62
|
+
const tokenIndex = buildTokenIndex(doc);
|
|
58
63
|
if (splitByCollection) {
|
|
59
64
|
for (const set of doc.sets) {
|
|
60
65
|
files.push({
|
|
61
66
|
path: filenameFor(opts, set, "nested"),
|
|
62
|
-
content: renderNested([set], warnings),
|
|
67
|
+
content: renderNested([set], tokenIndex, warnings),
|
|
63
68
|
});
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
71
|
else {
|
|
67
72
|
files.push({
|
|
68
73
|
path: filenameFor(opts, undefined, "nested"),
|
|
69
|
-
content: renderNested(doc.sets, warnings),
|
|
74
|
+
content: renderNested(doc.sets, tokenIndex, warnings),
|
|
70
75
|
});
|
|
71
76
|
}
|
|
72
77
|
return { files, warnings };
|
|
@@ -87,7 +92,7 @@ function slugify(s) {
|
|
|
87
92
|
.replace(/[^a-z0-9]+/g, "-")
|
|
88
93
|
.replace(/^-+|-+$/g, "");
|
|
89
94
|
}
|
|
90
|
-
function renderFlat(sets, prefix, warnings) {
|
|
95
|
+
function renderFlat(sets, prefix, tokenIndex, warnings) {
|
|
91
96
|
const out = {};
|
|
92
97
|
for (const set of sets) {
|
|
93
98
|
const primaryMode = pickPrimaryMode(set.modes);
|
|
@@ -97,7 +102,7 @@ function renderFlat(sets, prefix, warnings) {
|
|
|
97
102
|
const key = modeName === primaryMode
|
|
98
103
|
? baseName
|
|
99
104
|
: `${baseName}--${slugify(modeName)}`;
|
|
100
|
-
const resolved = resolveValue(value, token, warnings);
|
|
105
|
+
const resolved = resolveValue(value, token, modeName, tokenIndex, warnings);
|
|
101
106
|
if (resolved !== undefined)
|
|
102
107
|
out[key] = resolved;
|
|
103
108
|
}
|
|
@@ -107,7 +112,7 @@ function renderFlat(sets, prefix, warnings) {
|
|
|
107
112
|
const sorted = Object.fromEntries(Object.entries(out).sort(([a], [b]) => a.localeCompare(b)));
|
|
108
113
|
return JSON.stringify(sorted, null, 2) + "\n";
|
|
109
114
|
}
|
|
110
|
-
function renderNested(sets, warnings) {
|
|
115
|
+
function renderNested(sets, tokenIndex, warnings) {
|
|
111
116
|
const out = {};
|
|
112
117
|
for (const set of sets) {
|
|
113
118
|
const isMultiMode = set.modes.length > 1;
|
|
@@ -126,16 +131,16 @@ function renderNested(sets, warnings) {
|
|
|
126
131
|
if (isMultiMode) {
|
|
127
132
|
const modeValues = {};
|
|
128
133
|
for (const [modeName, value] of Object.entries(token.values)) {
|
|
129
|
-
const resolved = resolveValue(value, token, warnings);
|
|
134
|
+
const resolved = resolveValue(value, token, modeName, tokenIndex, warnings);
|
|
130
135
|
if (resolved !== undefined)
|
|
131
136
|
modeValues[modeName] = resolved;
|
|
132
137
|
}
|
|
133
138
|
cursor[leafKey] = modeValues;
|
|
134
139
|
}
|
|
135
140
|
else {
|
|
136
|
-
const onlyValue = Object.
|
|
141
|
+
const [onlyModeName, onlyValue] = Object.entries(token.values)[0] ?? [];
|
|
137
142
|
if (onlyValue) {
|
|
138
|
-
const resolved = resolveValue(onlyValue, token, warnings);
|
|
143
|
+
const resolved = resolveValue(onlyValue, token, onlyModeName, tokenIndex, warnings);
|
|
139
144
|
if (resolved !== undefined)
|
|
140
145
|
cursor[leafKey] = resolved;
|
|
141
146
|
}
|
|
@@ -147,24 +152,28 @@ function renderNested(sets, warnings) {
|
|
|
147
152
|
function pickPrimaryMode(modes) {
|
|
148
153
|
return modes.find((m) => /^(default|light|value)$/i.test(m)) ?? modes[0];
|
|
149
154
|
}
|
|
150
|
-
function resolveValue(value, token, warnings) {
|
|
155
|
+
function resolveValue(value, token, mode, tokenIndex, warnings) {
|
|
156
|
+
let effective = value;
|
|
151
157
|
if (value.reference) {
|
|
152
|
-
|
|
153
|
-
if (
|
|
154
|
-
|
|
158
|
+
effective = resolveAliasChain(value, mode, tokenIndex);
|
|
159
|
+
if (!effective) {
|
|
160
|
+
const bare = value.reference.replace(/^\{|\}$/g, "");
|
|
161
|
+
const reason = bare.startsWith("__library:") || bare === "unknown"
|
|
162
|
+
? "cross-library alias"
|
|
163
|
+
: "alias target not found";
|
|
164
|
+
warnings.push(`Skipped ${token.path.join(".")} in JSON โ ${reason}: ${value.reference}.`);
|
|
155
165
|
return null;
|
|
156
166
|
}
|
|
157
|
-
// Local alias: emit as the reference path. Caller can resolve.
|
|
158
|
-
return `{${bare}}`;
|
|
159
167
|
}
|
|
160
|
-
if (
|
|
168
|
+
if (!effective || effective.literal === undefined || effective.literal === null) {
|
|
161
169
|
return undefined;
|
|
162
|
-
|
|
170
|
+
}
|
|
171
|
+
if (typeof effective.literal === "number") {
|
|
163
172
|
if (token.type === "dimension")
|
|
164
|
-
return `${
|
|
165
|
-
return
|
|
173
|
+
return `${effective.literal}px`;
|
|
174
|
+
return effective.literal;
|
|
166
175
|
}
|
|
167
|
-
return
|
|
176
|
+
return effective.literal;
|
|
168
177
|
}
|
|
169
178
|
function sortKeys(obj) {
|
|
170
179
|
if (obj === null || typeof obj !== "object" || Array.isArray(obj))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared NotImplementedError used by formatter stubs.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Shared NotImplementedError used by formatter stubs. Most formatters are
|
|
3
|
+
* implemented end-to-end as of v1.28.0; this stub remains for niche targets
|
|
4
|
+
* (e.g. Less) that haven't drawn enough demand to warrant implementation.
|
|
5
5
|
*/
|
|
6
6
|
export declare class FormatterNotImplementedError extends Error {
|
|
7
7
|
constructor(formatName: string);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/stubs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,UAAU,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/stubs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,UAAU,EAAE,MAAM;CAQ/B"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared NotImplementedError used by formatter stubs.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Shared NotImplementedError used by formatter stubs. Most formatters are
|
|
3
|
+
* implemented end-to-end as of v1.28.0; this stub remains for niche targets
|
|
4
|
+
* (e.g. Less) that haven't drawn enough demand to warrant implementation.
|
|
5
5
|
*/
|
|
6
6
|
export class FormatterNotImplementedError extends Error {
|
|
7
7
|
constructor(formatName) {
|
|
8
|
-
super(`[figma-console-mcp] The ${formatName} formatter is
|
|
8
|
+
super(`[figma-console-mcp] The ${formatName} formatter is not implemented. ` +
|
|
9
|
+
`Currently supported formatters: dtcg, css-vars, tailwind-v4, tailwind-v3, scss, ts-module, json-flat, json-nested, style-dictionary-v3, tokens-studio. ` +
|
|
10
|
+
`If you need ${formatName} support, open an issue with your use case so we can prioritize it.`);
|
|
9
11
|
this.name = "FormatterNotImplementedError";
|
|
10
12
|
}
|
|
11
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubs.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/stubs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,YAAY,UAAkB;QAC5B,KAAK,CACH,2BAA2B,UAAU,
|
|
1
|
+
{"version":3,"file":"stubs.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/stubs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,YAAY,UAAkB;QAC5B,KAAK,CACH,2BAA2B,UAAU,iCAAiC;YACpE,yJAAyJ;YACzJ,eAAe,UAAU,qEAAqE,CACjG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-v3.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/tailwind-v3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAwB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tailwind-v3.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/tailwind-v3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAwB,MAAM,aAAa,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,aAAa,GAClB,YAAY,CA4Bd"}
|
|
@@ -31,22 +31,30 @@
|
|
|
31
31
|
* a native multi-mode model โ dark-mode variants come from `tailwindcss`'s
|
|
32
32
|
* `darkMode: 'class'` + separate CSS variable files).
|
|
33
33
|
*/
|
|
34
|
+
import { buildTokenIndex, resolveAliasChain } from "../alias-resolver.js";
|
|
34
35
|
export function formatTailwindV3(doc, opts) {
|
|
35
36
|
const warnings = [];
|
|
36
37
|
const files = [];
|
|
37
38
|
const splitByCollection = opts.target.splitByCollection ?? false;
|
|
39
|
+
// Tailwind v3 config is consumed by Tailwind's build step, which needs
|
|
40
|
+
// literal values โ no runtime alias resolution. Build a full-document
|
|
41
|
+
// token index so we can resolve alias chains at export time. Even when
|
|
42
|
+
// splitByCollection writes one file per set, aliases may target tokens
|
|
43
|
+
// in OTHER sets (e.g. semantic โ primitives) so the index must span
|
|
44
|
+
// every set, not just the file's own.
|
|
45
|
+
const tokenIndex = buildTokenIndex(doc);
|
|
38
46
|
if (splitByCollection) {
|
|
39
47
|
for (const set of doc.sets) {
|
|
40
48
|
files.push({
|
|
41
49
|
path: filenameFor(opts, set),
|
|
42
|
-
content: renderConfigFile([set], opts, warnings),
|
|
50
|
+
content: renderConfigFile([set], opts, tokenIndex, warnings),
|
|
43
51
|
});
|
|
44
52
|
}
|
|
45
53
|
}
|
|
46
54
|
else {
|
|
47
55
|
files.push({
|
|
48
56
|
path: filenameFor(opts),
|
|
49
|
-
content: renderConfigFile(doc.sets, opts, warnings),
|
|
57
|
+
content: renderConfigFile(doc.sets, opts, tokenIndex, warnings),
|
|
50
58
|
});
|
|
51
59
|
}
|
|
52
60
|
return { files, warnings };
|
|
@@ -70,7 +78,7 @@ function jsKey(segment) {
|
|
|
70
78
|
return segment;
|
|
71
79
|
return JSON.stringify(segment);
|
|
72
80
|
}
|
|
73
|
-
function renderConfigFile(sets, opts, warnings) {
|
|
81
|
+
function renderConfigFile(sets, opts, tokenIndex, warnings) {
|
|
74
82
|
const lines = [];
|
|
75
83
|
lines.push("/**");
|
|
76
84
|
lines.push(" * Generated by figma-console-mcp โ do not edit by hand.");
|
|
@@ -88,7 +96,7 @@ function renderConfigFile(sets, opts, warnings) {
|
|
|
88
96
|
const value = token.values[primaryMode];
|
|
89
97
|
if (!value)
|
|
90
98
|
continue;
|
|
91
|
-
const formattedValue = formatTokenValue(value, token, warnings);
|
|
99
|
+
const formattedValue = formatTokenValue(value, token, primaryMode, tokenIndex, warnings);
|
|
92
100
|
if (formattedValue === null)
|
|
93
101
|
continue;
|
|
94
102
|
const { namespace, subPath } = mapToNamespace(token);
|
|
@@ -192,33 +200,39 @@ function renderTree(tree, indent) {
|
|
|
192
200
|
}
|
|
193
201
|
/**
|
|
194
202
|
* Format a token value as a JavaScript literal (quoted string for most
|
|
195
|
-
* things).
|
|
203
|
+
* things). Resolves alias chains to their literal target value via the
|
|
204
|
+
* document-wide token index โ Tailwind v3 config is read at Tailwind's
|
|
205
|
+
* build time and needs concrete values (no runtime cascade).
|
|
206
|
+
*
|
|
207
|
+
* Returns null only for cross-library aliases or genuinely empty values,
|
|
208
|
+
* after emitting a warning explaining what got skipped.
|
|
196
209
|
*/
|
|
197
|
-
function formatTokenValue(value, token, warnings) {
|
|
210
|
+
function formatTokenValue(value, token, mode, tokenIndex, warnings) {
|
|
211
|
+
let effective = value;
|
|
198
212
|
if (value.reference) {
|
|
199
|
-
|
|
200
|
-
if (
|
|
201
|
-
|
|
213
|
+
effective = resolveAliasChain(value, mode, tokenIndex);
|
|
214
|
+
if (!effective) {
|
|
215
|
+
const bare = value.reference.replace(/^\{|\}$/g, "");
|
|
216
|
+
const reason = bare.startsWith("__library:") || bare === "unknown"
|
|
217
|
+
? "cross-library alias"
|
|
218
|
+
: "alias target not found in any set";
|
|
219
|
+
warnings.push(`Skipped ${token.path.join(".")} in Tailwind v3 โ ${reason}: ${value.reference}.`);
|
|
202
220
|
return null;
|
|
203
221
|
}
|
|
204
|
-
// Local alias: in v3 these resolve to literal references via JS,
|
|
205
|
-
// but we don't have the target's value at this stage. Emit as a
|
|
206
|
-
// string marker the user can replace, or skip with a warning.
|
|
207
|
-
warnings.push(`Token ${token.path.join(".")} is an alias to {${bare}} โ Tailwind v3 needs literal values, alias not resolved at export time.`);
|
|
208
|
-
return null;
|
|
209
222
|
}
|
|
210
|
-
if (
|
|
223
|
+
if (!effective || effective.literal === undefined || effective.literal === null) {
|
|
211
224
|
return null;
|
|
212
|
-
|
|
225
|
+
}
|
|
226
|
+
if (typeof effective.literal === "number") {
|
|
213
227
|
if (token.type === "dimension")
|
|
214
|
-
return JSON.stringify(`${
|
|
215
|
-
return String(
|
|
228
|
+
return JSON.stringify(`${effective.literal}px`);
|
|
229
|
+
return String(effective.literal);
|
|
216
230
|
}
|
|
217
|
-
if (typeof
|
|
218
|
-
return JSON.stringify(
|
|
219
|
-
if (typeof
|
|
220
|
-
return String(
|
|
231
|
+
if (typeof effective.literal === "string")
|
|
232
|
+
return JSON.stringify(effective.literal);
|
|
233
|
+
if (typeof effective.literal === "boolean")
|
|
234
|
+
return String(effective.literal);
|
|
221
235
|
// Composite: emit as JSON object literal
|
|
222
|
-
return JSON.stringify(
|
|
236
|
+
return JSON.stringify(effective.literal);
|
|
223
237
|
}
|
|
224
238
|
//# sourceMappingURL=tailwind-v3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-v3.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/tailwind-v3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;
|
|
1
|
+
{"version":3,"file":"tailwind-v3.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/tailwind-v3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,UAAU,gBAAgB,CAC9B,GAAkB,EAClB,IAAmB;IAEnB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC;IACjE,uEAAuE;IACvE,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,oEAAoE;IACpE,sCAAsC;IACtC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,iBAAiB,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;gBAC5B,OAAO,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;aAC7D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;YACvB,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;SAChE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,IAAmB,EAAE,GAAc;IACtD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACtD,IAAI,GAAG;QAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC1D,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC;SACL,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAMD,SAAS,gBAAgB,CACvB,IAAgB,EAChB,IAAmB,EACnB,UAA8B,EAC9B,QAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAC9E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,4CAA4C;IAC5C,MAAM,UAAU,GAA2B,EAAE,CAAC;IAE9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACzF,IAAI,cAAc,KAAK,IAAI;gBAAE,SAAS;YACtC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACvD,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CAAC,KAAY;IAIlC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEnE,6EAA6E;IAC7E,MAAM,aAAa,GAA2B;QAC5C,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,cAAc;QACtB,eAAe,EAAE,cAAc;QAC/B,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,YAAY;QAC3B,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,YAAY;QAC3B,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,WAAW;QACzB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,YAAY;QAC3B,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,eAAe;QACzB,gBAAgB,EAAE,eAAe;KAClC,CAAC;IAEF,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,iDAAiD;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/E,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnF,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnF,0CAA0C;IAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAAc,EAAE,KAAa;IAChE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,IAAI,MAAM,GAAW,IAAI,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,OAAO,GAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;YAC1B,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,MAAc;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,KAAiB,EACjB,KAAY,EACZ,IAAY,EACZ,UAA8B,EAC9B,QAAkB;IAElB,IAAI,SAAS,GAAsB,KAAK,CAAC;IACzC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,SAAS;gBAChE,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,mCAAmC,CAAC;YACxC,QAAQ,CAAC,IAAI,CACX,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,CAClF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC;QAChF,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpF,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7E,yCAAyC;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -238,25 +238,41 @@ function pathToTailwindName(path, type) {
|
|
|
238
238
|
"container",
|
|
239
239
|
"aspect",
|
|
240
240
|
]);
|
|
241
|
+
// Aliases that normalize to a canonical namespace.
|
|
242
|
+
const NORMALIZE = {
|
|
243
|
+
colors: "color",
|
|
244
|
+
rounded: "radius",
|
|
245
|
+
};
|
|
241
246
|
const slug = path.map(slugify);
|
|
242
247
|
if (slug.length === 0)
|
|
243
248
|
return "token";
|
|
244
|
-
//
|
|
245
|
-
if (slug[0]
|
|
246
|
-
slug[0]
|
|
247
|
-
|
|
249
|
+
// First-segment match: easy case, normalize plural โ singular and emit.
|
|
250
|
+
if (KNOWN.has(slug[0])) {
|
|
251
|
+
const head = NORMALIZE[slug[0]] ?? slug[0];
|
|
252
|
+
return [head, ...slug.slice(1)].join("-");
|
|
253
|
+
}
|
|
254
|
+
// Determine the target Tailwind namespace from token type.
|
|
255
|
+
const ns = type === "color"
|
|
256
|
+
? "color"
|
|
257
|
+
: type === "dimension" || type === "number"
|
|
258
|
+
? "spacing"
|
|
259
|
+
: type === "fontFamily"
|
|
260
|
+
? "font"
|
|
261
|
+
: type === "fontWeight"
|
|
262
|
+
? "font-weight"
|
|
263
|
+
: null;
|
|
264
|
+
if (!ns)
|
|
248
265
|
return slug.join("-");
|
|
249
|
-
//
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
return slug.join("-");
|
|
266
|
+
// Dedup: if the path already contains the target namespace (e.g. a path
|
|
267
|
+
// like `theme.color.header.background` for a color token would otherwise
|
|
268
|
+
// produce `color-theme-color-header-background`), strip the duplicate
|
|
269
|
+
// segment so the result reads cleanly. Match both the canonical name
|
|
270
|
+
// and any alias that normalizes to it.
|
|
271
|
+
const dupAliases = new Set([ns, ...Object.entries(NORMALIZE)
|
|
272
|
+
.filter(([, target]) => target === ns)
|
|
273
|
+
.map(([alias]) => alias)]);
|
|
274
|
+
const dedupedTail = slug.filter((s) => !dupAliases.has(s));
|
|
275
|
+
return [ns, ...dedupedTail].join("-");
|
|
260
276
|
}
|
|
261
277
|
function kebab(s) {
|
|
262
278
|
return s.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-v4.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/tailwind-v4.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tailwind-v4.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/tailwind-v4.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-module.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/ts-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAwB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ts-module.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/ts-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAwB,MAAM,aAAa,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,aAAa,GAClB,YAAY,CA+Bd"}
|
|
@@ -29,26 +29,32 @@
|
|
|
29
29
|
* as `null` with a "TODO: cross-library alias unresolved" comment so
|
|
30
30
|
* consumers see the gap.
|
|
31
31
|
*/
|
|
32
|
+
import { buildTokenIndex, resolveAliasChain } from "../alias-resolver.js";
|
|
32
33
|
export function formatTsModule(doc, opts) {
|
|
33
34
|
const warnings = [];
|
|
34
35
|
const files = [];
|
|
35
36
|
const splitByCollection = opts.target.splitByCollection ?? false;
|
|
36
37
|
// splitByMode doesn't make conceptual sense for a TypeScript module
|
|
37
38
|
// (the value is held in-memory at runtime, not selected by CSS cascade).
|
|
38
|
-
//
|
|
39
|
-
//
|
|
39
|
+
// TypeScript modules can't natively express alias references โ runtime
|
|
40
|
+
// code reading tokens.color.X gets a string at runtime, no resolution
|
|
41
|
+
// logic. Build a document-wide token index so aliases resolve to their
|
|
42
|
+
// literal target at export time. The index spans every set even when
|
|
43
|
+
// splitByCollection writes single-set files, because aliases often
|
|
44
|
+
// cross set boundaries (semantic โ primitives).
|
|
45
|
+
const tokenIndex = buildTokenIndex(doc);
|
|
40
46
|
if (splitByCollection) {
|
|
41
47
|
for (const set of doc.sets) {
|
|
42
48
|
files.push({
|
|
43
49
|
path: filenameFor(opts, set),
|
|
44
|
-
content: renderTsFile([set], opts, warnings),
|
|
50
|
+
content: renderTsFile([set], opts, tokenIndex, warnings),
|
|
45
51
|
});
|
|
46
52
|
}
|
|
47
53
|
}
|
|
48
54
|
else {
|
|
49
55
|
files.push({
|
|
50
56
|
path: filenameFor(opts),
|
|
51
|
-
content: renderTsFile(doc.sets, opts, warnings),
|
|
57
|
+
content: renderTsFile(doc.sets, opts, tokenIndex, warnings),
|
|
52
58
|
});
|
|
53
59
|
}
|
|
54
60
|
return { files, warnings };
|
|
@@ -76,7 +82,7 @@ function jsKey(segment) {
|
|
|
76
82
|
return segment;
|
|
77
83
|
return JSON.stringify(segment);
|
|
78
84
|
}
|
|
79
|
-
function renderTsFile(sets, opts, warnings) {
|
|
85
|
+
function renderTsFile(sets, opts, tokenIndex, warnings) {
|
|
80
86
|
const prefix = opts.target.prefix ?? "";
|
|
81
87
|
const lines = [];
|
|
82
88
|
lines.push("/**");
|
|
@@ -91,7 +97,7 @@ function renderTsFile(sets, opts, warnings) {
|
|
|
91
97
|
const tree = {};
|
|
92
98
|
for (const set of sets) {
|
|
93
99
|
for (const token of set.tokens) {
|
|
94
|
-
writeTokenIntoTree(tree, token, set, warnings);
|
|
100
|
+
writeTokenIntoTree(tree, token, set, tokenIndex, warnings);
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
103
|
lines.push(`export const ${constName} = ${renderTree(tree, 0)} as const;`);
|
|
@@ -100,7 +106,7 @@ function renderTsFile(sets, opts, warnings) {
|
|
|
100
106
|
lines.push("");
|
|
101
107
|
return lines.join("\n");
|
|
102
108
|
}
|
|
103
|
-
function writeTokenIntoTree(tree, token, set, warnings) {
|
|
109
|
+
function writeTokenIntoTree(tree, token, set, tokenIndex, warnings) {
|
|
104
110
|
let cursor = tree;
|
|
105
111
|
for (let i = 0; i < token.path.length - 1; i++) {
|
|
106
112
|
const segment = token.path[i];
|
|
@@ -115,21 +121,22 @@ function writeTokenIntoTree(tree, token, set, warnings) {
|
|
|
115
121
|
const isMulti = set.modes.length > 1;
|
|
116
122
|
const resolvedValues = {};
|
|
117
123
|
for (const [modeName, value] of Object.entries(token.values)) {
|
|
124
|
+
let effective = value;
|
|
118
125
|
if (value.reference) {
|
|
119
|
-
|
|
120
|
-
if (
|
|
121
|
-
|
|
126
|
+
effective = resolveAliasChain(value, modeName, tokenIndex);
|
|
127
|
+
if (!effective) {
|
|
128
|
+
const bare = value.reference.replace(/^\{|\}$/g, "");
|
|
129
|
+
const reason = bare.startsWith("__library:") || bare === "unknown"
|
|
130
|
+
? "cross-library alias"
|
|
131
|
+
: "alias target not found";
|
|
132
|
+
warnings.push(`Skipped ${token.path.join(".")} (mode "${modeName}") in TS module โ ${reason}: ${value.reference}.`);
|
|
122
133
|
resolvedValues[modeName] = null;
|
|
123
134
|
continue;
|
|
124
135
|
}
|
|
125
|
-
// Local alias: emit the dot-path as a special marker string.
|
|
126
|
-
// Future enhancement: actually resolve to the target's literal.
|
|
127
|
-
resolvedValues[modeName] = `{${bare}}`;
|
|
128
|
-
continue;
|
|
129
136
|
}
|
|
130
|
-
if (
|
|
137
|
+
if (!effective || effective.literal === undefined || effective.literal === null)
|
|
131
138
|
continue;
|
|
132
|
-
resolvedValues[modeName] = formatLiteral(
|
|
139
|
+
resolvedValues[modeName] = formatLiteral(effective.literal, token.type);
|
|
133
140
|
}
|
|
134
141
|
cursor[leafKey] = {
|
|
135
142
|
__leaf: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-module.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/ts-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"ts-module.js","sourceRoot":"","sources":["../../../../src/core/tokens/formatters/ts-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,6 @@ export { TokensConfigSchema, type TokensConfig, type OutputTarget, type LoadedTo
|
|
|
12
12
|
export { ExportTokensInputSchema, ImportTokensInputSchema, ExportFormatSchema, ImportFormatSchema, SyncStrategySchema, ConflictResolutionSchema, type ExportTokensInput, type ImportTokensInput, } from "./schemas.js";
|
|
13
13
|
export { parse, detectFormat, type ParseInput, type ParseResult, } from "./parsers/index.js";
|
|
14
14
|
export { format, type FormatOptions, type FormatResult, } from "./formatters/index.js";
|
|
15
|
-
export { buildTokenIndex, resolveReference, validateAliases, formatDtcgReference, parseDtcgReference, } from "./alias-resolver.js";
|
|
15
|
+
export { buildTokenIndex, resolveReference, resolveAliasChain, validateAliases, formatDtcgReference, parseDtcgReference, } from "./alias-resolver.js";
|
|
16
16
|
export { convertFigmaVariablesToDocument, type FigmaVariablesPayload, type ConvertOptions, type ConvertResult, } from "./figma-converter.js";
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,EACL,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,EACL,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC"}
|
|
@@ -11,6 +11,6 @@ export { TokensConfigSchema, loadTokensConfig, findTokensConfig, DEFAULT_TOKENS_
|
|
|
11
11
|
export { ExportTokensInputSchema, ImportTokensInputSchema, ExportFormatSchema, ImportFormatSchema, SyncStrategySchema, ConflictResolutionSchema, } from "./schemas.js";
|
|
12
12
|
export { parse, detectFormat, } from "./parsers/index.js";
|
|
13
13
|
export { format, } from "./formatters/index.js";
|
|
14
|
-
export { buildTokenIndex, resolveReference, validateAliases, formatDtcgReference, parseDtcgReference, } from "./alias-resolver.js";
|
|
14
|
+
export { buildTokenIndex, resolveReference, resolveAliasChain, validateAliases, formatDtcgReference, parseDtcgReference, } from "./alias-resolver.js";
|
|
15
15
|
export { convertFigmaVariablesToDocument, } from "./figma-converter.js";
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kBAAkB,EAIlB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,GAGzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,MAAM,GAGP,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,+BAA+B,GAIhC,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kBAAkB,EAIlB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,GAGzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,MAAM,GAGP,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,+BAA+B,GAIhC,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared NotImplementedError for
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Shared NotImplementedError for parser stubs.
|
|
3
|
+
*
|
|
4
|
+
* Only DTCG is implemented as a parser today โ that's the canonical
|
|
5
|
+
* round-trip format for `figma_import_tokens`. Other parsers are
|
|
6
|
+
* scaffolding for potential future import-source support; the way to get
|
|
7
|
+
* tokens INTO Figma now is via DTCG JSON (you can generate that JSON from
|
|
8
|
+
* any source with your own tooling). The export side (Figma โ code) is
|
|
9
|
+
* fully covered for all 10 formats โ see formatters/stubs.ts for that
|
|
10
|
+
* surface.
|
|
7
11
|
*/
|
|
8
12
|
export declare class TokenFormatNotImplementedError extends Error {
|
|
9
13
|
constructor(formatName: string, kind: "parser" | "formatter");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/parsers/stubs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../../../src/core/tokens/parsers/stubs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,WAAW;CAQ7D"}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared NotImplementedError for
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Shared NotImplementedError for parser stubs.
|
|
3
|
+
*
|
|
4
|
+
* Only DTCG is implemented as a parser today โ that's the canonical
|
|
5
|
+
* round-trip format for `figma_import_tokens`. Other parsers are
|
|
6
|
+
* scaffolding for potential future import-source support; the way to get
|
|
7
|
+
* tokens INTO Figma now is via DTCG JSON (you can generate that JSON from
|
|
8
|
+
* any source with your own tooling). The export side (Figma โ code) is
|
|
9
|
+
* fully covered for all 10 formats โ see formatters/stubs.ts for that
|
|
10
|
+
* surface.
|
|
7
11
|
*/
|
|
8
12
|
export class TokenFormatNotImplementedError extends Error {
|
|
9
13
|
constructor(formatName, kind) {
|
|
10
|
-
|
|
14
|
+
const guidance = kind === "parser"
|
|
15
|
+
? `Only the DTCG parser is implemented today. To import tokens into Figma from ${formatName}, convert to DTCG JSON first (or open an issue if you need direct ${formatName} import support).`
|
|
16
|
+
: `Implemented formatters: dtcg, css-vars, tailwind-v4, tailwind-v3, scss, ts-module, json-flat, json-nested, style-dictionary-v3, tokens-studio. If you need ${formatName}, open an issue with your use case.`;
|
|
17
|
+
super(`[figma-console-mcp] The ${formatName} ${kind} is not implemented. ${guidance}`);
|
|
11
18
|
this.name = "TokenFormatNotImplementedError";
|
|
12
19
|
}
|
|
13
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubs.js","sourceRoot":"","sources":["../../../../src/core/tokens/parsers/stubs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stubs.js","sourceRoot":"","sources":["../../../../src/core/tokens/parsers/stubs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YAAY,UAAkB,EAAE,IAA4B;QAC1D,MAAM,QAAQ,GACZ,IAAI,KAAK,QAAQ;YACf,CAAC,CAAC,+EAA+E,UAAU,qEAAqE,UAAU,mBAAmB;YAC7L,CAAC,CAAC,8JAA8J,UAAU,qCAAqC,CAAC;QACpN,KAAK,CAAC,2BAA2B,UAAU,IAAI,IAAI,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -30,7 +30,7 @@ const logger = createChildLogger({ component: "tokens-tools" });
|
|
|
30
30
|
* on every exported token document. Kept in sync with package.json by
|
|
31
31
|
* scripts/release.sh โ see step 3 of the release flow.
|
|
32
32
|
*/
|
|
33
|
-
const MCP_VERSION = "1.28.
|
|
33
|
+
const MCP_VERSION = "1.28.1";
|
|
34
34
|
const EXPORT_TOOL_DESCRIPTION = `Export Figma variables to design token files in your codebase. Bidirectional with figma_import_tokens โ together they replace Style Dictionary and Tokens Studio's export pipeline for the popular styling methods.
|
|
35
35
|
|
|
36
36
|
FULLY-IMPLEMENTED OUTPUT FORMATS:
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
// Plugin version โ sent in FILE_INFO for server-side version compatibility checks.
|
|
8
8
|
// The server compares this against its own version to detect stale cached plugins.
|
|
9
|
-
var PLUGIN_VERSION = '1.28.
|
|
9
|
+
var PLUGIN_VERSION = '1.28.1'; // Kept in sync with package.json by scripts/release.sh โ see issue #62.
|
|
10
10
|
|
|
11
11
|
console.log('๐ [Desktop Bridge] Plugin loaded (v' + PLUGIN_VERSION + ')');
|
|
12
12
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "figma-console-mcp",
|
|
3
|
-
"version": "1.28.
|
|
3
|
+
"version": "1.28.1",
|
|
4
4
|
"description": "The most comprehensive MCP server for Figma โ design tokens, variables, components, write tools, version history diff, accessibility audits, FigJam, Slides, and more. Local (WebSocket Desktop Bridge plugin) and Cloudflare Workers (paired + remote) modes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/local.js",
|