@sxl-studio/token-transformer 1.0.0 → 2.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.
Files changed (93) hide show
  1. package/README.en.md +77 -608
  2. package/README.md +77 -685
  3. package/config/sxl-transform.config.yaml +120 -0
  4. package/dist/cli.d.ts +1 -1
  5. package/dist/cli.js +411 -141
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config/loader.d.ts +6 -0
  8. package/dist/config/loader.js +160 -0
  9. package/dist/config/loader.js.map +1 -0
  10. package/dist/config/schema.d.ts +847 -0
  11. package/dist/config/schema.js +123 -0
  12. package/dist/config/schema.js.map +1 -0
  13. package/dist/core/color-modifiers.d.ts +31 -0
  14. package/dist/core/color-modifiers.js +289 -0
  15. package/dist/core/color-modifiers.js.map +1 -0
  16. package/dist/core/color-parser.d.ts +24 -0
  17. package/dist/core/color-parser.js +281 -0
  18. package/dist/core/color-parser.js.map +1 -0
  19. package/dist/core/debug-report.d.ts +11 -0
  20. package/dist/core/debug-report.js +161 -0
  21. package/dist/core/debug-report.js.map +1 -0
  22. package/dist/core/incremental.d.ts +18 -0
  23. package/dist/core/incremental.js +105 -0
  24. package/dist/core/incremental.js.map +1 -0
  25. package/dist/core/math.d.ts +3 -0
  26. package/dist/core/math.js +261 -0
  27. package/dist/core/math.js.map +1 -0
  28. package/dist/core/parser.d.ts +4 -3
  29. package/dist/core/parser.js +68 -172
  30. package/dist/core/parser.js.map +1 -1
  31. package/dist/core/resolver.d.ts +26 -0
  32. package/dist/core/resolver.js +431 -0
  33. package/dist/core/resolver.js.map +1 -0
  34. package/dist/core/token-loader.d.ts +11 -0
  35. package/dist/core/token-loader.js +380 -0
  36. package/dist/core/token-loader.js.map +1 -0
  37. package/dist/core/token-parser.d.ts +9 -0
  38. package/dist/core/token-parser.js +138 -0
  39. package/dist/core/token-parser.js.map +1 -0
  40. package/dist/core/token-types.d.ts +7 -0
  41. package/dist/core/token-types.js +132 -0
  42. package/dist/core/token-types.js.map +1 -0
  43. package/dist/core/types.d.ts +154 -63
  44. package/dist/core/writer.d.ts +18 -5
  45. package/dist/core/writer.js +545 -91
  46. package/dist/core/writer.js.map +1 -1
  47. package/dist/emit/css.d.ts +2 -0
  48. package/dist/emit/css.js +538 -0
  49. package/dist/emit/css.js.map +1 -0
  50. package/dist/emit/kotlin.d.ts +2 -0
  51. package/dist/emit/kotlin.js +406 -0
  52. package/dist/emit/kotlin.js.map +1 -0
  53. package/dist/emit/shared.d.ts +13 -0
  54. package/dist/emit/shared.js +127 -0
  55. package/dist/emit/shared.js.map +1 -0
  56. package/dist/emit/swift.d.ts +2 -0
  57. package/dist/emit/swift.js +432 -0
  58. package/dist/emit/swift.js.map +1 -0
  59. package/dist/emit/typography.d.ts +17 -0
  60. package/dist/emit/typography.js +132 -0
  61. package/dist/emit/typography.js.map +1 -0
  62. package/dist/emit/xml.d.ts +2 -0
  63. package/dist/emit/xml.js +311 -0
  64. package/dist/emit/xml.js.map +1 -0
  65. package/dist/index.d.ts +15 -6
  66. package/dist/index.js +13 -5
  67. package/dist/index.js.map +1 -1
  68. package/dist/transformers/css.d.ts +1 -1
  69. package/dist/transformers/css.js +13 -482
  70. package/dist/transformers/css.js.map +1 -1
  71. package/dist/transformers/kotlin.d.ts +2 -2
  72. package/dist/transformers/kotlin.js +14 -442
  73. package/dist/transformers/kotlin.js.map +1 -1
  74. package/dist/transformers/swiftui.d.ts +2 -2
  75. package/dist/transformers/swiftui.js +14 -433
  76. package/dist/transformers/swiftui.js.map +1 -1
  77. package/dist/utils/color.d.ts +7 -5
  78. package/dist/utils/color.js +90 -86
  79. package/dist/utils/color.js.map +1 -1
  80. package/dist/utils/dimension.d.ts +8 -5
  81. package/dist/utils/dimension.js +54 -52
  82. package/dist/utils/dimension.js.map +1 -1
  83. package/dist/utils/naming.d.ts +10 -12
  84. package/dist/utils/naming.js +102 -44
  85. package/dist/utils/naming.js.map +1 -1
  86. package/package.json +30 -10
  87. package/config.example.json +0 -45
  88. package/dist/core/loader.d.ts +0 -8
  89. package/dist/core/loader.js +0 -105
  90. package/dist/core/loader.js.map +0 -1
  91. package/dist/transformers/vue3.d.ts +0 -28
  92. package/dist/transformers/vue3.js +0 -534
  93. package/dist/transformers/vue3.js.map +0 -1
@@ -0,0 +1,406 @@
1
+ import { normalizeTokenTypeKey } from "../core/token-types.js";
2
+ import { parseColor, rgbaToKotlin } from "../utils/color.js";
3
+ import { toKotlinDimension, trimFloat, toSwiftNumber } from "../utils/dimension.js";
4
+ import { kotlinIdentifier } from "../utils/naming.js";
5
+ import { normalizeTextCase, normalizeTextDecoration, normalizeVerticalTrimFromTypography, parseTypographyMetric, primaryFontFamily, toTypographyObject, } from "./typography.js";
6
+ import { buildNamedTokens } from "./shared.js";
7
+ export function emitKotlin(input) {
8
+ const diagnostics = [];
9
+ const named = buildNamedTokens(input.tokens, {
10
+ platform: "kotlin",
11
+ prefix: input.prefix,
12
+ strategy: input.collisions,
13
+ diagnostics,
14
+ outputId: input.outputId,
15
+ });
16
+ const prefix = input.prefix ? kotlinIdentifier(input.prefix, "upper") : "DS";
17
+ const colorsObj = `${prefix}Colors`;
18
+ const dimensionsObj = `${prefix}Dimensions`;
19
+ const typographyObj = `${prefix}Typography`;
20
+ const typographySpecsObj = `${prefix}TypographySpecs`;
21
+ const effectsObj = `${prefix}Effects`;
22
+ const valuesObj = `${prefix}Values`;
23
+ const lines = [];
24
+ lines.push("package design.tokens");
25
+ lines.push("");
26
+ lines.push("import androidx.compose.animation.core.CubicBezierEasing");
27
+ lines.push("import androidx.compose.ui.graphics.Color");
28
+ lines.push("import androidx.compose.ui.text.TextStyle");
29
+ lines.push("import androidx.compose.ui.text.font.FontWeight");
30
+ lines.push("import androidx.compose.ui.unit.dp");
31
+ lines.push("import androidx.compose.ui.unit.sp");
32
+ lines.push("");
33
+ lines.push("data class SXLShadowLayer(");
34
+ lines.push(" val inset: Boolean,");
35
+ lines.push(" val x: Float,");
36
+ lines.push(" val y: Float,");
37
+ lines.push(" val blur: Float,");
38
+ lines.push(" val spread: Float,");
39
+ lines.push(" val color: Color,");
40
+ lines.push(")");
41
+ lines.push("");
42
+ lines.push("data class SXLEffectSpec(");
43
+ lines.push(" val shadows: List<SXLShadowLayer> = emptyList(),");
44
+ lines.push(" val blur: Float? = null,");
45
+ lines.push(" val backdropBlur: Float? = null,");
46
+ lines.push(")");
47
+ lines.push("");
48
+ lines.push("enum class SXLTextCase {");
49
+ lines.push(" ORIGINAL,");
50
+ lines.push(" UPPER,");
51
+ lines.push(" LOWER,");
52
+ lines.push(" TITLE,");
53
+ lines.push(" SMALL_CAPS,");
54
+ lines.push(" SMALL_CAPS_FORCED,");
55
+ lines.push("}");
56
+ lines.push("");
57
+ lines.push("enum class SXLTextDecoration {");
58
+ lines.push(" NONE,");
59
+ lines.push(" UNDERLINE,");
60
+ lines.push(" STRIKETHROUGH,");
61
+ lines.push(" UNDERLINE_STRIKETHROUGH,");
62
+ lines.push("}");
63
+ lines.push("");
64
+ lines.push("enum class SXLVerticalTrim {");
65
+ lines.push(" NONE,");
66
+ lines.push(" CAP_HEIGHT,");
67
+ lines.push("}");
68
+ lines.push("");
69
+ lines.push("data class SXLTypographySpec(");
70
+ lines.push(" val textStyle: TextStyle,");
71
+ lines.push(" val fontFamily: String,");
72
+ lines.push(" val fontWeight: FontWeight,");
73
+ lines.push(" val fontSize: Float,");
74
+ lines.push(" val lineHeight: Float,");
75
+ lines.push(" val letterSpacing: Float? = null,");
76
+ lines.push(" val textCase: SXLTextCase = SXLTextCase.ORIGINAL,");
77
+ lines.push(" val textDecoration: SXLTextDecoration = SXLTextDecoration.NONE,");
78
+ lines.push(" val verticalTrim: SXLVerticalTrim = SXLVerticalTrim.NONE,");
79
+ lines.push(")");
80
+ lines.push("");
81
+ const colorLines = [];
82
+ const dimensionLines = [];
83
+ const typographyLines = [];
84
+ const typographySpecLines = [];
85
+ const effectsLines = [];
86
+ const valueLines = [];
87
+ for (const entry of named) {
88
+ const token = entry.token;
89
+ const normalizedType = normalizeTokenTypeKey(token.type);
90
+ const name = kotlinIdentifier(entry.name, "lower");
91
+ const resolved = token.resolvedValue ?? token.value;
92
+ if (normalizedType === "color") {
93
+ const color = parseColor(resolved);
94
+ if (!color) {
95
+ diagnostics.push(unsupported(token, input.outputId, "KOTLIN_COLOR_INVALID"));
96
+ continue;
97
+ }
98
+ appendDoc(colorLines, token.description, input.showDescriptions);
99
+ colorLines.push(` val ${name}: Color = ${rgbaToKotlin(color)}`);
100
+ continue;
101
+ }
102
+ if (isDimensionType(normalizedType)) {
103
+ appendDoc(dimensionLines, token.description, input.showDescriptions);
104
+ const unit = normalizedType === "fontSize" || normalizedType === "lineHeight" || normalizedType === "letterSpacing" ? "sp" : "dp";
105
+ dimensionLines.push(` val ${name} = ${toKotlinDimension(resolved, unit)}`);
106
+ continue;
107
+ }
108
+ if (normalizedType === "typography") {
109
+ const typography = formatTypography(resolved, input.remBase ?? 16);
110
+ if (!typography) {
111
+ diagnostics.push(unsupported(token, input.outputId, "KOTLIN_TYPOGRAPHY_INVALID"));
112
+ continue;
113
+ }
114
+ appendDoc(typographyLines, token.description, input.showDescriptions);
115
+ typographyLines.push(` val ${name}: TextStyle = ${typography.textStyleExpr}`);
116
+ appendDoc(typographySpecLines, token.description, input.showDescriptions);
117
+ typographySpecLines.push(` val ${name}: SXLTypographySpec = ${serializeTypography(typography)}`);
118
+ continue;
119
+ }
120
+ if (normalizedType === "shadow" || normalizedType === "effects" || normalizedType === "blur" || normalizedType === "backdrop-blur" || normalizedType === "glass") {
121
+ const effect = formatEffect(resolved, normalizedType);
122
+ if (!effect) {
123
+ diagnostics.push(unsupported(token, input.outputId, "KOTLIN_EFFECT_INVALID"));
124
+ continue;
125
+ }
126
+ appendDoc(effectsLines, token.description, input.showDescriptions);
127
+ effectsLines.push(` val ${name}: SXLEffectSpec = ${serializeEffect(effect)}`);
128
+ continue;
129
+ }
130
+ const generic = formatGenericValue(resolved, normalizedType);
131
+ if (!generic) {
132
+ diagnostics.push(unsupported(token, input.outputId, `KOTLIN_UNSUPPORTED_${normalizedType}`));
133
+ continue;
134
+ }
135
+ appendDoc(valueLines, token.description, input.showDescriptions);
136
+ valueLines.push(` val ${name} = ${generic}`);
137
+ }
138
+ emitObject(lines, colorsObj, colorLines);
139
+ emitObject(lines, dimensionsObj, dimensionLines);
140
+ emitObject(lines, typographyObj, typographyLines);
141
+ emitObject(lines, typographySpecsObj, typographySpecLines);
142
+ emitObject(lines, effectsObj, effectsLines);
143
+ emitObject(lines, valuesObj, valueLines);
144
+ return {
145
+ content: `${lines.join("\n")}\n`,
146
+ diagnostics,
147
+ };
148
+ }
149
+ function isDimensionType(type) {
150
+ return [
151
+ "dimension",
152
+ "sizing",
153
+ "spacing",
154
+ "borderRadius",
155
+ "borderWidth",
156
+ "fontSize",
157
+ "lineHeight",
158
+ "letterSpacing",
159
+ "paragraphSpacing",
160
+ "paragraphIndent",
161
+ ].includes(type);
162
+ }
163
+ function formatTypography(value, remBase) {
164
+ const obj = toTypographyObject(value);
165
+ if (!obj)
166
+ return null;
167
+ const fontFamily = primaryFontFamily(obj.fontFamily ?? "System");
168
+ const sizeValue = parseTypographyMetric(obj.fontSize ?? 16, remBase);
169
+ const parsedLineHeight = parseTypographyMetric(obj.lineHeight ?? obj.fontSize ?? 16, remBase);
170
+ const lineHeightValue = parsedLineHeight ?? sizeValue;
171
+ const letterSpacingValue = obj.letterSpacing !== undefined
172
+ ? parseTypographyMetric(obj.letterSpacing, remBase)
173
+ : null;
174
+ const fontWeight = mapFontWeight(obj.fontWeight);
175
+ if (sizeValue === null || lineHeightValue === null)
176
+ return null;
177
+ const size = trimFloat(sizeValue);
178
+ const lineHeight = trimFloat(lineHeightValue);
179
+ const letterSpacing = letterSpacingValue === null ? null : trimFloat(letterSpacingValue);
180
+ const styleFields = [
181
+ `fontSize = ${size}.sp`,
182
+ `lineHeight = ${lineHeight}.sp`,
183
+ `fontWeight = ${fontWeight}`,
184
+ ];
185
+ if (letterSpacing !== null) {
186
+ styleFields.push(`letterSpacing = ${letterSpacing}.sp`);
187
+ }
188
+ return {
189
+ textStyleExpr: `TextStyle(${styleFields.join(", ")})`,
190
+ fontFamily: escapeKotlinString(fontFamily),
191
+ fontWeight,
192
+ fontSize: size,
193
+ lineHeight,
194
+ letterSpacing,
195
+ textCase: mapTextCaseForKotlin(obj.textCase),
196
+ textDecoration: mapTextDecorationForKotlin(obj.textDecoration),
197
+ verticalTrim: mapVerticalTrimForKotlin(obj),
198
+ };
199
+ }
200
+ function mapTextCaseForKotlin(value) {
201
+ const normalized = normalizeTextCase(value);
202
+ if (normalized === "upper")
203
+ return "SXLTextCase.UPPER";
204
+ if (normalized === "lower")
205
+ return "SXLTextCase.LOWER";
206
+ if (normalized === "title")
207
+ return "SXLTextCase.TITLE";
208
+ if (normalized === "small-caps")
209
+ return "SXLTextCase.SMALL_CAPS";
210
+ if (normalized === "small-caps-forced")
211
+ return "SXLTextCase.SMALL_CAPS_FORCED";
212
+ return "SXLTextCase.ORIGINAL";
213
+ }
214
+ function mapTextDecorationForKotlin(value) {
215
+ const normalized = normalizeTextDecoration(value);
216
+ if (normalized === "underline")
217
+ return "SXLTextDecoration.UNDERLINE";
218
+ if (normalized === "strikethrough")
219
+ return "SXLTextDecoration.STRIKETHROUGH";
220
+ if (normalized === "underline-strikethrough")
221
+ return "SXLTextDecoration.UNDERLINE_STRIKETHROUGH";
222
+ return "SXLTextDecoration.NONE";
223
+ }
224
+ function mapVerticalTrimForKotlin(value) {
225
+ const normalized = normalizeVerticalTrimFromTypography(value);
226
+ if (normalized === "cap-height")
227
+ return "SXLVerticalTrim.CAP_HEIGHT";
228
+ return "SXLVerticalTrim.NONE";
229
+ }
230
+ function serializeTypography(value) {
231
+ const letterSpacing = value.letterSpacing === null ? "null" : `${value.letterSpacing}f`;
232
+ return `SXLTypographySpec(` +
233
+ `textStyle = ${value.textStyleExpr}, ` +
234
+ `fontFamily = "${value.fontFamily}", ` +
235
+ `fontWeight = ${value.fontWeight}, ` +
236
+ `fontSize = ${value.fontSize}f, ` +
237
+ `lineHeight = ${value.lineHeight}f, ` +
238
+ `letterSpacing = ${letterSpacing}, ` +
239
+ `textCase = ${value.textCase}, ` +
240
+ `textDecoration = ${value.textDecoration}, ` +
241
+ `verticalTrim = ${value.verticalTrim}` +
242
+ `)`;
243
+ }
244
+ function mapFontWeight(value) {
245
+ const normalized = String(value ?? "regular").trim().toLowerCase().replace(/\s+/g, "");
246
+ const map = {
247
+ "100": "FontWeight.Thin",
248
+ thin: "FontWeight.Thin",
249
+ hairline: "FontWeight.Thin",
250
+ ultralight: "FontWeight.Thin",
251
+ extralight: "FontWeight.ExtraLight",
252
+ "200": "FontWeight.ExtraLight",
253
+ "300": "FontWeight.Light",
254
+ light: "FontWeight.Light",
255
+ "400": "FontWeight.Normal",
256
+ regular: "FontWeight.Normal",
257
+ normal: "FontWeight.Normal",
258
+ "500": "FontWeight.Medium",
259
+ medium: "FontWeight.Medium",
260
+ "600": "FontWeight.SemiBold",
261
+ semibold: "FontWeight.SemiBold",
262
+ "700": "FontWeight.Bold",
263
+ bold: "FontWeight.Bold",
264
+ "800": "FontWeight.ExtraBold",
265
+ extrabold: "FontWeight.ExtraBold",
266
+ "900": "FontWeight.Black",
267
+ black: "FontWeight.Black",
268
+ heavy: "FontWeight.Black",
269
+ };
270
+ return map[normalized] ?? "FontWeight.Normal";
271
+ }
272
+ function formatEffect(value, tokenType) {
273
+ if (tokenType === "blur") {
274
+ const blur = pickBlur(value);
275
+ if (!blur)
276
+ return null;
277
+ return { shadows: [], blur };
278
+ }
279
+ if (tokenType === "backdrop-blur") {
280
+ const backdropBlur = pickBlur(value);
281
+ if (!backdropBlur)
282
+ return null;
283
+ return { shadows: [], backdropBlur };
284
+ }
285
+ const effects = Array.isArray(value) ? value : [value];
286
+ const output = { shadows: [] };
287
+ for (const effect of effects) {
288
+ if (typeof effect !== "object" || effect === null || Array.isArray(effect))
289
+ continue;
290
+ const obj = effect;
291
+ const type = String(obj.type ?? "dropShadow");
292
+ if (type === "dropShadow" || type === "innerShadow") {
293
+ const layer = formatShadowLayer(obj);
294
+ if (!layer)
295
+ return null;
296
+ output.shadows.push(layer);
297
+ continue;
298
+ }
299
+ if (type === "layerBlur") {
300
+ const blur = pickBlur(obj);
301
+ if (blur)
302
+ output.blur = blur;
303
+ continue;
304
+ }
305
+ if (type === "backgroundBlur") {
306
+ const blur = pickBlur(obj);
307
+ if (blur)
308
+ output.backdropBlur = blur;
309
+ continue;
310
+ }
311
+ }
312
+ return output;
313
+ }
314
+ function pickBlur(value) {
315
+ if (typeof value === "number" || typeof value === "string")
316
+ return toSwiftNumber(value);
317
+ if (typeof value !== "object" || value === null || Array.isArray(value))
318
+ return null;
319
+ const obj = value;
320
+ const radius = obj.blur ?? obj.radius;
321
+ if (radius === undefined)
322
+ return null;
323
+ return toSwiftNumber(radius);
324
+ }
325
+ function formatShadowLayer(obj) {
326
+ const color = parseColor(obj.color);
327
+ if (!color)
328
+ return null;
329
+ return {
330
+ inset: String(obj.type ?? "dropShadow") === "innerShadow",
331
+ x: toSwiftNumber(obj.offsetX ?? 0),
332
+ y: toSwiftNumber(obj.offsetY ?? 0),
333
+ blur: toSwiftNumber(obj.blur ?? 0),
334
+ spread: toSwiftNumber(obj.spread ?? 0),
335
+ color: rgbaToKotlin(color),
336
+ };
337
+ }
338
+ function serializeEffect(effect) {
339
+ const shadows = effect.shadows
340
+ .map((layer) => `SXLShadowLayer(inset = ${layer.inset}, x = ${layer.x}f, y = ${layer.y}f, blur = ${layer.blur}f, spread = ${layer.spread}f, color = ${layer.color})`)
341
+ .join(", ");
342
+ const blur = effect.blur ? `${effect.blur}f` : "null";
343
+ const backdrop = effect.backdropBlur ? `${effect.backdropBlur}f` : "null";
344
+ return `SXLEffectSpec(shadows = listOf(${shadows}), blur = ${blur}, backdropBlur = ${backdrop})`;
345
+ }
346
+ function formatGenericValue(value, type) {
347
+ if (type === "boolean")
348
+ return value ? "true" : "false";
349
+ if (type === "text" || type === "fontFamily") {
350
+ return `"${escapeKotlinString(String(value))}"`;
351
+ }
352
+ if (type === "fontWeight") {
353
+ return `"${escapeKotlinString(String(value))}"`;
354
+ }
355
+ if (type === "duration") {
356
+ if (typeof value === "number") {
357
+ const ms = value > 10 ? value : value * 1000;
358
+ return `${Math.round(ms)}`;
359
+ }
360
+ if (typeof value === "string") {
361
+ const trimmed = value.trim().toLowerCase();
362
+ if (trimmed.endsWith("ms"))
363
+ return `${Math.round(Number.parseFloat(trimmed))}`;
364
+ if (trimmed.endsWith("s"))
365
+ return `${Math.round(Number.parseFloat(trimmed) * 1000)}`;
366
+ }
367
+ return "200";
368
+ }
369
+ if (type === "cubicBezier") {
370
+ if (Array.isArray(value) && value.length === 4) {
371
+ return `CubicBezierEasing(${value[0]}f, ${value[1]}f, ${value[2]}f, ${value[3]}f)`;
372
+ }
373
+ return "CubicBezierEasing(0.4f, 0f, 0.2f, 1f)";
374
+ }
375
+ if (typeof value === "number")
376
+ return `${value}`;
377
+ if (typeof value === "string")
378
+ return `"${escapeKotlinString(value)}"`;
379
+ return null;
380
+ }
381
+ function escapeKotlinString(value) {
382
+ return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
383
+ }
384
+ function appendDoc(lines, description, enabled) {
385
+ if (!enabled || !description)
386
+ return;
387
+ lines.push(` /** ${description} */`);
388
+ }
389
+ function emitObject(lines, objectName, body) {
390
+ if (body.length === 0)
391
+ return;
392
+ lines.push(`object ${objectName} {`);
393
+ lines.push(...body);
394
+ lines.push("}");
395
+ lines.push("");
396
+ }
397
+ function unsupported(token, outputId, code) {
398
+ return {
399
+ level: "warn",
400
+ code,
401
+ message: `Unsupported or invalid token for Kotlin: ${token.path}`,
402
+ tokenPath: token.path,
403
+ outputId,
404
+ };
405
+ }
406
+ //# sourceMappingURL=kotlin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../src/emit/kotlin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CollisionStrategy, Diagnostic, FlatToken, Platform, TokenFilterConfig } from "../core/types.js";
2
+ export type NamedToken = {
3
+ token: FlatToken;
4
+ name: string;
5
+ };
6
+ export declare function applyTokenFilter(tokens: FlatToken[], filter?: TokenFilterConfig): FlatToken[];
7
+ export declare function buildNamedTokens(tokens: FlatToken[], options: {
8
+ platform: Platform;
9
+ prefix?: string;
10
+ strategy: CollisionStrategy;
11
+ diagnostics: Diagnostic[];
12
+ outputId: string;
13
+ }): NamedToken[];
@@ -0,0 +1,127 @@
1
+ import { normalizeTokenTypeKey } from "../core/token-types.js";
2
+ import { androidResourceName, cssVarName, kotlinIdentifier, resolveCodeSyntax, swiftIdentifier, toKebabCase, } from "../utils/naming.js";
3
+ export function applyTokenFilter(tokens, filter) {
4
+ if (!filter)
5
+ return tokens;
6
+ return tokens.filter((token) => {
7
+ if (filter.types && filter.types.length > 0) {
8
+ const normalizedType = normalizeTokenTypeKey(token.type);
9
+ const ok = filter.types.some((type) => normalizeTokenTypeKey(type) === normalizedType);
10
+ if (!ok)
11
+ return false;
12
+ }
13
+ if (filter.paths && filter.paths.length > 0) {
14
+ const ok = filter.paths.some((prefix) => token.path.startsWith(prefix));
15
+ if (!ok)
16
+ return false;
17
+ }
18
+ if (filter.excludePaths && filter.excludePaths.length > 0) {
19
+ const excluded = filter.excludePaths.some((prefix) => token.path.startsWith(prefix));
20
+ if (excluded)
21
+ return false;
22
+ }
23
+ return true;
24
+ });
25
+ }
26
+ export function buildNamedTokens(tokens, options) {
27
+ const result = [];
28
+ const byName = new Map();
29
+ for (const token of tokens) {
30
+ const rawName = buildRawName(token, options.platform, options.prefix);
31
+ const occurrence = byName.get(rawName) ?? 0;
32
+ if (occurrence === 0) {
33
+ byName.set(rawName, 1);
34
+ result.push({ token, name: rawName });
35
+ continue;
36
+ }
37
+ byName.set(rawName, occurrence + 1);
38
+ if (options.strategy === "error") {
39
+ options.diagnostics.push({
40
+ level: "error",
41
+ code: "NAME_COLLISION",
42
+ message: `Name collision for "${rawName}" in output "${options.outputId}"`,
43
+ tokenPath: token.path,
44
+ outputId: options.outputId,
45
+ });
46
+ continue;
47
+ }
48
+ if (options.strategy === "suffix") {
49
+ result.push({ token, name: `${rawName}__${occurrence + 1}` });
50
+ continue;
51
+ }
52
+ if (options.strategy === "namespace-by-file") {
53
+ const ns = toSafeNamespace(fileBaseNameWithoutExt(token.sourceFile));
54
+ result.push({ token, name: `${ns}_${rawName}` });
55
+ continue;
56
+ }
57
+ const ns = toSafeNamespace(token.sourceMode ?? token.sourceCollection ?? token.sourceFile);
58
+ result.push({ token, name: `${ns}_${rawName}` });
59
+ }
60
+ return result;
61
+ }
62
+ function buildRawName(token, platform, prefix) {
63
+ const codeSyntax = token.extensions?.["figma.codeSyntax"];
64
+ if (platform === "css") {
65
+ if (codeSyntax?.Web) {
66
+ const resolved = resolveCodeSyntax(codeSyntax.Web, token.path);
67
+ const match = resolved.match(/var\(\s*(--[^)\s]+)\s*\)/);
68
+ if (match)
69
+ return match[1];
70
+ return cssVarName(sanitizeCodeSyntax(resolved), prefix);
71
+ }
72
+ return cssVarName(token.path, prefix);
73
+ }
74
+ if (platform === "swift") {
75
+ if (codeSyntax?.iOS) {
76
+ const resolved = resolveCodeSyntax(codeSyntax.iOS, token.path)
77
+ .replace(/^UIColor\./, "")
78
+ .replace(/^Color\./, "");
79
+ return swiftIdentifier(resolved, "lower");
80
+ }
81
+ const base = swiftIdentifier(token.path, "lower");
82
+ if (!prefix)
83
+ return base;
84
+ return `${swiftIdentifier(prefix, "upper")}${base.charAt(0).toUpperCase()}${base.slice(1)}`;
85
+ }
86
+ if (platform === "kotlin") {
87
+ if (codeSyntax?.Android) {
88
+ const resolved = resolveCodeSyntax(codeSyntax.Android, token.path)
89
+ .replace(/^@(color|dimen|string|bool|integer)\//, "");
90
+ return kotlinIdentifier(resolved, "lower");
91
+ }
92
+ return kotlinIdentifier(token.path, "lower");
93
+ }
94
+ // XML
95
+ if (codeSyntax?.Android) {
96
+ const resolved = resolveCodeSyntax(codeSyntax.Android, token.path)
97
+ .replace(/^@(color|dimen|string|bool|integer)\//, "");
98
+ return androidResourceName(resolved);
99
+ }
100
+ return androidResourceName(prefix ? `${toKebabCase(prefix)}-${token.path}` : token.path);
101
+ }
102
+ function sanitizeCodeSyntax(value) {
103
+ return value
104
+ .replace(/^[^a-zA-Z0-9]+/, "")
105
+ .replace(/[^a-zA-Z0-9/_\-.]/g, "-");
106
+ }
107
+ function fileBaseNameWithoutExt(filePath) {
108
+ const normalized = filePath.replace(/\\/g, "/");
109
+ const segments = normalized.split("/").filter(Boolean);
110
+ const base = segments.length > 0 ? segments[segments.length - 1] : normalized;
111
+ const dot = base.lastIndexOf(".");
112
+ if (dot <= 0)
113
+ return base;
114
+ return base.slice(0, dot);
115
+ }
116
+ function toSafeNamespace(value) {
117
+ return value
118
+ .replace(/\\/g, "/")
119
+ .split("/")
120
+ .filter(Boolean)
121
+ .join("_")
122
+ .replace(/[^a-zA-Z0-9_]/g, "_")
123
+ .replace(/_+/g, "_")
124
+ .replace(/^_+|_+$/g, "")
125
+ .toLowerCase() || "tokens";
126
+ }
127
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/emit/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { EmitResult, EmitterInput } from "../core/types.js";
2
+ export declare function emitSwift(input: EmitterInput): EmitResult;