eslint-config-un 1.0.0-alpha.10 → 1.0.0-alpha.11

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 (74) hide show
  1. package/README.md +32 -16
  2. package/dist/{angular-UZ2RIT64.js → angular-IOCLLPRU.js} +1 -1
  3. package/dist/{astro-DD7JPZB5.js → astro-FZ7NTZO3.js} +6 -3
  4. package/dist/{ava-MPRDWOOO.js → ava-SPKNY6C7.js} +2 -2
  5. package/dist/{better-tailwind-MJBHTVZ2.js → better-tailwind-SXKBS2OR.js} +3 -3
  6. package/dist/{case-police-HAAQ5OD2.js → case-police-AVZKPAIJ.js} +1 -1
  7. package/dist/{chunk-44SKJYI3.js → chunk-EWFR3AJ3.js} +132 -60
  8. package/dist/{chunk-I7H4HIC3.js → chunk-GO7MMWHS.js} +1 -1
  9. package/dist/{chunk-KEKX3JX7.js → chunk-PA4WMYU4.js} +2 -2
  10. package/dist/{chunk-RV7CNPXM.js → chunk-USNVLEKP.js} +1 -1
  11. package/dist/{chunk-R2JUYKZ5.js → chunk-Z7IFEYIW.js} +1 -1
  12. package/dist/{cli-XUPFKP6H.js → cli-YHZZKBAD.js} +1 -1
  13. package/dist/{cloudfront-functions-2FW2QYXU.js → cloudfront-functions-IGB56LR6.js} +2 -2
  14. package/dist/{cspell-7EYXMN7F.js → cspell-QYGC4AV2.js} +1 -1
  15. package/dist/{css-H4AD73OS.js → css-K2PUBHGV.js} +1 -1
  16. package/dist/{css-in-js-RITOYOGM.js → css-in-js-GTA2LHAS.js} +1 -1
  17. package/dist/{cypress-EPYIMG3H.js → cypress-5CRB2EVZ.js} +2 -2
  18. package/dist/{de-morgan-OG4TXXNS.js → de-morgan-EVAJLFLN.js} +1 -1
  19. package/dist/{depend-SUYP4MQW.js → depend-WMT2DNBE.js} +2 -2
  20. package/dist/{ember-AW7CQJQF.js → ember-XNDVSVMW.js} +2 -2
  21. package/dist/{erasable-syntax-only-N6JHE7EK.js → erasable-syntax-only-3ZGKZG2Y.js} +1 -1
  22. package/dist/es-Z4WHE2MW.js +7 -0
  23. package/dist/{eslint-comments-YUE4O6BM.js → eslint-comments-LSJGHPAT.js} +1 -1
  24. package/dist/{eslint-plugin-NIXU5PFI.js → eslint-plugin-QVG2TUYI.js} +2 -2
  25. package/dist/{file-progress-F3NYA7BG.js → file-progress-GA5UVAFL.js} +1 -1
  26. package/dist/{graphql-H5VCVEVJ.js → graphql-Y3GP4RSW.js} +5 -2
  27. package/dist/html-2LZCCDSJ.js +45 -0
  28. package/dist/{import-E4SRATMT.js → import-JKJEXXRN.js} +4 -2
  29. package/dist/index.d.ts +6743 -5448
  30. package/dist/index.js +87 -65
  31. package/dist/{jest-FX6LZ7A3.js → jest-UC5PGGEN.js} +6 -3
  32. package/dist/{js-ORWEDGCM.js → js-5UH3NGDX.js} +1 -1
  33. package/dist/{js-inline-KXDUL4NT.js → js-inline-VMYM3333.js} +2 -2
  34. package/dist/{jsdoc-YKMO4V4H.js → jsdoc-XQ7YUVBB.js} +1 -1
  35. package/dist/{json-schema-validator-XXIOOG7B.js → json-schema-validator-SRV2P3LS.js} +2 -2
  36. package/dist/{jsonc-EC3YFLQV.js → jsonc-LUQEOPNC.js} +2 -2
  37. package/dist/jsx-a11y-CL6PXHYJ.js +7 -0
  38. package/dist/{markdown-DSYXUNOC.js → markdown-MIG33O3R.js} +3 -3
  39. package/dist/{math-HKL3YT6G.js → math-QZYES46G.js} +1 -1
  40. package/dist/{mdx-2SJBC3XD.js → mdx-IWT5PWWF.js} +3 -3
  41. package/dist/{nextjs-NKCIHC3D.js → nextjs-QGM7WKYQ.js} +1 -1
  42. package/dist/{no-stylistic-rules-5DSH6Y67.js → no-stylistic-rules-BWQTLVLB.js} +143 -16
  43. package/dist/{no-unsanitized-5D7JUYC6.js → no-unsanitized-ER43QAPL.js} +1 -1
  44. package/dist/{node-NTKCZRBQ.js → node-LUHYO23M.js} +1 -1
  45. package/dist/{node-dependencies-547BN73H.js → node-dependencies-FFKJMC3C.js} +2 -2
  46. package/dist/{package-json-UUZAA33P.js → package-json-VYOULPKH.js} +2 -2
  47. package/dist/{perfectionist-NBC6YLPV.js → perfectionist-P3XEX3HM.js} +1 -1
  48. package/dist/playwright-52UXXGAB.js +55 -0
  49. package/dist/{pnpm-OCNPEX36.js → pnpm-B76QORQA.js} +1 -1
  50. package/dist/{prefer-arrow-functions-KGSOVLGO.js → prefer-arrow-functions-Q4EDP75Z.js} +1 -1
  51. package/dist/{promise-3MQJ2DKS.js → promise-MDDD2VYP.js} +1 -1
  52. package/dist/{qwik-VSC2VR7H.js → qwik-EBJPRYUD.js} +1 -1
  53. package/dist/{react-JLQ53RKP.js → react-B6OLMQID.js} +2 -2
  54. package/dist/{regexp-HJ6GDJGD.js → regexp-OMAUDAOO.js} +1 -1
  55. package/dist/{security-C4KA6TH5.js → security-TMFVZUYG.js} +1 -1
  56. package/dist/{solid-B24SR5BX.js → solid-Z62RKQ24.js} +1 -1
  57. package/dist/{sonar-DFCFDCPG.js → sonar-LQQ46WPQ.js} +1 -1
  58. package/dist/{storybook-7MPIDRDY.js → storybook-7WCQSNPB.js} +1 -1
  59. package/dist/{svelte-FBR5TGS4.js → svelte-DY32R35W.js} +3 -3
  60. package/dist/{tailwind-27BJV75B.js → tailwind-IYPSDCLO.js} +1 -1
  61. package/dist/{tanstack-query-K235PI3Z.js → tanstack-query-63L5GIG3.js} +1 -1
  62. package/dist/{testing-library-ZOEVCKLK.js → testing-library-HBVOALXF.js} +2 -2
  63. package/dist/{toml-QKWAVBR4.js → toml-QZU7PK67.js} +2 -2
  64. package/dist/{ts-RN4ZY4XY.js → ts-ICG5SNIV.js} +3 -2
  65. package/dist/{turbo-AJSILEYI.js → turbo-4ADNRCUD.js} +1 -1
  66. package/dist/{unicorn-AEBJMRMS.js → unicorn-OJ2I5WHC.js} +1 -1
  67. package/dist/{unused-imports-LFU6VQ62.js → unused-imports-KNNR5LJU.js} +1 -1
  68. package/dist/{vitest-2XUCD3WD.js → vitest-JHMNUUHD.js} +6 -3
  69. package/dist/{vue-ZP3GHHEA.js → vue-IQWNEI5Y.js} +3 -3
  70. package/dist/{yaml-DH2R23O6.js → yaml-GL7VFXV7.js} +2 -2
  71. package/package.json +119 -42
  72. package/dist/es-7U44XN7Z.js +0 -7
  73. package/dist/html-COURC4I5.js +0 -45
  74. package/dist/jsx-a11y-IFMWMWN5.js +0 -7
package/README.md CHANGED
@@ -40,9 +40,9 @@ pnpm i -D eslint-config-un eslint@latest
40
40
  yarn add -D eslint-config-un eslint@latest # Yarn Berry only (v2+)
41
41
  ```
42
42
 
43
- Almost all the used plugins are direct dependencies of this package, you don't need to install them separately. We aim to update the dependencies within 1 month after their release.
43
+ Commonly used plugins are direct dependencies of this package, you don't need to install them separately. We aim to update the dependencies within 1 month after their release.
44
44
 
45
- Certain plugins are optional peer dependencies, which means that you need to install them manually if they are end up being used.
45
+ Certain plugins (usually framework/library specific ones) are optional peer dependencies, which means that you need to install them manually if they are end up being used. You need to run ESLint with our config once to find out which plugins should be installed manually.
46
46
 
47
47
  <details>
48
48
  <summary>Installation with Yarn Classic (v1)</summary>
@@ -54,21 +54,36 @@ yarn add -D https://registry.npmjs.org/eslint-config-un/-/eslint-config-un-<VERS
54
54
  ```
55
55
  </details>
56
56
 
57
-
58
-
59
57
  <details>
60
- <summary>Optional peer dependencies & reason</summary>
61
-
62
- The reason for making these plugins not coming with this package is because they have heavy non-optional peer dependencies, such as `graphql`, `storybook` and `tailwindcss`. Not only that they're heavy, but having those peer dependencies installed would make this package think that the corresponding config is used.
63
-
64
- | Default plugin prefix | Package name | Reason |
65
- | --------------------- | ------------ | ------ |
66
- | `graphql` | `@graphql-eslint/eslint-plugin` | Heavy dependency `graphql` |
67
- | `betterTailwindcss` | `eslint-plugin-better-tailwindcss` | Heavy dependency `tailwindcss` |
68
- | `storybook` | `eslint-plugin-storybook` | Heavy dependency `storybook` |
69
- | `tailwindcss` | `eslint-plugin-tailwindcss` | Heavy dependency `tailwindcss` |
70
- | `turbo` | `eslint-plugin-turbo` | Heavy dependency `turbo` |
71
- | `eslintPlugin` | `eslint-plugin-eslint-plugin` | Very specific plugin |
58
+ <summary>List of optional peer dependencies</summary>
59
+
60
+ | Default plugin prefix | Package name |
61
+ | --------------------- | ---------------------------------- |
62
+ | `@eslint-react` | `@eslint-react/eslint-plugin` |
63
+ | `@next/next` | `@next/eslint-plugin-next` |
64
+ | `@tanstack/query` | `@tanstack/eslint-plugin-query` |
65
+ | `astro` | `eslint-plugin-astro` |
66
+ | `ava` | `eslint-plugin-ava` |
67
+ | `betterTailwindcss` | `eslint-plugin-better-tailwindcss` |
68
+ | `cypress` | `eslint-plugin-cypress` |
69
+ | `ember` | `eslint-plugin-ember` |
70
+ | `eslintPlugin` | `eslint-plugin-eslint-plugin` |
71
+ | `graphql` | `@graphql-eslint/eslint-plugin` |
72
+ | `jest` | `eslint-plugin-jest` |
73
+ | `playwright` | `eslint-plugin-playwright` |
74
+ | `pnpm` | `eslint-plugin-pnpm` |
75
+ | `qwik` | `eslint-plugin-qwik` |
76
+ | `react-compiler` | `eslint-plugin-react-compiler` |
77
+ | `react-hooks` | `eslint-plugin-react-hooks` |
78
+ | `react-refresh` | `eslint-plugin-react-refresh` |
79
+ | `react` | `eslint-plugin-react` |
80
+ | `solid` | `eslint-plugin-solid` |
81
+ | `storybook` | `eslint-plugin-storybook` |
82
+ | `svelte` | `eslint-plugin-svelte` |
83
+ | `tailwindcss` | `eslint-plugin-tailwindcss` |
84
+ | `testing-library` | `eslint-plugin-testing-library` |
85
+ | `turbo` | `eslint-plugin-turbo` |
86
+ | `vitest` | `@vitest/eslint-plugin` |
72
87
  </details>
73
88
 
74
89
  ### Usage
@@ -248,6 +263,7 @@ Sub-config is a Config located within Config's options. If the parent config is
248
263
  | ![Storybook](./assets/logos-storybook-icon.svg) `storybook` | ✅ (`storybook` is installed) | [eslint-plugin-storybook](https://npmjs.com/eslint-plugin-storybook) (`storybook`) | Since v1.0.0 |
249
264
  | ![Cypress](./assets/vscode-icons-file-type-light-cypress.svg) `cypress` | ✅ (`cypress` is installed) | [eslint-plugin-cypress](https://npmjs.com/eslint-plugin-cypress) (`cypress`) | Since v1.0.0 |
250
265
  | ![Turborepo](./assets/material-icon-theme-turborepo.svg) `turbo` | ✅ (`turbo` is installed) | [eslint-plugin-turbo](https://npmjs.com/eslint-plugin-turbo) (`turbo`) | Since v1.0.0 |
266
+ | ![Playwright](./assets/devicon-playwright.svg) `playwright` | ✅ (`playwright` is installed) | [eslint-plugin-playwright](https://npmjs.com/eslint-plugin-playwright) (`playwright`) | Since v1.0.0 |
251
267
 
252
268
  ### Miscellaneous
253
269
 
@@ -8,7 +8,7 @@ import {
8
8
  defu,
9
9
  interopDefault,
10
10
  klona
11
- } from "./chunk-44SKJYI3.js";
11
+ } from "./chunk-EWFR3AJ3.js";
12
12
 
13
13
  // src/configs/angular.ts
14
14
  import angularTemplateParser from "@angular-eslint/template-parser";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  jsxA11yUnConfig
3
- } from "./chunk-I7H4HIC3.js";
3
+ } from "./chunk-GO7MMWHS.js";
4
4
  import {
5
5
  ERROR,
6
6
  GLOB_ASTRO,
@@ -10,16 +10,19 @@ import {
10
10
  defu,
11
11
  interopDefault,
12
12
  pluginsLoaders
13
- } from "./chunk-44SKJYI3.js";
13
+ } from "./chunk-EWFR3AJ3.js";
14
14
 
15
15
  // src/configs/astro.ts
16
16
  var DEFAULT_ASTRO_FILES = [GLOB_ASTRO];
17
17
  var astroUnConfig = async (context) => {
18
18
  const [eslintPluginAstro, astroEslintParser, { parser: typescriptEslintParser }] = await Promise.all([
19
- pluginsLoaders.astro(context),
19
+ pluginsLoaders.astro(context).then(({ contents }) => contents),
20
20
  interopDefault(import("astro-eslint-parser")),
21
21
  interopDefault(import("typescript-eslint"))
22
22
  ]);
23
+ if (!eslintPluginAstro) {
24
+ return null;
25
+ }
23
26
  const optionsRaw = context.rootOptions.configs?.astro;
24
27
  const optionsResolved = defu(optionsRaw, {
25
28
  files: DEFAULT_ASTRO_FILES,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RULES_TO_DISABLE_IN_TEST_FILES,
3
3
  generateDefaultTestFiles
4
- } from "./chunk-KEKX3JX7.js";
4
+ } from "./chunk-PA4WMYU4.js";
5
5
  import {
6
6
  ERROR,
7
7
  GLOB_JS_TS_X_EXTENSION,
@@ -9,7 +9,7 @@ import {
9
9
  WARNING,
10
10
  createConfigBuilder,
11
11
  defu
12
- } from "./chunk-44SKJYI3.js";
12
+ } from "./chunk-EWFR3AJ3.js";
13
13
 
14
14
  // src/configs/ava.ts
15
15
  var avaUnConfig = (context) => {
@@ -4,7 +4,7 @@ import {
4
4
  WARNING,
5
5
  createConfigBuilder,
6
6
  defu
7
- } from "./chunk-44SKJYI3.js";
7
+ } from "./chunk-EWFR3AJ3.js";
8
8
 
9
9
  // src/configs/better-tailwind.ts
10
10
  var betterTailwindUnConfig = (context) => {
@@ -43,10 +43,10 @@ var betterTailwindUnConfig = (context) => {
43
43
  // v3 doesn't support `parentheses` syntax (`bg-(--primary)`) so there's nothing to enforce
44
44
  tailwindMajorVersion === 3 ? OFF : WARNING
45
45
  ).addRule(
46
- "multiline",
46
+ "enforce-consistent-line-wrapping",
47
47
  breakUpClassesIntoMultipleLines ? WARNING : OFF,
48
48
  breakUpClassesIntoMultipleLines ? [breakUpClassesIntoMultipleLines] : []
49
- ).addRule("no-duplicate-classes", WARNING).addRule("no-unnecessary-whitespace", WARNING).addRule("sort-classes", WARNING).addRule("no-conflicting-classes", ERROR).addRule(
49
+ ).addRule("no-duplicate-classes", WARNING).addRule("no-unnecessary-whitespace", WARNING).addRule("enforce-consistent-class-order", WARNING).addRule("no-conflicting-classes", ERROR).addRule(
50
50
  "no-restricted-classes",
51
51
  restrictedClasses?.length ? ERROR : OFF,
52
52
  restrictedClasses?.length ? [{ restrict: restrictedClasses }] : []
@@ -2,7 +2,7 @@ import {
2
2
  ERROR,
3
3
  createConfigBuilder,
4
4
  defu
5
- } from "./chunk-44SKJYI3.js";
5
+ } from "./chunk-EWFR3AJ3.js";
6
6
 
7
7
  // src/configs/case-police.ts
8
8
  var casePoliceUnConfig = (context) => {
@@ -70,6 +70,7 @@ var PACKAGES_TO_GET_INFO_FOR = [
70
70
  "@testing-library/dom",
71
71
  "cypress",
72
72
  "turbo",
73
+ "playwright",
73
74
  "astro",
74
75
  "vue",
75
76
  "react",
@@ -130,16 +131,16 @@ function getKeysOfTruthyValues(object, requireAtLeastOneTruthyValue) {
130
131
  }
131
132
  return result;
132
133
  }
134
+ var isIn = (key, object) => key in object;
133
135
 
134
136
  // src/plugins.ts
135
- import { styleText } from "util";
136
137
  import { fixupPluginRules } from "@eslint/compat";
137
138
  import stylistic from "@stylistic/eslint-plugin";
138
139
 
139
140
  // package.json
140
141
  var package_default = {
141
142
  name: "eslint-config-un",
142
- version: "1.0.0-alpha.10",
143
+ version: "1.0.0-alpha.11",
143
144
  description: "A universal-ish ESLint config aiming to be reasonably strict and easily configurable.",
144
145
  keywords: [
145
146
  "eslint",
@@ -201,25 +202,21 @@ var package_default = {
201
202
  }
202
203
  },
203
204
  dependencies: {
204
- "@angular-eslint/eslint-plugin": "20.1.0",
205
- "@angular-eslint/eslint-plugin-template": "20.1.0",
206
- "@angular-eslint/template-parser": "20.1.0",
205
+ "@angular-eslint/eslint-plugin": "20.1.1",
206
+ "@angular-eslint/eslint-plugin-template": "20.1.1",
207
+ "@angular-eslint/template-parser": "20.1.1",
207
208
  "@antfu/utils": "9.2.0",
208
209
  "@cspell/eslint-plugin": "9.1.1",
209
210
  "@eslint-community/eslint-plugin-eslint-comments": "4.5.0",
210
- "@eslint-react/eslint-plugin": "1.52.2",
211
211
  "@eslint/compat": "1.3.0",
212
212
  "@eslint/css": "0.9.0",
213
- "@eslint/markdown": "6.5.0",
214
- "@html-eslint/eslint-plugin": "0.41.0",
215
- "@html-eslint/parser": "0.41.0",
216
- "@next/eslint-plugin-next": "15.3.3",
217
- "@stylistic/eslint-plugin": "4.4.1",
218
- "@tanstack/eslint-plugin-query": "5.78.0",
213
+ "@eslint/markdown": "6.6.0",
214
+ "@html-eslint/eslint-plugin": "0.42.0",
215
+ "@html-eslint/parser": "0.42.0",
216
+ "@stylistic/eslint-plugin": "5.0.0",
219
217
  "@typescript-eslint/eslint-plugin": "8.34.1",
220
218
  "@typescript-eslint/parser": "8.34.1",
221
- "@vitest/eslint-plugin": "1.2.7",
222
- "@vue/compiler-sfc": "3.5.16",
219
+ "@vue/compiler-sfc": "3.5.17",
223
220
  "angular-eslint-plugin-template17": "file:./deps/angular-eslint-eslint-plugin-template-17.5.3.tgz",
224
221
  "angular-eslint-plugin18": "file:./deps/angular-eslint-eslint-plugin-18.4.3.tgz",
225
222
  "astro-eslint-parser": "1.2.2",
@@ -228,28 +225,23 @@ var package_default = {
228
225
  defu: "6.1.4",
229
226
  "ember-eslint-parser": "0.5.9",
230
227
  "enhanced-resolve": "5.18.1",
231
- "es-toolkit": "1.39.3",
228
+ "es-toolkit": "1.39.4",
232
229
  "eslint-config-flat-gitignore": "2.1.0",
233
230
  "eslint-config-prettier": "10.1.5",
234
231
  "eslint-import-resolver-typescript": "4.4.3",
235
232
  "eslint-mdx": "3.5.0",
236
233
  "eslint-merge-processors": "2.0.0",
237
- "eslint-plugin-astro": "1.3.1",
238
- "eslint-plugin-ava": "15.0.1",
239
234
  "eslint-plugin-case-police": "2.0.0",
240
235
  "eslint-plugin-css": "0.11.0",
241
- "eslint-plugin-cypress": "5.1.0",
242
236
  "eslint-plugin-de-morgan": "1.3.0",
243
237
  "eslint-plugin-depend": "1.2.0",
244
- "eslint-plugin-ember": "12.5.0",
245
238
  "eslint-plugin-erasable-syntax-only": "0.3.1",
246
239
  "eslint-plugin-es-x": "8.7.0",
247
240
  "eslint-plugin-file-progress": "3.0.2",
248
241
  "eslint-plugin-html": "8.1.3",
249
242
  "eslint-plugin-import-x": "4.15.2",
250
- "eslint-plugin-jest": "28.14.0",
251
243
  "eslint-plugin-jest-extended": "3.0.0",
252
- "eslint-plugin-jsdoc": "51.0.1",
244
+ "eslint-plugin-jsdoc": "51.2.1",
253
245
  "eslint-plugin-json-schema-validator": "5.4.1",
254
246
  "eslint-plugin-jsonc": "2.20.1",
255
247
  "eslint-plugin-jsx-a11y": "6.10.2",
@@ -259,24 +251,15 @@ var package_default = {
259
251
  "eslint-plugin-no-type-assertion": "file:./deps/eslint-plugin-no-type-assertion-1.3.0.tgz",
260
252
  "eslint-plugin-no-unsanitized": "4.1.2",
261
253
  "eslint-plugin-node-dependencies": "1.1.2",
262
- "eslint-plugin-package-json": "0.40.0",
263
- "eslint-plugin-perfectionist": "4.14.0",
254
+ "eslint-plugin-package-json": "0.40.4",
255
+ "eslint-plugin-perfectionist": "4.15.0",
264
256
  "eslint-plugin-pinia": "0.4.1",
265
- "eslint-plugin-pnpm": "0.3.1",
266
257
  "eslint-plugin-prefer-arrow-functions": "3.6.2",
267
258
  "eslint-plugin-prettier": "file:./deps/eslint-plugin-prettier-5.5.0.tgz",
268
259
  "eslint-plugin-promise": "7.2.1",
269
- "eslint-plugin-qwik": "1.14.1",
270
- "eslint-plugin-react": "7.37.5",
271
- "eslint-plugin-react-compiler": "19.1.0-rc.2",
272
- "eslint-plugin-react-hooks": "5.2.0",
273
- "eslint-plugin-react-refresh": "0.4.20",
274
260
  "eslint-plugin-regexp": "2.9.0",
275
261
  "eslint-plugin-security": "3.0.1",
276
- "eslint-plugin-solid": "0.14.5",
277
262
  "eslint-plugin-sonarjs": "3.0.2",
278
- "eslint-plugin-svelte": "3.9.2",
279
- "eslint-plugin-testing-library": "7.5.3",
280
263
  "eslint-plugin-toml": "0.12.0",
281
264
  "eslint-plugin-unicorn": "59.0.1",
282
265
  "eslint-plugin-unused-imports": "4.1.4",
@@ -303,61 +286,156 @@ var package_default = {
303
286
  devDependencies: {
304
287
  "@antfu/ni": "25.0.0",
305
288
  "@arethetypeswrong/cli": "0.18.2",
289
+ "@eslint-react/eslint-plugin": "1.52.2",
306
290
  "@eslint/config-inspector": "1.1.0",
307
291
  "@graphql-eslint/eslint-plugin": "4.4.0",
308
- "@jest/environment": "30.0.0",
309
- "@jest/expect": "30.0.0",
310
- "@sveltejs/kit": "2.21.5",
292
+ "@jest/environment": "30.0.2",
293
+ "@jest/expect": "30.0.2",
294
+ "@next/eslint-plugin-next": "15.3.4",
295
+ "@sveltejs/kit": "2.22.0",
296
+ "@tanstack/eslint-plugin-query": "5.81.2",
311
297
  "@types/debug": "4.1.12",
312
298
  "@types/eslint-plugin-jsx-a11y": "6.10.0",
313
299
  "@types/eslint-plugin-security": "3.0.0",
314
300
  "@types/eslint-plugin-tailwindcss": "3.17.0",
315
301
  "@types/node": "20.19.1",
316
302
  "@types/semver": "7.7.0",
303
+ "@vitest/eslint-plugin": "1.2.7",
317
304
  cspell: "9.1.1",
318
305
  diff: "8.0.2",
319
306
  eslint: "9.29.0",
320
- "eslint-plugin-better-tailwindcss": "3.2.1",
307
+ "eslint-plugin-astro": "1.3.1",
308
+ "eslint-plugin-ava": "15.0.1",
309
+ "eslint-plugin-better-tailwindcss": "3.4.0",
310
+ "eslint-plugin-cypress": "5.1.0",
311
+ "eslint-plugin-ember": "12.5.0",
321
312
  "eslint-plugin-eslint-plugin": "6.5.0",
322
- "eslint-plugin-storybook": "9.0.11",
313
+ "eslint-plugin-jest": "29.0.1",
314
+ "eslint-plugin-playwright": "2.2.0",
315
+ "eslint-plugin-pnpm": "0.3.1",
316
+ "eslint-plugin-qwik": "1.14.1",
317
+ "eslint-plugin-react": "7.37.5",
318
+ "eslint-plugin-react-compiler": "19.1.0-rc.2",
319
+ "eslint-plugin-react-hooks": "5.2.0",
320
+ "eslint-plugin-react-refresh": "0.4.20",
321
+ "eslint-plugin-solid": "0.14.5",
322
+ "eslint-plugin-storybook": "9.0.12",
323
+ "eslint-plugin-svelte": "3.9.3",
323
324
  "eslint-plugin-tailwindcss": "3.18.0",
325
+ "eslint-plugin-testing-library": "7.5.3",
324
326
  "eslint-plugin-turbo": "2.5.4",
325
327
  "eslint-typegen": "2.2.0",
326
328
  "json-schema-to-typescript-lite": "14.1.0",
327
- knip: "5.61.1",
329
+ knip: "5.61.2",
328
330
  "npm-check-updates": "18.0.1",
329
- prettier: "3.5.3",
331
+ prettier: "3.6.0",
330
332
  "release-it": "19.0.3",
331
- shiki: "3.6.0",
333
+ shiki: "3.7.0",
332
334
  tsup: "8.5.0",
333
335
  tsx: "4.20.3",
334
336
  typescript: "5.8.3"
335
337
  },
336
338
  peerDependencies: {
339
+ "@eslint-react/eslint-plugin": "^1.52.2",
337
340
  "@graphql-eslint/eslint-plugin": "^4.4.0",
341
+ "@next/eslint-plugin-next": "^15.3.3",
342
+ "@tanstack/eslint-plugin-query": "^5.81.2",
343
+ "@vitest/eslint-plugin": "^1.2.7",
338
344
  eslint: "^9.15.0",
339
- "eslint-plugin-better-tailwindcss": "^3.2.0",
345
+ "eslint-plugin-astro": "^1.3.1",
346
+ "eslint-plugin-ava": "^15.0.1",
347
+ "eslint-plugin-better-tailwindcss": "^3.4.0",
348
+ "eslint-plugin-cypress": "^5.1.0",
349
+ "eslint-plugin-ember": "^12.5.0",
340
350
  "eslint-plugin-eslint-plugin": "^6.5.0",
341
- "eslint-plugin-storybook": "^9.0.9",
351
+ "eslint-plugin-jest": "^29.0.1",
352
+ "eslint-plugin-playwright": "^2.2.0",
353
+ "eslint-plugin-pnpm": "^0.3.1",
354
+ "eslint-plugin-qwik": "^1.14.1",
355
+ "eslint-plugin-react": "^7.37.5",
356
+ "eslint-plugin-react-compiler": "^19.1.0-rc.2",
357
+ "eslint-plugin-react-hooks": "^5.2.0",
358
+ "eslint-plugin-react-refresh": "^0.4.20",
359
+ "eslint-plugin-solid": "^0.14.5",
360
+ "eslint-plugin-storybook": "^9.0.12",
361
+ "eslint-plugin-svelte": "^3.9.3",
342
362
  "eslint-plugin-tailwindcss": "^3.18.0",
363
+ "eslint-plugin-testing-library": "^7.5.3",
343
364
  "eslint-plugin-turbo": "^2.5.4"
344
365
  },
345
366
  peerDependenciesMeta: {
367
+ "@eslint-react/eslint-plugin": {
368
+ optional: true
369
+ },
346
370
  "@graphql-eslint/eslint-plugin": {
347
371
  optional: true
348
372
  },
373
+ "@next/eslint-plugin-next": {
374
+ optional: true
375
+ },
376
+ "@tanstack/eslint-plugin-query": {
377
+ optional: true
378
+ },
379
+ "@vitest/eslint-plugin": {
380
+ optional: true
381
+ },
382
+ "eslint-plugin-astro": {
383
+ optional: true
384
+ },
385
+ "eslint-plugin-ava": {
386
+ optional: true
387
+ },
349
388
  "eslint-plugin-better-tailwindcss": {
350
389
  optional: true
351
390
  },
391
+ "eslint-plugin-cypress": {
392
+ optional: true
393
+ },
394
+ "eslint-plugin-ember": {
395
+ optional: true
396
+ },
352
397
  "eslint-plugin-eslint-plugin": {
353
398
  optional: true
354
399
  },
400
+ "eslint-plugin-jest": {
401
+ optional: true
402
+ },
403
+ "eslint-plugin-playwright": {
404
+ optional: true
405
+ },
406
+ "eslint-plugin-pnpm": {
407
+ optional: true
408
+ },
409
+ "eslint-plugin-qwik": {
410
+ optional: true
411
+ },
412
+ "eslint-plugin-react": {
413
+ optional: true
414
+ },
415
+ "eslint-plugin-react-compiler": {
416
+ optional: true
417
+ },
418
+ "eslint-plugin-react-hooks": {
419
+ optional: true
420
+ },
421
+ "eslint-plugin-react-refresh": {
422
+ optional: true
423
+ },
424
+ "eslint-plugin-solid": {
425
+ optional: true
426
+ },
355
427
  "eslint-plugin-storybook": {
356
428
  optional: true
357
429
  },
430
+ "eslint-plugin-svelte": {
431
+ optional: true
432
+ },
358
433
  "eslint-plugin-tailwindcss": {
359
434
  optional: true
360
435
  },
436
+ "eslint-plugin-testing-library": {
437
+ optional: true
438
+ },
361
439
  "eslint-plugin-turbo": {
362
440
  optional: true
363
441
  }
@@ -368,7 +446,7 @@ var package_default = {
368
446
  "angular-eslint-plugin18",
369
447
  "eslint-plugin-no-type-assertion"
370
448
  ],
371
- packageManager: "pnpm@10.12.1",
449
+ packageManager: "pnpm@10.12.2",
372
450
  engines: {
373
451
  node: "^20.11 || >=21.2.0"
374
452
  }
@@ -381,19 +459,14 @@ function genPluginLoader(packageName, module, ignoreErrors) {
381
459
  return async (context, options) => {
382
460
  const isPluginOptionalPeerDependency = packageName in OPTIONAL_PLUGINS_PACKAGE_NAMES;
383
461
  try {
384
- return await interopDefault(module());
462
+ return { contents: await interopDefault(module()), packageName };
385
463
  } catch (error) {
386
464
  const ignoredErrors = [
387
465
  ...arraify(ignoreErrors),
388
466
  ...isPluginOptionalPeerDependency ? MODULE_NOT_FOUND_ERROR_CODES : []
389
467
  ];
390
- if (error && typeof error === "object" && "code" in error && typeof error.code === "string" && ignoredErrors.includes(error.code)) {
391
- if (isPluginOptionalPeerDependency && !options?.doNotThrowIfNotFound) {
392
- context.logger.fatal(
393
- `A plugin that listed in optional peer dependencies was used. Please install ${styleText("yellow", packageName)} package by yourself in order for this error to disappear. Its version must satisfy the following semver range: ${styleText("green", OPTIONAL_PLUGINS_PACKAGE_NAMES[packageName])}`
394
- );
395
- }
396
- return null;
468
+ if (error && typeof error === "object" && "code" in error && typeof error.code === "string" && ignoredErrors.includes(error.code) && !options?.throwIfNotFound) {
469
+ return { contents: null, packageName };
397
470
  }
398
471
  throw error;
399
472
  }
@@ -464,7 +537,6 @@ var pluginsLoaders = {
464
537
  ),
465
538
  "case-police": genPluginLoader(
466
539
  "eslint-plugin-case-police",
467
- // @ts-expect-error types mismatch
468
540
  () => import("eslint-plugin-case-police")
469
541
  ),
470
542
  css: genPluginLoader("@eslint/css", () => import("@eslint/css")),
@@ -498,7 +570,6 @@ var pluginsLoaders = {
498
570
  html: genPluginLoader("eslint-plugin-html", () => import("eslint-plugin-html")),
499
571
  import: genPluginLoader(
500
572
  "eslint-plugin-import-x",
501
- // @ts-expect-error types mismatch
502
573
  () => import("eslint-plugin-import-x")
503
574
  ),
504
575
  jest: genPluginLoader("eslint-plugin-jest", () => import("eslint-plugin-jest")),
@@ -544,6 +615,7 @@ var pluginsLoaders = {
544
615
  ),
545
616
  // @ts-expect-error types mismatch
546
617
  pinia: genPluginLoader("eslint-plugin-pinia", () => import("eslint-plugin-pinia")),
618
+ playwright: genPluginLoader("eslint-plugin-playwright", () => import("eslint-plugin-playwright")),
547
619
  pnpm: genPluginLoader("eslint-plugin-pnpm", () => import("eslint-plugin-pnpm")),
548
620
  // @ts-expect-error types mismatch
549
621
  "prefer-arrow-functions": genPluginLoader(
@@ -571,12 +643,13 @@ var pluginsLoaders = {
571
643
  ),
572
644
  regexp: genPluginLoader("eslint-plugin-regexp", () => import("eslint-plugin-regexp")),
573
645
  security: genPluginLoader("eslint-plugin-security", () => import("eslint-plugin-security")),
574
- // @ts-expect-error types mismatch
575
- solid: genPluginLoader("eslint-plugin-solid", () => import("eslint-plugin-solid")),
646
+ solid: genPluginLoader(
647
+ "eslint-plugin-solid",
648
+ () => import("eslint-plugin-solid")
649
+ ),
576
650
  sonarjs: genPluginLoader("eslint-plugin-sonarjs", () => import("eslint-plugin-sonarjs")),
577
651
  storybook: genPluginLoader(
578
652
  "eslint-plugin-storybook",
579
- // @ts-expect-error types mismatch
580
653
  () => import("eslint-plugin-storybook")
581
654
  ),
582
655
  svelte: genPluginLoader(
@@ -599,10 +672,7 @@ var pluginsLoaders = {
599
672
  toml: genPluginLoader("eslint-plugin-toml", () => import("eslint-plugin-toml")),
600
673
  ts: genPluginLoader(
601
674
  "typescript-eslint",
602
- () => (
603
- // @ts-expect-error types mismatch
604
- import("typescript-eslint").then((m) => m.plugin)
605
- )
675
+ () => import("typescript-eslint").then((m) => m.plugin)
606
676
  ),
607
677
  turbo: genPluginLoader("eslint-plugin-turbo", () => import("eslint-plugin-turbo")),
608
678
  unicorn: genPluginLoader("eslint-plugin-unicorn", () => import("eslint-plugin-unicorn")),
@@ -923,6 +993,7 @@ export {
923
993
  doesPackageExist,
924
994
  interopDefault,
925
995
  getKeysOfTruthyValues,
996
+ isIn,
926
997
  objectEntries,
927
998
  objectKeys,
928
999
  defu,
@@ -931,6 +1002,7 @@ export {
931
1002
  omit,
932
1003
  pickBy,
933
1004
  uniq,
1005
+ OPTIONAL_PLUGINS_PACKAGE_NAMES,
934
1006
  pluginsLoaders,
935
1007
  LOADABLE_PLUGIN_PREFIXES_LIST,
936
1008
  PLUGIN_PREFIXES_LIST,
@@ -7,7 +7,7 @@ import {
7
7
  defu,
8
8
  getKeysOfTruthyValues,
9
9
  maybeCall
10
- } from "./chunk-44SKJYI3.js";
10
+ } from "./chunk-EWFR3AJ3.js";
11
11
 
12
12
  // src/configs/jsx-a11y.ts
13
13
  var DEFAULT_AMBIGUOUS_WORDS = ["click here", "here", "link", "a link", "learn more"];
@@ -4,7 +4,7 @@ import {
4
4
  GLOB_JSONC,
5
5
  GLOB_TOML,
6
6
  GLOB_YAML
7
- } from "./chunk-44SKJYI3.js";
7
+ } from "./chunk-EWFR3AJ3.js";
8
8
 
9
9
  // src/configs/shared.ts
10
10
  var generateDefaultTestFiles = (extensions, { includeCypressTests } = {}) => [
@@ -138,7 +138,7 @@ var RULES_TO_DISABLE_IN_EMBEDDED_CODE_BLOCKS = [
138
138
  "unicode-bom",
139
139
  // 🟣
140
140
  // ts
141
- // won't disable: @typescript-eslint/consistent-type-imports, @typescript-eslint/no-useless-empty-export
141
+ // won't disable: ts/consistent-type-imports, ts/no-useless-empty-export
142
142
  "ts/ban-ts-comment",
143
143
  // [runtime-only]
144
144
  "ts/class-methods-use-this",
@@ -4,7 +4,7 @@ import {
4
4
  createConfigBuilder,
5
5
  defu,
6
6
  memoize
7
- } from "./chunk-44SKJYI3.js";
7
+ } from "./chunk-EWFR3AJ3.js";
8
8
 
9
9
  // src/configs/es.ts
10
10
  var esUnConfig = (context, customConfig) => {
@@ -6,7 +6,7 @@ import {
6
6
  defu,
7
7
  getKeysOfTruthyValues,
8
8
  interopDefault
9
- } from "./chunk-44SKJYI3.js";
9
+ } from "./chunk-EWFR3AJ3.js";
10
10
 
11
11
  // src/configs/package-json.ts
12
12
  var DEFAULT_FILES_PACKAGE_JSON = [GLOB_PACKAGE_JSON];
@@ -3,7 +3,7 @@ import {
3
3
  GLOB_JS_TS_EXTENSION,
4
4
  createConfigBuilder,
5
5
  defu
6
- } from "./chunk-44SKJYI3.js";
6
+ } from "./chunk-EWFR3AJ3.js";
7
7
 
8
8
  // src/configs/extra/cli.ts
9
9
  var DEFAULT_CLI_DIRS = ["bin", "scripts", "cli"];
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  esUnConfig
3
- } from "./chunk-RV7CNPXM.js";
3
+ } from "./chunk-USNVLEKP.js";
4
4
  import {
5
5
  ERROR,
6
6
  OFF,
7
7
  createConfigBuilder,
8
8
  defu
9
- } from "./chunk-44SKJYI3.js";
9
+ } from "./chunk-EWFR3AJ3.js";
10
10
 
11
11
  // src/configs/extra/cloudfront-functions.ts
12
12
  var genSyntaxNotAllowedErrorMessage = (syntax, isPlural = false) => `${syntax} ${isPlural ? "are" : "is"} not allowed in CloudFront functions`;
@@ -2,7 +2,7 @@ import {
2
2
  ERROR,
3
3
  createConfigBuilder,
4
4
  defu
5
- } from "./chunk-44SKJYI3.js";
5
+ } from "./chunk-EWFR3AJ3.js";
6
6
 
7
7
  // src/configs/cspell.ts
8
8
  var cspellUnConfig = (context) => {
@@ -7,7 +7,7 @@ import {
7
7
  defu,
8
8
  getKeysOfTruthyValues,
9
9
  interopDefault
10
- } from "./chunk-44SKJYI3.js";
10
+ } from "./chunk-EWFR3AJ3.js";
11
11
 
12
12
  // src/configs/css.ts
13
13
  var cssUnConfig = async (context) => {
@@ -2,7 +2,7 @@ import {
2
2
  ERROR,
3
3
  createConfigBuilder,
4
4
  defu
5
- } from "./chunk-44SKJYI3.js";
5
+ } from "./chunk-EWFR3AJ3.js";
6
6
 
7
7
  // src/configs/css-in-js.ts
8
8
  var cssInJsUnConfig = (context) => {