@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,431 @@
1
+ import { parseCSSColor } from "./color-parser.js";
2
+ import { applyColorModifierChain } from "./color-modifiers.js";
3
+ import { canonicalAliasPath, canonicalTokenPath } from "./token-parser.js";
4
+ import { isMathExpression, evaluateMathExpression } from "./math.js";
5
+ import { normalizeTokenTypeKey } from "./token-types.js";
6
+ export function resolveTokens(tokens, options, context = {}) {
7
+ const diagnostics = [];
8
+ const normalized = tokens.map((token) => ({ ...token }));
9
+ const lookupSource = buildLookupSource(normalized, context.lookupTokens);
10
+ const lookup = buildLookup(lookupSource);
11
+ const memo = new Map();
12
+ const resolving = new Set();
13
+ const unresolvedAliasOnce = new Set();
14
+ const tokensWithIssues = new Set();
15
+ const autoFixAliasSyntax = options.autoFixAliasSyntax ?? false;
16
+ const skipTokensWithIssues = options.skipTokensWithIssues ?? false;
17
+ const markIssue = (tokenPath) => {
18
+ if (!skipTokensWithIssues)
19
+ return;
20
+ tokensWithIssues.add(canonicalTokenPath(tokenPath));
21
+ };
22
+ const resolveNumericAlias = (aliasPath, depth, ownerTokenPath) => {
23
+ const normalizedAlias = normalizeAliasPath(aliasPath, autoFixAliasSyntax);
24
+ const token = normalizedAlias ? findTokenByAlias(normalizedAlias, lookup) : null;
25
+ if (!token)
26
+ return null;
27
+ const resolved = resolveTokenValue(token, depth, ownerTokenPath);
28
+ return parseNumericValue(resolved, options.remBase, token.type);
29
+ };
30
+ const resolveColorAlias = (aliasPath, depth, ownerTokenPath) => {
31
+ const normalizedAlias = normalizeAliasPath(aliasPath, autoFixAliasSyntax);
32
+ const token = normalizedAlias ? findTokenByAlias(normalizedAlias, lookup) : null;
33
+ if (!token)
34
+ return null;
35
+ const resolved = resolveTokenValue(token, depth, ownerTokenPath);
36
+ return parseColorValue(resolved);
37
+ };
38
+ const resolveAliasPath = (aliasPath, depth, ownerTokenPath) => {
39
+ const normalization = normalizeAliasPathWithFeedback(aliasPath, autoFixAliasSyntax);
40
+ if (!normalization.value) {
41
+ diagnostics.push({
42
+ level: "error",
43
+ code: "ALIAS_SYNTAX_INVALID",
44
+ message: `Invalid alias syntax: {${aliasPath}}`,
45
+ tokenPath: ownerTokenPath,
46
+ });
47
+ markIssue(ownerTokenPath);
48
+ return `{${aliasPath}}`;
49
+ }
50
+ if (normalization.wasFixed) {
51
+ diagnostics.push({
52
+ level: "warn",
53
+ code: "ALIAS_SYNTAX_AUTOFIXED",
54
+ message: `Autofixed alias "{${aliasPath}}" -> "{${normalization.value}}"`,
55
+ tokenPath: ownerTokenPath,
56
+ });
57
+ }
58
+ const token = findTokenByAlias(normalization.value, lookup);
59
+ if (!token) {
60
+ const key = canonicalAliasPath(normalization.value);
61
+ if (!unresolvedAliasOnce.has(key)) {
62
+ unresolvedAliasOnce.add(key);
63
+ if (options.unresolvedAlias !== "ignore") {
64
+ diagnostics.push({
65
+ level: options.unresolvedAlias === "warn" ? "warn" : "error",
66
+ code: options.unresolvedAlias === "warn" ? "ALIAS_UNRESOLVED" : "ALIAS_UNRESOLVED",
67
+ message: `Unresolved alias: {${normalization.value}}`,
68
+ tokenPath: ownerTokenPath,
69
+ });
70
+ markIssue(ownerTokenPath);
71
+ }
72
+ }
73
+ return `{${normalization.value}}`;
74
+ }
75
+ return resolveTokenValue(token, depth - 1, ownerTokenPath);
76
+ };
77
+ const resolveString = (raw, depth, ownerTokenPath) => {
78
+ const trimmed = raw.trim();
79
+ const pureAlias = parsePotentialAlias(trimmed, autoFixAliasSyntax);
80
+ if (pureAlias.kind === "invalid") {
81
+ diagnostics.push({
82
+ level: "error",
83
+ code: "ALIAS_SYNTAX_INVALID",
84
+ message: `Invalid alias token value "${trimmed}"`,
85
+ tokenPath: ownerTokenPath,
86
+ });
87
+ markIssue(ownerTokenPath);
88
+ return raw;
89
+ }
90
+ if (pureAlias.kind === "alias") {
91
+ if (pureAlias.wasFixed) {
92
+ diagnostics.push({
93
+ level: "warn",
94
+ code: "ALIAS_SYNTAX_AUTOFIXED",
95
+ message: `Autofixed alias token value "${trimmed}" -> "{${pureAlias.aliasPath}}"`,
96
+ tokenPath: ownerTokenPath,
97
+ });
98
+ }
99
+ return resolveAliasPath(pureAlias.aliasPath, depth, ownerTokenPath);
100
+ }
101
+ if (isMathExpression(trimmed)) {
102
+ const evaluated = evaluateMathExpression(trimmed, (path) => resolveNumericAlias(path, depth - 1, ownerTokenPath), options.remBase);
103
+ if (evaluated !== null)
104
+ return evaluated;
105
+ }
106
+ if (hasUnbalancedBraces(raw)) {
107
+ diagnostics.push({
108
+ level: "error",
109
+ code: "ALIAS_SYNTAX_INVALID",
110
+ message: `Unbalanced braces in token value "${trimmed}"`,
111
+ tokenPath: ownerTokenPath,
112
+ });
113
+ markIssue(ownerTokenPath);
114
+ }
115
+ if (!/\{[^{}]+\}/.test(raw))
116
+ return raw;
117
+ return raw.replace(/\{([^{}]+)\}/g, (_match, aliasPath) => {
118
+ const resolved = resolveAliasPath(aliasPath, depth - 1, ownerTokenPath);
119
+ if (typeof resolved === "string")
120
+ return resolved;
121
+ if (typeof resolved === "number" || typeof resolved === "boolean")
122
+ return String(resolved);
123
+ diagnostics.push({
124
+ level: "warn",
125
+ code: "ALIAS_EMBEDDED_NON_PRIMITIVE",
126
+ message: `Embedded alias {${aliasPath}} resolved to non-primitive value`,
127
+ tokenPath: ownerTokenPath,
128
+ });
129
+ return `{${aliasPath}}`;
130
+ });
131
+ };
132
+ const resolveDeep = (value, depth, ownerTokenPath) => {
133
+ if (depth <= 0)
134
+ return value;
135
+ if (typeof value === "string")
136
+ return resolveString(value, depth, ownerTokenPath);
137
+ if (Array.isArray(value))
138
+ return value.map((item) => resolveDeep(item, depth - 1, ownerTokenPath));
139
+ if (typeof value === "object" && value !== null) {
140
+ const result = {};
141
+ for (const [key, nested] of Object.entries(value)) {
142
+ result[key] = resolveDeep(nested, depth - 1, ownerTokenPath);
143
+ }
144
+ return result;
145
+ }
146
+ return value;
147
+ };
148
+ const resolveTokenValue = (token, depth, ownerTokenPath = token.path) => {
149
+ const key = canonicalTokenPath(token.path);
150
+ if (memo.has(key))
151
+ return memo.get(key);
152
+ if (depth <= 0) {
153
+ diagnostics.push({
154
+ level: "error",
155
+ code: "ALIAS_DEPTH_EXCEEDED",
156
+ message: `Alias depth exceeded for token ${token.path}`,
157
+ tokenPath: token.path,
158
+ });
159
+ return token.value;
160
+ }
161
+ if (resolving.has(key)) {
162
+ diagnostics.push({
163
+ level: "error",
164
+ code: "ALIAS_CYCLE",
165
+ message: `Alias cycle detected at token ${token.path}`,
166
+ tokenPath: token.path,
167
+ });
168
+ return token.value;
169
+ }
170
+ resolving.add(key);
171
+ let resolved;
172
+ if (token.isAlias && token.aliasPath) {
173
+ resolved = resolveAliasPath(token.aliasPath, depth, ownerTokenPath);
174
+ }
175
+ else {
176
+ resolved = resolveDeep(token.value, depth, ownerTokenPath);
177
+ }
178
+ const modify = token.extensions?.["figma.modify"];
179
+ if (modify) {
180
+ const baseColor = parseColorValue(resolved);
181
+ if (!baseColor) {
182
+ diagnostics.push({
183
+ level: "warn",
184
+ code: "MODIFIER_BASE_COLOR_INVALID",
185
+ message: `figma.modify skipped for ${token.path}: base color cannot be resolved`,
186
+ tokenPath: token.path,
187
+ });
188
+ }
189
+ else {
190
+ const modified = applyColorModifierChain(baseColor, modify, {
191
+ resolveNumeric: (alias) => resolveNumericAlias(alias, depth - 1, ownerTokenPath),
192
+ resolveColor: (alias) => resolveColorAlias(alias, depth - 1, ownerTokenPath),
193
+ });
194
+ if (!modified) {
195
+ diagnostics.push({
196
+ level: "warn",
197
+ code: "MODIFIER_EVALUATION_FAILED",
198
+ message: `figma.modify failed for ${token.path}`,
199
+ tokenPath: token.path,
200
+ });
201
+ }
202
+ else {
203
+ resolved = modified;
204
+ }
205
+ }
206
+ }
207
+ token.resolvedValue = resolved;
208
+ memo.set(key, resolved);
209
+ resolving.delete(key);
210
+ return resolved;
211
+ };
212
+ for (const token of normalized) {
213
+ resolveTokenValue(token, options.maxDepth, token.path);
214
+ }
215
+ const tokensOut = skipTokensWithIssues
216
+ ? normalized.filter((token) => !tokensWithIssues.has(canonicalTokenPath(token.path)))
217
+ : normalized;
218
+ if (skipTokensWithIssues && tokensWithIssues.size > 0) {
219
+ diagnostics.push({
220
+ level: "warn",
221
+ code: "TOKENS_SKIPPED_DUE_TO_ISSUES",
222
+ message: `Skipped ${tokensWithIssues.size} token(s) with unresolved alias/syntax issues`,
223
+ });
224
+ }
225
+ return { tokens: tokensOut, diagnostics, lookup };
226
+ }
227
+ function buildLookupSource(tokens, lookupTokens) {
228
+ if (!lookupTokens || lookupTokens.length === 0)
229
+ return tokens;
230
+ const map = new Map();
231
+ for (const token of lookupTokens) {
232
+ setByCanonicalPath(map, { ...token });
233
+ }
234
+ // Emit-scope tokens always win over ref-scope tokens with the same path.
235
+ for (const token of tokens) {
236
+ setByCanonicalPath(map, token);
237
+ }
238
+ return [...map.values()];
239
+ }
240
+ function setByCanonicalPath(map, token) {
241
+ const key = canonicalTokenPath(token.path);
242
+ if (map.has(key))
243
+ map.delete(key);
244
+ map.set(key, token);
245
+ }
246
+ export function buildLookup(tokens) {
247
+ const map = new Map();
248
+ for (const token of tokens) {
249
+ const canonical = canonicalTokenPath(token.path);
250
+ const dot = canonical.replace(/\//g, ".");
251
+ const slash = canonical.replace(/\./g, "/");
252
+ map.set(token.path, token);
253
+ map.set(canonical, token);
254
+ map.set(dot, token);
255
+ map.set(slash, token);
256
+ }
257
+ return map;
258
+ }
259
+ function findTokenByAlias(aliasPath, lookup) {
260
+ const canonical = canonicalAliasPath(aliasPath);
261
+ const dot = canonical.replace(/\//g, ".");
262
+ const slash = canonical.replace(/\./g, "/");
263
+ return lookup.get(aliasPath) ?? lookup.get(canonical) ?? lookup.get(dot) ?? lookup.get(slash) ?? null;
264
+ }
265
+ function isPureAlias(value) {
266
+ return /^\{[^{}]+\}$/.test(value.trim());
267
+ }
268
+ function parsePotentialAlias(value, autoFix) {
269
+ const trimmed = value.trim();
270
+ if (isPureAlias(trimmed)) {
271
+ const inner = trimmed.slice(1, -1).trim();
272
+ const normalized = normalizeAliasPath(inner, autoFix);
273
+ if (!normalized)
274
+ return { kind: "invalid" };
275
+ const fixedInner = autoFix ? sanitizeAliasForAutoFix(inner) : inner;
276
+ return { kind: "alias", aliasPath: normalized, wasFixed: autoFix && fixedInner !== inner };
277
+ }
278
+ if (!trimmed.includes("{") && !trimmed.includes("}"))
279
+ return { kind: "none" };
280
+ if (!/^\{?[^{}]+\}?$/.test(trimmed))
281
+ return { kind: "none" };
282
+ if (!autoFix)
283
+ return { kind: "invalid" };
284
+ let patched = trimmed;
285
+ let didFix = false;
286
+ if (!patched.startsWith("{") && patched.endsWith("}")) {
287
+ patched = `{${patched}`;
288
+ didFix = true;
289
+ }
290
+ if (patched.startsWith("{") && !patched.endsWith("}")) {
291
+ patched = `${patched}}`;
292
+ didFix = true;
293
+ }
294
+ if (!isPureAlias(patched))
295
+ return { kind: "invalid" };
296
+ const inner = patched.slice(1, -1).trim();
297
+ const normalized = normalizeAliasPath(inner, autoFix);
298
+ if (!normalized)
299
+ return { kind: "invalid" };
300
+ const fixedInner = sanitizeAliasForAutoFix(inner);
301
+ return { kind: "alias", aliasPath: normalized, wasFixed: didFix || fixedInner !== inner };
302
+ }
303
+ function normalizeAliasPathWithFeedback(value, autoFix) {
304
+ if (!autoFix) {
305
+ return {
306
+ value: normalizeAliasPath(value, false),
307
+ wasFixed: false,
308
+ };
309
+ }
310
+ const trimmed = value.trim();
311
+ const normalized = normalizeAliasPath(trimmed, autoFix);
312
+ const fixed = sanitizeAliasForAutoFix(trimmed);
313
+ return {
314
+ value: normalized,
315
+ wasFixed: normalized !== null && fixed !== trimmed,
316
+ };
317
+ }
318
+ function normalizeAliasPath(value, autoFix) {
319
+ const trimmed = value.trim();
320
+ if (!trimmed)
321
+ return null;
322
+ if (!autoFix && /(^[./]|[./]$|[./]{2,}|\s)/.test(trimmed))
323
+ return null;
324
+ const fixed = autoFix
325
+ ? sanitizeAliasForAutoFix(trimmed)
326
+ : trimmed;
327
+ if (!fixed)
328
+ return null;
329
+ if (/[^a-zA-Z0-9._/-]/.test(fixed))
330
+ return null;
331
+ const canonical = canonicalAliasPath(fixed);
332
+ return canonical.length > 0 ? canonical : null;
333
+ }
334
+ function sanitizeAliasForAutoFix(value) {
335
+ return value
336
+ .replace(/[./]{2,}/g, ".")
337
+ .replace(/^[./]+/, "")
338
+ .replace(/[./]+$/, "")
339
+ .replace(/\s+/g, "");
340
+ }
341
+ function hasUnbalancedBraces(value) {
342
+ const opened = (value.match(/\{/g) ?? []).length;
343
+ const closed = (value.match(/\}/g) ?? []).length;
344
+ return opened !== closed;
345
+ }
346
+ const FLOAT_PERCENT_AS_REM_BASE_EXCLUDED = new Set(["opacity", "duration"]);
347
+ const FLOAT_PERCENT_AS_REM_BASE_INCLUDED = new Set([
348
+ "dimension",
349
+ "sizing",
350
+ "spacing",
351
+ "borderRadius",
352
+ "borderWidth",
353
+ "number",
354
+ "fontSize",
355
+ "lineHeight",
356
+ "letterSpacing",
357
+ "paragraphSpacing",
358
+ "paragraphIndent",
359
+ ]);
360
+ function percentUsesRemBase(tokenType) {
361
+ if (!tokenType)
362
+ return false;
363
+ const normalized = normalizeTokenTypeKey(tokenType);
364
+ if (FLOAT_PERCENT_AS_REM_BASE_EXCLUDED.has(normalized))
365
+ return false;
366
+ return FLOAT_PERCENT_AS_REM_BASE_INCLUDED.has(normalized);
367
+ }
368
+ export function parseNumericValue(raw, remBase, tokenType) {
369
+ if (typeof raw === "number") {
370
+ return Number.isFinite(raw) ? raw : null;
371
+ }
372
+ if (typeof raw !== "string")
373
+ return null;
374
+ const trimmed = raw.trim();
375
+ const match = trimmed.match(/^(-?\d+(?:\.\d+)?)\s*(px|rem|em|%|pt|dp|sp|ms|s|vw|vh|vmin|vmax|ch|ex|cm|mm|in|pc)?$/i);
376
+ if (!match)
377
+ return null;
378
+ const value = parseFloat(match[1]);
379
+ const unit = (match[2] ?? "").toLowerCase();
380
+ if (unit === "rem" || unit === "em")
381
+ return value * remBase;
382
+ if (unit === "s")
383
+ return value * 1000;
384
+ if (unit === "%") {
385
+ if (percentUsesRemBase(tokenType)) {
386
+ return (value / 100) * remBase;
387
+ }
388
+ return value;
389
+ }
390
+ return value;
391
+ }
392
+ export function parseColorValue(raw) {
393
+ if (typeof raw === "string") {
394
+ return parseCSSColor(raw);
395
+ }
396
+ if (typeof raw === "object" && raw !== null && !Array.isArray(raw)) {
397
+ const obj = raw;
398
+ if (typeof obj.r === "number" &&
399
+ typeof obj.g === "number" &&
400
+ typeof obj.b === "number") {
401
+ const alpha = typeof obj.a === "number" ? obj.a : 1;
402
+ if (obj.r <= 1 && obj.g <= 1 && obj.b <= 1) {
403
+ return { r: obj.r, g: obj.g, b: obj.b, a: alpha };
404
+ }
405
+ return {
406
+ r: clamp01(obj.r / 255),
407
+ g: clamp01(obj.g / 255),
408
+ b: clamp01(obj.b / 255),
409
+ a: clamp01(alpha),
410
+ };
411
+ }
412
+ if (typeof obj.color === "string") {
413
+ const parsed = parseCSSColor(obj.color);
414
+ if (!parsed)
415
+ return null;
416
+ if (typeof obj.opacity === "number") {
417
+ return { ...parsed, a: clamp01(obj.opacity) };
418
+ }
419
+ return parsed;
420
+ }
421
+ }
422
+ return null;
423
+ }
424
+ function clamp01(value) {
425
+ return Math.max(0, Math.min(1, value));
426
+ }
427
+ export function shouldSkipTokenType(type, unsupported) {
428
+ const normalized = normalizeTokenTypeKey(type);
429
+ return unsupported.types[normalized] ?? unsupported.default;
430
+ }
431
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Diagnostic, FlatToken, ResolvedTransformerConfig, SourceFileFingerprint, TokenSetResolved, TokensProjectConfig } from "./types.js";
2
+ export type LoadTokenSetsResult = {
3
+ tokenSets: TokenSetResolved[];
4
+ diagnostics: Diagnostic[];
5
+ filesIndex: Map<string, FlatToken[]>;
6
+ projectConfig: TokensProjectConfig | null;
7
+ sourceFiles: Record<string, SourceFileFingerprint>;
8
+ };
9
+ export declare function scanSourceFiles(tokenDir: string, include: string[], exclude: string[]): Promise<Record<string, SourceFileFingerprint>>;
10
+ export declare function loadTokenSets(config: ResolvedTransformerConfig): Promise<LoadTokenSetsResult>;
11
+ export declare function discoverTokenFiles(tokenDir: string, include: string[], exclude: string[]): Promise<string[]>;