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