tailwind-canonical 0.2.2 → 0.4.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 (104) hide show
  1. package/README.md +58 -4
  2. package/dist/cli/cli.d.ts +33 -0
  3. package/dist/cli/cli.d.ts.map +1 -0
  4. package/dist/cli/cli.js +416 -0
  5. package/dist/cli/cli.js.map +1 -0
  6. package/dist/cli/index.js +4 -315
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/core/analyzer.d.ts +2 -1
  9. package/dist/core/analyzer.d.ts.map +1 -1
  10. package/dist/core/analyzer.js +8 -14
  11. package/dist/core/analyzer.js.map +1 -1
  12. package/dist/core/class-strings.d.ts +6 -1
  13. package/dist/core/class-strings.d.ts.map +1 -1
  14. package/dist/core/class-strings.js +19 -8
  15. package/dist/core/class-strings.js.map +1 -1
  16. package/dist/core/config.d.ts +2 -1
  17. package/dist/core/config.d.ts.map +1 -1
  18. package/dist/core/config.js +20 -11
  19. package/dist/core/config.js.map +1 -1
  20. package/dist/core/consistency.d.ts +6 -1
  21. package/dist/core/consistency.d.ts.map +1 -1
  22. package/dist/core/consistency.js +38 -101
  23. package/dist/core/consistency.js.map +1 -1
  24. package/dist/core/deduplicator.d.ts +5 -1
  25. package/dist/core/deduplicator.d.ts.map +1 -1
  26. package/dist/core/deduplicator.js +26 -17
  27. package/dist/core/deduplicator.js.map +1 -1
  28. package/dist/core/fixer.d.ts +5 -1
  29. package/dist/core/fixer.d.ts.map +1 -1
  30. package/dist/core/fixer.js +8 -10
  31. package/dist/core/fixer.js.map +1 -1
  32. package/dist/core/lexicon.d.ts +16 -0
  33. package/dist/core/lexicon.d.ts.map +1 -0
  34. package/dist/core/lexicon.js +133 -0
  35. package/dist/core/lexicon.js.map +1 -0
  36. package/dist/core/merger.d.ts +5 -1
  37. package/dist/core/merger.d.ts.map +1 -1
  38. package/dist/core/merger.js +7 -8
  39. package/dist/core/merger.js.map +1 -1
  40. package/dist/core/rules.d.ts +3 -0
  41. package/dist/core/rules.d.ts.map +1 -1
  42. package/dist/core/rules.js +15 -1
  43. package/dist/core/rules.js.map +1 -1
  44. package/dist/core/scanner.d.ts +5 -2
  45. package/dist/core/scanner.d.ts.map +1 -1
  46. package/dist/core/scanner.js +12 -80
  47. package/dist/core/scanner.js.map +1 -1
  48. package/dist/core/sorter.d.ts +5 -1
  49. package/dist/core/sorter.d.ts.map +1 -1
  50. package/dist/core/sorter.js +7 -7
  51. package/dist/core/sorter.js.map +1 -1
  52. package/dist/core/suppressions.d.ts +8 -0
  53. package/dist/core/suppressions.d.ts.map +1 -0
  54. package/dist/core/suppressions.js +44 -0
  55. package/dist/core/suppressions.js.map +1 -0
  56. package/dist/core/typos.d.ts +14 -0
  57. package/dist/core/typos.d.ts.map +1 -0
  58. package/dist/core/typos.js +71 -0
  59. package/dist/core/typos.js.map +1 -0
  60. package/dist/eslint/plugin.d.ts +3 -74
  61. package/dist/eslint/plugin.d.ts.map +1 -1
  62. package/dist/eslint/plugin.js +30 -16
  63. package/dist/eslint/plugin.js.map +1 -1
  64. package/dist/index.d.ts +5 -4
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +11 -3
  67. package/dist/index.js.map +1 -1
  68. package/dist/io/analyzer.d.ts +4 -0
  69. package/dist/io/analyzer.d.ts.map +1 -0
  70. package/dist/io/analyzer.js +7 -0
  71. package/dist/io/analyzer.js.map +1 -0
  72. package/dist/io/config.d.ts +3 -0
  73. package/dist/io/config.d.ts.map +1 -0
  74. package/dist/io/config.js +12 -0
  75. package/dist/io/config.js.map +1 -0
  76. package/dist/io/consistency.d.ts +4 -0
  77. package/dist/io/consistency.d.ts.map +1 -0
  78. package/dist/io/consistency.js +21 -0
  79. package/dist/io/consistency.js.map +1 -0
  80. package/dist/io/deduplicator.d.ts +3 -0
  81. package/dist/io/deduplicator.d.ts.map +1 -0
  82. package/dist/io/deduplicator.js +10 -0
  83. package/dist/io/deduplicator.js.map +1 -0
  84. package/dist/io/fixer.d.ts +3 -0
  85. package/dist/io/fixer.d.ts.map +1 -0
  86. package/dist/io/fixer.js +10 -0
  87. package/dist/io/fixer.js.map +1 -0
  88. package/dist/io/merger.d.ts +3 -0
  89. package/dist/io/merger.d.ts.map +1 -0
  90. package/dist/io/merger.js +11 -0
  91. package/dist/io/merger.js.map +1 -0
  92. package/dist/io/scanner.d.ts +4 -0
  93. package/dist/io/scanner.d.ts.map +1 -0
  94. package/dist/io/scanner.js +78 -0
  95. package/dist/io/scanner.js.map +1 -0
  96. package/dist/io/sorter.d.ts +4 -0
  97. package/dist/io/sorter.d.ts.map +1 -0
  98. package/dist/io/sorter.js +10 -0
  99. package/dist/io/sorter.js.map +1 -0
  100. package/dist/io/typos.d.ts +4 -0
  101. package/dist/io/typos.d.ts.map +1 -0
  102. package/dist/io/typos.js +7 -0
  103. package/dist/io/typos.js.map +1 -0
  104. package/package.json +9 -3
package/dist/cli/index.js CHANGED
@@ -1,317 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { watch as fsWatch } from 'node:fs';
3
- import { dirname, resolve } from 'node:path';
4
- import { analyzeFile } from '../core/analyzer.js';
5
- import { loadConfig } from '../core/config.js';
6
- import { analyzeConsistencyFiles } from '../core/consistency.js';
7
- import { dedupeFile } from '../core/deduplicator.js';
8
- import { fixFile } from '../core/fixer.js';
9
- import { mergeFile } from '../core/merger.js';
10
- import { resolveTargets } from '../core/scanner.js';
11
- import { sortFile } from '../core/sorter.js';
12
- function pluralize(n, word) {
13
- return `${n} ${word}${n !== 1 ? 's' : ''}`;
14
- }
15
- function timestamp() {
16
- const d = new Date();
17
- return `[${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}]`;
18
- }
19
- const SARIF_SCHEMA = 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json';
20
- const args = process.argv.slice(2);
21
- const fix = args.includes('--fix');
22
- const merge = args.includes('--merge');
23
- const dedup = args.includes('--dedup');
24
- const sort = args.includes('--sort');
25
- const watch = args.includes('--watch');
26
- const analyze = args.includes('--analyze');
27
- const reporterIdx = args.indexOf('--reporter');
28
- const reporter = reporterIdx !== -1 &&
29
- (args[reporterIdx + 1] === 'json' || args[reporterIdx + 1] === 'sarif')
30
- ? args[reporterIdx + 1]
31
- : 'text';
32
- const targets = args.filter((a, i) => !a.startsWith('--') &&
33
- args[i - 1] !== '--reporter' &&
34
- a !== 'json' &&
35
- a !== 'sarif');
36
- if (targets.length === 0) {
37
- console.error('Usage: tailwind-canonical [--fix] [--merge] [--dedup] [--sort] [--analyze] [--watch] [--reporter json|sarif] <dir|file> [dir|file...]');
38
- process.exit(1);
39
- }
40
- if (merge) {
41
- try {
42
- await import('tailwind-merge');
43
- }
44
- catch {
45
- console.error('--merge requires tailwind-merge: pnpm add -D tailwind-merge');
46
- process.exit(1);
47
- }
48
- }
49
- let config = {};
50
- try {
51
- config = await loadConfig(process.cwd());
52
- }
53
- catch (err) {
54
- console.error(`tailwind-canonical: ${err instanceof Error ? err.message : String(err)}`);
55
- process.exit(1);
56
- }
57
- async function processFile(file) {
58
- let count = 0;
59
- if (fix)
60
- count += fixFile(file, config);
61
- if (dedup)
62
- count += dedupeFile(file, {
63
- functionNames: config.functionNames,
64
- attributeNames: config.attributeNames,
65
- });
66
- if (merge)
67
- count += await mergeFile(file, {
68
- functionNames: config.functionNames,
69
- attributeNames: config.attributeNames,
70
- });
71
- if (sort)
72
- count += sortFile(file, {
73
- functionNames: config.functionNames,
74
- attributeNames: config.attributeNames,
75
- }, config.sortOrder);
76
- return count;
77
- }
78
- const files = await resolveTargets(targets);
79
- if (analyze) {
80
- const report = analyzeConsistencyFiles(files, config);
81
- const issueCount = report.colorVariants.length +
82
- report.scaleInconsistencies.length +
83
- report.combinations.length;
84
- if (reporter === 'json') {
85
- process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
86
- }
87
- else {
88
- for (const group of report.colorVariants) {
89
- const tokens = group.variants
90
- .map((v) => `${group.property}-${v.token} (${v.count})`)
91
- .join(', ');
92
- console.log(` Warning: ${group.variants.length} ${group.family} color variants used for ${group.property}: ${tokens}`);
93
- }
94
- for (const scale of report.scaleInconsistencies) {
95
- const values = scale.values
96
- .map((v) => `${scale.property}-${v.value} (${pluralize(v.files.length, 'file')})`)
97
- .join(' vs ');
98
- console.log(` Warning: ${scale.property} inconsistency: ${values}`);
99
- }
100
- for (const combo of report.combinations) {
101
- console.log(` Pattern: "${combo.classes.join(' ')}" repeated in ${pluralize(combo.files.length, 'file')}`);
102
- }
103
- if (issueCount === 0) {
104
- console.log('✓ No cross-file inconsistencies found');
105
- }
106
- else {
107
- console.log(`\n✖ Found ${pluralize(issueCount, 'consistency issue')} across ${pluralize(report.filesAnalyzed, 'file')}`);
108
- }
109
- }
110
- if (issueCount > 0)
111
- process.exit(1);
112
- process.exit(0);
113
- }
114
- let totalFindings = 0;
115
- let totalFixed = 0;
116
- let totalMerged = 0;
117
- let totalDeduped = 0;
118
- let totalSorted = 0;
119
- const allFindings = [];
120
- const changedFiles = [];
121
- for (const file of files) {
122
- if (fix) {
123
- const count = fixFile(file, config);
124
- if (count > 0) {
125
- totalFixed += count;
126
- changedFiles.push(file);
127
- if (reporter === 'text') {
128
- console.log(` fixed ${file} (${pluralize(count, 'replacement')})`);
129
- }
130
- }
131
- }
132
- if (dedup) {
133
- const count = dedupeFile(file, {
134
- functionNames: config.functionNames,
135
- attributeNames: config.attributeNames,
136
- });
137
- if (count > 0) {
138
- totalDeduped += count;
139
- if (!changedFiles.includes(file))
140
- changedFiles.push(file);
141
- if (reporter === 'text') {
142
- console.log(` deduped ${file} (${pluralize(count, 'class string')})`);
143
- }
144
- }
145
- }
146
- if (merge) {
147
- const count = await mergeFile(file, {
148
- functionNames: config.functionNames,
149
- attributeNames: config.attributeNames,
150
- });
151
- if (count > 0) {
152
- totalMerged += count;
153
- if (!changedFiles.includes(file))
154
- changedFiles.push(file);
155
- if (reporter === 'text') {
156
- console.log(` merged ${file} (${pluralize(count, 'conflict')})`);
157
- }
158
- }
159
- }
160
- if (sort) {
161
- const count = sortFile(file, {
162
- functionNames: config.functionNames,
163
- attributeNames: config.attributeNames,
164
- }, config.sortOrder);
165
- if (count > 0) {
166
- totalSorted += count;
167
- if (!changedFiles.includes(file))
168
- changedFiles.push(file);
169
- if (reporter === 'text') {
170
- console.log(` sorted ${file} (${pluralize(count, 'class string')})`);
171
- }
172
- }
173
- }
174
- if (!(fix || dedup || merge || sort)) {
175
- const findings = analyzeFile(file, config);
176
- allFindings.push(...findings);
177
- totalFindings += findings.length;
178
- if (reporter === 'text' && !watch) {
179
- for (const f of findings) {
180
- const tag = f.suggestion.isCustomToken ? ' [custom token]' : '';
181
- console.log(` ${f.file}:${f.line}:${f.col} ${f.suggestion.original} → ${f.suggestion.canonical}${tag}`);
182
- }
183
- }
184
- }
185
- }
186
- if (watch) {
187
- const fileSet = new Set(files);
188
- const timers = new Map();
189
- const dirs = new Set(files.map((f) => dirname(f)));
190
- console.log(`Watching ${pluralize(files.length, 'file')}... (Ctrl+C to stop)`);
191
- for (const dir of dirs) {
192
- fsWatch(dir, { recursive: true }, (_, filename) => {
193
- if (!filename)
194
- return;
195
- const full = resolve(dir, filename);
196
- if (!fileSet.has(full))
197
- return;
198
- clearTimeout(timers.get(full));
199
- timers.set(full, setTimeout(() => {
200
- if (fix || dedup || merge || sort) {
201
- processFile(full)
202
- .then((count) => {
203
- if (count > 0)
204
- console.log(`${timestamp()} ${full} — ${pluralize(count, 'change')} applied`);
205
- })
206
- // biome-ignore lint/suspicious/noEmptyBlockStatements: watcher errors are silent by design
207
- .catch(() => { });
208
- }
209
- else {
210
- const findings = analyzeFile(full, config);
211
- if (findings.length > 0) {
212
- console.log(`${timestamp()} ${full} — ${pluralize(findings.length, 'finding')}`);
213
- for (const f of findings) {
214
- const tag = f.suggestion.isCustomToken ? ' [custom token]' : '';
215
- console.log(` ${f.line}:${f.col} ${f.suggestion.original} → ${f.suggestion.canonical}${tag}`);
216
- }
217
- }
218
- }
219
- }, 50));
220
- });
221
- }
222
- process.on('SIGINT', () => {
223
- console.log('\nWatcher stopped.');
224
- process.exit(0);
225
- });
226
- }
227
- else if (fix || dedup || merge || sort) {
228
- if (reporter === 'json') {
229
- process.stdout.write(`${JSON.stringify({
230
- files: files.length,
231
- changedFiles,
232
- fixed: totalFixed,
233
- deduped: totalDeduped,
234
- merged: totalMerged,
235
- sorted: totalSorted,
236
- }, null, 2)}\n`);
237
- }
238
- else {
239
- const parts = [];
240
- if (fix)
241
- parts.push(pluralize(totalFixed, 'replacement'));
242
- if (dedup)
243
- parts.push(pluralize(totalDeduped, 'dedup'));
244
- if (merge)
245
- parts.push(`${pluralize(totalMerged, 'conflict')} merged`);
246
- if (sort)
247
- parts.push(`${totalSorted} sorted`);
248
- console.log(`\n✓ Fixed ${parts.join(', ')} across ${files.length} file${files.length !== 1 ? 's' : ''}`);
249
- }
250
- }
251
- else if (reporter === 'json') {
252
- process.stdout.write(`${JSON.stringify({
253
- files: files.length,
254
- total: totalFindings,
255
- findings: allFindings.map((f) => ({
256
- file: f.file,
257
- line: f.line,
258
- col: f.col,
259
- original: f.suggestion.original,
260
- canonical: f.suggestion.canonical,
261
- isCustomToken: f.suggestion.isCustomToken,
262
- })),
263
- }, null, 2)}\n`);
264
- if (totalFindings > 0)
265
- process.exit(1);
266
- }
267
- else if (reporter === 'sarif') {
268
- const sarifOutput = {
269
- $schema: SARIF_SCHEMA,
270
- version: '2.1.0',
271
- runs: [
272
- {
273
- tool: {
274
- driver: {
275
- name: 'tailwind-canonical',
276
- informationUri: 'https://github.com/peak-lab/tailwind-canonical',
277
- rules: [
278
- {
279
- id: 'no-arbitrary-canonical',
280
- name: 'NoArbitraryCanonical',
281
- shortDescription: {
282
- text: 'Arbitrary value has a canonical Tailwind equivalent',
283
- },
284
- },
285
- ],
286
- },
287
- },
288
- results: allFindings.map((f) => ({
289
- ruleId: 'no-arbitrary-canonical',
290
- message: {
291
- text: `${f.suggestion.original} → ${f.suggestion.canonical}`,
292
- },
293
- locations: [
294
- {
295
- physicalLocation: {
296
- artifactLocation: { uri: f.file },
297
- region: { startLine: f.line, startColumn: f.col },
298
- },
299
- },
300
- ],
301
- })),
302
- },
303
- ],
304
- };
305
- process.stdout.write(`${JSON.stringify(sarifOutput, null, 2)}\n`);
306
- if (totalFindings > 0)
307
- process.exit(1);
308
- }
309
- else if (totalFindings > 0) {
310
- console.log(`\n✖ Found ${totalFindings} non-canonical class${totalFindings !== 1 ? 'es' : ''}`);
311
- console.log(' Run with --fix to auto-replace\n');
312
- process.exit(1);
313
- }
314
- else {
315
- console.log('✓ No non-canonical classes found');
316
- }
2
+ import { run } from './cli.js';
3
+ const { exitCode, watching } = await run(process.argv.slice(2), process.cwd());
4
+ if (!watching)
5
+ process.exit(exitCode);
317
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/E,IAAI,CAAC,QAAQ;IAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC"}
@@ -5,5 +5,6 @@ export type Finding = {
5
5
  col: number;
6
6
  suggestion: Suggestion;
7
7
  };
8
- export declare function analyzeFile(filePath: string, config?: Config): Finding[];
8
+ export declare function analyzeContent(filePath: string, content: string, config?: Config): Finding[];
9
+ export { analyzeFile } from '../io/analyzer.js';
9
10
  //# sourceMappingURL=analyzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE5E,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAYF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,OAAO,EAAE,CAmB5E"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAoB,MAAM,YAAY,CAAC;AAG5E,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAW,GAClB,OAAO,EAAE,CAiBX;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,19 +1,10 @@
1
- import { readFileSync } from 'node:fs';
2
- import { extractClassStrings, SINGLE_CLASS_REGEX, } from './class-strings.js';
1
+ import { extractClassStrings, SINGLE_CLASS_REGEX, toClassStringOpts, } from './class-strings.js';
3
2
  import { suggestCanonical } from './rules.js';
4
- function indexToLineCol(content, index) {
5
- const before = content.slice(0, index);
6
- const line = before.split('\n').length;
7
- const col = index - before.lastIndexOf('\n');
8
- return { line, col };
9
- }
10
- export function analyzeFile(filePath, config = {}) {
11
- const content = readFileSync(filePath, 'utf8');
3
+ import { getSuppressedLines, indexToLineCol } from './suppressions.js';
4
+ export function analyzeContent(filePath, content, config = {}) {
12
5
  const findings = [];
13
- const opts = {
14
- functionNames: config.functionNames,
15
- attributeNames: config.attributeNames,
16
- };
6
+ const suppressed = getSuppressedLines(content);
7
+ const opts = toClassStringOpts(config);
17
8
  for (const { value, start } of extractClassStrings(content, opts)) {
18
9
  for (const clsMatch of value.matchAll(SINGLE_CLASS_REGEX)) {
19
10
  const suggestion = suggestCanonical(clsMatch[0], config);
@@ -21,9 +12,12 @@ export function analyzeFile(filePath, config = {}) {
21
12
  continue;
22
13
  const index = start + (clsMatch.index ?? 0);
23
14
  const { line, col } = indexToLineCol(content, index);
15
+ if (suppressed.has(line))
16
+ continue;
24
17
  findings.push({ file: filePath, line, col, suggestion });
25
18
  }
26
19
  }
27
20
  return findings;
28
21
  }
22
+ export { analyzeFile } from '../io/analyzer.js';
29
23
  //# sourceMappingURL=analyzer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAgC,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAS5E,SAAS,cAAc,CACrB,OAAe,EACf,KAAa;IAEb,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,SAAiB,EAAE;IAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAoB;QAC5B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC;IAEF,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC1B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAgC,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASvE,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,OAAe,EACf,SAAiB,EAAE;IAEnB,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEvC,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC1B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,9 +1,14 @@
1
1
  export type ClassStringOpts = {
2
2
  functionNames?: string[];
3
3
  attributeNames?: string[];
4
+ isSuppressed?: (line: number) => boolean;
4
5
  };
6
+ /** Builds the shared {functionNames, attributeNames} extraction options from a config. */
7
+ export declare function toClassStringOpts(config: {
8
+ functionNames?: string[];
9
+ attributeNames?: string[];
10
+ }): ClassStringOpts;
5
11
  export declare const SINGLE_CLASS_REGEX: RegExp;
6
- export declare function escapeRegex(s: string): string;
7
12
  export declare function replaceClassStrings(content: string, transform: (s: string) => string, opts?: ClassStringOpts): {
8
13
  result: string;
9
14
  count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"class-strings.d.ts","sourceRoot":"","sources":["../../src/core/class-strings.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAIF,eAAO,MAAM,kBAAkB,QAAiB,CAAC;AAEjD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAmDD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAChC,IAAI,GAAE,eAAoB,GACzB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA6CnC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,eAAoB,GACzB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CtD"}
1
+ {"version":3,"file":"class-strings.d.ts","sourceRoot":"","sources":["../../src/core/class-strings.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C,CAAC;AAEF,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,GAAG,eAAe,CAKlB;AAID,eAAO,MAAM,kBAAkB,QAAiB,CAAC;AAwDjD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAChC,IAAI,GAAE,eAAoB,GACzB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiDnC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,eAAoB,GACzB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CtD"}
@@ -1,13 +1,21 @@
1
+ import { lineAt } from './suppressions.js';
2
+ /** Builds the shared {functionNames, attributeNames} extraction options from a config. */
3
+ export function toClassStringOpts(config) {
4
+ return {
5
+ functionNames: config.functionNames,
6
+ attributeNames: config.attributeNames,
7
+ };
8
+ }
1
9
  const DEFAULT_ATTR_NAMES = ['className'];
2
10
  export const SINGLE_CLASS_REGEX = /[^\s"'`{}]+/g;
3
- export function escapeRegex(s) {
11
+ function escapeRegex(s) {
4
12
  return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
5
13
  }
6
14
  function buildAttrRegex(names) {
7
15
  const alts = names.map(escapeRegex).join('|');
8
16
  return new RegExp(`(${alts})\\s*=\\s*(?:"([^"]+)"|'([^']+)'|\`([^\`]+)\`)`, 'g');
9
17
  }
10
- function transformCallContent(content, start, transform) {
18
+ function transformCallContent(content, start, transform, isSuppressed) {
11
19
  const parts = [];
12
20
  let i = start;
13
21
  let depth = 1;
@@ -24,7 +32,7 @@ function transformCallContent(content, start, transform) {
24
32
  parts.push(ch);
25
33
  i++;
26
34
  }
27
- else if (ch === '"' || ch === "'") {
35
+ else if (ch === '"' || ch === "'" || ch === '`') {
28
36
  const q = ch;
29
37
  let j = i + 1;
30
38
  while (j < content.length && content[j] !== q) {
@@ -33,7 +41,7 @@ function transformCallContent(content, start, transform) {
33
41
  j++;
34
42
  }
35
43
  const raw = content.slice(i + 1, j);
36
- const out = transform(raw);
44
+ const out = isSuppressed?.(lineAt(content, i)) ? raw : transform(raw);
37
45
  if (out !== raw)
38
46
  count++;
39
47
  parts.push(`${q}${out}${q}`);
@@ -52,10 +60,13 @@ export function replaceClassStrings(content, transform, opts = {}) {
52
60
  : DEFAULT_ATTR_NAMES;
53
61
  let result = content;
54
62
  let count = 0;
55
- result = result.replace(buildAttrRegex(attrNames), (_full, attr, dq, sq, bt) => {
63
+ const isSuppressed = opts.isSuppressed;
64
+ result = result.replace(buildAttrRegex(attrNames), (_full, attr, dq, sq, bt, offset) => {
56
65
  const raw = dq ?? sq ?? bt ?? '';
57
66
  const q = dq !== undefined ? '"' : sq !== undefined ? "'" : '`';
58
- const out = transform(raw);
67
+ const out = isSuppressed?.(lineAt(content, offset))
68
+ ? raw
69
+ : transform(raw);
59
70
  if (out !== raw)
60
71
  count++;
61
72
  return `${attr}=${q}${out}${q}`;
@@ -71,7 +82,7 @@ export function replaceClassStrings(content, transform, opts = {}) {
71
82
  if (callStart < pos)
72
83
  continue;
73
84
  buf.push(result.slice(pos, callStart));
74
- const { processed, consumed, count: c, } = transformCallContent(result, callStart, transform);
85
+ const { processed, consumed, count: c, } = transformCallContent(result, callStart, transform, isSuppressed);
75
86
  buf.push(processed);
76
87
  pos = callStart + consumed;
77
88
  count += c;
@@ -107,7 +118,7 @@ export function extractClassStrings(content, opts = {}) {
107
118
  depth--;
108
119
  i++;
109
120
  }
110
- else if (ch === '"' || ch === "'") {
121
+ else if (ch === '"' || ch === "'" || ch === '`') {
111
122
  const q = ch;
112
123
  let j = i + 1;
113
124
  while (j < content.length && content[j] !== q) {
@@ -1 +1 @@
1
- {"version":3,"file":"class-strings.js","sourceRoot":"","sources":["../../src/core/class-strings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-strings.js","sourceRoot":"","sources":["../../src/core/class-strings.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Config } from './rules.js';
2
+ export declare const CONFIG_FILENAME = "tailwind-canonical.config.js";
2
3
  export declare function validateConfig(input: unknown): Config;
3
- export declare function loadConfig(cwd: string): Promise<Config>;
4
+ export { loadConfig } from '../io/config.js';
4
5
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAuDzC,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA0BrD;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,eAAO,MAAM,eAAe,iCAAiC,CAAC;AAgE9D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA+BrD;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,8 +1,5 @@
1
- import { existsSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { pathToFileURL } from 'node:url';
4
1
  import { DEFAULT_SORT_ORDER } from './sorter.js';
5
- const CONFIG_FILENAME = 'tailwind-canonical.config.js';
2
+ export const CONFIG_FILENAME = 'tailwind-canonical.config.js';
6
3
  const KNOWN_KEYS = [
7
4
  'customTextTokens',
8
5
  'customSpacingTokens',
@@ -10,6 +7,9 @@ const KNOWN_KEYS = [
10
7
  'functionNames',
11
8
  'attributeNames',
12
9
  'sortOrder',
10
+ 'extraColorFamilies',
11
+ 'extraScaleProperties',
12
+ 'extraColors',
13
13
  ];
14
14
  const KNOWN_KEY_SET = new Set(KNOWN_KEYS);
15
15
  const SORT_CATEGORIES = new Set(DEFAULT_SORT_ORDER);
@@ -37,6 +37,15 @@ function assertRegExpArray(value, key) {
37
37
  fail(`${key} must be an array of RegExp`);
38
38
  }
39
39
  }
40
+ function assertStringRecord(value, key) {
41
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
42
+ fail(`${key} must be an object mapping strings to strings`);
43
+ }
44
+ for (const [k, v] of Object.entries(value)) {
45
+ if (typeof v !== 'string')
46
+ fail(`${key}[${k}] must be a string`);
47
+ }
48
+ }
40
49
  function assertSortOrder(value) {
41
50
  if (!Array.isArray(value))
42
51
  fail('sortOrder must be an array of category names');
@@ -70,13 +79,13 @@ export function validateConfig(input) {
70
79
  assertStringArray(cfg.attributeNames, 'attributeNames');
71
80
  if ('sortOrder' in cfg)
72
81
  assertSortOrder(cfg.sortOrder);
82
+ if ('extraColorFamilies' in cfg)
83
+ assertStringRecord(cfg.extraColorFamilies, 'extraColorFamilies');
84
+ if ('extraScaleProperties' in cfg)
85
+ assertStringArray(cfg.extraScaleProperties, 'extraScaleProperties');
86
+ if ('extraColors' in cfg)
87
+ assertStringArray(cfg.extraColors, 'extraColors');
73
88
  return cfg;
74
89
  }
75
- export async function loadConfig(cwd) {
76
- const path = join(cwd, CONFIG_FILENAME);
77
- if (!existsSync(path))
78
- return {};
79
- const mod = await import(pathToFileURL(path).href);
80
- return validateConfig(mod.default);
81
- }
90
+ export { loadConfig } from '../io/config.js';
82
91
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -39,8 +39,13 @@ export type ConsistencyOptions = {
39
39
  minCombinationFiles?: number;
40
40
  maxCombinations?: number;
41
41
  minScaleOccurrences?: number;
42
+ /** Extra color → family mappings merged onto the built-in palette. */
43
+ extraColorFamilies?: Record<string, string>;
44
+ /** Extra scale property prefixes (e.g. 'scroll-p') added to the defaults. */
45
+ extraScaleProperties?: string[];
42
46
  };
43
47
  export declare function analyzeConsistency(input: FileClasses[], options?: ConsistencyOptions): ConsistencyReport;
44
48
  export declare function collectClasses(content: string, opts?: ClassStringOpts): string[];
45
- export declare function analyzeConsistencyFiles(filePaths: string[], config?: Config, options?: ConsistencyOptions): ConsistencyReport;
49
+ export declare function toConsistencyOptions(config?: Config): ConsistencyOptions;
50
+ export { analyzeConsistencyFiles } from '../io/consistency.js';
46
51
  //# sourceMappingURL=consistency.d.ts.map