eslint-plugin-better-tailwindcss 3.4.0 → 3.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 (35) hide show
  1. package/lib/cjs/rules/no-conflicting-classes.d.ts.map +1 -1
  2. package/lib/cjs/rules/no-conflicting-classes.js +17 -16
  3. package/lib/cjs/rules/no-conflicting-classes.js.map +1 -1
  4. package/lib/cjs/tailwindcss/conflicting-classes.async.v4.d.ts.map +1 -1
  5. package/lib/cjs/tailwindcss/conflicting-classes.async.v4.js +10 -15
  6. package/lib/cjs/tailwindcss/conflicting-classes.async.v4.js.map +1 -1
  7. package/lib/cjs/tailwindcss/conflicting-classes.d.ts +6 -5
  8. package/lib/cjs/tailwindcss/conflicting-classes.d.ts.map +1 -1
  9. package/lib/cjs/tailwindcss/conflicting-classes.js.map +1 -1
  10. package/lib/esm/rules/no-conflicting-classes.d.ts.map +1 -1
  11. package/lib/esm/rules/no-conflicting-classes.js +18 -17
  12. package/lib/esm/rules/no-conflicting-classes.js.map +1 -1
  13. package/lib/esm/tailwindcss/conflicting-classes.async.v4.d.ts.map +1 -1
  14. package/lib/esm/tailwindcss/conflicting-classes.async.v4.js +10 -15
  15. package/lib/esm/tailwindcss/conflicting-classes.async.v4.js.map +1 -1
  16. package/lib/esm/tailwindcss/conflicting-classes.d.ts +6 -5
  17. package/lib/esm/tailwindcss/conflicting-classes.d.ts.map +1 -1
  18. package/lib/esm/tailwindcss/conflicting-classes.js.map +1 -1
  19. package/package.json +1 -1
  20. package/lib/cjs/rules/multiline.d.ts +0 -15
  21. package/lib/cjs/rules/multiline.d.ts.map +0 -1
  22. package/lib/cjs/rules/multiline.js +0 -566
  23. package/lib/cjs/rules/multiline.js.map +0 -1
  24. package/lib/cjs/rules/sort-classes.d.ts +0 -19
  25. package/lib/cjs/rules/sort-classes.d.ts.map +0 -1
  26. package/lib/cjs/rules/sort-classes.js +0 -157
  27. package/lib/cjs/rules/sort-classes.js.map +0 -1
  28. package/lib/esm/rules/multiline.d.ts +0 -15
  29. package/lib/esm/rules/multiline.d.ts.map +0 -1
  30. package/lib/esm/rules/multiline.js +0 -563
  31. package/lib/esm/rules/multiline.js.map +0 -1
  32. package/lib/esm/rules/sort-classes.d.ts +0 -19
  33. package/lib/esm/rules/sort-classes.d.ts.map +0 -1
  34. package/lib/esm/rules/sort-classes.js +0 -153
  35. package/lib/esm/rules/sort-classes.js.map +0 -1
@@ -1,153 +0,0 @@
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 { getClassOrder } from "../tailwindcss/class-order.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, splitClasses, splitWhitespaces } from "../utils/utils.js";
8
- const defaultOptions = {
9
- attributes: DEFAULT_ATTRIBUTE_NAMES,
10
- callees: DEFAULT_CALLEE_NAMES,
11
- order: "improved",
12
- tags: DEFAULT_TAG_NAMES,
13
- variables: DEFAULT_VARIABLE_NAMES
14
- };
15
- const DOCUMENTATION_URL = "https://github.com/schoero/eslint-plugin-better-tailwindcss/blob/main/docs/rules/sort-classes.md";
16
- export const sortClasses = {
17
- name: "sort-classes",
18
- rule: {
19
- create: ctx => createRuleListener(ctx, getOptions(ctx), lintLiterals),
20
- meta: {
21
- docs: {
22
- category: "Stylistic Issues",
23
- description: "Enforce a consistent order for tailwind classes.",
24
- recommended: true,
25
- url: DOCUMENTATION_URL
26
- },
27
- fixable: "code",
28
- schema: [
29
- {
30
- additionalProperties: false,
31
- properties: {
32
- ...CALLEE_SCHEMA,
33
- ...ATTRIBUTE_SCHEMA,
34
- ...VARIABLE_SCHEMA,
35
- ...TAG_SCHEMA,
36
- ...ENTRYPOINT_SCHEMA,
37
- ...TAILWIND_CONFIG_SCHEMA,
38
- order: {
39
- default: defaultOptions.order,
40
- description: "The algorithm to use when sorting classes.",
41
- enum: [
42
- "asc",
43
- "desc",
44
- "official",
45
- "improved"
46
- ],
47
- type: "string"
48
- }
49
- },
50
- type: "object"
51
- }
52
- ],
53
- type: "layout"
54
- }
55
- }
56
- };
57
- function lintLiterals(ctx, literals) {
58
- for (const literal of literals) {
59
- const classChunks = splitClasses(literal.content);
60
- const whitespaceChunks = splitWhitespaces(literal.content);
61
- const unsortableClasses = ["", ""];
62
- // remove sticky classes
63
- if (literal.closingBraces && whitespaceChunks[0] === "") {
64
- whitespaceChunks.shift();
65
- unsortableClasses[0] = classChunks.shift() ?? "";
66
- }
67
- if (literal.openingBraces && whitespaceChunks[whitespaceChunks.length - 1] === "") {
68
- whitespaceChunks.pop();
69
- unsortableClasses[1] = classChunks.pop() ?? "";
70
- }
71
- const [sortedClassChunks, warnings] = sortClassNames(ctx, classChunks);
72
- const classes = [];
73
- for (let i = 0; i < Math.max(sortedClassChunks.length, whitespaceChunks.length); i++) {
74
- whitespaceChunks[i] && classes.push(whitespaceChunks[i]);
75
- sortedClassChunks[i] && classes.push(sortedClassChunks[i]);
76
- }
77
- const escapedClasses = escapeNestedQuotes([
78
- unsortableClasses[0],
79
- ...classes,
80
- unsortableClasses[1]
81
- ].join(""), literal.openingQuote ?? literal.closingQuote ?? "`");
82
- const fixedClasses = [
83
- literal.openingQuote ?? "",
84
- literal.type === "TemplateLiteral" && literal.closingBraces ? literal.closingBraces : "",
85
- escapedClasses,
86
- literal.type === "TemplateLiteral" && literal.openingBraces ? literal.openingBraces : "",
87
- literal.closingQuote ?? ""
88
- ].join("");
89
- if (literal.raw === fixedClasses) {
90
- continue;
91
- }
92
- ctx.report({
93
- data: {
94
- notSorted: display(literal.raw),
95
- sorted: display(fixedClasses)
96
- },
97
- fix(fixer) {
98
- return fixer.replaceTextRange(literal.range, fixedClasses);
99
- },
100
- loc: literal.loc,
101
- message: augmentMessageWithWarnings("Incorrect class order. Expected\n\n{{ notSorted }}\n\nto be\n\n{{ sorted }}", DOCUMENTATION_URL, warnings)
102
- });
103
- }
104
- }
105
- function sortClassNames(ctx, classes) {
106
- const { order, tailwindConfig } = getOptions(ctx);
107
- if (order === "asc") {
108
- return [classes.toSorted((a, b) => a.localeCompare(b))];
109
- }
110
- if (order === "desc") {
111
- return [classes.toSorted((a, b) => b.localeCompare(a))];
112
- }
113
- const { classOrder, warnings } = getClassOrder({ classes, configPath: tailwindConfig, cwd: ctx.cwd });
114
- const officiallySortedClasses = classOrder
115
- .toSorted(([, a], [, z]) => {
116
- if (a === z) {
117
- return 0;
118
- }
119
- if (a === null) {
120
- return -1;
121
- }
122
- if (z === null) {
123
- return +1;
124
- }
125
- return +(a - z > 0n) - +(a - z < 0n);
126
- })
127
- .map(([className]) => className);
128
- if (order === "official") {
129
- return [officiallySortedClasses, warnings];
130
- }
131
- const groupedByVariant = new Map();
132
- for (const className of officiallySortedClasses) {
133
- const variant = className.match(/^.*?:/)?.[0] ?? "";
134
- groupedByVariant.set(variant, [...groupedByVariant.get(variant) ?? [], className]);
135
- }
136
- return [
137
- Array.from(groupedByVariant.entries())
138
- .sort(([a], [b]) => a === "" ? -1 : b === "" ? 1 : 0)
139
- .map(([, classes]) => classes)
140
- .flat(),
141
- warnings
142
- ];
143
- }
144
- export function getOptions(ctx) {
145
- const options = ctx.options[0] ?? {};
146
- const common = getCommonOptions(ctx);
147
- const order = options.order ?? defaultOptions.order;
148
- return {
149
- ...common,
150
- order
151
- };
152
- }
153
- //# sourceMappingURL=sort-classes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sort-classes.js","sourceRoot":"","sources":["../../../src/rules/sort-classes.ts"],"names":[],"mappings":"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"}