@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
@@ -1,101 +1,105 @@
1
- export function parseColor(value) {
2
- const v = value.trim();
3
- if (v.toLowerCase() === "transparent")
4
- return { r: 0, g: 0, b: 0, a: 0 };
5
- if (v.startsWith("#"))
6
- return parseHex(v);
7
- const rgbaMatch = v.match(/rgba?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*(?:,\s*([\d.]+))?\s*\)/);
8
- if (rgbaMatch) {
9
- return {
10
- r: clamp255(parseFloat(rgbaMatch[1])),
11
- g: clamp255(parseFloat(rgbaMatch[2])),
12
- b: clamp255(parseFloat(rgbaMatch[3])),
13
- a: rgbaMatch[4] !== undefined ? clamp01(parseFloat(rgbaMatch[4])) : 1,
14
- };
1
+ import { parseCSSColor } from "../core/color-parser.js";
2
+ export function parseColor(raw) {
3
+ if (typeof raw === "string") {
4
+ const parsed = parseCSSColor(raw);
5
+ if (!parsed)
6
+ return null;
7
+ return figmaToRgba(parsed);
15
8
  }
16
- const hslaMatch = v.match(/hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?\s*(?:,\s*([\d.]+))?\s*\)/);
17
- if (hslaMatch) {
18
- return hslToRgba(parseFloat(hslaMatch[1]), parseFloat(hslaMatch[2]), parseFloat(hslaMatch[3]), hslaMatch[4] !== undefined ? parseFloat(hslaMatch[4]) : 1);
9
+ if (typeof raw === "object" && raw !== null && !Array.isArray(raw)) {
10
+ const obj = raw;
11
+ if (typeof obj.r === "number" &&
12
+ typeof obj.g === "number" &&
13
+ typeof obj.b === "number") {
14
+ if (obj.r <= 1 && obj.g <= 1 && obj.b <= 1) {
15
+ return figmaToRgba({
16
+ r: obj.r,
17
+ g: obj.g,
18
+ b: obj.b,
19
+ a: typeof obj.a === "number" ? obj.a : 1,
20
+ });
21
+ }
22
+ return {
23
+ r: clamp255(obj.r),
24
+ g: clamp255(obj.g),
25
+ b: clamp255(obj.b),
26
+ a: clamp01(typeof obj.a === "number" ? obj.a : 1),
27
+ };
28
+ }
29
+ if (typeof obj.color === "string") {
30
+ const parsed = parseCSSColor(obj.color);
31
+ if (!parsed)
32
+ return null;
33
+ return figmaToRgba({
34
+ ...parsed,
35
+ a: typeof obj.opacity === "number" ? clamp01(obj.opacity) : parsed.a,
36
+ });
37
+ }
19
38
  }
20
39
  return null;
21
40
  }
22
- function parseHex(hex) {
23
- let h = hex.replace("#", "");
24
- if (h.length === 3)
25
- h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
26
- else if (h.length === 4)
27
- h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2] + h[3] + h[3];
28
- const r = parseInt(h.substring(0, 2), 16);
29
- const g = parseInt(h.substring(2, 4), 16);
30
- const b = parseInt(h.substring(4, 6), 16);
31
- const a = h.length >= 8 ? parseInt(h.substring(6, 8), 16) / 255 : 1;
32
- return { r, g, b, a };
33
- }
34
- function hslToRgba(h, s, l, a) {
35
- s /= 100;
36
- l /= 100;
37
- const c = (1 - Math.abs(2 * l - 1)) * s;
38
- const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
39
- const m = l - c / 2;
40
- let r = 0, g = 0, b = 0;
41
- if (h < 60) {
42
- r = c;
43
- g = x;
44
- }
45
- else if (h < 120) {
46
- r = x;
47
- g = c;
48
- }
49
- else if (h < 180) {
50
- g = c;
51
- b = x;
52
- }
53
- else if (h < 240) {
54
- g = x;
55
- b = c;
56
- }
57
- else if (h < 300) {
58
- r = x;
59
- b = c;
41
+ export function rgbaToCss(color) {
42
+ if (color.a <= 0.0001)
43
+ return "transparent";
44
+ if (color.a < 1) {
45
+ return `rgba(${color.r}, ${color.g}, ${color.b}, ${round(color.a)})`;
60
46
  }
61
- else {
62
- r = c;
63
- b = x;
47
+ return rgbaToHex(color);
48
+ }
49
+ export function rgbaToHex(color) {
50
+ const hex = (value) => Math.round(value).toString(16).padStart(2, "0");
51
+ const base = `#${hex(color.r)}${hex(color.g)}${hex(color.b)}`;
52
+ if (color.a < 1)
53
+ return `${base}${hex(color.a * 255)}`;
54
+ return base;
55
+ }
56
+ export function rgbaToSwift(color) {
57
+ if (color.a <= 0.0001)
58
+ return "Color.clear";
59
+ const red = round(color.r / 255);
60
+ const green = round(color.g / 255);
61
+ const blue = round(color.b / 255);
62
+ if (color.a < 1) {
63
+ return `Color(red: ${red}, green: ${green}, blue: ${blue}, opacity: ${round(color.a)})`;
64
64
  }
65
+ return `Color(red: ${red}, green: ${green}, blue: ${blue})`;
66
+ }
67
+ export function rgbaToKotlin(color) {
68
+ if (color.a <= 0.0001)
69
+ return "Color.Transparent";
70
+ const aa = toHexByte(color.a * 255);
71
+ const rr = toHexByte(color.r);
72
+ const gg = toHexByte(color.g);
73
+ const bb = toHexByte(color.b);
74
+ return `Color(0x${aa}${rr}${gg}${bb})`;
75
+ }
76
+ export function rgbaToFigma(color) {
65
77
  return {
66
- r: Math.round((r + m) * 255),
67
- g: Math.round((g + m) * 255),
68
- b: Math.round((b + m) * 255),
69
- a: clamp01(a),
78
+ r: clamp01(color.r / 255),
79
+ g: clamp01(color.g / 255),
80
+ b: clamp01(color.b / 255),
81
+ a: clamp01(color.a),
70
82
  };
71
83
  }
72
- export function rgbaToHex(c) {
73
- const hex = (n) => Math.round(n).toString(16).padStart(2, "0");
74
- const base = `#${hex(c.r)}${hex(c.g)}${hex(c.b)}`;
75
- return c.a < 1 ? `${base}${hex(c.a * 255)}` : base;
84
+ function figmaToRgba(color) {
85
+ return {
86
+ r: clamp255(Math.round(color.r * 255)),
87
+ g: clamp255(Math.round(color.g * 255)),
88
+ b: clamp255(Math.round(color.b * 255)),
89
+ a: clamp01(color.a),
90
+ };
76
91
  }
77
- export function rgbaToCSS(c) {
78
- if (c.a === 0 && c.r === 0 && c.g === 0 && c.b === 0)
79
- return "transparent";
80
- if (c.a < 1) {
81
- return `rgba(${c.r}, ${c.g}, ${c.b}, ${round(c.a)})`;
82
- }
83
- return rgbaToHex(c);
92
+ function toHexByte(value) {
93
+ return Math.round(value).toString(16).padStart(2, "0").toUpperCase();
84
94
  }
85
- export function rgbaToSwiftUI(c) {
86
- if (c.a === 0 && c.r === 0 && c.g === 0 && c.b === 0)
87
- return "Color.clear";
88
- return `Color(red: ${round(c.r / 255)}, green: ${round(c.g / 255)}, blue: ${round(c.b / 255)}${c.a < 1 ? `, opacity: ${round(c.a)}` : ""})`;
95
+ function clamp255(value) {
96
+ return Math.max(0, Math.min(255, value));
89
97
  }
90
- export function rgbaToKotlin(c) {
91
- if (c.a === 0 && c.r === 0 && c.g === 0 && c.b === 0)
92
- return "Color.Transparent";
93
- return `Color(0x${Math.round(c.a * 255).toString(16).padStart(2, "0").toUpperCase()}${Math.round(c.r).toString(16).padStart(2, "0").toUpperCase()}${Math.round(c.g).toString(16).padStart(2, "0").toUpperCase()}${Math.round(c.b).toString(16).padStart(2, "0").toUpperCase()})`;
98
+ function clamp01(value) {
99
+ return Math.max(0, Math.min(1, value));
94
100
  }
95
- function clamp255(n) { return Math.max(0, Math.min(255, n)); }
96
- function clamp01(n) { return Math.max(0, Math.min(1, n)); }
97
- function round(n, p = 4) {
98
- const f = 10 ** p;
99
- return Math.round(n * f) / f;
101
+ function round(value, precision = 4) {
102
+ const factor = 10 ** precision;
103
+ return Math.round(value * factor) / factor;
100
104
  }
101
105
  //# sourceMappingURL=color.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/utils/color.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/utils/color.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
- export declare function parseDimension(val: unknown): {
1
+ export type ParsedDimension = {
2
2
  value: number;
3
3
  unit: string;
4
- } | null;
5
- export declare function toCssDimension(val: unknown, _remBase?: number): string;
6
- export declare function toSwiftDimension(val: unknown): string;
7
- export declare function toKotlinDimension(val: unknown): string;
4
+ };
5
+ export declare function parseDimension(raw: unknown): ParsedDimension | null;
6
+ export declare function toCssDimension(raw: unknown): string;
7
+ export declare function toSwiftNumber(raw: unknown): string;
8
+ export declare function toKotlinDimension(raw: unknown, defaultUnit?: "dp" | "sp"): string;
9
+ export declare function toXmlDimension(raw: unknown, defaultUnit?: "dp" | "sp"): string | null;
10
+ export declare function trimFloat(value: number): string;
@@ -1,62 +1,64 @@
1
- export function parseDimension(val) {
2
- if (typeof val === "number")
3
- return { value: val, unit: "px" };
4
- if (typeof val !== "string")
1
+ const DIMENSION_RE = /^(-?\d+(?:\.\d+)?)\s*(px|rem|em|%|pt|dp|sp|vw|vh|vmin|vmax|ch|ex|cm|mm|in|pc)?$/i;
2
+ export function parseDimension(raw) {
3
+ if (typeof raw === "number")
4
+ return { value: raw, unit: "px" };
5
+ if (typeof raw !== "string")
5
6
  return null;
6
- const match = val.trim().match(/^(-?\d+(?:\.\d+)?)\s*(px|rem|em|%|pt|dp|sp|vw|vh)?$/);
7
+ const match = raw.trim().match(DIMENSION_RE);
7
8
  if (!match)
8
9
  return null;
9
- return { value: parseFloat(match[1]), unit: match[2] || "px" };
10
+ return {
11
+ value: parseFloat(match[1]),
12
+ unit: (match[2] ?? "px").toLowerCase(),
13
+ };
10
14
  }
11
- export function toCssDimension(val, _remBase = 16) {
12
- if (typeof val === "number")
13
- return `${val}px`;
14
- if (typeof val === "string") {
15
- const d = parseDimension(val);
16
- if (d)
17
- return `${d.value}${d.unit}`;
18
- return val;
19
- }
20
- if (typeof val === "object" && val !== null) {
21
- const obj = val;
22
- if (obj.value !== undefined)
23
- return toCssDimension(obj.value, _remBase);
24
- try {
25
- return JSON.stringify(val);
26
- }
27
- catch { /* fallthrough */ }
28
- }
29
- return "0px";
15
+ export function toCssDimension(raw) {
16
+ const parsed = parseDimension(raw);
17
+ if (!parsed)
18
+ return "0px";
19
+ if (parsed.unit === "%")
20
+ return `${trimFloat(parsed.value)}%`;
21
+ return `${trimFloat(parsed.value)}${parsed.unit}`;
30
22
  }
31
- export function toSwiftDimension(val) {
32
- if (typeof val === "number")
33
- return String(val);
34
- if (typeof val === "string") {
35
- const d = parseDimension(val);
36
- return d ? String(d.value) : val.replace(/[a-z%]+$/i, "") || "0";
37
- }
38
- if (typeof val === "object" && val !== null) {
39
- const obj = val;
40
- if (obj.value !== undefined)
41
- return toSwiftDimension(obj.value);
42
- }
43
- return "0";
23
+ export function toSwiftNumber(raw) {
24
+ const parsed = parseDimension(raw);
25
+ if (!parsed)
26
+ return "0";
27
+ return trimFloat(parsed.value);
44
28
  }
45
- export function toKotlinDimension(val) {
46
- if (typeof val === "number")
47
- return `${val}.dp`;
48
- if (typeof val === "string") {
49
- const d = parseDimension(val);
50
- if (!d)
51
- return `0.dp`;
52
- const unit = d.unit === "px" ? "dp" : d.unit === "sp" ? "sp" : "dp";
53
- return `${d.value}.${unit}`;
29
+ export function toKotlinDimension(raw, defaultUnit = "dp") {
30
+ const parsed = parseDimension(raw);
31
+ if (!parsed)
32
+ return `0.${defaultUnit}`;
33
+ let unit = defaultUnit;
34
+ if (parsed.unit === "sp")
35
+ unit = "sp";
36
+ if (parsed.unit === "dp")
37
+ unit = "dp";
38
+ if (parsed.unit === "px" || parsed.unit === "rem" || parsed.unit === "em" || parsed.unit === "%" || parsed.unit === "pt") {
39
+ unit = defaultUnit;
54
40
  }
55
- if (typeof val === "object" && val !== null) {
56
- const obj = val;
57
- if (obj.value !== undefined)
58
- return toKotlinDimension(obj.value);
41
+ return `${trimFloat(parsed.value)}.${unit}`;
42
+ }
43
+ export function toXmlDimension(raw, defaultUnit = "dp") {
44
+ const parsed = parseDimension(raw);
45
+ if (!parsed)
46
+ return null;
47
+ let unit = parsed.unit;
48
+ if (unit === "px" || unit === "rem" || unit === "em")
49
+ unit = defaultUnit;
50
+ if (unit === "%")
51
+ unit = defaultUnit;
52
+ if (unit === "pt")
53
+ unit = "pt";
54
+ if (unit !== "dp" && unit !== "sp" && unit !== "pt" && unit !== "px" && unit !== "mm" && unit !== "in") {
55
+ unit = defaultUnit;
59
56
  }
60
- return "0.dp";
57
+ return `${trimFloat(parsed.value)}${unit}`;
58
+ }
59
+ export function trimFloat(value) {
60
+ if (Number.isInteger(value))
61
+ return String(value);
62
+ return value.toFixed(4).replace(/\.0+$/, "").replace(/(\.\d*?)0+$/, "$1");
61
63
  }
62
64
  //# sourceMappingURL=dimension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dimension.js","sourceRoot":"","sources":["../../src/utils/dimension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dimension.js","sourceRoot":"","sources":["../../src/utils/dimension.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,11 @@
1
- export declare function toKebabCase(path: string): string;
2
- export declare function toCamelCase(path: string): string;
3
- export declare function toPascalCase(path: string): string;
4
- export declare function toSnakeCase(path: string): string;
5
- export declare function toUpperSnakeCase(path: string): string;
6
- export declare function cssVarName(path: string, prefix?: string): string;
7
- export declare function swiftVarName(path: string): string;
8
- export declare function kotlinVarName(path: string): string;
9
- /**
10
- * Resolves a codeSyntax value. If it is a template (wrapped in `{...}`),
11
- * resolves using the token path. Otherwise returns the raw value as-is.
12
- */
1
+ export declare function splitPathToWords(pathValue: string): string[];
2
+ export declare function toKebabCase(pathValue: string): string;
3
+ export declare function toSnakeCase(pathValue: string): string;
4
+ export declare function toUpperSnakeCase(pathValue: string): string;
5
+ export declare function toCamelCase(pathValue: string): string;
6
+ export declare function toPascalCase(pathValue: string): string;
13
7
  export declare function resolveCodeSyntax(raw: string, tokenPath: string): string;
8
+ export declare function cssVarName(pathValue: string, prefix?: string): string;
9
+ export declare function swiftIdentifier(pathValue: string, style: "lower" | "upper"): string;
10
+ export declare function kotlinIdentifier(pathValue: string, style: "lower" | "upper"): string;
11
+ export declare function androidResourceName(pathValue: string): string;
@@ -1,58 +1,116 @@
1
- export function toKebabCase(path) {
2
- return splitPathToWords(path).map((w) => w.toLowerCase()).join("-");
3
- }
4
- export function toCamelCase(path) {
5
- const parts = splitPathToWords(path);
6
- return parts
7
- .map((p, i) => i === 0 ? p.toLowerCase() : capitalize(p))
8
- .join("");
9
- }
10
- export function toPascalCase(path) {
11
- return splitPathToWords(path).map(capitalize).join("");
12
- }
13
- export function toSnakeCase(path) {
14
- return splitPathToWords(path).map((w) => w.toLowerCase()).join("_");
15
- }
16
- export function toUpperSnakeCase(path) {
17
- return splitPathToWords(path).map((w) => w.toUpperCase()).join("_");
18
- }
19
- function splitPathToWords(path) {
20
- return path
1
+ const CODE_SYNTAX_TEMPLATES = {
2
+ "{var(--css-variable)}": (path) => `var(--${toKebabCase(path)})`,
3
+ "{$sass-variable}": (path) => `$${toKebabCase(path)}`,
4
+ "{@less-variable}": (path) => `@${toKebabCase(path)}`,
5
+ "{UpperCamelCase}": (path) => toPascalCase(path),
6
+ "{lowerCamelCase}": (path) => toCamelCase(path),
7
+ "{UPPER_SNAKE_CASE}": (path) => toUpperSnakeCase(path),
8
+ "{lower_snake_case}": (path) => toSnakeCase(path),
9
+ };
10
+ const SWIFT_RESERVED = new Set([
11
+ "class", "struct", "enum", "protocol", "extension", "func", "let", "var", "switch", "case", "default",
12
+ "if", "else", "while", "for", "in", "do", "return", "break", "continue", "where", "defer", "as", "is",
13
+ "self", "super", "true", "false", "nil", "import", "public", "private", "internal", "fileprivate", "open",
14
+ "operator", "subscript", "typealias", "associatedtype", "init", "deinit", "guard", "throw", "throws", "rethrows",
15
+ ]);
16
+ const KOTLIN_RESERVED = new Set([
17
+ "as", "break", "class", "continue", "do", "else", "false", "for", "fun", "if", "in", "interface", "is",
18
+ "null", "object", "package", "return", "super", "this", "throw", "true", "try", "typealias", "val", "var",
19
+ "when", "while", "by", "catch", "constructor", "delegate", "dynamic", "field", "file", "finally", "get", "import",
20
+ "init", "param", "property", "receiver", "set", "setparam", "where", "actual", "abstract", "annotation", "companion",
21
+ "const", "crossinline", "data", "enum", "expect", "external", "final", "infix", "inline", "inner", "internal",
22
+ "lateinit", "noinline", "open", "operator", "out", "override", "private", "protected", "public", "reified", "sealed",
23
+ "suspend", "tailrec", "vararg",
24
+ ]);
25
+ export function splitPathToWords(pathValue) {
26
+ return pathValue
21
27
  .replace(/\./g, "/")
22
- .split(/[/\-_\s]+/)
23
- .flatMap((seg) => seg.replace(/([a-z])([A-Z])/g, "$1/$2").split("/"))
28
+ .split(/[/_\s-]+/)
29
+ .flatMap((segment) => segment.replace(/([a-z])([A-Z])/g, "$1/$2").split("/"))
30
+ .flatMap((segment) => segment.split(/(?<=\D)(?=\d)|(?<=\d)(?=\D)/))
31
+ .filter(Boolean)
32
+ .map((segment) => segment.replace(/[^a-zA-Z0-9]/g, ""))
24
33
  .filter(Boolean);
25
34
  }
26
- function capitalize(s) {
27
- return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();
35
+ export function toKebabCase(pathValue) {
36
+ const words = splitPathToWords(pathValue).map((word) => word.toLowerCase());
37
+ return words.join("-");
28
38
  }
29
- export function cssVarName(path, prefix) {
30
- const name = toKebabCase(path);
31
- return prefix ? `--${prefix}-${name}` : `--${name}`;
39
+ export function toSnakeCase(pathValue) {
40
+ const words = splitPathToWords(pathValue).map((word) => word.toLowerCase());
41
+ return words.join("_");
32
42
  }
33
- export function swiftVarName(path) {
34
- return toCamelCase(path);
43
+ export function toUpperSnakeCase(pathValue) {
44
+ const words = splitPathToWords(pathValue).map((word) => word.toUpperCase());
45
+ return words.join("_");
35
46
  }
36
- export function kotlinVarName(path) {
37
- return toPascalCase(path);
47
+ export function toCamelCase(pathValue) {
48
+ const words = splitPathToWords(pathValue);
49
+ if (words.length === 0)
50
+ return "token";
51
+ return words
52
+ .map((word, index) => index === 0 ? word.toLowerCase() : capitalize(word))
53
+ .join("");
54
+ }
55
+ export function toPascalCase(pathValue) {
56
+ const words = splitPathToWords(pathValue);
57
+ if (words.length === 0)
58
+ return "Token";
59
+ return words.map(capitalize).join("");
60
+ }
61
+ function capitalize(value) {
62
+ return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();
38
63
  }
39
- const CODE_SYNTAX_TEMPLATES = {
40
- "{var(--css-variable)}": (p) => `var(--${toKebabCase(p)})`,
41
- "{$sass-variable}": (p) => `$${toKebabCase(p)}`,
42
- "{@less-variable}": (p) => `@${toKebabCase(p)}`,
43
- "{UpperCamelCase}": toPascalCase,
44
- "{lowerCamelCase}": toCamelCase,
45
- "{UPPER_SNAKE_CASE}": toUpperSnakeCase,
46
- "{lower_snake_case}": toSnakeCase,
47
- };
48
- /**
49
- * Resolves a codeSyntax value. If it is a template (wrapped in `{...}`),
50
- * resolves using the token path. Otherwise returns the raw value as-is.
51
- */
52
64
  export function resolveCodeSyntax(raw, tokenPath) {
53
65
  const resolver = CODE_SYNTAX_TEMPLATES[raw];
54
66
  if (resolver)
55
67
  return resolver(tokenPath);
56
68
  return raw;
57
69
  }
70
+ export function cssVarName(pathValue, prefix) {
71
+ const base = toKebabCase(pathValue);
72
+ const withPrefix = prefix ? `${toKebabCase(prefix)}-${base}` : base;
73
+ const sanitized = sanitizeCssCustomPropertyBase(withPrefix);
74
+ return `--${sanitized}`;
75
+ }
76
+ function sanitizeCssCustomPropertyBase(value) {
77
+ let normalized = value
78
+ .replace(/[^a-zA-Z0-9-_]/g, "-")
79
+ .replace(/-+/g, "-")
80
+ .replace(/^-|-$/g, "");
81
+ if (!normalized)
82
+ normalized = "token";
83
+ if (!/^[a-zA-Z_]/.test(normalized))
84
+ normalized = `x-${normalized}`;
85
+ return normalized;
86
+ }
87
+ export function swiftIdentifier(pathValue, style) {
88
+ const normalized = style === "upper" ? toPascalCase(pathValue) : toCamelCase(pathValue);
89
+ const sanitized = sanitizeIdentifier(normalized, style === "upper" ? "Token" : "token");
90
+ return SWIFT_RESERVED.has(sanitized) ? `\`${sanitized}\`` : sanitized;
91
+ }
92
+ export function kotlinIdentifier(pathValue, style) {
93
+ const normalized = style === "upper" ? toPascalCase(pathValue) : toCamelCase(pathValue);
94
+ const sanitized = sanitizeIdentifier(normalized, style === "upper" ? "Token" : "token");
95
+ return KOTLIN_RESERVED.has(sanitized) ? `\`${sanitized}\`` : sanitized;
96
+ }
97
+ export function androidResourceName(pathValue) {
98
+ let base = toSnakeCase(pathValue)
99
+ .replace(/[^a-z0-9_]/g, "_")
100
+ .replace(/_+/g, "_")
101
+ .replace(/^_+|_+$/g, "");
102
+ if (!base)
103
+ base = "token";
104
+ if (!/^[a-z_]/.test(base))
105
+ base = `r_${base}`;
106
+ return base;
107
+ }
108
+ function sanitizeIdentifier(value, fallback) {
109
+ const cleaned = value.replace(/[^a-zA-Z0-9_]/g, "");
110
+ if (!cleaned)
111
+ return fallback;
112
+ if (/^[0-9]/.test(cleaned))
113
+ return `${fallback}${cleaned}`;
114
+ return cleaned;
115
+ }
58
116
  //# sourceMappingURL=naming.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACxD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,KAAK,CAAC,WAAW,CAAC;SAClB,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACpE,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,MAAe;IACtD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,qBAAqB,GAA6C;IACtE,uBAAuB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG;IAC1D,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;IAC/C,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;IAC/C,kBAAkB,EAAE,YAAY;IAChC,kBAAkB,EAAE,WAAW;IAC/B,oBAAoB,EAAE,gBAAgB;IACtC,oBAAoB,EAAE,WAAW;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,SAAiB;IAC9D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"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"}