eslint-plugin-better-tailwindcss 3.3.0 → 3.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 (164) hide show
  1. package/README.md +2 -2
  2. package/lib/cjs/configs/config.d.ts +8 -4
  3. package/lib/cjs/configs/config.d.ts.map +1 -1
  4. package/lib/cjs/configs/config.js +12 -8
  5. package/lib/cjs/configs/config.js.map +1 -1
  6. package/lib/cjs/parsers/es.d.ts +2 -1
  7. package/lib/cjs/parsers/es.d.ts.map +1 -1
  8. package/lib/cjs/parsers/es.js +14 -1
  9. package/lib/cjs/parsers/es.js.map +1 -1
  10. package/lib/cjs/rules/deprecated/multiline.d.ts +3 -0
  11. package/lib/cjs/rules/deprecated/multiline.d.ts.map +1 -0
  12. package/lib/cjs/rules/deprecated/multiline.js +27 -0
  13. package/lib/cjs/rules/deprecated/multiline.js.map +1 -0
  14. package/lib/cjs/rules/deprecated/sort-classes.d.ts +3 -0
  15. package/lib/cjs/rules/deprecated/sort-classes.d.ts.map +1 -0
  16. package/lib/cjs/rules/deprecated/sort-classes.js +26 -0
  17. package/lib/cjs/rules/deprecated/sort-classes.js.map +1 -0
  18. package/lib/cjs/rules/enforce-consistent-class-order.d.ts +19 -0
  19. package/lib/cjs/rules/enforce-consistent-class-order.d.ts.map +1 -0
  20. package/lib/cjs/rules/enforce-consistent-class-order.js +157 -0
  21. package/lib/cjs/rules/enforce-consistent-class-order.js.map +1 -0
  22. package/lib/cjs/rules/enforce-consistent-line-wrapping.d.ts +15 -0
  23. package/lib/cjs/rules/enforce-consistent-line-wrapping.d.ts.map +1 -0
  24. package/lib/cjs/rules/enforce-consistent-line-wrapping.js +566 -0
  25. package/lib/cjs/rules/enforce-consistent-line-wrapping.js.map +1 -0
  26. package/lib/cjs/rules/multiline.d.ts +1 -1
  27. package/lib/cjs/rules/no-restricted-classes.d.ts +6 -4
  28. package/lib/cjs/rules/no-restricted-classes.d.ts.map +1 -1
  29. package/lib/cjs/rules/no-restricted-classes.js +28 -3
  30. package/lib/cjs/rules/no-restricted-classes.js.map +1 -1
  31. package/lib/cjs/rules/no-unnecessary-whitespace.js +1 -1
  32. package/lib/cjs/rules/no-unnecessary-whitespace.js.map +1 -1
  33. package/lib/cjs/rules/sort-classes.d.ts.map +1 -1
  34. package/lib/cjs/rules/sort-classes.js +7 -1
  35. package/lib/cjs/rules/sort-classes.js.map +1 -1
  36. package/lib/cjs/tailwindcss/class-order.js +2 -2
  37. package/lib/cjs/tailwindcss/config.js +2 -2
  38. package/lib/cjs/tailwindcss/config.v3.js +1 -1
  39. package/lib/cjs/tailwindcss/config.v4.js +2 -2
  40. package/lib/cjs/tailwindcss/conflicting-classes.js +2 -2
  41. package/lib/cjs/tailwindcss/custom-component-classes.js +2 -2
  42. package/lib/cjs/tailwindcss/prefix.js +3 -3
  43. package/lib/cjs/tailwindcss/unregistered-classes.js +2 -2
  44. package/lib/cjs/utils/matchers.d.ts.map +1 -1
  45. package/lib/cjs/utils/matchers.js +1 -1
  46. package/lib/cjs/utils/matchers.js.map +1 -1
  47. package/lib/esm/configs/config.d.ts +8 -4
  48. package/lib/esm/configs/config.d.ts.map +1 -1
  49. package/lib/esm/configs/config.js +12 -8
  50. package/lib/esm/configs/config.js.map +1 -1
  51. package/lib/esm/parsers/es.d.ts +2 -1
  52. package/lib/esm/parsers/es.d.ts.map +1 -1
  53. package/lib/esm/parsers/es.js +13 -1
  54. package/lib/esm/parsers/es.js.map +1 -1
  55. package/lib/esm/rules/deprecated/multiline.d.ts +3 -0
  56. package/lib/esm/rules/deprecated/multiline.d.ts.map +1 -0
  57. package/lib/esm/rules/deprecated/multiline.js +24 -0
  58. package/lib/esm/rules/deprecated/multiline.js.map +1 -0
  59. package/lib/esm/rules/deprecated/sort-classes.d.ts +3 -0
  60. package/lib/esm/rules/deprecated/sort-classes.d.ts.map +1 -0
  61. package/lib/esm/rules/deprecated/sort-classes.js +23 -0
  62. package/lib/esm/rules/deprecated/sort-classes.js.map +1 -0
  63. package/lib/esm/rules/enforce-consistent-class-order.d.ts +19 -0
  64. package/lib/esm/rules/enforce-consistent-class-order.d.ts.map +1 -0
  65. package/lib/esm/rules/enforce-consistent-class-order.js +153 -0
  66. package/lib/esm/rules/enforce-consistent-class-order.js.map +1 -0
  67. package/lib/esm/rules/enforce-consistent-line-wrapping.d.ts +15 -0
  68. package/lib/esm/rules/enforce-consistent-line-wrapping.d.ts.map +1 -0
  69. package/lib/esm/rules/enforce-consistent-line-wrapping.js +563 -0
  70. package/lib/esm/rules/enforce-consistent-line-wrapping.js.map +1 -0
  71. package/lib/esm/rules/multiline.d.ts +1 -1
  72. package/lib/esm/rules/no-restricted-classes.d.ts +6 -4
  73. package/lib/esm/rules/no-restricted-classes.d.ts.map +1 -1
  74. package/lib/esm/rules/no-restricted-classes.js +29 -4
  75. package/lib/esm/rules/no-restricted-classes.js.map +1 -1
  76. package/lib/esm/rules/no-unnecessary-whitespace.js +1 -1
  77. package/lib/esm/rules/no-unnecessary-whitespace.js.map +1 -1
  78. package/lib/esm/rules/sort-classes.d.ts.map +1 -1
  79. package/lib/esm/rules/sort-classes.js +7 -1
  80. package/lib/esm/rules/sort-classes.js.map +1 -1
  81. package/lib/esm/tailwindcss/class-order.js +2 -2
  82. package/lib/esm/tailwindcss/config.js +2 -2
  83. package/lib/esm/tailwindcss/config.v3.js +1 -1
  84. package/lib/esm/tailwindcss/config.v4.js +2 -2
  85. package/lib/esm/tailwindcss/conflicting-classes.js +2 -2
  86. package/lib/esm/tailwindcss/custom-component-classes.js +2 -2
  87. package/lib/esm/tailwindcss/prefix.js +3 -3
  88. package/lib/esm/tailwindcss/unregistered-classes.js +2 -2
  89. package/lib/esm/utils/matchers.d.ts.map +1 -1
  90. package/lib/esm/utils/matchers.js +2 -2
  91. package/lib/esm/utils/matchers.js.map +1 -1
  92. package/package.json +5 -5
  93. package/lib/cjs/tailwindcss/custom-component-classes.v3.d.ts +0 -3
  94. package/lib/cjs/tailwindcss/custom-component-classes.v3.d.ts.map +0 -1
  95. package/lib/cjs/tailwindcss/custom-component-classes.v3.js +0 -7
  96. package/lib/cjs/tailwindcss/custom-component-classes.v3.js.map +0 -1
  97. package/lib/cjs/tailwindcss/custom-component-classes.v4.d.ts +0 -3
  98. package/lib/cjs/tailwindcss/custom-component-classes.v4.d.ts.map +0 -1
  99. package/lib/cjs/tailwindcss/custom-component-classes.v4.js +0 -37
  100. package/lib/cjs/tailwindcss/custom-component-classes.v4.js.map +0 -1
  101. package/lib/cjs/utils/cache.d.ts +0 -4
  102. package/lib/cjs/utils/cache.d.ts.map +0 -1
  103. package/lib/cjs/utils/cache.js +0 -29
  104. package/lib/cjs/utils/cache.js.map +0 -1
  105. package/lib/cjs/utils/fs.d.ts +0 -3
  106. package/lib/cjs/utils/fs.d.ts.map +0 -1
  107. package/lib/cjs/utils/fs.js +0 -36
  108. package/lib/cjs/utils/fs.js.map +0 -1
  109. package/lib/cjs/utils/module.d.ts +0 -3
  110. package/lib/cjs/utils/module.d.ts.map +0 -1
  111. package/lib/cjs/utils/module.js +0 -11
  112. package/lib/cjs/utils/module.js.map +0 -1
  113. package/lib/cjs/utils/platform.d.ts +0 -2
  114. package/lib/cjs/utils/platform.d.ts.map +0 -1
  115. package/lib/cjs/utils/platform.js +0 -7
  116. package/lib/cjs/utils/platform.js.map +0 -1
  117. package/lib/cjs/utils/resolvers.d.ts +0 -6
  118. package/lib/cjs/utils/resolvers.d.ts.map +0 -1
  119. package/lib/cjs/utils/resolvers.js +0 -38
  120. package/lib/cjs/utils/resolvers.js.map +0 -1
  121. package/lib/cjs/utils/version.d.ts +0 -15
  122. package/lib/cjs/utils/version.d.ts.map +0 -1
  123. package/lib/cjs/utils/version.js +0 -37
  124. package/lib/cjs/utils/version.js.map +0 -1
  125. package/lib/cjs/utils/worker.d.ts +0 -3
  126. package/lib/cjs/utils/worker.d.ts.map +0 -1
  127. package/lib/cjs/utils/worker.js +0 -13
  128. package/lib/cjs/utils/worker.js.map +0 -1
  129. package/lib/esm/tailwindcss/custom-component-classes.v3.d.ts +0 -3
  130. package/lib/esm/tailwindcss/custom-component-classes.v3.d.ts.map +0 -1
  131. package/lib/esm/tailwindcss/custom-component-classes.v3.js +0 -4
  132. package/lib/esm/tailwindcss/custom-component-classes.v3.js.map +0 -1
  133. package/lib/esm/tailwindcss/custom-component-classes.v4.d.ts +0 -3
  134. package/lib/esm/tailwindcss/custom-component-classes.v4.d.ts.map +0 -1
  135. package/lib/esm/tailwindcss/custom-component-classes.v4.js +0 -33
  136. package/lib/esm/tailwindcss/custom-component-classes.v4.js.map +0 -1
  137. package/lib/esm/utils/cache.d.ts +0 -4
  138. package/lib/esm/utils/cache.d.ts.map +0 -1
  139. package/lib/esm/utils/cache.js +0 -25
  140. package/lib/esm/utils/cache.js.map +0 -1
  141. package/lib/esm/utils/fs.d.ts +0 -3
  142. package/lib/esm/utils/fs.d.ts.map +0 -1
  143. package/lib/esm/utils/fs.js +0 -32
  144. package/lib/esm/utils/fs.js.map +0 -1
  145. package/lib/esm/utils/module.d.ts +0 -3
  146. package/lib/esm/utils/module.d.ts.map +0 -1
  147. package/lib/esm/utils/module.js +0 -7
  148. package/lib/esm/utils/module.js.map +0 -1
  149. package/lib/esm/utils/platform.d.ts +0 -2
  150. package/lib/esm/utils/platform.d.ts.map +0 -1
  151. package/lib/esm/utils/platform.js +0 -4
  152. package/lib/esm/utils/platform.js.map +0 -1
  153. package/lib/esm/utils/resolvers.d.ts +0 -6
  154. package/lib/esm/utils/resolvers.d.ts.map +0 -1
  155. package/lib/esm/utils/resolvers.js +0 -32
  156. package/lib/esm/utils/resolvers.js.map +0 -1
  157. package/lib/esm/utils/version.d.ts +0 -15
  158. package/lib/esm/utils/version.d.ts.map +0 -1
  159. package/lib/esm/utils/version.js +0 -36
  160. package/lib/esm/utils/version.js.map +0 -1
  161. package/lib/esm/utils/worker.d.ts +0 -3
  162. package/lib/esm/utils/worker.d.ts.map +0 -1
  163. package/lib/esm/utils/worker.js +0 -10
  164. package/lib/esm/utils/worker.js.map +0 -1
@@ -0,0 +1,563 @@
1
+ import { DEFAULT_ATTRIBUTE_NAMES, DEFAULT_CALLEE_NAMES, DEFAULT_TAG_NAMES, DEFAULT_VARIABLE_NAMES } from "../options/default-options.js";
2
+ import { ATTRIBUTE_SCHEMA, CALLEE_SCHEMA, ENTRYPOINT_SCHEMA, TAG_SCHEMA, TAILWIND_CONFIG_SCHEMA, VARIABLE_SCHEMA } from "../options/descriptions.js";
3
+ import { getPrefix } from "../tailwindcss/prefix.js";
4
+ import { getCommonOptions } from "../utils/options.js";
5
+ import { escapeNestedQuotes } from "../utils/quotes.js";
6
+ import { createRuleListener } from "../utils/rule.js";
7
+ import { augmentMessageWithWarnings, display, escapeForRegex, splitClasses } from "../utils/utils.js";
8
+ const defaultOptions = {
9
+ attributes: DEFAULT_ATTRIBUTE_NAMES,
10
+ callees: DEFAULT_CALLEE_NAMES,
11
+ classesPerLine: 0,
12
+ group: "newLine",
13
+ indent: 2,
14
+ lineBreakStyle: "unix",
15
+ preferSingleLine: false,
16
+ printWidth: 80,
17
+ tags: DEFAULT_TAG_NAMES,
18
+ variables: DEFAULT_VARIABLE_NAMES
19
+ };
20
+ const DOCUMENTATION_URL = "https://github.com/schoero/eslint-plugin-better-tailwindcss/blob/main/docs/rules/multiline.md";
21
+ export const enforceConsistentLineWrapping = {
22
+ name: "enforce-consistent-line-wrapping",
23
+ rule: {
24
+ create: ctx => createRuleListener(ctx, getOptions(ctx), lintLiterals),
25
+ meta: {
26
+ docs: {
27
+ category: "Stylistic Issues",
28
+ description: "Enforce consistent line wrapping for tailwind classes.",
29
+ recommended: true,
30
+ url: DOCUMENTATION_URL
31
+ },
32
+ fixable: "code",
33
+ schema: [
34
+ {
35
+ additionalProperties: false,
36
+ properties: {
37
+ ...CALLEE_SCHEMA,
38
+ ...ATTRIBUTE_SCHEMA,
39
+ ...VARIABLE_SCHEMA,
40
+ ...TAG_SCHEMA,
41
+ ...ENTRYPOINT_SCHEMA,
42
+ ...TAILWIND_CONFIG_SCHEMA,
43
+ classesPerLine: {
44
+ default: defaultOptions.classesPerLine,
45
+ description: "The maximum amount of classes per line. Lines are wrapped appropriately to stay within this limit . The value `0` disables line wrapping by `classesPerLine`.",
46
+ type: "integer"
47
+ },
48
+ group: {
49
+ default: defaultOptions.group,
50
+ description: "Defines how different groups of classes should be separated. A group is a set of classes that share the same variant.",
51
+ enum: ["emptyLine", "never", "newLine"],
52
+ type: "string"
53
+ },
54
+ indent: {
55
+ default: defaultOptions.indent,
56
+ description: "Determines how the code should be indented.",
57
+ oneOf: [
58
+ {
59
+ enum: ["tab"],
60
+ type: "string"
61
+ },
62
+ {
63
+ minimum: 0,
64
+ type: "integer"
65
+ }
66
+ ]
67
+ },
68
+ lineBreakStyle: {
69
+ default: defaultOptions.lineBreakStyle,
70
+ description: "The line break style. The style `windows` will use `\\r\\n` as line breaks and `unix` will use `\\n`.",
71
+ enum: ["unix", "windows"],
72
+ type: "string"
73
+ },
74
+ preferSingleLine: {
75
+ default: defaultOptions.preferSingleLine,
76
+ description: "Prefer a single line for the classes. When set to `true`, the rule will keep all classes on a single line until the line exceeds the `printWidth` or `classesPerLine` limit.",
77
+ type: "boolean"
78
+ },
79
+ printWidth: {
80
+ default: defaultOptions.printWidth,
81
+ description: "The maximum line length. Lines are wrapped appropriately to stay within this limit. The value `0` disables line wrapping by `printWidth`.",
82
+ type: "integer"
83
+ }
84
+ },
85
+ type: "object"
86
+ }
87
+ ],
88
+ type: "layout"
89
+ }
90
+ }
91
+ };
92
+ function lintLiterals(ctx, literals) {
93
+ const options = getOptions(ctx);
94
+ const { classesPerLine, group: groupSeparator, indent, lineBreakStyle, preferSingleLine, printWidth, tailwindConfig } = options;
95
+ const { prefix, suffix } = getPrefix({ configPath: tailwindConfig, cwd: ctx.cwd });
96
+ for (const literal of literals) {
97
+ if (!literal.supportsMultiline) {
98
+ continue;
99
+ }
100
+ const lineStartPosition = literal.indentation + getIndentation(ctx, indent);
101
+ const literalStartPosition = literal.loc.start.column;
102
+ const classChunks = splitClasses(literal.content);
103
+ const groupedClasses = groupClasses(ctx, classChunks, prefix, suffix);
104
+ const multilineClasses = new Lines(ctx, lineStartPosition);
105
+ const singlelineClasses = new Lines(ctx, lineStartPosition);
106
+ if (literal.openingQuote) {
107
+ if (literal.multilineQuotes?.includes("\\`")) {
108
+ multilineClasses.line.addMeta({ openingQuote: "\\`" });
109
+ }
110
+ else if (literal.multilineQuotes?.includes("`")) {
111
+ multilineClasses.line.addMeta({ openingQuote: "`" });
112
+ }
113
+ else {
114
+ multilineClasses.line.addMeta({ openingQuote: literal.openingQuote });
115
+ }
116
+ }
117
+ if (literal.openingQuote && literal.closingQuote) {
118
+ singlelineClasses.line.addMeta({ closingQuote: literal.closingQuote, openingQuote: literal.openingQuote });
119
+ }
120
+ leadingTemplateLiteralNewLine: if (literal.type === "TemplateLiteral" && literal.closingBraces) {
121
+ multilineClasses.line.addMeta({
122
+ closingBraces: literal.closingBraces
123
+ });
124
+ // skip newline for sticky classes
125
+ if (literal.leadingWhitespace === "" && groupedClasses) {
126
+ break leadingTemplateLiteralNewLine;
127
+ }
128
+ // skip if no classes are present
129
+ if (!groupedClasses) {
130
+ break leadingTemplateLiteralNewLine;
131
+ }
132
+ if (groupSeparator === "emptyLine") {
133
+ multilineClasses.addLine();
134
+ }
135
+ if (groupSeparator === "emptyLine" ||
136
+ groupSeparator === "newLine" ||
137
+ groupSeparator === "never") {
138
+ multilineClasses.addLine();
139
+ multilineClasses.line.indent();
140
+ }
141
+ }
142
+ if (groupedClasses) {
143
+ for (let g = 0; g < groupedClasses.length; g++) {
144
+ const group = groupedClasses.at(g);
145
+ const isFirstGroup = g === 0;
146
+ if (group.classCount === 0) {
147
+ continue;
148
+ }
149
+ if (isFirstGroup && (literal.type === "TemplateLiteral" && !literal.closingBraces ||
150
+ literal.type !== "TemplateLiteral")) {
151
+ multilineClasses.addLine();
152
+ multilineClasses.line.indent();
153
+ }
154
+ if (!isFirstGroup) {
155
+ if (groupSeparator === "emptyLine") {
156
+ multilineClasses.addLine();
157
+ }
158
+ if (groupSeparator === "emptyLine" || groupSeparator === "newLine") {
159
+ multilineClasses.addLine();
160
+ multilineClasses.line.indent();
161
+ }
162
+ }
163
+ for (let i = 0; i < group.classCount; i++) {
164
+ const isFirstClass = i === 0;
165
+ const isLastClass = i === group.classCount - 1;
166
+ const className = group.at(i);
167
+ const simulatedLine = multilineClasses.line
168
+ .clone()
169
+ .addClass(className)
170
+ .toString();
171
+ // wrap after the first sticky class
172
+ if (isFirstClass && literal.leadingWhitespace === "" &&
173
+ literal.type === "TemplateLiteral" && literal.closingBraces) {
174
+ multilineClasses.line.addClass(className);
175
+ // don't add a new line if the first class is also the last
176
+ if (isLastClass) {
177
+ break;
178
+ }
179
+ if (groupSeparator === "emptyLine") {
180
+ multilineClasses.addLine();
181
+ }
182
+ if (groupSeparator === "emptyLine" || groupSeparator === "newLine") {
183
+ multilineClasses.addLine();
184
+ multilineClasses.line.indent();
185
+ }
186
+ continue;
187
+ }
188
+ // wrap before the last sticky class
189
+ if (isLastClass && literal.trailingWhitespace === "" &&
190
+ literal.type === "TemplateLiteral" && literal.openingBraces) {
191
+ // skip wrapping for the first class of a group
192
+ if (isFirstClass) {
193
+ multilineClasses.line.addClass(className);
194
+ continue;
195
+ }
196
+ if (groupSeparator === "emptyLine") {
197
+ multilineClasses.addLine();
198
+ }
199
+ if (groupSeparator === "emptyLine" || groupSeparator === "newLine") {
200
+ multilineClasses.addLine();
201
+ multilineClasses.line.indent();
202
+ }
203
+ multilineClasses.line.addClass(className);
204
+ continue;
205
+ }
206
+ // wrap if the length exceeds the limits
207
+ if (simulatedLine.length > printWidth && printWidth !== 0 ||
208
+ multilineClasses.line.classCount >= classesPerLine && classesPerLine !== 0) {
209
+ // but only if it is not the first class of a group or classes are not grouped
210
+ if (!isFirstClass || groupSeparator === "never") {
211
+ multilineClasses.addLine();
212
+ multilineClasses.line.indent();
213
+ }
214
+ }
215
+ multilineClasses.line.addClass(className);
216
+ singlelineClasses.line.addClass(className);
217
+ }
218
+ }
219
+ }
220
+ trailingTemplateLiteralNewLine: if (literal.type === "TemplateLiteral" && literal.openingBraces) {
221
+ // skip newline for sticky classes
222
+ if (literal.trailingWhitespace === "" && groupedClasses) {
223
+ multilineClasses.line.addMeta({
224
+ openingBraces: literal.openingBraces
225
+ });
226
+ break trailingTemplateLiteralNewLine;
227
+ }
228
+ if (groupSeparator === "emptyLine" && groupedClasses) {
229
+ multilineClasses.addLine();
230
+ }
231
+ if (groupSeparator === "emptyLine" ||
232
+ groupSeparator === "newLine" ||
233
+ groupSeparator === "never") {
234
+ multilineClasses.addLine();
235
+ multilineClasses.line.indent();
236
+ }
237
+ multilineClasses.line.addMeta({
238
+ openingBraces: literal.openingBraces
239
+ });
240
+ }
241
+ if (literal.closingQuote) {
242
+ multilineClasses.addLine();
243
+ multilineClasses.line.indent(lineStartPosition - getIndentation(ctx, indent));
244
+ if (literal.multilineQuotes?.includes("\\`")) {
245
+ multilineClasses.line.addMeta({ closingQuote: "\\`" });
246
+ }
247
+ else if (literal.multilineQuotes?.includes("`")) {
248
+ multilineClasses.line.addMeta({ closingQuote: "`" });
249
+ }
250
+ else {
251
+ multilineClasses.line.addMeta({ closingQuote: literal.closingQuote });
252
+ }
253
+ }
254
+ // collapse lines if there is no reason for line wrapping or if preferSingleLine is enabled
255
+ collapse: {
256
+ // disallow collapsing if the literal contains variants, except preferSingleLine is enabled
257
+ if (groupedClasses?.length !== 1 && !preferSingleLine) {
258
+ break collapse;
259
+ }
260
+ // disallow collapsing for template literals with braces (expressions)
261
+ if (literal.type === "TemplateLiteral" && (literal.openingBraces || literal.closingBraces)) {
262
+ break collapse;
263
+ }
264
+ // disallow collapsing if the original literal was a single line (keeps original whitespace)
265
+ if (!literal.content.includes(getLineBreaks(lineBreakStyle))) {
266
+ break collapse;
267
+ }
268
+ // disallow collapsing if the single line contains more classes than the classesPerLine
269
+ if (singlelineClasses.line.classCount > classesPerLine && classesPerLine !== 0) {
270
+ break collapse;
271
+ }
272
+ // disallow collapsing if the single line including the element and all previous characters is longer than the printWidth
273
+ if (literalStartPosition + singlelineClasses.line.length > printWidth && printWidth !== 0) {
274
+ break collapse;
275
+ }
276
+ // disallow collapsing if the literal contains expressions
277
+ if (literal.type === "TemplateLiteral" && (literal.openingBraces || literal.closingBraces)) {
278
+ break collapse;
279
+ }
280
+ const fixedClasses = singlelineClasses.line.toString(false);
281
+ if (literal.raw === fixedClasses) {
282
+ continue;
283
+ }
284
+ ctx.report({
285
+ data: {
286
+ notReadable: display(literal.raw),
287
+ readable: display(fixedClasses)
288
+ },
289
+ fix(fixer) {
290
+ return fixer.replaceTextRange(literal.range, fixedClasses);
291
+ },
292
+ loc: literal.loc,
293
+ message: augmentMessage(literal.raw, options, "Unnecessary line wrapping. Expected\n\n{{ notReadable }}\n\nto be\n\n{{ readable }}")
294
+ });
295
+ return;
296
+ }
297
+ // skip if class string was empty
298
+ if (multilineClasses.length === 2) {
299
+ if (!literal.openingBraces && !literal.closingBraces && literal.content.trim() === "") {
300
+ continue;
301
+ }
302
+ }
303
+ // skip line wrapping if preferSingleLine is enabled and the single line does not exceed the printWidth or classesPerLine
304
+ if (preferSingleLine &&
305
+ (literalStartPosition + singlelineClasses.line.length <= printWidth && printWidth !== 0 ||
306
+ singlelineClasses.line.classCount <= classesPerLine && classesPerLine !== 0) ||
307
+ printWidth === 0 && classesPerLine === 0) {
308
+ continue;
309
+ }
310
+ // skip line wrapping if it is not necessary
311
+ skip: {
312
+ // disallow skipping if class string contains multiple groups
313
+ if (groupedClasses && groupedClasses.length > 1) {
314
+ break skip;
315
+ }
316
+ // disallow skipping if the original literal was longer than the printWidth
317
+ if (literalStartPosition + singlelineClasses.line.length > printWidth && printWidth !== 0 ||
318
+ singlelineClasses.line.classCount > classesPerLine && classesPerLine !== 0) {
319
+ break skip;
320
+ }
321
+ // disallow skipping for template literals with braces (expressions)
322
+ if (literal.type === "TemplateLiteral" && (literal.openingBraces || literal.closingBraces)) {
323
+ break skip;
324
+ }
325
+ const openingQuoteLength = literal.openingQuote?.length ?? 0;
326
+ const closingBracesLength = literal.closingBraces?.length ?? 0;
327
+ const firstLineLength = multilineClasses
328
+ .at(1)
329
+ .toString()
330
+ .trim()
331
+ .length +
332
+ openingQuoteLength +
333
+ closingBracesLength;
334
+ // disallow skipping if the first line including the element and all previous characters is longer than the printWidth
335
+ if (literalStartPosition + firstLineLength > printWidth && printWidth !== 0) {
336
+ break skip;
337
+ }
338
+ // disallow skipping if the first line contains more classes than the classesPerLine
339
+ if (multilineClasses.at(1).classCount > classesPerLine && classesPerLine !== 0) {
340
+ break skip;
341
+ }
342
+ continue;
343
+ }
344
+ const fixedClasses = multilineClasses.toString(lineBreakStyle);
345
+ if (literal.raw === fixedClasses) {
346
+ continue;
347
+ }
348
+ ctx.report({
349
+ data: {
350
+ notReadable: display(literal.raw),
351
+ readable: display(fixedClasses)
352
+ },
353
+ fix(fixer) {
354
+ return literal.surroundingBraces
355
+ ? fixer.replaceTextRange(literal.range, `{${fixedClasses}}`)
356
+ : fixer.replaceTextRange(literal.range, fixedClasses);
357
+ },
358
+ loc: literal.loc,
359
+ message: augmentMessage(literal.raw, options, "Incorrect line wrapping. Expected\n\n{{ notReadable }}\n\nto be\n\n{{ readable }}")
360
+ });
361
+ }
362
+ }
363
+ function getIndentation(ctx, indentation) {
364
+ return indentation === "tab" ? 1 : indentation ?? 0;
365
+ }
366
+ function getOptions(ctx) {
367
+ const options = ctx.options[0] ?? {};
368
+ const common = getCommonOptions(ctx);
369
+ const printWidth = options.printWidth ?? defaultOptions.printWidth;
370
+ const classesPerLine = options.classesPerLine ?? defaultOptions.classesPerLine;
371
+ const indent = options.indent ?? defaultOptions.indent;
372
+ const group = options.group ?? defaultOptions.group;
373
+ const preferSingleLine = options.preferSingleLine ?? defaultOptions.preferSingleLine;
374
+ const lineBreakStyle = options.lineBreakStyle ?? defaultOptions.lineBreakStyle;
375
+ return {
376
+ ...common,
377
+ classesPerLine,
378
+ group,
379
+ indent,
380
+ lineBreakStyle,
381
+ preferSingleLine,
382
+ printWidth
383
+ };
384
+ }
385
+ class Lines {
386
+ constructor(ctx, indentation) {
387
+ this.lines = [];
388
+ this.indentation = 0;
389
+ this.ctx = ctx;
390
+ this.indentation = indentation;
391
+ this.addLine();
392
+ }
393
+ at(index) {
394
+ return index >= 0
395
+ ? this.lines[index]
396
+ : this.lines[this.lines.length + index];
397
+ }
398
+ get line() {
399
+ return this.currentLine;
400
+ }
401
+ get length() {
402
+ return this.lines.length;
403
+ }
404
+ addLine() {
405
+ const line = new Line(this.ctx, this.indentation);
406
+ this.lines.push(line);
407
+ this.currentLine = line;
408
+ return this;
409
+ }
410
+ toString(lineBreakStyle = "unix") {
411
+ const lineBreaks = getLineBreaks(lineBreakStyle);
412
+ return this.lines.map(line => line.toString()).join(lineBreaks);
413
+ }
414
+ }
415
+ class Line {
416
+ constructor(ctx, indentation) {
417
+ this.classes = [];
418
+ this.meta = {};
419
+ this.indentation = 0;
420
+ this.ctx = ctx;
421
+ this.indentation = indentation;
422
+ }
423
+ indent(start = this.indentation) {
424
+ const indent = getOptions(this.ctx).indent;
425
+ if (indent === "tab") {
426
+ this.meta.indentation = "\t".repeat(start);
427
+ }
428
+ else {
429
+ this.meta.indentation = " ".repeat(start);
430
+ }
431
+ return this;
432
+ }
433
+ get length() {
434
+ return this.toString().length;
435
+ }
436
+ get classCount() {
437
+ return this.classes.length;
438
+ }
439
+ get printWidth() {
440
+ return this.toString().length;
441
+ }
442
+ addMeta(meta) {
443
+ this.meta = { ...this.meta, ...meta };
444
+ return this;
445
+ }
446
+ addClass(className) {
447
+ this.classes.push(className);
448
+ return this;
449
+ }
450
+ clone() {
451
+ const line = new Line(this.ctx, this.indentation);
452
+ line.classes = [...this.classes];
453
+ line.meta = { ...this.meta };
454
+ return line;
455
+ }
456
+ toString(indent = true) {
457
+ return this.join([
458
+ indent ? this.meta.indentation : "",
459
+ this.meta.openingQuote,
460
+ this.meta.closingBraces,
461
+ this.meta.leadingWhitespace ?? "",
462
+ escapeNestedQuotes(this.join(this.classes), this.meta.openingQuote ?? this.meta.closingQuote ?? "`"),
463
+ this.meta.trailingWhitespace ?? "",
464
+ this.meta.openingBraces,
465
+ this.meta.closingQuote
466
+ ], "");
467
+ }
468
+ join(content, separator = " ") {
469
+ return content
470
+ .filter(content => content !== undefined)
471
+ .join(separator);
472
+ }
473
+ }
474
+ function groupClasses(ctx, classes, prefix, suffix) {
475
+ if (classes.length === 0) {
476
+ return;
477
+ }
478
+ const prefixRegex = new RegExp(`^${escapeForRegex(`${prefix}${suffix}`)}`);
479
+ const groups = new Groups();
480
+ for (const className of classes) {
481
+ const isFirstClass = classes.indexOf(className) === 0;
482
+ const isFirstGroup = groups.length === 1;
483
+ const lastGroup = groups.at(-1);
484
+ const lastClassName = lastGroup?.at(-1);
485
+ const unprefixedLastClassName = lastClassName?.replace(prefixRegex, "");
486
+ const unprefixedClassName = className.replace(prefixRegex, "");
487
+ const lastVariant = unprefixedLastClassName?.match(/^.*?:/)?.[0];
488
+ const variant = unprefixedClassName.match(/^.*?:/)?.[0];
489
+ if (lastVariant !== variant && !(isFirstClass && isFirstGroup)) {
490
+ groups.addGroup();
491
+ }
492
+ groups.group.addClass(className);
493
+ }
494
+ return groups;
495
+ }
496
+ class Groups {
497
+ constructor() {
498
+ this.groups = [];
499
+ this.addGroup();
500
+ }
501
+ get group() {
502
+ return this.currentGroup;
503
+ }
504
+ at(index) {
505
+ return this.groups.at(index);
506
+ }
507
+ get length() {
508
+ return this.groups.length;
509
+ }
510
+ addGroup() {
511
+ const group = new Group();
512
+ this.currentGroup = group;
513
+ this.groups.push(this.currentGroup);
514
+ return this;
515
+ }
516
+ }
517
+ class Group {
518
+ constructor() {
519
+ this.classes = [];
520
+ }
521
+ get classCount() {
522
+ return this.classes.length;
523
+ }
524
+ at(index) {
525
+ return this.classes.at(index);
526
+ }
527
+ addClass(className) {
528
+ this.classes.push(className);
529
+ return this;
530
+ }
531
+ }
532
+ function getLineBreaks(lineBreakStyle) {
533
+ return lineBreakStyle === "unix" ? "\n" : "\r\n";
534
+ }
535
+ function augmentMessage(original, options, message) {
536
+ const invalidLineBreaks = isLineBreakStyleLikelyMisconfigured(original, options);
537
+ const invalidIndentations = isIndentationLikelyMisconfigured(original, options);
538
+ const warnings = [];
539
+ if (invalidLineBreaks) {
540
+ warnings.push({
541
+ option: "lineBreakStyle",
542
+ title: "Inconsistent line endings detected",
543
+ url: `${DOCUMENTATION_URL}#linebreakstyle`
544
+ });
545
+ }
546
+ if (invalidIndentations) {
547
+ warnings.push({
548
+ option: "indent",
549
+ title: "Inconsistent indentation detected",
550
+ url: `${DOCUMENTATION_URL}#indent`
551
+ });
552
+ }
553
+ return augmentMessageWithWarnings(message, DOCUMENTATION_URL, warnings);
554
+ }
555
+ function isLineBreakStyleLikelyMisconfigured(original, options) {
556
+ return (original.includes("\r") && options.lineBreakStyle === "unix" ||
557
+ !original.includes("\r") && options.lineBreakStyle === "windows");
558
+ }
559
+ function isIndentationLikelyMisconfigured(original, options) {
560
+ return (original.includes(" ") && options.indent === "tab" ||
561
+ original.includes("\t") && typeof options.indent === "number");
562
+ }
563
+ //# sourceMappingURL=enforce-consistent-line-wrapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enforce-consistent-line-wrapping.js","sourceRoot":"","sources":["../../../src/rules/enforce-consistent-line-wrapping.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AttributeOption, CalleeOption, ESLintRule, TagOption, VariableOption } from "../types/rule.js";
1
+ import type { AttributeOption, CalleeOption, ESLintRule, TagOption, VariableOption } from "../../types/rule.js";
2
2
  export type Options = [
3
3
  Partial<AttributeOption & CalleeOption & TagOption & VariableOption & {
4
4
  classesPerLine?: number;
@@ -2,18 +2,20 @@ import type { Rule } from "eslint";
2
2
  import type { AttributeOption, CalleeOption, ESLintRule, TagOption, VariableOption } from "../types/rule.js";
3
3
  export type Options = [
4
4
  Partial<AttributeOption & CalleeOption & TagOption & VariableOption & {
5
- restrict?: {
5
+ restrict?: (string | {
6
6
  pattern: string;
7
+ fix?: string;
7
8
  message?: string;
8
- }[] | string[];
9
+ })[];
9
10
  }>
10
11
  ];
11
12
  export declare const noRestrictedClasses: ESLintRule<Options>;
12
13
  export declare function getOptions(ctx: Rule.RuleContext): {
13
- restrict: string[] | {
14
+ restrict: (string | {
14
15
  pattern: string;
16
+ fix?: string;
15
17
  message?: string;
16
- }[];
18
+ })[];
17
19
  attributes: any;
18
20
  callees: any;
19
21
  tags: any;
@@ -1 +1 @@
1
- {"version":3,"file":"no-restricted-classes.d.ts","sourceRoot":"","sources":["../../../src/rules/no-restricted-classes.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,SAAS,EACT,cAAc,EACf,MAAM,kCAAkC,CAAC;AAG1C,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,CACL,eAAe,GACf,YAAY,GACZ,SAAS,GACT,cAAc,GACd;QACE,QAAQ,CAAC,EACL;YACA,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,EAAE,GACD,MAAM,EAAE,CAAC;KACd,CACF;CACF,CAAC;AAYF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,CAmDnD,CAAC;AAuCF,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW;;iBA5G7B,MAAM;kBACL,MAAM;;;;;;;EAwHzB"}
1
+ {"version":3,"file":"no-restricted-classes.d.ts","sourceRoot":"","sources":["../../../src/rules/no-restricted-classes.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,SAAS,EACT,cAAc,EACf,MAAM,kCAAkC,CAAC;AAG1C,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,CACL,eAAe,GACf,YAAY,GACZ,SAAS,GACT,cAAc,GACd;QACE,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC,EAAE,CAAC;KACN,CACF;CACF,CAAC;AAYF,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,CAwDnD,CAAC;AAwEF,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW;;iBAlJ/B,MAAM;cACT,MAAM;kBACF,MAAM;;;;;;;EA6JvB"}