tailwind-canonical 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +85 -9
  2. package/dist/cli/cli.d.ts +9 -1
  3. package/dist/cli/cli.d.ts.map +1 -1
  4. package/dist/cli/cli.js +409 -78
  5. package/dist/cli/cli.js.map +1 -1
  6. package/dist/core/analyzer.d.ts +2 -1
  7. package/dist/core/analyzer.d.ts.map +1 -1
  8. package/dist/core/analyzer.js +5 -15
  9. package/dist/core/analyzer.js.map +1 -1
  10. package/dist/core/class-strings.d.ts +5 -1
  11. package/dist/core/class-strings.d.ts.map +1 -1
  12. package/dist/core/class-strings.js +74 -55
  13. package/dist/core/class-strings.js.map +1 -1
  14. package/dist/core/config.d.ts +3 -2
  15. package/dist/core/config.d.ts.map +1 -1
  16. package/dist/core/config.js +91 -33
  17. package/dist/core/config.js.map +1 -1
  18. package/dist/core/consistency.d.ts +18 -1
  19. package/dist/core/consistency.d.ts.map +1 -1
  20. package/dist/core/consistency.js +76 -110
  21. package/dist/core/consistency.js.map +1 -1
  22. package/dist/core/deduplicator.d.ts +5 -1
  23. package/dist/core/deduplicator.d.ts.map +1 -1
  24. package/dist/core/deduplicator.js +22 -17
  25. package/dist/core/deduplicator.js.map +1 -1
  26. package/dist/core/fixer.d.ts +5 -1
  27. package/dist/core/fixer.d.ts.map +1 -1
  28. package/dist/core/fixer.js +6 -10
  29. package/dist/core/fixer.js.map +1 -1
  30. package/dist/core/lexicon.d.ts +16 -0
  31. package/dist/core/lexicon.d.ts.map +1 -0
  32. package/dist/core/lexicon.js +139 -0
  33. package/dist/core/lexicon.js.map +1 -0
  34. package/dist/core/merger.d.ts +5 -1
  35. package/dist/core/merger.d.ts.map +1 -1
  36. package/dist/core/merger.js +3 -8
  37. package/dist/core/merger.js.map +1 -1
  38. package/dist/core/rules.d.ts +17 -0
  39. package/dist/core/rules.d.ts.map +1 -1
  40. package/dist/core/rules.js +18 -9
  41. package/dist/core/rules.js.map +1 -1
  42. package/dist/core/scanner.d.ts +5 -2
  43. package/dist/core/scanner.d.ts.map +1 -1
  44. package/dist/core/scanner.js +12 -80
  45. package/dist/core/scanner.js.map +1 -1
  46. package/dist/core/sorter.d.ts +5 -1
  47. package/dist/core/sorter.d.ts.map +1 -1
  48. package/dist/core/sorter.js +9 -10
  49. package/dist/core/sorter.js.map +1 -1
  50. package/dist/core/suppressions.d.ts +4 -0
  51. package/dist/core/suppressions.d.ts.map +1 -1
  52. package/dist/core/suppressions.js +10 -4
  53. package/dist/core/suppressions.js.map +1 -1
  54. package/dist/core/typos.d.ts +14 -0
  55. package/dist/core/typos.d.ts.map +1 -0
  56. package/dist/core/typos.js +71 -0
  57. package/dist/core/typos.js.map +1 -0
  58. package/dist/eslint/plugin.d.ts +3 -95
  59. package/dist/eslint/plugin.d.ts.map +1 -1
  60. package/dist/eslint/plugin.js +68 -31
  61. package/dist/eslint/plugin.js.map +1 -1
  62. package/dist/index.d.ts +5 -5
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +11 -4
  65. package/dist/index.js.map +1 -1
  66. package/dist/io/analyzer.d.ts +4 -0
  67. package/dist/io/analyzer.d.ts.map +1 -0
  68. package/dist/io/analyzer.js +7 -0
  69. package/dist/io/analyzer.js.map +1 -0
  70. package/dist/io/config.d.ts +3 -0
  71. package/dist/io/config.d.ts.map +1 -0
  72. package/dist/io/config.js +13 -0
  73. package/dist/io/config.js.map +1 -0
  74. package/dist/io/consistency.d.ts +4 -0
  75. package/dist/io/consistency.d.ts.map +1 -0
  76. package/dist/io/consistency.js +21 -0
  77. package/dist/io/consistency.js.map +1 -0
  78. package/dist/io/deduplicator.d.ts +3 -0
  79. package/dist/io/deduplicator.d.ts.map +1 -0
  80. package/dist/io/deduplicator.js +10 -0
  81. package/dist/io/deduplicator.js.map +1 -0
  82. package/dist/io/fixer.d.ts +3 -0
  83. package/dist/io/fixer.d.ts.map +1 -0
  84. package/dist/io/fixer.js +10 -0
  85. package/dist/io/fixer.js.map +1 -0
  86. package/dist/io/merger.d.ts +3 -0
  87. package/dist/io/merger.d.ts.map +1 -0
  88. package/dist/io/merger.js +17 -0
  89. package/dist/io/merger.js.map +1 -0
  90. package/dist/io/scanner.d.ts +4 -0
  91. package/dist/io/scanner.d.ts.map +1 -0
  92. package/dist/io/scanner.js +84 -0
  93. package/dist/io/scanner.js.map +1 -0
  94. package/dist/io/sorter.d.ts +4 -0
  95. package/dist/io/sorter.d.ts.map +1 -0
  96. package/dist/io/sorter.js +10 -0
  97. package/dist/io/sorter.js.map +1 -0
  98. package/dist/io/typos.d.ts +4 -0
  99. package/dist/io/typos.d.ts.map +1 -0
  100. package/dist/io/typos.js +7 -0
  101. package/dist/io/typos.js.map +1 -0
  102. package/package.json +22 -13
@@ -0,0 +1,139 @@
1
+ export const TAILWIND_COLORS = new Set([
2
+ 'slate',
3
+ 'gray',
4
+ 'zinc',
5
+ 'neutral',
6
+ 'stone',
7
+ 'red',
8
+ 'orange',
9
+ 'amber',
10
+ 'yellow',
11
+ 'lime',
12
+ 'green',
13
+ 'emerald',
14
+ 'teal',
15
+ 'cyan',
16
+ 'sky',
17
+ 'blue',
18
+ 'indigo',
19
+ 'violet',
20
+ 'purple',
21
+ 'fuchsia',
22
+ 'pink',
23
+ 'rose',
24
+ 'black',
25
+ 'white',
26
+ 'transparent',
27
+ 'current',
28
+ 'inherit',
29
+ ]);
30
+ const COLOR_PROPERTIES = new Set([
31
+ 'text',
32
+ 'bg',
33
+ 'border',
34
+ 'ring',
35
+ 'ring-offset',
36
+ 'divide',
37
+ 'outline',
38
+ 'fill',
39
+ 'stroke',
40
+ 'from',
41
+ 'via',
42
+ 'to',
43
+ 'decoration',
44
+ 'accent',
45
+ 'caret',
46
+ 'shadow',
47
+ 'placeholder',
48
+ ]);
49
+ export const COLOR_FAMILIES = {
50
+ red: 'red',
51
+ rose: 'red',
52
+ pink: 'red',
53
+ orange: 'orange',
54
+ amber: 'orange',
55
+ yellow: 'yellow',
56
+ lime: 'yellow',
57
+ green: 'green',
58
+ emerald: 'green',
59
+ teal: 'green',
60
+ blue: 'blue',
61
+ sky: 'blue',
62
+ cyan: 'blue',
63
+ indigo: 'blue',
64
+ purple: 'purple',
65
+ violet: 'purple',
66
+ fuchsia: 'purple',
67
+ gray: 'gray',
68
+ slate: 'gray',
69
+ zinc: 'gray',
70
+ neutral: 'gray',
71
+ stone: 'gray',
72
+ };
73
+ function stripVariants(cls) {
74
+ const idx = cls.lastIndexOf(':');
75
+ return idx === -1 ? cls : cls.slice(idx + 1);
76
+ }
77
+ /**
78
+ * Parses a color utility class into its property, color name and (optional)
79
+ * numeric shade. Strips leading variants (`hover:` …). Returns `null` when the
80
+ * class is not a color utility (unknown property, arbitrary `[..]` value, or no
81
+ * color segment). A trailing dash-separated numeric segment becomes the shade;
82
+ * otherwise `shade` is `''`. Shared by `typos.ts` and `consistency.ts`.
83
+ */
84
+ export function parseColorClass(cls) {
85
+ const base = stripVariants(cls);
86
+ if (base.includes('['))
87
+ return null;
88
+ const firstDash = base.indexOf('-');
89
+ if (firstDash === -1)
90
+ return null;
91
+ let property = base.slice(0, firstDash);
92
+ const secondDash = base.indexOf('-', firstDash + 1);
93
+ if (secondDash !== -1) {
94
+ const twoWord = base.slice(0, secondDash);
95
+ if (COLOR_PROPERTIES.has(twoWord))
96
+ property = twoWord;
97
+ }
98
+ if (!COLOR_PROPERTIES.has(property))
99
+ return null;
100
+ const rest = base.slice(property.length + 1);
101
+ if (rest === '')
102
+ return null;
103
+ const lastDash = rest.lastIndexOf('-');
104
+ if (lastDash !== -1 && /^\d+$/.test(rest.slice(lastDash + 1))) {
105
+ return {
106
+ property,
107
+ color: rest.slice(0, lastDash),
108
+ shade: rest.slice(lastDash + 1),
109
+ };
110
+ }
111
+ return { property, color: rest, shade: '' };
112
+ }
113
+ export const SCALE_PROPERTIES = new Set([
114
+ 'p',
115
+ 'px',
116
+ 'py',
117
+ 'pt',
118
+ 'pr',
119
+ 'pb',
120
+ 'pl',
121
+ 'ps',
122
+ 'pe',
123
+ 'm',
124
+ 'mx',
125
+ 'my',
126
+ 'mt',
127
+ 'mr',
128
+ 'mb',
129
+ 'ml',
130
+ 'ms',
131
+ 'me',
132
+ 'gap',
133
+ 'gap-x',
134
+ 'gap-y',
135
+ 'space-x',
136
+ 'space-y',
137
+ 'z',
138
+ ]);
139
+ //# sourceMappingURL=lexicon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexicon.js","sourceRoot":"","sources":["../../src/core/lexicon.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  import { type ClassStringOpts } from './class-strings.js';
2
- export declare function mergeFile(filePath: string, opts?: ClassStringOpts): Promise<number>;
2
+ export declare function mergeContent(content: string, twMerge: (classes: string) => string, opts?: ClassStringOpts): {
3
+ result: string;
4
+ count: number;
5
+ };
6
+ export { mergeFile } from '../io/merger.js';
3
7
  //# sourceMappingURL=merger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,oBAAoB,CAAC;AAG/E,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,MAAM,CAAC,CASjB"}
1
+ {"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,oBAAoB,CAAC;AAG/E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EACpC,IAAI,GAAE,eAAoB,GACzB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKnC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,15 +1,10 @@
1
- import { readFileSync, writeFileSync } from 'node:fs';
2
1
  import { replaceClassStrings } from './class-strings.js';
3
2
  import { makeLineSuppressor } from './suppressions.js';
4
- export async function mergeFile(filePath, opts = {}) {
5
- const { twMerge } = await import('tailwind-merge');
6
- const content = readFileSync(filePath, 'utf8');
7
- const { result, count } = replaceClassStrings(content, twMerge, {
3
+ export function mergeContent(content, twMerge, opts = {}) {
4
+ return replaceClassStrings(content, twMerge, {
8
5
  ...opts,
9
6
  isSuppressed: makeLineSuppressor(content),
10
7
  });
11
- if (count > 0)
12
- writeFileSync(filePath, result, 'utf8');
13
- return count;
14
8
  }
9
+ export { mergeFile } from '../io/merger.js';
15
10
  //# sourceMappingURL=merger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAwB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAgB,EAChB,OAAwB,EAAE;IAE1B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;QAC9D,GAAG,IAAI;QACP,YAAY,EAAE,kBAAkB,CAAC,OAAO,CAAC;KAC1C,CAAC,CAAC;IACH,IAAI,KAAK,GAAG,CAAC;QAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,OAAoC,EACpC,OAAwB,EAAE;IAE1B,OAAO,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;QAC3C,GAAG,IAAI;QACP,YAAY,EAAE,kBAAkB,CAAC,OAAO,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -4,6 +4,15 @@ export type Suggestion = {
4
4
  canonical: string;
5
5
  isCustomToken: boolean;
6
6
  };
7
+ type AnalyzeConfig = {
8
+ minRareScalePropertyOccurrences?: number;
9
+ rareScaleMaxFiles?: number;
10
+ rareScaleMaxCount?: number;
11
+ maxScaleGroups?: number;
12
+ maxScaleValues?: number;
13
+ maxRareValues?: number;
14
+ maxPatterns?: number;
15
+ };
7
16
  export type Config = {
8
17
  customTextTokens?: Record<number, string>;
9
18
  customSpacingTokens?: Record<number, string>;
@@ -11,6 +20,14 @@ export type Config = {
11
20
  functionNames?: string[];
12
21
  attributeNames?: string[];
13
22
  sortOrder?: SortCategory[];
23
+ extraColorFamilies?: Record<string, string>;
24
+ extraScaleProperties?: string[];
25
+ extraColors?: string[];
26
+ analyze?: AnalyzeConfig;
27
+ minRareScalePropertyOccurrences?: number;
28
+ rareScaleMaxFiles?: number;
29
+ rareScaleMaxCount?: number;
14
30
  };
15
31
  export declare function suggestCanonical(cls: string, config?: Config): Suggestion | null;
32
+ export {};
16
33
  //# sourceMappingURL=rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAsHF,MAAM,MAAM,MAAM,GAAG;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;CAC5B,CAAC;AAcF,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAW,GAClB,UAAU,GAAG,IAAI,CAyHnB"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA0HF,MAAM,MAAM,MAAM,GAAG;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAeF,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAW,GAClB,UAAU,GAAG,IAAI,CA2HnB"}
@@ -1,8 +1,4 @@
1
1
  const TEXT_SIZE_MAP = {
2
- 8: '3xs',
3
- 9: '3xs',
4
- 10: '3xs',
5
- 11: '2xs',
6
2
  12: 'xs',
7
3
  14: 'sm',
8
4
  16: 'base',
@@ -14,8 +10,12 @@ const TEXT_SIZE_MAP = {
14
10
  48: '5xl',
15
11
  60: '6xl',
16
12
  72: '7xl',
13
+ 96: '8xl',
14
+ 128: '9xl',
17
15
  };
18
- const BUILT_IN_TEXT_PX = new Set([12, 14, 16, 18, 20, 24, 30, 36, 48, 60, 72]);
16
+ const BUILT_IN_TEXT_PX = new Set([
17
+ 12, 14, 16, 18, 20, 24, 30, 36, 48, 60, 72, 96, 128,
18
+ ]);
19
19
  const ROUNDED_MAP = {
20
20
  2: 'sm',
21
21
  4: 'sm',
@@ -98,11 +98,13 @@ const SPACING_PREFIXES = [
98
98
  ];
99
99
  const SPACING_PX_RE = new RegExp(`^(${SPACING_PREFIXES.join('|')})-\\[(\\d+)px\\]$`);
100
100
  const SPACING_REM_RE = new RegExp(`^(${SPACING_PREFIXES.join('|')})-\\[(\\d+(?:\\.\\d+)?)rem\\]$`);
101
+ const FRACTION_RE = new RegExp(`^(${FRACTION_PREFIXES.join('|')})-\\[(\\d+(?:\\.\\d+)?)%\\]$`);
101
102
  const OPACITY_SCALE = new Set([
102
103
  0, 5, 10, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90, 95, 100,
103
104
  ]);
104
105
  function remToPx(rem) {
105
- return Math.round(rem * 16);
106
+ const px = rem * 16;
107
+ return Number.isInteger(px) ? px : null;
106
108
  }
107
109
  function isIgnored(cls, patterns) {
108
110
  if (!patterns)
@@ -134,6 +136,8 @@ export function suggestCanonical(cls, config = {}) {
134
136
  const textRemMatch = cls.match(/^text-\[(\d+(?:\.\d+)?)rem\]$/);
135
137
  if (textRemMatch) {
136
138
  const px = remToPx(parseFloat(textRemMatch[1]));
139
+ if (px === null)
140
+ return null;
137
141
  const token = textTokens[px];
138
142
  if (!token)
139
143
  return null;
@@ -169,6 +173,8 @@ export function suggestCanonical(cls, config = {}) {
169
173
  if (spacingRemMatch) {
170
174
  const prefix = spacingRemMatch[1];
171
175
  const px = remToPx(parseFloat(spacingRemMatch[2]));
176
+ if (px === null)
177
+ return null;
172
178
  if (spacingTokens[px]) {
173
179
  return {
174
180
  original: cls,
@@ -186,8 +192,7 @@ export function suggestCanonical(cls, config = {}) {
186
192
  return null;
187
193
  }
188
194
  // w/h/inset/etc-[N.N%]
189
- const fractionPrefixPattern = FRACTION_PREFIXES.join('|');
190
- const fractionMatch = cls.match(new RegExp(`^(${fractionPrefixPattern})-\\[([\\d.]+)%\\]$`));
195
+ const fractionMatch = cls.match(FRACTION_RE);
191
196
  if (fractionMatch) {
192
197
  const prefix = fractionMatch[1];
193
198
  const pct = fractionMatch[2];
@@ -204,7 +209,11 @@ export function suggestCanonical(cls, config = {}) {
204
209
  const opacityMatch = cls.match(/^opacity-\[(\d+(?:\.\d+)?)\]$/);
205
210
  if (opacityMatch) {
206
211
  const raw = parseFloat(opacityMatch[1]);
207
- const value = raw <= 1 ? Math.round(raw * 100) : Math.round(raw);
212
+ // CSS opacity is a 0..1 fraction; a bare value > 1 clamps to 1 and is not
213
+ // equivalent to opacity-<N> (a percentage), so leave it untouched.
214
+ if (raw > 1)
215
+ return null;
216
+ const value = Math.round(raw * 100);
208
217
  if (!OPACITY_SCALE.has(value))
209
218
  return null;
210
219
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
+ export declare const DEFAULT_EXTENSIONS: string[];
2
+ export declare const DEFAULT_IGNORE: string[];
1
3
  export type ScanOptions = {
2
4
  extensions?: string[];
3
5
  ignore?: string[];
4
6
  };
5
- export declare function scanFiles(target: string, options?: ScanOptions): string[];
6
- export declare function resolveTargets(patterns: string[], options?: ScanOptions): Promise<string[]>;
7
+ export declare function isGlob(target: string): boolean;
8
+ export declare function globToRegex(pattern: string): RegExp;
9
+ export { resolveTargets, scanFiles } from '../io/scanner.js';
7
10
  //# sourceMappingURL=scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AA8CF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,EAAE,CA4B7E;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CA+CnB"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,UAO9B,CAAC;AACF,eAAO,MAAM,cAAc,UAO1B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsCnD;AAED,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,8 +1,12 @@
1
- import { readdirSync, statSync } from 'node:fs';
2
- import { glob } from 'node:fs/promises';
3
- import { join } from 'node:path';
4
- const DEFAULT_EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js', '.vue', '.svelte'];
5
- const DEFAULT_IGNORE = [
1
+ export const DEFAULT_EXTENSIONS = [
2
+ '.tsx',
3
+ '.ts',
4
+ '.jsx',
5
+ '.js',
6
+ '.vue',
7
+ '.svelte',
8
+ ];
9
+ export const DEFAULT_IGNORE = [
6
10
  'node_modules',
7
11
  '.next',
8
12
  'dist',
@@ -10,10 +14,10 @@ const DEFAULT_IGNORE = [
10
14
  'build',
11
15
  'coverage',
12
16
  ];
13
- function isGlob(target) {
17
+ export function isGlob(target) {
14
18
  return target.includes('*') || target.includes('?') || target.includes('{');
15
19
  }
16
- function globToRegex(pattern) {
20
+ export function globToRegex(pattern) {
17
21
  let i = 0;
18
22
  const anchored = pattern.startsWith('/') || /^[A-Za-z]:/.test(pattern);
19
23
  let re = anchored ? '^' : '(?:^|/)';
@@ -59,77 +63,5 @@ function globToRegex(pattern) {
59
63
  }
60
64
  return new RegExp(`${re}$`);
61
65
  }
62
- export function scanFiles(target, options = {}) {
63
- const ignore = options.ignore ?? DEFAULT_IGNORE;
64
- const extensions = options.extensions ?? DEFAULT_EXTENSIONS;
65
- const files = [];
66
- function walk(current) {
67
- let entries;
68
- try {
69
- entries = readdirSync(current, { withFileTypes: true });
70
- }
71
- catch {
72
- return;
73
- }
74
- for (const entry of entries) {
75
- if (ignore.includes(entry.name))
76
- continue;
77
- const full = join(current, entry.name);
78
- if (entry.isDirectory()) {
79
- walk(full);
80
- }
81
- else if (extensions.some((ext) => entry.name.endsWith(ext))) {
82
- files.push(full);
83
- }
84
- }
85
- }
86
- const stat = statSync(target);
87
- if (stat.isFile())
88
- return extensions.some((ext) => target.endsWith(ext)) ? [target] : [];
89
- walk(target);
90
- return files;
91
- }
92
- export async function resolveTargets(patterns, options = {}) {
93
- const ignore = options.ignore ?? DEFAULT_IGNORE;
94
- const extensions = options.extensions ?? DEFAULT_EXTENSIONS;
95
- const positive = [];
96
- const negativeRegexes = [];
97
- for (const p of patterns) {
98
- if (p.startsWith('!')) {
99
- negativeRegexes.push(globToRegex(p.slice(1)));
100
- }
101
- else {
102
- positive.push(p);
103
- }
104
- }
105
- const files = new Set();
106
- for (const pattern of positive) {
107
- if (isGlob(pattern)) {
108
- for await (const f of glob(pattern, {
109
- exclude: (f) => f
110
- .replace(/\\/g, '/')
111
- .split('/')
112
- .some((s) => ignore.includes(s)),
113
- })) {
114
- if (extensions.some((ext) => f.endsWith(ext))) {
115
- files.add(f);
116
- }
117
- }
118
- }
119
- else {
120
- for (const f of scanFiles(pattern, options)) {
121
- files.add(f);
122
- }
123
- }
124
- }
125
- if (negativeRegexes.length > 0) {
126
- for (const f of [...files]) {
127
- const normalized = f.replace(/\\/g, '/');
128
- if (negativeRegexes.some((re) => re.test(normalized))) {
129
- files.delete(f);
130
- }
131
- }
132
- }
133
- return [...files].sort();
134
- }
66
+ export { resolveTargets, scanFiles } from '../io/scanner.js';
135
67
  //# sourceMappingURL=scanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;CACV,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc;IACd,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,UAAU;CACX,CAAC;AAOF,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACpC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACxC,EAAE,IAAI,IAAI,CAAC;YACX,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,EAAE,IAAI,OAAO,CAAC;YACd,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,EAAE,IAAI,MAAM,CAAC;YACb,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,EAAE,IAAI,KAAK,CAAC;gBACZ,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,OAAO;qBACjB,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;qBACnB,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;gBACtD,EAAE,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9B,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,EAAE,IAAI,CAAC,CAAC;YACR,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
@@ -2,5 +2,9 @@ import { type ClassStringOpts } from './class-strings.js';
2
2
  export type SortCategory = 'layout' | 'position' | 'inset' | 'display' | 'flex-grid' | 'sizing' | 'border' | 'spacing' | 'typography' | 'colors' | 'effects' | 'transitions' | 'transforms' | 'interactivity' | 'accessibility';
3
3
  export declare const DEFAULT_SORT_ORDER: SortCategory[];
4
4
  export declare function sortClasses(classStr: string, sortOrder?: SortCategory[]): string;
5
- export declare function sortFile(filePath: string, opts?: ClassStringOpts, sortOrder?: SortCategory[]): number;
5
+ export declare function sortContent(content: string, opts?: ClassStringOpts, sortOrder?: SortCategory[]): {
6
+ result: string;
7
+ count: number;
8
+ };
9
+ export { sortFile } from '../io/sorter.js';
6
10
  //# sourceMappingURL=sorter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sorter.d.ts","sourceRoot":"","sources":["../../src/core/sorter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,oBAAoB,CAAC;AAkE/E,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,aAAa,GACb,YAAY,GACZ,eAAe,GACf,eAAe,CAAC;AAEpB,eAAO,MAAM,kBAAkB,EAAE,YAAY,EAgB5C,CAAC;AA8EF,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,YAAY,EAAE,GACzB,MAAM,CAsBR;AAED,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,eAAoB,EAC1B,SAAS,CAAC,EAAE,YAAY,EAAE,GACzB,MAAM,CASR"}
1
+ {"version":3,"file":"sorter.d.ts","sourceRoot":"","sources":["../../src/core/sorter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,oBAAoB,CAAC;AAkE/E,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,aAAa,GACb,YAAY,GACZ,eAAe,GACf,eAAe,CAAC;AAEpB,eAAO,MAAM,kBAAkB,EAAE,YAAY,EAgB5C,CAAC;AA8EF,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,YAAY,EAAE,GACzB,MAAM,CAsBR;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,eAAoB,EAC1B,SAAS,CAAC,EAAE,YAAY,EAAE,GACzB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKnC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,4 +1,3 @@
1
- import { readFileSync, writeFileSync } from 'node:fs';
2
1
  import { replaceClassStrings } from './class-strings.js';
3
2
  import { makeLineSuppressor } from './suppressions.js';
4
3
  const DISPLAY_CLASSES = new Set([
@@ -126,10 +125,10 @@ function buildRank(order) {
126
125
  function getVariantOrder(cls) {
127
126
  if (!cls.includes(':'))
128
127
  return 0;
129
- const prefix = cls.slice(0, cls.lastIndexOf(':'));
130
- if (RE_BREAKPOINTS.test(prefix))
128
+ const segments = cls.slice(0, cls.lastIndexOf(':')).split(':');
129
+ if (segments.some((s) => RE_BREAKPOINTS.test(s)))
131
130
  return 1;
132
- if (/^(dark|print)$/.test(prefix))
131
+ if (segments.some((s) => /^(dark|print)$/.test(s)))
133
132
  return 2;
134
133
  return 3;
135
134
  }
@@ -157,11 +156,11 @@ export function sortClasses(classStr, sortOrder) {
157
156
  .map((x) => x.cls)
158
157
  .join(' ');
159
158
  }
160
- export function sortFile(filePath, opts = {}, sortOrder) {
161
- const content = readFileSync(filePath, 'utf8');
162
- const { result, count } = replaceClassStrings(content, (s) => sortClasses(s, sortOrder), { ...opts, isSuppressed: makeLineSuppressor(content) });
163
- if (count > 0)
164
- writeFileSync(filePath, result, 'utf8');
165
- return count;
159
+ export function sortContent(content, opts = {}, sortOrder) {
160
+ return replaceClassStrings(content, (s) => sortClasses(s, sortOrder), {
161
+ ...opts,
162
+ isSuppressed: makeLineSuppressor(content),
163
+ });
166
164
  }
165
+ export { sortFile } from '../io/sorter.js';
167
166
  //# sourceMappingURL=sorter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sorter.js","sourceRoot":"","sources":["../../src/core/sorter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sorter.js","sourceRoot":"","sources":["../../src/core/sorter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  export declare function getSuppressedLines(content: string): Set<number>;
2
2
  export declare function makeLineSuppressor(content: string): (line: number) => boolean;
3
+ export declare function indexToLineCol(content: string, index: number): {
4
+ line: number;
5
+ col: number;
6
+ };
3
7
  export declare function lineAt(content: string, offset: number): number;
4
8
  //# sourceMappingURL=suppressions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../src/core/suppressions.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAqB/D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAG7E;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO9D"}
1
+ {"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../src/core/suppressions.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAqB/D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAG7E;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAW/B;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9D"}
@@ -26,13 +26,19 @@ export function makeLineSuppressor(content) {
26
26
  const suppressed = getSuppressedLines(content);
27
27
  return (line) => suppressed.has(line);
28
28
  }
29
- export function lineAt(content, offset) {
29
+ export function indexToLineCol(content, index) {
30
30
  let line = 1;
31
- const end = Math.min(offset, content.length);
31
+ let lastNewline = -1;
32
+ const end = Math.min(index, content.length);
32
33
  for (let i = 0; i < end; i++) {
33
- if (content[i] === '\n')
34
+ if (content[i] === '\n') {
34
35
  line++;
36
+ lastNewline = i;
37
+ }
35
38
  }
36
- return line;
39
+ return { line, col: index - lastNewline };
40
+ }
41
+ export function lineAt(content, offset) {
42
+ return indexToLineCol(content, offset).line;
37
43
  }
38
44
  //# sourceMappingURL=suppressions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/core/suppressions.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AACjE,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAC7C,MAAM,MAAM,GAAG,2BAA2B,CAAC;AAE3C,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAED,IAAI,KAAK;YAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,MAAc;IACpD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/core/suppressions.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AACjE,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAC7C,MAAM,MAAM,GAAG,2BAA2B,CAAC;AAE3C,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAED,IAAI,KAAK;YAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,KAAa;IAEb,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC;YACP,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,MAAc;IACpD,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Config } from './rules.js';
2
+ export type TypoFinding = {
3
+ file: string;
4
+ line: number;
5
+ col: number;
6
+ original: string;
7
+ suggestion: string;
8
+ };
9
+ export declare function detectTypo(cls: string, extraColors?: ReadonlySet<string>): {
10
+ suggestion: string;
11
+ } | null;
12
+ export declare function analyzeTyposContent(filePath: string, content: string, config?: Config): TypoFinding[];
13
+ export { analyzeTyposFile } from '../io/typos.js';
14
+ //# sourceMappingURL=typos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typos.d.ts","sourceRoot":"","sources":["../../src/core/typos.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA4BF,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAC3C;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAe/B;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAW,GAClB,WAAW,EAAE,CAwBf;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}