eslint-plugin-better-tailwindcss 4.3.1 → 4.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 (182) hide show
  1. package/README.md +35 -0
  2. package/lib/api/defaults.d.ts +15 -0
  3. package/lib/api/defaults.d.ts.map +1 -1
  4. package/lib/api/types.d.ts +7 -2
  5. package/lib/api/types.d.ts.map +1 -1
  6. package/lib/api/types.js +4 -1
  7. package/lib/api/types.js.map +1 -1
  8. package/lib/async-utils/escape.d.ts.map +1 -1
  9. package/lib/async-utils/escape.js +2 -1
  10. package/lib/async-utils/escape.js.map +1 -1
  11. package/lib/async-utils/fs.d.ts +1 -1
  12. package/lib/async-utils/fs.d.ts.map +1 -1
  13. package/lib/async-utils/fs.js +2 -6
  14. package/lib/async-utils/fs.js.map +1 -1
  15. package/lib/async-utils/operations.d.ts +2 -0
  16. package/lib/async-utils/operations.d.ts.map +1 -1
  17. package/lib/async-utils/regex.d.ts +3 -0
  18. package/lib/async-utils/regex.d.ts.map +1 -0
  19. package/lib/async-utils/regex.js +32 -0
  20. package/lib/async-utils/regex.js.map +1 -0
  21. package/lib/async-utils/worker.d.ts.map +1 -1
  22. package/lib/async-utils/worker.js +3 -2
  23. package/lib/async-utils/worker.js.map +1 -1
  24. package/lib/configs/config.d.ts +2921 -33
  25. package/lib/configs/config.d.ts.map +1 -1
  26. package/lib/configs/config.js +4 -0
  27. package/lib/configs/config.js.map +1 -1
  28. package/lib/options/callees/cc.js +2 -2
  29. package/lib/options/callees/cc.js.map +1 -1
  30. package/lib/options/callees/clb.js +3 -3
  31. package/lib/options/callees/clb.js.map +1 -1
  32. package/lib/options/callees/clsx.js +2 -2
  33. package/lib/options/callees/clsx.js.map +1 -1
  34. package/lib/options/callees/cn.js +2 -2
  35. package/lib/options/callees/cn.js.map +1 -1
  36. package/lib/options/callees/cnb.js +2 -2
  37. package/lib/options/callees/cnb.js.map +1 -1
  38. package/lib/options/callees/ctl.js +1 -1
  39. package/lib/options/callees/ctl.js.map +1 -1
  40. package/lib/options/callees/cva.js +3 -3
  41. package/lib/options/callees/cva.js.map +1 -1
  42. package/lib/options/callees/cx.js +2 -2
  43. package/lib/options/callees/cx.js.map +1 -1
  44. package/lib/options/callees/dcnb.js +2 -2
  45. package/lib/options/callees/dcnb.js.map +1 -1
  46. package/lib/options/callees/objstr.js +2 -2
  47. package/lib/options/callees/objstr.js.map +1 -1
  48. package/lib/options/callees/tv.js +6 -6
  49. package/lib/options/callees/tv.js.map +1 -1
  50. package/lib/options/callees/twJoin.js +1 -1
  51. package/lib/options/callees/twJoin.js.map +1 -1
  52. package/lib/options/callees/twMerge.js +1 -1
  53. package/lib/options/callees/twMerge.js.map +1 -1
  54. package/lib/options/default-options.d.ts +31 -1
  55. package/lib/options/default-options.d.ts.map +1 -1
  56. package/lib/options/default-options.js +9 -3
  57. package/lib/options/default-options.js.map +1 -1
  58. package/lib/options/descriptions.d.ts +308 -2
  59. package/lib/options/descriptions.d.ts.map +1 -1
  60. package/lib/options/descriptions.js +3 -2
  61. package/lib/options/descriptions.js.map +1 -1
  62. package/lib/options/migrate.js +29 -12
  63. package/lib/options/migrate.js.map +1 -1
  64. package/lib/options/schemas/common.d.ts +4 -0
  65. package/lib/options/schemas/common.d.ts.map +1 -1
  66. package/lib/options/schemas/common.js +3 -0
  67. package/lib/options/schemas/common.js.map +1 -1
  68. package/lib/options/schemas/selectors.d.ts +806 -5
  69. package/lib/options/schemas/selectors.d.ts.map +1 -1
  70. package/lib/options/schemas/selectors.js +42 -11
  71. package/lib/options/schemas/selectors.js.map +1 -1
  72. package/lib/options/tags/twc.d.ts +36 -0
  73. package/lib/options/tags/twc.d.ts.map +1 -0
  74. package/lib/options/tags/twc.js +26 -0
  75. package/lib/options/tags/twc.js.map +1 -0
  76. package/lib/options/tags/twx.d.ts +36 -0
  77. package/lib/options/tags/twx.d.ts.map +1 -0
  78. package/lib/options/tags/twx.js +26 -0
  79. package/lib/options/tags/twx.js.map +1 -0
  80. package/lib/parsers/angular.d.ts.map +1 -1
  81. package/lib/parsers/angular.js +54 -12
  82. package/lib/parsers/angular.js.map +1 -1
  83. package/lib/parsers/es.d.ts +11 -2
  84. package/lib/parsers/es.d.ts.map +1 -1
  85. package/lib/parsers/es.js +270 -58
  86. package/lib/parsers/es.js.map +1 -1
  87. package/lib/parsers/svelte.d.ts.map +1 -1
  88. package/lib/parsers/svelte.js +7 -64
  89. package/lib/parsers/svelte.js.map +1 -1
  90. package/lib/parsers/vue.d.ts.map +1 -1
  91. package/lib/parsers/vue.js +6 -65
  92. package/lib/parsers/vue.js.map +1 -1
  93. package/lib/rules/enforce-canonical-classes.d.ts +172 -2
  94. package/lib/rules/enforce-canonical-classes.d.ts.map +1 -1
  95. package/lib/rules/enforce-consistent-class-order.d.ts +172 -2
  96. package/lib/rules/enforce-consistent-class-order.d.ts.map +1 -1
  97. package/lib/rules/enforce-consistent-class-order.js +26 -8
  98. package/lib/rules/enforce-consistent-class-order.js.map +1 -1
  99. package/lib/rules/enforce-consistent-important-position.d.ts +172 -2
  100. package/lib/rules/enforce-consistent-important-position.d.ts.map +1 -1
  101. package/lib/rules/enforce-consistent-important-position.js +2 -1
  102. package/lib/rules/enforce-consistent-important-position.js.map +1 -1
  103. package/lib/rules/enforce-consistent-line-wrapping.d.ts +172 -2
  104. package/lib/rules/enforce-consistent-line-wrapping.d.ts.map +1 -1
  105. package/lib/rules/enforce-consistent-line-wrapping.js +30 -0
  106. package/lib/rules/enforce-consistent-line-wrapping.js.map +1 -1
  107. package/lib/rules/enforce-consistent-variable-syntax.d.ts +172 -2
  108. package/lib/rules/enforce-consistent-variable-syntax.d.ts.map +1 -1
  109. package/lib/rules/enforce-consistent-variable-syntax.js +3 -2
  110. package/lib/rules/enforce-consistent-variable-syntax.js.map +1 -1
  111. package/lib/rules/enforce-consistent-variant-order.d.ts +426 -0
  112. package/lib/rules/enforce-consistent-variant-order.d.ts.map +1 -0
  113. package/lib/rules/enforce-consistent-variant-order.js +75 -0
  114. package/lib/rules/enforce-consistent-variant-order.js.map +1 -0
  115. package/lib/rules/enforce-logical-properties.d.ts +426 -0
  116. package/lib/rules/enforce-logical-properties.d.ts.map +1 -0
  117. package/lib/rules/enforce-logical-properties.js +118 -0
  118. package/lib/rules/enforce-logical-properties.js.map +1 -0
  119. package/lib/rules/enforce-shorthand-classes.d.ts +172 -2
  120. package/lib/rules/enforce-shorthand-classes.d.ts.map +1 -1
  121. package/lib/rules/no-conflicting-classes.d.ts +172 -2
  122. package/lib/rules/no-conflicting-classes.d.ts.map +1 -1
  123. package/lib/rules/no-deprecated-classes.d.ts +173 -3
  124. package/lib/rules/no-deprecated-classes.d.ts.map +1 -1
  125. package/lib/rules/no-duplicate-classes.d.ts +172 -2
  126. package/lib/rules/no-duplicate-classes.d.ts.map +1 -1
  127. package/lib/rules/no-restricted-classes.d.ts +172 -2
  128. package/lib/rules/no-restricted-classes.d.ts.map +1 -1
  129. package/lib/rules/no-unknown-classes.d.ts +172 -2
  130. package/lib/rules/no-unknown-classes.d.ts.map +1 -1
  131. package/lib/rules/no-unknown-classes.js +8 -7
  132. package/lib/rules/no-unknown-classes.js.map +1 -1
  133. package/lib/rules/no-unnecessary-whitespace.d.ts +172 -2
  134. package/lib/rules/no-unnecessary-whitespace.d.ts.map +1 -1
  135. package/lib/rules/no-unnecessary-whitespace.js +32 -0
  136. package/lib/rules/no-unnecessary-whitespace.js.map +1 -1
  137. package/lib/tailwindcss/dissect-classes.async.v3.d.ts.map +1 -1
  138. package/lib/tailwindcss/dissect-classes.async.v3.js +4 -3
  139. package/lib/tailwindcss/dissect-classes.async.v3.js.map +1 -1
  140. package/lib/tailwindcss/dissect-classes.async.v4.d.ts.map +1 -1
  141. package/lib/tailwindcss/dissect-classes.async.v4.js +6 -5
  142. package/lib/tailwindcss/dissect-classes.async.v4.js.map +1 -1
  143. package/lib/tailwindcss/tailwind.async.worker.v3.js +5 -0
  144. package/lib/tailwindcss/tailwind.async.worker.v3.js.map +1 -1
  145. package/lib/tailwindcss/tailwind.async.worker.v4.js +6 -0
  146. package/lib/tailwindcss/tailwind.async.worker.v4.js.map +1 -1
  147. package/lib/tailwindcss/variant-order.async.v3.d.ts +3 -0
  148. package/lib/tailwindcss/variant-order.async.v3.d.ts.map +1 -0
  149. package/lib/tailwindcss/variant-order.async.v3.js +4 -0
  150. package/lib/tailwindcss/variant-order.async.v3.js.map +1 -0
  151. package/lib/tailwindcss/variant-order.async.v4.d.ts +3 -0
  152. package/lib/tailwindcss/variant-order.async.v4.d.ts.map +1 -0
  153. package/lib/tailwindcss/variant-order.async.v4.js +18 -0
  154. package/lib/tailwindcss/variant-order.async.v4.js.map +1 -0
  155. package/lib/tailwindcss/variant-order.d.ts +11 -0
  156. package/lib/tailwindcss/variant-order.d.ts.map +1 -0
  157. package/lib/tailwindcss/variant-order.js +15 -0
  158. package/lib/tailwindcss/variant-order.js.map +1 -0
  159. package/lib/types/ast.d.ts +2 -0
  160. package/lib/types/ast.d.ts.map +1 -1
  161. package/lib/types/rule.d.ts +27 -5
  162. package/lib/types/rule.d.ts.map +1 -1
  163. package/lib/types/rule.js +7 -0
  164. package/lib/types/rule.js.map +1 -1
  165. package/lib/utils/context.js +5 -5
  166. package/lib/utils/context.js.map +1 -1
  167. package/lib/utils/matchers.d.ts +2 -4
  168. package/lib/utils/matchers.d.ts.map +1 -1
  169. package/lib/utils/matchers.js +61 -40
  170. package/lib/utils/matchers.js.map +1 -1
  171. package/lib/utils/project.d.ts +4 -0
  172. package/lib/utils/project.d.ts.map +1 -0
  173. package/lib/utils/project.js +22 -0
  174. package/lib/utils/project.js.map +1 -0
  175. package/lib/utils/rule.d.ts +1 -1
  176. package/lib/utils/rule.d.ts.map +1 -1
  177. package/lib/utils/rule.js +49 -11
  178. package/lib/utils/rule.js.map +1 -1
  179. package/lib/utils/utils.d.ts.map +1 -1
  180. package/lib/utils/utils.js +6 -5
  181. package/lib/utils/utils.js.map +1 -1
  182. package/package.json +20 -19
package/README.md CHANGED
@@ -129,9 +129,11 @@ The table below lists all available rules, the Tailwind CSS versions they suppor
129
129
  | :--- | :--- | :---: | :---: | :---: | :---: |
130
130
  | [enforce-consistent-line-wrapping](docs/rules/enforce-consistent-line-wrapping.md) | Enforce consistent line wrapping for tailwind classes. | ✔ | ✔ | ✔ | ✔ |
131
131
  | [enforce-consistent-class-order](docs/rules/enforce-consistent-class-order.md) | Enforce a consistent order for tailwind classes. | ✔ | ✔ | ✔ | ✔ |
132
+ | [enforce-consistent-variant-order](docs/rules/enforce-consistent-variant-order.md) | Enforce a consistent variant order for tailwind classes. | | ✔ | | ✔ |
132
133
  | [enforce-consistent-variable-syntax](docs/rules/enforce-consistent-variable-syntax.md) | Enforce consistent variable syntax. | ✔ | ✔ | | ✔ |
133
134
  | [enforce-consistent-important-position](docs/rules/enforce-consistent-important-position.md) | Enforce consistent position of the important modifier. | ✔ | ✔ | | ✔ |
134
135
  | [enforce-shorthand-classes](docs/rules/enforce-shorthand-classes.md) | Enforce shorthand class names. | ✔ | ✔ | | ✔ |
136
+ | [enforce-logical-properties](docs/rules/enforce-logical-properties.md) | Enforce logical property class names. | ✔ | ✔ | | ✔ |
135
137
  | [enforce-canonical-classes](docs/rules/enforce-canonical-classes.md) | Enforce canonical class names. | | ✔ | ✔ | ✔ |
136
138
  | [no-duplicate-classes](docs/rules/no-duplicate-classes.md) | Remove duplicate classes. | ✔ | ✔ | ✔ | ✔ |
137
139
  | [no-deprecated-classes](docs/rules/no-deprecated-classes.md) | Remove deprecated classes. | | ✔ | ✔ | ✔ |
@@ -162,6 +164,7 @@ This plugin is pre-configured to lint tailwind classes for the most popular util
162
164
  - [cnbuilder](https://github.com/xobotyi/cnbuilder): `cnb`
163
165
  - [classnames template literals](https://github.com/netlify/classnames-template-literals): `ctl`
164
166
  - [obj str](https://github.com/lukeed/obj-str): `objstr`
167
+ - [react-twc](https://github.com/gregberge/twc): `twc` · `twx`
165
168
 
166
169
  <br/>
167
170
  <br/>
@@ -174,6 +177,38 @@ See the [Advanced configuration guide](./docs/configuration/advanced.md) to lear
174
177
  <br/>
175
178
  <br/>
176
179
 
180
+ ### Monorepo setup
181
+
182
+ In monorepos, linting is often started from the repository root while each package has its own Tailwind setup.
183
+ You can configure `settings["better-tailwindcss"].cwd` per file group so the plugin resolves `tailwindcss` and config files from the correct project directory.
184
+
185
+ ```js
186
+ // eslint.config.js
187
+ export default [
188
+ {
189
+ files: ["packages/website/**/*.{js,jsx,cjs,mjs,ts,tsx}"],
190
+ settings: {
191
+ "better-tailwindcss": {
192
+ cwd: "./packages/website"
193
+ }
194
+ }
195
+ },
196
+ {
197
+ files: ["packages/app/**/*.{js,jsx,cjs,mjs,ts,tsx}"],
198
+ settings: {
199
+ "better-tailwindcss": {
200
+ cwd: "./packages/app"
201
+ }
202
+ }
203
+ }
204
+ ];
205
+ ```
206
+
207
+ See [Settings](./docs/settings/settings.md#cwd) for more details.
208
+
209
+ <br/>
210
+ <br/>
211
+
177
212
  ### Editor configuration
178
213
 
179
214
  #### VSCode
@@ -66,6 +66,21 @@ export declare function getDefaultSelectors(): ({
66
66
  type: import("../types/rule.js").MatcherType.ObjectValue;
67
67
  }[];
68
68
  name: string;
69
+ } | {
70
+ kind: SelectorKind.Tag;
71
+ path: string;
72
+ } | {
73
+ kind: SelectorKind.Callee;
74
+ match: ({
75
+ type: import("../types/rule.js").MatcherType.String;
76
+ match?: never;
77
+ } | {
78
+ match: {
79
+ type: import("../types/rule.js").MatcherType.String;
80
+ }[];
81
+ type: import("../types/rule.js").MatcherType.AnonymousFunctionReturn;
82
+ })[];
83
+ path: string;
69
84
  } | {
70
85
  kind: SelectorKind.Attribute;
71
86
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/api/defaults.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAQhE;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;;;SAIhC;AAED;;GAEG;AACH,wBAAgB,oBAAoB;;;;;;;;SAInC;AAED;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;SAIlC;AAED;;GAEG;AACH,wBAAgB,cAAc;;;;;;;;SAI7B;AAED,wBAAgB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAElC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/api/defaults.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAQhE;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;;;SAIhC;AAED;;GAEG;AACH,wBAAgB,oBAAoB;;;;;;;;SAInC;AAED;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;SAIlC;AAED;;GAEG;AACH,wBAAgB,cAAc;;;;;;;;SAI7B;AAED,wBAAgB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAElC"}
@@ -1,3 +1,8 @@
1
- export type { CallTarget, ObjectKeyMatcher, ObjectValueMatcher, Regex, Selector, SelectorMatcher, Selectors, StringMatcher } from "../types/rule.js";
2
- export { MatcherType, SelectorKind } from "../types/rule.js";
1
+ export type { ArgumentTarget, CallTarget } from "../types/rule.js";
2
+ export { MatcherType } from "../types/rule.js";
3
+ export type { Matcher, ObjectKeyMatcher, ObjectValueMatcher, StringMatcher } from "../types/rule.js";
4
+ export { SelectorKind } from "../types/rule.js";
5
+ export type { AttributeSelector, CalleeSelector, Selector, TagSelector, VariableSelector } from "../types/rule.js";
6
+ export type { SelectorAnonymousFunctionReturnMatcher, SelectorMatcher, SelectorObjectKeyMatcher, SelectorObjectValueMatcher, SelectorStringMatcher } from "../types/rule.js";
7
+ export type { Regex, Selectors } from "../types/rule.js";
3
8
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACd,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAGnF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGrH,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACnI,YAAY,EAAE,sCAAsC,EAAE,eAAe,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG7L,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC"}
package/lib/api/types.js CHANGED
@@ -1,2 +1,5 @@
1
- export { MatcherType, SelectorKind } from "../types/rule.js";
1
+ /* Legacy Matchers */
2
+ export { MatcherType } from "../types/rule.js";
3
+ /* Selector */
4
+ export { SelectorKind } from "../types/rule.js";
2
5
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAGA,qBAAqB;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/async-utils/escape.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,UAE1C"}
1
+ {"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/async-utils/escape.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,UAE1C"}
@@ -1,4 +1,5 @@
1
+ import { getCachedRegex } from "./regex.js";
1
2
  export function escapeForRegex(word) {
2
- return word.replace(/[$()*+./?[\\\]^{|}-]/g, "\\$&");
3
+ return word.replace(getCachedRegex(/[$()*+./?[\\\]^{|}-]/g), "\\$&");
3
4
  }
4
5
  //# sourceMappingURL=escape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/async-utils/escape.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/async-utils/escape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare function findFileRecursive(cwd: string, paths: string[]): string | undefined;
1
+ export declare function findPathRecursive(cwd: string, startDirectory: string, entries: string[]): string | undefined;
2
2
  export declare function getModifiedDate(filePath: string): Date;
3
3
  //# sourceMappingURL=fs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/async-utils/fs.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CA2BlF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOtD"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/async-utils/fs.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAqB5G;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOtD"}
@@ -1,13 +1,9 @@
1
1
  import { existsSync, statSync } from "node:fs";
2
2
  import { basename, dirname, resolve } from "node:path";
3
- export function findFileRecursive(cwd, paths) {
4
- const resolvedPaths = paths.map(p => resolve(cwd, p));
3
+ export function findPathRecursive(cwd, startDirectory, entries) {
4
+ const resolvedPaths = entries.map(p => resolve(startDirectory, p));
5
5
  for (let resolvedPath = resolvedPaths.shift(); resolvedPath !== undefined; resolvedPath = resolvedPaths.shift()) {
6
6
  if (existsSync(resolvedPath)) {
7
- const stat = statSync(resolvedPath);
8
- if (!stat.isFile()) {
9
- continue;
10
- }
11
7
  return resolvedPath;
12
8
  }
13
9
  const fileName = basename(resolvedPath);
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/async-utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGvD,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,KAAe;IAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAEtD,KAAI,IAAI,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,YAAY,KAAK,SAAS,EAAE,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,EAAC,CAAC;QAE9G,IAAG,UAAU,CAAC,YAAY,CAAC,EAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEpC,IAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAExC,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAEtD,IAAG,eAAe,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG,EAAC,CAAC;YACrD,SAAS;QACX,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/async-utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGvD,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,cAAsB,EAAE,OAAiB;IACtF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnE,KAAI,IAAI,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,YAAY,KAAK,SAAS,EAAE,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,EAAC,CAAC;QAE9G,IAAG,UAAU,CAAC,YAAY,CAAC,EAAC,CAAC;YAC3B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAExC,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAEtD,IAAG,eAAe,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG,EAAC,CAAC;YACrD,SAAS;QACX,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -5,6 +5,7 @@ import type { GetCustomComponentClasses } from "../tailwindcss/custom-component-
5
5
  import type { GetDissectedClasses } from "../tailwindcss/dissect-classes.js";
6
6
  import type { GetPrefix } from "../tailwindcss/prefix.js";
7
7
  import type { GetUnknownClasses } from "../tailwindcss/unknown-classes.js";
8
+ import type { GetVariantOrder } from "../tailwindcss/variant-order.js";
8
9
  import type { Async } from "../types/async.js";
9
10
  export interface Operations {
10
11
  getCanonicalClasses: Async<GetCanonicalClasses>;
@@ -14,6 +15,7 @@ export interface Operations {
14
15
  getDissectedClasses: Async<GetDissectedClasses>;
15
16
  getPrefix: Async<GetPrefix>;
16
17
  getUnknownClasses: Async<GetUnknownClasses>;
18
+ getVariantOrder: Async<GetVariantOrder>;
17
19
  }
18
20
  export type OperationHandlers = {
19
21
  [Operation in keyof Operations]: (...args: Parameters<Operations[Operation]>) => ReturnType<Operations[Operation]>;
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/async-utils/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAChD,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACpC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACpD,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5D,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAChD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CAC7C;AAGD,MAAM,MAAM,iBAAiB,GAAG;KAC7B,SAAS,IAAI,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;CACnH,CAAC"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/async-utils/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAChD,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACpC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACpD,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5D,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAChD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC5C,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;CACzC;AAGD,MAAM,MAAM,iBAAiB,GAAG;KAC7B,SAAS,IAAI,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;CACnH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function getCachedRegex(regex: RegExp): RegExp;
2
+ export declare function getCachedRegex(pattern: string, flags?: string): RegExp;
3
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../src/async-utils/regex.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;AACtD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC"}
@@ -0,0 +1,32 @@
1
+ const REGEX_CACHE = new Map();
2
+ const MAX_CACHE_SIZE = 500;
3
+ function getRegexCacheKey(pattern, flags) {
4
+ return `${flags}\u0000${pattern}`;
5
+ }
6
+ export function getCachedRegex(patternOrRegex, flags) {
7
+ const regexFlags = typeof patternOrRegex === "string"
8
+ ? flags ?? ""
9
+ : patternOrRegex.flags;
10
+ const regexPattern = typeof patternOrRegex === "string"
11
+ ? patternOrRegex
12
+ : patternOrRegex.source;
13
+ const cacheKey = getRegexCacheKey(regexPattern, regexFlags);
14
+ let regex = REGEX_CACHE.get(cacheKey);
15
+ if (!regex) {
16
+ if (REGEX_CACHE.size >= MAX_CACHE_SIZE) {
17
+ const firstKey = REGEX_CACHE.keys().next().value;
18
+ if (firstKey !== undefined) {
19
+ REGEX_CACHE.delete(firstKey);
20
+ }
21
+ }
22
+ regex = typeof patternOrRegex === "string"
23
+ ? new RegExp(patternOrRegex, flags)
24
+ : patternOrRegex;
25
+ REGEX_CACHE.set(cacheKey, regex);
26
+ }
27
+ if (regex.global || regex.sticky) {
28
+ regex.lastIndex = 0;
29
+ }
30
+ return regex;
31
+ }
32
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../src/async-utils/regex.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC9C,MAAM,cAAc,GAAG,GAAG,CAAC;AAG3B,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAa;IACtD,OAAO,GAAG,KAAK,SAAS,OAAO,EAAE,CAAC;AACpC,CAAC;AAID,MAAM,UAAU,cAAc,CAAC,cAA+B,EAAE,KAAc;IAC5E,MAAM,UAAU,GAAG,OAAO,cAAc,KAAK,QAAQ;QACnD,CAAC,CAAC,KAAK,IAAI,EAAE;QACb,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;IAEzB,MAAM,YAAY,GAAG,OAAO,cAAc,KAAK,QAAQ;QACrD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;IAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAE5D,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAG,CAAC,KAAK,EAAC,CAAC;QACT,IAAG,WAAW,CAAC,IAAI,IAAI,cAAc,EAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACjD,IAAG,QAAQ,KAAK,SAAS,EAAC,CAAC;gBACzB,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,GAAG,OAAO,cAAc,KAAK,QAAQ;YACxC,CAAC,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC;YACnC,CAAC,CAAC,cAAc,CAAC;QAEnB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAC,CAAC;QAC/B,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/async-utils/worker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,wBAAgB,gBAAgB,IAAI,cAAc,GAAG,SAAS,CAW7D"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/async-utils/worker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,wBAAgB,gBAAgB,IAAI,cAAc,GAAG,SAAS,CAW7D"}
@@ -1,15 +1,16 @@
1
1
  import { env } from "node:process";
2
2
  import { TsRunner } from "synckit";
3
+ const defaultTimeout = 30000;
3
4
  export function getWorkerOptions() {
4
5
  if (env.NODE_ENV === "test") {
5
6
  return {
6
- timeout: 30000,
7
+ timeout: Number(env.SYNCKIT_TIMEOUT) || defaultTimeout,
7
8
  tsRunner: TsRunner.OXC
8
9
  };
9
10
  }
10
11
  else {
11
12
  return {
12
- timeout: 30000
13
+ timeout: Number(env.SYNCKIT_TIMEOUT) || defaultTimeout
13
14
  };
14
15
  }
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/async-utils/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,MAAM,UAAU,gBAAgB;IAC9B,IAAG,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAC,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAM;YACf,QAAQ,EAAE,QAAQ,CAAC,GAAG;SACvB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,OAAO,EAAE,KAAM;SAChB,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/async-utils/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,MAAM,cAAc,GAAG,KAAM,CAAC;AAE9B,MAAM,UAAU,gBAAgB;IAC9B,IAAG,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAC,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,cAAc;YACtD,QAAQ,EAAE,QAAQ,CAAC,GAAG;SACvB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,cAAc;SACvD,CAAC;IACJ,CAAC;AACH,CAAC"}