@rootreeweb/linting 5.6.0 → 5.7.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @rootreeweb/linting
2
2
 
3
+ ## 5.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Fix rules that were silently not running:
8
+
9
+ - `import/no-cycle` and other `import/*` rules that read imported modules now parse TypeScript files, so cycles in TS code are reported.
10
+ - `.jsx` files are now linted by `basic`, and Next.js rules apply to JS/JSX files as well as TS/TSX.
11
+ - `react/boolean-prop-naming` now checks TypeScript prop types.
12
+ - `stylelintTailwind` reports unknown at-rules as warnings, matching the base config.
13
+ - Remove the unused jsx-a11y plugin swap from the Astro config.
14
+ - Stop exempting root-level `test.ts`/`test.tsx` from type-aware rules; this was a workaround for this package's own tests.
15
+
16
+ Projects may see new `import/no-cycle`, `import/named` and `react/boolean-prop-naming` reports after upgrading.
17
+
18
+ ### Patch Changes
19
+
20
+ - Chore: Dependency updates
21
+
22
+ - Remove `eslint-plugin-react-compiler`; its checks now come from the `eslint-plugin-react-hooks` recommended preset.
23
+
3
24
  ## 5.6.0
4
25
 
5
26
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../../src/eslint/astro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAqBrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAW/B,CAAC"}
1
+ {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../../src/eslint/astro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAU/B,CAAC"}
@@ -2,9 +2,8 @@
2
2
  //eslint-disable-next-line @typescript-eslint/ban-ts-comment
3
3
  // @ts-ignore
4
4
  import { configs } from "eslint-plugin-astro";
5
- import { jsxA11y } from "./plugins.js";
6
5
  import { excludePackageJsonFromAll } from "./utils.js";
7
- const astroBase = excludePackageJsonFromAll([
6
+ export const astro = excludePackageJsonFromAll([
8
7
  ...configs["flat/all"],
9
8
  ...configs["flat/jsx-a11y-strict"],
10
9
  {
@@ -15,16 +14,4 @@ const astroBase = excludePackageJsonFromAll([
15
14
  },
16
15
  { ignores: ["**/*.d.ts"] },
17
16
  ]);
18
- export const astro = astroBase.map((config) => {
19
- if (config.plugins?.["jsx-a11y"]) {
20
- return {
21
- ...config,
22
- plugins: {
23
- ...config.plugins,
24
- "jsx-a11y": jsxA11y,
25
- },
26
- };
27
- }
28
- return config;
29
- });
30
17
  //# sourceMappingURL=astro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"astro.js","sourceRoot":"","sources":["../../../src/eslint/astro.ts"],"names":[],"mappings":"AACA,kIAAkI;AAClI,4DAA4D;AAC5D,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,SAAS,GAAoB,yBAAyB,CAAC;IAC5D,GAAG,OAAO,CAAC,UAAU,CAAC;IACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAClC;QACC,KAAK,EAAE;YACN,sBAAsB,EAAE,KAAK,EAAE,0CAA0C;YACzE,kCAAkC,EAAE,KAAK;SACzC;KACD;IACD,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAoB,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;IAC9D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO;YACN,GAAG,MAAM;YACT,OAAO,EAAE;gBACR,GAAG,MAAM,CAAC,OAAO;gBACjB,UAAU,EAAE,OAAO;aACnB;SACD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC,CAAC","sourcesContent":["import type { Linter } from \"eslint\";\n// CJS Workaround. Seems like only the default exists in the CJS package, not using expect error because there is no error in ESM.\n//eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { configs } from \"eslint-plugin-astro\";\n\nimport { jsxA11y } from \"./plugins.js\";\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\nconst astroBase: Linter.Config[] = excludePackageJsonFromAll([\n\t...configs[\"flat/all\"],\n\t...configs[\"flat/jsx-a11y-strict\"],\n\t{\n\t\trules: {\n\t\t\t\"import/no-unresolved\": \"off\", //These rules conflict with astro:content.\n\t\t\t\"sonarjs/no-implicit-dependencies\": \"off\",\n\t\t},\n\t},\n\t{ ignores: [\"**/*.d.ts\"] },\n]);\n\nexport const astro: Linter.Config[] = astroBase.map((config) => {\n\tif (config.plugins?.[\"jsx-a11y\"]) {\n\t\treturn {\n\t\t\t...config,\n\t\t\tplugins: {\n\t\t\t\t...config.plugins,\n\t\t\t\t\"jsx-a11y\": jsxA11y,\n\t\t\t},\n\t\t};\n\t}\n\treturn config;\n});\n"]}
1
+ {"version":3,"file":"astro.js","sourceRoot":"","sources":["../../../src/eslint/astro.ts"],"names":[],"mappings":"AACA,kIAAkI;AAClI,4DAA4D;AAC5D,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAoB,yBAAyB,CAAC;IAC/D,GAAG,OAAO,CAAC,UAAU,CAAC;IACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAClC;QACC,KAAK,EAAE;YACN,sBAAsB,EAAE,KAAK,EAAE,0CAA0C;YACzE,kCAAkC,EAAE,KAAK;SACzC;KACD;IACD,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;CAC1B,CAAC,CAAC","sourcesContent":["import type { Linter } from \"eslint\";\n// CJS Workaround. Seems like only the default exists in the CJS package, not using expect error because there is no error in ESM.\n//eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { configs } from \"eslint-plugin-astro\";\n\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\nexport const astro: Linter.Config[] = excludePackageJsonFromAll([\n\t...configs[\"flat/all\"],\n\t...configs[\"flat/jsx-a11y-strict\"],\n\t{\n\t\trules: {\n\t\t\t\"import/no-unresolved\": \"off\", //These rules conflict with astro:content.\n\t\t\t\"sonarjs/no-implicit-dependencies\": \"off\",\n\t\t},\n\t},\n\t{ ignores: [\"**/*.d.ts\"] },\n]);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/eslint/basic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EA4I/B,CAAC"}
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/eslint/basic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAkJZ,CAAC"}
@@ -9,7 +9,7 @@ import security from "eslint-plugin-security";
9
9
  import sonarjs from "eslint-plugin-sonarjs";
10
10
  import { defineConfig } from "eslint/config";
11
11
  import globals from "globals";
12
- import tseslint from "typescript-eslint";
12
+ import { configs as tseslintConfigs } from "typescript-eslint";
13
13
  import { packageJson } from "./packageJson.js";
14
14
  import { applyPatches } from "./patches/index.js";
15
15
  import { excludePackageJsonFromAll } from "./utils.js";
@@ -17,8 +17,8 @@ import { excludePackageJsonFromAll } from "./utils.js";
17
17
  applyPatches({ sonarjs: sonarjs });
18
18
  export const basic = excludePackageJsonFromAll([
19
19
  eslint.configs.recommended,
20
- ...tseslint.configs.strictTypeChecked,
21
- ...tseslint.configs.stylisticTypeChecked,
20
+ ...tseslintConfigs.strictTypeChecked,
21
+ ...tseslintConfigs.stylisticTypeChecked,
22
22
  importPlugin.flatConfigs.recommended,
23
23
  security.configs.recommended,
24
24
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
@@ -61,6 +61,10 @@ export const basic = excludePackageJsonFromAll([
61
61
  "sonarjs/todo-tag": "warn",
62
62
  },
63
63
  settings: {
64
+ // Without this, import/* rules can't parse imported TS modules (e.g. no-cycle never fires).
65
+ "import/parsers": {
66
+ "@typescript-eslint/parser": [".ts", ".tsx", ".mts", ".cts"],
67
+ },
64
68
  "import/resolver": {
65
69
  node: {
66
70
  extensions: [".js", ".jsx", ".ts", ".tsx", ".svg", ".jpg", ".png"],
@@ -72,6 +76,8 @@ export const basic = excludePackageJsonFromAll([
72
76
  "import/resolver-next": [createTypeScriptImportResolver({})],
73
77
  },
74
78
  },
79
+ // Flat config only matches .js/.mjs/.cjs and the TS extensions by default.
80
+ { files: ["**/*.jsx"] },
75
81
  {
76
82
  languageOptions: {
77
83
  ecmaVersion: 2024,
@@ -127,14 +133,14 @@ export const basic = excludePackageJsonFromAll([
127
133
  },
128
134
  },
129
135
  ...defineConfig({
130
- extends: [tseslint.configs.disableTypeChecked],
136
+ extends: [tseslintConfigs.disableTypeChecked],
131
137
  files: [
132
138
  "**/*.js",
139
+ "**/*.jsx",
140
+ "**/*.mjs",
133
141
  "**/*.astro",
134
142
  "**/*.cjs",
135
143
  "**/*.config.ts",
136
- "test.ts",
137
- "test.tsx",
138
144
  ],
139
145
  rules: {
140
146
  "@typescript-eslint/explicit-module-boundary-types": "off",
@@ -1 +1 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/eslint/basic.ts"],"names":[],"mappings":"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","sourcesContent":["import eslint from \"@eslint/js\";\nimport vitest from \"@vitest/eslint-plugin\";\nimport type { Linter } from \"eslint\";\nimport { createTypeScriptImportResolver } from \"eslint-import-resolver-typescript\";\nimport importPlugin from \"eslint-plugin-import\";\nimport perfectionist from \"eslint-plugin-perfectionist\";\n// @ts-expect-error TS7016 Can't get these types to work.\nimport pluginPromise from \"eslint-plugin-promise\";\nimport security from \"eslint-plugin-security\";\nimport sonarjs from \"eslint-plugin-sonarjs\";\nimport { defineConfig } from \"eslint/config\";\nimport globals from \"globals\";\nimport tseslint from \"typescript-eslint\";\n\nimport { packageJson } from \"./packageJson.js\";\nimport { applyPatches } from \"./patches/index.js\";\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\n// Apply all custom plugin patches before building configs.\napplyPatches({ sonarjs: sonarjs });\n\nexport const basic: Linter.Config[] = excludePackageJsonFromAll([\n\teslint.configs.recommended,\n\t...tseslint.configs.strictTypeChecked,\n\t...tseslint.configs.stylisticTypeChecked,\n\timportPlugin.flatConfigs.recommended,\n\tsecurity.configs.recommended,\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\tpluginPromise.configs[\"flat/recommended\"],\n\t// eslint-disable-next-line import/no-named-as-default-member\n\tperfectionist.configs[\"recommended-natural\"],\n\t...defineConfig({\n\t\tplugins: { vitest },\n\t\trules: {\n\t\t\t...vitest.configs.recommended.rules,\n\t\t\t\"vitest/valid-expect\": [\"warn\", { maxArgs: 2 }],\n\t\t},\n\t}),\n\tsonarjs.configs.recommended,\n\t{\n\t\trules: {\n\t\t\t\"import/first\": \"error\",\n\t\t\t\"import/newline-after-import\": \"error\",\n\t\t\t\"import/no-cycle\": \"error\",\n\t\t\t\"import/no-deprecated\": \"warn\",\n\t\t\t\"import/no-duplicates\": \"error\",\n\t\t\t\"import/no-useless-path-segments\": \"error\",\n\t\t\t\"perfectionist/sort-imports\": \"off\", // Conflict with the prettier ordering\n\t\t\t\"perfectionist/sort-named-imports\": \"off\",\n\t\t\t\"promise/always-return\": \"off\",\n\t\t\t\"promise/catch-or-return\": \"off\",\n\t\t\t\"sonarjs/argument-type\": \"off\", // Disabled: conflicts with the internal includes definition.\n\t\t\t\"sonarjs/assertions-in-tests\": \"off\",\n\t\t\t\"sonarjs/cognitive-complexity\": \"warn\",\n\t\t\t\"sonarjs/deprecation\": \"off\", // Double coverage with @typescript-eslint/no-deprecated\n\t\t\t\"sonarjs/no-control-regex\": \"off\", // Double coverage\n\t\t\t\"sonarjs/no-ignored-exceptions\": \"warn\",\n\t\t\t\"sonarjs/no-implicit-dependencies\": \"warn\",\n\t\t\t\"sonarjs/no-os-command-from-path\": \"warn\",\n\t\t\t\"sonarjs/no-unused-vars\": \"off\", // Double coverage\n\t\t\t\"sonarjs/prefer-read-only-props\": \"warn\",\n\t\t\t\"sonarjs/prefer-single-boolean-return\": \"off\",\n\t\t\t\"sonarjs/pseudo-random\": \"warn\",\n\t\t\t\"sonarjs/slow-regex\": \"warn\",\n\t\t\t\"sonarjs/todo-tag\": \"warn\",\n\t\t},\n\t\tsettings: {\n\t\t\t\"import/resolver\": {\n\t\t\t\tnode: {\n\t\t\t\t\textensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".svg\", \".jpg\", \".png\"],\n\t\t\t\t},\n\t\t\t\ttypescript: {\n\t\t\t\t\textensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".svg\", \".jpg\", \".png\"],\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"import/resolver-next\": [createTypeScriptImportResolver({})],\n\t\t},\n\t},\n\t{\n\t\tlanguageOptions: {\n\t\t\tecmaVersion: 2024,\n\t\t\tglobals: {\n\t\t\t\t...globals.node,\n\t\t\t\t...globals.browser,\n\t\t\t},\n\t\t\tparserOptions: {\n\t\t\t\tprojectService: true,\n\t\t\t\t// CJS Workaround\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\t// @ts-ignore\n\t\t\t\ttsconfigRootDir: import.meta.dirname,\n\t\t\t},\n\t\t\tsourceType: \"module\",\n\t\t},\n\t\trules: {\n\t\t\t\"@typescript-eslint/consistent-type-definitions\": [\"error\", \"type\"],\n\t\t\t\"@typescript-eslint/consistent-type-imports\": \"error\",\n\t\t\t\"@typescript-eslint/explicit-module-boundary-types\": \"warn\",\n\t\t\t\"@typescript-eslint/no-base-to-string\": \"warn\",\n\t\t\t\"@typescript-eslint/no-explicit-any\": \"warn\",\n\t\t\t\"@typescript-eslint/no-floating-promises\": \"warn\",\n\t\t\t\"@typescript-eslint/no-misused-spread\": \"warn\",\n\t\t\t\"@typescript-eslint/no-shadow\": \"error\",\n\t\t\t\"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unnecessary-type-parameters\": \"off\",\n\t\t\t\"@typescript-eslint/no-unsafe-argument\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-assignment\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-call\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-member-access\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-return\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unused-vars\": [\n\t\t\t\t\"error\",\n\t\t\t\t{\n\t\t\t\t\targs: \"all\",\n\t\t\t\t\targsIgnorePattern: \"^_\",\n\t\t\t\t\tcaughtErrors: \"all\",\n\t\t\t\t\tcaughtErrorsIgnorePattern: \"^_\",\n\t\t\t\t\tdestructuredArrayIgnorePattern: \"^_\",\n\t\t\t\t\tignoreRestSiblings: true,\n\t\t\t\t\tvarsIgnorePattern: \"^_\",\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"@typescript-eslint/prefer-nullish-coalescing\": \"warn\",\n\t\t\t\"@typescript-eslint/require-await\": \"warn\",\n\t\t\t\"@typescript-eslint/restrict-template-expressions\": [\n\t\t\t\t\"warn\",\n\t\t\t\t{ allowNumber: true },\n\t\t\t],\n\t\t\t\"no-console\": [\"warn\", { allow: [\"warn\", \"error\"] }],\n\t\t\t\"no-shadow\": \"off\",\n\t\t},\n\t},\n\t...defineConfig({\n\t\textends: [tseslint.configs.disableTypeChecked],\n\t\tfiles: [\n\t\t\t\"**/*.js\",\n\t\t\t\"**/*.astro\",\n\t\t\t\"**/*.cjs\",\n\t\t\t\"**/*.config.ts\",\n\t\t\t\"test.ts\",\n\t\t\t\"test.tsx\",\n\t\t],\n\t\trules: {\n\t\t\t\"@typescript-eslint/explicit-module-boundary-types\": \"off\",\n\t\t},\n\t}),\n\t...packageJson,\n\t// Global Ignores\n\t{\n\t\tignores: [\n\t\t\t\"ds-bundle/**/*\",\n\t\t\t\"dist/**/*\",\n\t\t\t\".tsup/**/*\",\n\t\t\t\".yarn/**/*\",\n\t\t\t\".next/**/*\",\n\t\t\t\".astro/**/*\",\n\t\t\t\"vendor/**/*\",\n\t\t\t\"playwright-report/**/*\",\n\t\t\t\"coverage/**/*\",\n\t\t],\n\t},\n]);\n"]}
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/eslint/basic.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAChD,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,yDAAyD;AACzD,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,2DAA2D;AAC3D,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,KAAK,GAAoB,yBAAyB,CAAC;IAC/D,MAAM,CAAC,OAAO,CAAC,WAAW;IAC1B,GAAG,eAAe,CAAC,iBAAiB;IACpC,GAAG,eAAe,CAAC,oBAAoB;IACvC,YAAY,CAAC,WAAW,CAAC,WAAW;IACpC,QAAQ,CAAC,OAAO,CAAC,WAAW;IAC5B,sEAAsE;IACtE,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACzC,6DAA6D;IAC7D,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC;IAC5C,GAAG,YAAY,CAAC;QACf,OAAO,EAAE,EAAE,MAAM,EAAE;QACnB,KAAK,EAAE;YACN,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YACnC,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;SAC/C;KACD,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,WAAW;IAC3B;QACC,KAAK,EAAE;YACN,cAAc,EAAE,OAAO;YACvB,6BAA6B,EAAE,OAAO;YACtC,iBAAiB,EAAE,OAAO;YAC1B,sBAAsB,EAAE,MAAM;YAC9B,sBAAsB,EAAE,OAAO;YAC/B,iCAAiC,EAAE,OAAO;YAC1C,4BAA4B,EAAE,KAAK,EAAE,sCAAsC;YAC3E,kCAAkC,EAAE,KAAK;YACzC,uBAAuB,EAAE,KAAK;YAC9B,yBAAyB,EAAE,KAAK;YAChC,uBAAuB,EAAE,KAAK,EAAE,6DAA6D;YAC7F,6BAA6B,EAAE,KAAK;YACpC,8BAA8B,EAAE,MAAM;YACtC,qBAAqB,EAAE,KAAK,EAAE,wDAAwD;YACtF,0BAA0B,EAAE,KAAK,EAAE,kBAAkB;YACrD,+BAA+B,EAAE,MAAM;YACvC,kCAAkC,EAAE,MAAM;YAC1C,iCAAiC,EAAE,MAAM;YACzC,wBAAwB,EAAE,KAAK,EAAE,kBAAkB;YACnD,gCAAgC,EAAE,MAAM;YACxC,sCAAsC,EAAE,KAAK;YAC7C,uBAAuB,EAAE,MAAM;YAC/B,oBAAoB,EAAE,MAAM;YAC5B,kBAAkB,EAAE,MAAM;SAC1B;QACD,QAAQ,EAAE;YACT,4FAA4F;YAC5F,gBAAgB,EAAE;gBACjB,2BAA2B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAC5D;YACD,iBAAiB,EAAE;gBAClB,IAAI,EAAE;oBACL,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iBAClE;gBACD,UAAU,EAAE;oBACX,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iBAClE;aACD;YACD,sBAAsB,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;SAC5D;KACD;IACD,2EAA2E;IAC3E,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE;IACvB;QACC,eAAe,EAAE;YAChB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE;gBACR,GAAG,OAAO,CAAC,IAAI;gBACf,GAAG,OAAO,CAAC,OAAO;aAClB;YACD,aAAa,EAAE;gBACd,cAAc,EAAE,IAAI;gBACpB,iBAAiB;gBACjB,2BAA2B;gBAC3B,aAAa;gBACb,eAAe,EAAE,OAAO,IAAI,CAAC,OAAO;aACpC;YACD,UAAU,EAAE,QAAQ;SACpB;QACD,KAAK,EAAE;YACN,gDAAgD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YACnE,4CAA4C,EAAE,OAAO;YACrD,mDAAmD,EAAE,MAAM;YAC3D,sCAAsC,EAAE,MAAM;YAC9C,oCAAoC,EAAE,MAAM;YAC5C,yCAAyC,EAAE,MAAM;YACjD,sCAAsC,EAAE,MAAM;YAC9C,8BAA8B,EAAE,OAAO;YACvC,6CAA6C,EAAE,MAAM;YACrD,mDAAmD,EAAE,KAAK;YAC1D,uCAAuC,EAAE,MAAM;YAC/C,yCAAyC,EAAE,MAAM;YACjD,mCAAmC,EAAE,MAAM;YAC3C,4CAA4C,EAAE,MAAM;YACpD,qCAAqC,EAAE,MAAM;YAC7C,mCAAmC,EAAE;gBACpC,OAAO;gBACP;oBACC,IAAI,EAAE,KAAK;oBACX,iBAAiB,EAAE,IAAI;oBACvB,YAAY,EAAE,KAAK;oBACnB,yBAAyB,EAAE,IAAI;oBAC/B,8BAA8B,EAAE,IAAI;oBACpC,kBAAkB,EAAE,IAAI;oBACxB,iBAAiB,EAAE,IAAI;iBACvB;aACD;YACD,8CAA8C,EAAE,MAAM;YACtD,kCAAkC,EAAE,MAAM;YAC1C,kDAAkD,EAAE;gBACnD,MAAM;gBACN,EAAE,WAAW,EAAE,IAAI,EAAE;aACrB;YACD,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YACpD,WAAW,EAAE,KAAK;SAClB;KACD;IACD,GAAG,YAAY,CAAC;QACf,OAAO,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;QAC7C,KAAK,EAAE;YACN,SAAS;YACT,UAAU;YACV,UAAU;YACV,YAAY;YACZ,UAAU;YACV,gBAAgB;SAChB;QACD,KAAK,EAAE;YACN,mDAAmD,EAAE,KAAK;SAC1D;KACD,CAAC;IACF,GAAG,WAAW;IACd,iBAAiB;IACjB;QACC,OAAO,EAAE;YACR,gBAAgB;YAChB,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,aAAa;YACb,wBAAwB;YACxB,eAAe;SACf;KACD;CACkB,CAAC,CAAC","sourcesContent":["import eslint from \"@eslint/js\";\nimport vitest from \"@vitest/eslint-plugin\";\nimport type { Linter } from \"eslint\";\nimport { createTypeScriptImportResolver } from \"eslint-import-resolver-typescript\";\nimport importPlugin from \"eslint-plugin-import\";\nimport perfectionist from \"eslint-plugin-perfectionist\";\n// @ts-expect-error TS7016 Can't get these types to work.\nimport pluginPromise from \"eslint-plugin-promise\";\nimport security from \"eslint-plugin-security\";\nimport sonarjs from \"eslint-plugin-sonarjs\";\nimport { defineConfig } from \"eslint/config\";\nimport globals from \"globals\";\nimport { configs as tseslintConfigs } from \"typescript-eslint\";\n\nimport { packageJson } from \"./packageJson.js\";\nimport { applyPatches } from \"./patches/index.js\";\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\n// Apply all custom plugin patches before building configs.\napplyPatches({ sonarjs: sonarjs });\n\nexport const basic: Linter.Config[] = excludePackageJsonFromAll([\n\teslint.configs.recommended,\n\t...tseslintConfigs.strictTypeChecked,\n\t...tseslintConfigs.stylisticTypeChecked,\n\timportPlugin.flatConfigs.recommended,\n\tsecurity.configs.recommended,\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\tpluginPromise.configs[\"flat/recommended\"],\n\t// eslint-disable-next-line import/no-named-as-default-member\n\tperfectionist.configs[\"recommended-natural\"],\n\t...defineConfig({\n\t\tplugins: { vitest },\n\t\trules: {\n\t\t\t...vitest.configs.recommended.rules,\n\t\t\t\"vitest/valid-expect\": [\"warn\", { maxArgs: 2 }],\n\t\t},\n\t}),\n\tsonarjs.configs.recommended,\n\t{\n\t\trules: {\n\t\t\t\"import/first\": \"error\",\n\t\t\t\"import/newline-after-import\": \"error\",\n\t\t\t\"import/no-cycle\": \"error\",\n\t\t\t\"import/no-deprecated\": \"warn\",\n\t\t\t\"import/no-duplicates\": \"error\",\n\t\t\t\"import/no-useless-path-segments\": \"error\",\n\t\t\t\"perfectionist/sort-imports\": \"off\", // Conflict with the prettier ordering\n\t\t\t\"perfectionist/sort-named-imports\": \"off\",\n\t\t\t\"promise/always-return\": \"off\",\n\t\t\t\"promise/catch-or-return\": \"off\",\n\t\t\t\"sonarjs/argument-type\": \"off\", // Disabled: conflicts with the internal includes definition.\n\t\t\t\"sonarjs/assertions-in-tests\": \"off\",\n\t\t\t\"sonarjs/cognitive-complexity\": \"warn\",\n\t\t\t\"sonarjs/deprecation\": \"off\", // Double coverage with @typescript-eslint/no-deprecated\n\t\t\t\"sonarjs/no-control-regex\": \"off\", // Double coverage\n\t\t\t\"sonarjs/no-ignored-exceptions\": \"warn\",\n\t\t\t\"sonarjs/no-implicit-dependencies\": \"warn\",\n\t\t\t\"sonarjs/no-os-command-from-path\": \"warn\",\n\t\t\t\"sonarjs/no-unused-vars\": \"off\", // Double coverage\n\t\t\t\"sonarjs/prefer-read-only-props\": \"warn\",\n\t\t\t\"sonarjs/prefer-single-boolean-return\": \"off\",\n\t\t\t\"sonarjs/pseudo-random\": \"warn\",\n\t\t\t\"sonarjs/slow-regex\": \"warn\",\n\t\t\t\"sonarjs/todo-tag\": \"warn\",\n\t\t},\n\t\tsettings: {\n\t\t\t// Without this, import/* rules can't parse imported TS modules (e.g. no-cycle never fires).\n\t\t\t\"import/parsers\": {\n\t\t\t\t\"@typescript-eslint/parser\": [\".ts\", \".tsx\", \".mts\", \".cts\"],\n\t\t\t},\n\t\t\t\"import/resolver\": {\n\t\t\t\tnode: {\n\t\t\t\t\textensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".svg\", \".jpg\", \".png\"],\n\t\t\t\t},\n\t\t\t\ttypescript: {\n\t\t\t\t\textensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".svg\", \".jpg\", \".png\"],\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"import/resolver-next\": [createTypeScriptImportResolver({})],\n\t\t},\n\t},\n\t// Flat config only matches .js/.mjs/.cjs and the TS extensions by default.\n\t{ files: [\"**/*.jsx\"] },\n\t{\n\t\tlanguageOptions: {\n\t\t\tecmaVersion: 2024,\n\t\t\tglobals: {\n\t\t\t\t...globals.node,\n\t\t\t\t...globals.browser,\n\t\t\t},\n\t\t\tparserOptions: {\n\t\t\t\tprojectService: true,\n\t\t\t\t// CJS Workaround\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\t// @ts-ignore\n\t\t\t\ttsconfigRootDir: import.meta.dirname,\n\t\t\t},\n\t\t\tsourceType: \"module\",\n\t\t},\n\t\trules: {\n\t\t\t\"@typescript-eslint/consistent-type-definitions\": [\"error\", \"type\"],\n\t\t\t\"@typescript-eslint/consistent-type-imports\": \"error\",\n\t\t\t\"@typescript-eslint/explicit-module-boundary-types\": \"warn\",\n\t\t\t\"@typescript-eslint/no-base-to-string\": \"warn\",\n\t\t\t\"@typescript-eslint/no-explicit-any\": \"warn\",\n\t\t\t\"@typescript-eslint/no-floating-promises\": \"warn\",\n\t\t\t\"@typescript-eslint/no-misused-spread\": \"warn\",\n\t\t\t\"@typescript-eslint/no-shadow\": \"error\",\n\t\t\t\"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unnecessary-type-parameters\": \"off\",\n\t\t\t\"@typescript-eslint/no-unsafe-argument\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-assignment\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-call\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-member-access\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unsafe-return\": \"warn\",\n\t\t\t\"@typescript-eslint/no-unused-vars\": [\n\t\t\t\t\"error\",\n\t\t\t\t{\n\t\t\t\t\targs: \"all\",\n\t\t\t\t\targsIgnorePattern: \"^_\",\n\t\t\t\t\tcaughtErrors: \"all\",\n\t\t\t\t\tcaughtErrorsIgnorePattern: \"^_\",\n\t\t\t\t\tdestructuredArrayIgnorePattern: \"^_\",\n\t\t\t\t\tignoreRestSiblings: true,\n\t\t\t\t\tvarsIgnorePattern: \"^_\",\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"@typescript-eslint/prefer-nullish-coalescing\": \"warn\",\n\t\t\t\"@typescript-eslint/require-await\": \"warn\",\n\t\t\t\"@typescript-eslint/restrict-template-expressions\": [\n\t\t\t\t\"warn\",\n\t\t\t\t{ allowNumber: true },\n\t\t\t],\n\t\t\t\"no-console\": [\"warn\", { allow: [\"warn\", \"error\"] }],\n\t\t\t\"no-shadow\": \"off\",\n\t\t},\n\t},\n\t...defineConfig({\n\t\textends: [tseslintConfigs.disableTypeChecked],\n\t\tfiles: [\n\t\t\t\"**/*.js\",\n\t\t\t\"**/*.jsx\",\n\t\t\t\"**/*.mjs\",\n\t\t\t\"**/*.astro\",\n\t\t\t\"**/*.cjs\",\n\t\t\t\"**/*.config.ts\",\n\t\t],\n\t\trules: {\n\t\t\t\"@typescript-eslint/explicit-module-boundary-types\": \"off\",\n\t\t},\n\t}),\n\t...packageJson,\n\t// Global Ignores\n\t{\n\t\tignores: [\n\t\t\t\"ds-bundle/**/*\",\n\t\t\t\"dist/**/*\",\n\t\t\t\".tsup/**/*\",\n\t\t\t\".yarn/**/*\",\n\t\t\t\".next/**/*\",\n\t\t\t\".astro/**/*\",\n\t\t\t\"vendor/**/*\",\n\t\t\t\"playwright-report/**/*\",\n\t\t\t\"coverage/**/*\",\n\t\t],\n\t},\n] as Linter.Config[]);\n"]}
@@ -7,7 +7,7 @@ export const next = excludePackageJsonFromAll([
7
7
  },
8
8
  },
9
9
  {
10
- files: ["**/*.ts", "**/*.tsx"],
10
+ files: ["**/*.{js,jsx,mjs,cjs,ts,tsx}"],
11
11
  rules: {
12
12
  ...pluginNext.configs.recommended.rules,
13
13
  },
@@ -1 +1 @@
1
- {"version":3,"file":"next.js","sourceRoot":"","sources":["../../../src/eslint/next.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,IAAI,GAAoB,yBAAyB,CAAC;IAC9D;QACC,OAAO,EAAE;YACR,YAAY,EAAE,UAAU;SACxB;KACD;IACD;QACC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,KAAK,EAAE;YACN,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;SACvC;KACD;CACD,CAAC,CAAC","sourcesContent":["import pluginNext from \"@next/eslint-plugin-next\";\nimport type { Linter } from \"eslint\";\n\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\nexport const next: Linter.Config[] = excludePackageJsonFromAll([\n\t{\n\t\tplugins: {\n\t\t\t\"@next/next\": pluginNext,\n\t\t},\n\t},\n\t{\n\t\tfiles: [\"**/*.ts\", \"**/*.tsx\"],\n\t\trules: {\n\t\t\t...pluginNext.configs.recommended.rules,\n\t\t},\n\t},\n]);\n"]}
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../../../src/eslint/next.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,IAAI,GAAoB,yBAAyB,CAAC;IAC9D;QACC,OAAO,EAAE;YACR,YAAY,EAAE,UAAU;SACxB;KACD;IACD;QACC,KAAK,EAAE,CAAC,8BAA8B,CAAC;QACvC,KAAK,EAAE;YACN,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;SACvC;KACD;CACD,CAAC,CAAC","sourcesContent":["import pluginNext from \"@next/eslint-plugin-next\";\nimport type { Linter } from \"eslint\";\n\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\nexport const next: Linter.Config[] = excludePackageJsonFromAll([\n\t{\n\t\tplugins: {\n\t\t\t\"@next/next\": pluginNext,\n\t\t},\n\t},\n\t{\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx}\"],\n\t\trules: {\n\t\t\t...pluginNext.configs.recommended.rules,\n\t\t},\n\t},\n]);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/eslint/react.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAkD/B,CAAC"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/eslint/react.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AASrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EA2C/B,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import pluginQuery from "@tanstack/eslint-plugin-query";
2
+ import jsxA11y from "eslint-plugin-jsx-a11y";
2
3
  import reactLint from "eslint-plugin-react";
3
- import reactCompiler from "eslint-plugin-react-compiler";
4
4
  import reactHooks from "eslint-plugin-react-hooks";
5
5
  import reactYouMightNotNeedAnEffect from "eslint-plugin-react-you-might-not-need-an-effect";
6
6
  import testingLibrary from "eslint-plugin-testing-library";
7
- import { jsxA11y } from "./plugins.js";
8
7
  import { excludePackageJsonFromAll } from "./utils.js";
9
8
  export const react = excludePackageJsonFromAll([
10
9
  ...pluginQuery.configs["flat/recommended"],
@@ -12,14 +11,6 @@ export const react = excludePackageJsonFromAll([
12
11
  ...jsxA11y.flatConfigs.recommended,
13
12
  files: ["**/*.{js,jsx,ts,tsx}"],
14
13
  },
15
- {
16
- plugins: {
17
- "react-compiler": reactCompiler,
18
- },
19
- rules: {
20
- "react-compiler/react-compiler": "error",
21
- },
22
- },
23
14
  reactHooks.configs.flat["recommended-latest"],
24
15
  reactYouMightNotNeedAnEffect.configs.recommended,
25
16
  {
@@ -28,7 +19,8 @@ export const react = excludePackageJsonFromAll([
28
19
  react: reactLint,
29
20
  },
30
21
  rules: {
31
- "react/boolean-prop-naming": "warn",
22
+ // validateNested is needed for the rule to see TypeScript prop types.
23
+ "react/boolean-prop-naming": ["warn", { validateNested: true }],
32
24
  "react/button-has-type": "warn",
33
25
  "react/jsx-max-depth": ["warn", { max: 4 }],
34
26
  "react/jsx-no-target-blank": "off",
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/eslint/react.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,4BAA4B,MAAM,kDAAkD,CAAC;AAC5F,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAoB,yBAAyB,CAAC;IAC/D,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC1C;QACC,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW;QAClC,KAAK,EAAE,CAAC,sBAAsB,CAAC;KAC/B;IACD;QACC,OAAO,EAAE;YACR,gBAAgB,EAAE,aAAa;SAC/B;QACD,KAAK,EAAE;YACN,+BAA+B,EAAE,OAAO;SACxC;KACD;IACD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;IAC7C,4BAA4B,CAAC,OAAO,CAAC,WAAW;IAChD;QACC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;QACrD,OAAO,EAAE;YACR,KAAK,EAAE,SAAS;SAChB;QACD,KAAK,EAAE;YACN,2BAA2B,EAAE,MAAM;YACnC,uBAAuB,EAAE,MAAM;YAC/B,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAC3C,2BAA2B,EAAE,KAAK;YAClC,+BAA+B,EAAE,MAAM;YACvC,qCAAqC,EAAE,MAAM;YAC7C,4BAA4B,EAAE,MAAM;YACpC,0BAA0B,EAAE,KAAK;YACjC,8BAA8B,EAAE,KAAK;SACrC;QACD,QAAQ,EAAE;YACT,KAAK,EAAE;gBACN,OAAO,EAAE,QAAQ;aACjB;SACD;KACD;IACD;QACC,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC;QACvC,KAAK,EAAE;YACN,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,gBAAgB;SAChB;QACD,KAAK,EAAE;YACN,gCAAgC,EAAE,MAAM;SACxC;KACD;CACD,CAAC,CAAC","sourcesContent":["import pluginQuery from \"@tanstack/eslint-plugin-query\";\nimport type { Linter } from \"eslint\";\nimport reactLint from \"eslint-plugin-react\";\nimport reactCompiler from \"eslint-plugin-react-compiler\";\nimport reactHooks from \"eslint-plugin-react-hooks\";\nimport reactYouMightNotNeedAnEffect from \"eslint-plugin-react-you-might-not-need-an-effect\";\nimport testingLibrary from \"eslint-plugin-testing-library\";\n\nimport { jsxA11y } from \"./plugins.js\";\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\nexport const react: Linter.Config[] = excludePackageJsonFromAll([\n\t...pluginQuery.configs[\"flat/recommended\"],\n\t{\n\t\t...jsxA11y.flatConfigs.recommended,\n\t\tfiles: [\"**/*.{js,jsx,ts,tsx}\"],\n\t},\n\t{\n\t\tplugins: {\n\t\t\t\"react-compiler\": reactCompiler,\n\t\t},\n\t\trules: {\n\t\t\t\"react-compiler/react-compiler\": \"error\",\n\t\t},\n\t},\n\treactHooks.configs.flat[\"recommended-latest\"],\n\treactYouMightNotNeedAnEffect.configs.recommended,\n\t{\n\t\tfiles: [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"],\n\t\tplugins: {\n\t\t\treact: reactLint,\n\t\t},\n\t\trules: {\n\t\t\t\"react/boolean-prop-naming\": \"warn\",\n\t\t\t\"react/button-has-type\": \"warn\",\n\t\t\t\"react/jsx-max-depth\": [\"warn\", { max: 4 }],\n\t\t\t\"react/jsx-no-target-blank\": \"off\",\n\t\t\t\"react/jsx-no-useless-fragment\": \"warn\",\n\t\t\t\"react/no-unstable-nested-components\": \"warn\",\n\t\t\t\"react/no-unused-prop-types\": \"warn\",\n\t\t\t\"react/react-in-jsx-scope\": \"off\",\n\t\t\t\"sonarjs/jsx-no-leaked-render\": \"off\",\n\t\t},\n\t\tsettings: {\n\t\t\treact: {\n\t\t\t\tversion: \"19.0.0\",\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...testingLibrary.configs[\"flat/react\"],\n\t\tfiles: [\n\t\t\t\"tests/**/*.js\",\n\t\t\t\"tests/**/*.jsx\",\n\t\t\t\"tests/**/*.ts\",\n\t\t\t\"tests/**/*.tsx\",\n\t\t],\n\t\trules: {\n\t\t\t\"testing-library/no-node-access\": \"warn\",\n\t\t},\n\t},\n]);\n"]}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/eslint/react.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,4BAA4B,MAAM,kDAAkD,CAAC;AAC5F,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAoB,yBAAyB,CAAC;IAC/D,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC1C;QACC,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW;QAClC,KAAK,EAAE,CAAC,sBAAsB,CAAC;KAC/B;IACD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;IAC7C,4BAA4B,CAAC,OAAO,CAAC,WAAW;IAChD;QACC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;QACrD,OAAO,EAAE;YACR,KAAK,EAAE,SAAS;SAChB;QACD,KAAK,EAAE;YACN,sEAAsE;YACtE,2BAA2B,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;YAC/D,uBAAuB,EAAE,MAAM;YAC/B,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAC3C,2BAA2B,EAAE,KAAK;YAClC,+BAA+B,EAAE,MAAM;YACvC,qCAAqC,EAAE,MAAM;YAC7C,4BAA4B,EAAE,MAAM;YACpC,0BAA0B,EAAE,KAAK;YACjC,8BAA8B,EAAE,KAAK;SACrC;QACD,QAAQ,EAAE;YACT,KAAK,EAAE;gBACN,OAAO,EAAE,QAAQ;aACjB;SACD;KACD;IACD;QACC,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC;QACvC,KAAK,EAAE;YACN,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,gBAAgB;SAChB;QACD,KAAK,EAAE;YACN,gCAAgC,EAAE,MAAM;SACxC;KACD;CACD,CAAC,CAAC","sourcesContent":["import pluginQuery from \"@tanstack/eslint-plugin-query\";\nimport type { Linter } from \"eslint\";\nimport jsxA11y from \"eslint-plugin-jsx-a11y\";\nimport reactLint from \"eslint-plugin-react\";\nimport reactHooks from \"eslint-plugin-react-hooks\";\nimport reactYouMightNotNeedAnEffect from \"eslint-plugin-react-you-might-not-need-an-effect\";\nimport testingLibrary from \"eslint-plugin-testing-library\";\n\nimport { excludePackageJsonFromAll } from \"./utils.js\";\n\nexport const react: Linter.Config[] = excludePackageJsonFromAll([\n\t...pluginQuery.configs[\"flat/recommended\"],\n\t{\n\t\t...jsxA11y.flatConfigs.recommended,\n\t\tfiles: [\"**/*.{js,jsx,ts,tsx}\"],\n\t},\n\treactHooks.configs.flat[\"recommended-latest\"],\n\treactYouMightNotNeedAnEffect.configs.recommended,\n\t{\n\t\tfiles: [\"**/*.js\", \"**/*.jsx\", \"**/*.ts\", \"**/*.tsx\"],\n\t\tplugins: {\n\t\t\treact: reactLint,\n\t\t},\n\t\trules: {\n\t\t\t// validateNested is needed for the rule to see TypeScript prop types.\n\t\t\t\"react/boolean-prop-naming\": [\"warn\", { validateNested: true }],\n\t\t\t\"react/button-has-type\": \"warn\",\n\t\t\t\"react/jsx-max-depth\": [\"warn\", { max: 4 }],\n\t\t\t\"react/jsx-no-target-blank\": \"off\",\n\t\t\t\"react/jsx-no-useless-fragment\": \"warn\",\n\t\t\t\"react/no-unstable-nested-components\": \"warn\",\n\t\t\t\"react/no-unused-prop-types\": \"warn\",\n\t\t\t\"react/react-in-jsx-scope\": \"off\",\n\t\t\t\"sonarjs/jsx-no-leaked-render\": \"off\",\n\t\t},\n\t\tsettings: {\n\t\t\treact: {\n\t\t\t\tversion: \"19.0.0\",\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...testingLibrary.configs[\"flat/react\"],\n\t\tfiles: [\n\t\t\t\"tests/**/*.js\",\n\t\t\t\"tests/**/*.jsx\",\n\t\t\t\"tests/**/*.ts\",\n\t\t\t\"tests/**/*.tsx\",\n\t\t],\n\t\trules: {\n\t\t\t\"testing-library/no-node-access\": \"warn\",\n\t\t},\n\t},\n]);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.d.ts","sourceRoot":"","sources":["../../../src/stylelint/tailwind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAIxC,eAAO,MAAM,iBAAiB,EAAE,MAkC/B,CAAC"}
1
+ {"version":3,"file":"tailwind.d.ts","sourceRoot":"","sources":["../../../src/stylelint/tailwind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAIxC,eAAO,MAAM,iBAAiB,EAAE,MAmC/B,CAAC"}
@@ -24,6 +24,7 @@ export const stylelintTailwind = {
24
24
  "responsive",
25
25
  "screen",
26
26
  ],
27
+ severity: "warning",
27
28
  },
28
29
  ],
29
30
  "scss/function-no-unknown": [
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../../src/stylelint/tailwind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAW;IACxC,GAAG,SAAS;IACZ,KAAK,EAAE;QACN,GAAG,SAAS,CAAC,KAAK;QAClB,yBAAyB,EAAE;YAC1B,IAAI;YACJ;gBACC,aAAa,EAAE;oBACd,qBAAqB;oBACrB,OAAO;oBACP,QAAQ;oBACR,SAAS;oBACT,SAAS;oBACT,gBAAgB;oBAChB,QAAQ;oBACR,qBAAqB;oBACrB,UAAU;oBACV,OAAO;oBACP,OAAO;oBACP,QAAQ;oBACR,yBAAyB;oBACzB,UAAU;oBACV,YAAY;oBACZ,QAAQ;iBACR;aACD;SACD;QACD,0BAA0B,EAAE;YAC3B,IAAI;YACJ;gBACC,eAAe,EAAE,CAAC,OAAO,CAAC;aAC1B;SACD;KACD;CACD,CAAC","sourcesContent":["import type { Config } from \"stylelint\";\n\nimport { stylelint } from \"./basic.js\";\n\nexport const stylelintTailwind: Config = {\n\t...stylelint,\n\trules: {\n\t\t...stylelint.rules,\n\t\t\"scss/at-rule-no-unknown\": [\n\t\t\ttrue,\n\t\t\t{\n\t\t\t\tignoreAtRules: [\n\t\t\t\t\t/** Tailwindcss v4 */\n\t\t\t\t\t\"theme\",\n\t\t\t\t\t\"source\",\n\t\t\t\t\t\"utility\",\n\t\t\t\t\t\"variant\",\n\t\t\t\t\t\"custom-variant\",\n\t\t\t\t\t\"plugin\",\n\t\t\t\t\t/** Tailwindcss v3 */\n\t\t\t\t\t\"tailwind\",\n\t\t\t\t\t\"apply\",\n\t\t\t\t\t\"layer\",\n\t\t\t\t\t\"config\",\n\t\t\t\t\t/** Tailwindcss v1, v2 */\n\t\t\t\t\t\"variants\",\n\t\t\t\t\t\"responsive\",\n\t\t\t\t\t\"screen\",\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\t\"scss/function-no-unknown\": [\n\t\t\ttrue,\n\t\t\t{\n\t\t\t\tignoreFunctions: [\"theme\"],\n\t\t\t},\n\t\t],\n\t},\n};\n"]}
1
+ {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../../src/stylelint/tailwind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAW;IACxC,GAAG,SAAS;IACZ,KAAK,EAAE;QACN,GAAG,SAAS,CAAC,KAAK;QAClB,yBAAyB,EAAE;YAC1B,IAAI;YACJ;gBACC,aAAa,EAAE;oBACd,qBAAqB;oBACrB,OAAO;oBACP,QAAQ;oBACR,SAAS;oBACT,SAAS;oBACT,gBAAgB;oBAChB,QAAQ;oBACR,qBAAqB;oBACrB,UAAU;oBACV,OAAO;oBACP,OAAO;oBACP,QAAQ;oBACR,yBAAyB;oBACzB,UAAU;oBACV,YAAY;oBACZ,QAAQ;iBACR;gBACD,QAAQ,EAAE,SAAS;aACnB;SACD;QACD,0BAA0B,EAAE;YAC3B,IAAI;YACJ;gBACC,eAAe,EAAE,CAAC,OAAO,CAAC;aAC1B;SACD;KACD;CACD,CAAC","sourcesContent":["import type { Config } from \"stylelint\";\n\nimport { stylelint } from \"./basic.js\";\n\nexport const stylelintTailwind: Config = {\n\t...stylelint,\n\trules: {\n\t\t...stylelint.rules,\n\t\t\"scss/at-rule-no-unknown\": [\n\t\t\ttrue,\n\t\t\t{\n\t\t\t\tignoreAtRules: [\n\t\t\t\t\t/** Tailwindcss v4 */\n\t\t\t\t\t\"theme\",\n\t\t\t\t\t\"source\",\n\t\t\t\t\t\"utility\",\n\t\t\t\t\t\"variant\",\n\t\t\t\t\t\"custom-variant\",\n\t\t\t\t\t\"plugin\",\n\t\t\t\t\t/** Tailwindcss v3 */\n\t\t\t\t\t\"tailwind\",\n\t\t\t\t\t\"apply\",\n\t\t\t\t\t\"layer\",\n\t\t\t\t\t\"config\",\n\t\t\t\t\t/** Tailwindcss v1, v2 */\n\t\t\t\t\t\"variants\",\n\t\t\t\t\t\"responsive\",\n\t\t\t\t\t\"screen\",\n\t\t\t\t],\n\t\t\t\tseverity: \"warning\",\n\t\t\t},\n\t\t],\n\t\t\"scss/function-no-unknown\": [\n\t\t\ttrue,\n\t\t\t{\n\t\t\t\tignoreFunctions: [\"theme\"],\n\t\t\t},\n\t\t],\n\t},\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rootreeweb/linting",
3
- "version": "5.6.0",
3
+ "version": "5.7.0",
4
4
  "description": "Shared configurations for ESLint and Stylelint",
5
5
  "license": "UNLICENSED",
6
6
  "repository": "github:rootreeweb/meta-tools",
@@ -47,22 +47,21 @@
47
47
  "dependencies": {
48
48
  "@eslint/js": "^10.0.1",
49
49
  "@ianvs/prettier-plugin-sort-imports": "^4.7.1",
50
- "@next/eslint-plugin-next": "^16.4.4",
50
+ "@next/eslint-plugin-next": "^16.4.5",
51
51
  "@rootreeweb/js-lib": "^4.0.21",
52
- "@tanstack/eslint-plugin-query": "^5.105.2",
52
+ "@tanstack/eslint-plugin-query": "^5.107.1",
53
53
  "@vitest/eslint-plugin": "^1.6.28",
54
54
  "eslint-import-resolver-typescript": "^4.4.5",
55
55
  "eslint-package-json": "^3.0.0",
56
56
  "eslint-plugin-astro": "^3.2.1",
57
57
  "eslint-plugin-import": "^2.32.0",
58
- "eslint-plugin-jsdoc": "^65.4.2",
58
+ "eslint-plugin-jsdoc": "^65.4.5",
59
59
  "eslint-plugin-jsx-a11y": "^6.10.2",
60
60
  "eslint-plugin-perfectionist": "^5.13.0",
61
61
  "eslint-plugin-promise": "^7.3.0",
62
62
  "eslint-plugin-react": "^7.37.5",
63
- "eslint-plugin-react-compiler": "^19.1.0-rc.2",
64
63
  "eslint-plugin-react-hooks": "^7.1.1",
65
- "eslint-plugin-react-you-might-not-need-an-effect": "^1.1.0",
64
+ "eslint-plugin-react-you-might-not-need-an-effect": "^1.2.0",
66
65
  "eslint-plugin-security": "^4.2.1",
67
66
  "eslint-plugin-sonarjs": "^4.2.2",
68
67
  "eslint-plugin-tailwindcss": "^4.4.0",
@@ -76,8 +75,8 @@
76
75
  "stylelint-config-standard": "^40.0.0",
77
76
  "stylelint-config-standard-scss": "^17.0.0",
78
77
  "stylelint-config-tailwindcss": "^1.0.1",
79
- "stylelint-prettier": "^5.0.3",
80
- "tailwindcss": "^4.3.3",
78
+ "stylelint-prettier": "^5.1.0",
79
+ "tailwindcss": "^4.3.5",
81
80
  "typescript-eslint": "^8.72.1"
82
81
  },
83
82
  "devDependencies": {
@@ -87,21 +86,21 @@
87
86
  "@types/node": "^26.6.6",
88
87
  "@types/react": "^19.3.0",
89
88
  "@typescript/native-preview": "^7.0.0-dev.20260707.2",
90
- "@vitest/coverage-v8": "^5.0.5",
91
- "@vitest/ui": "^5.0.5",
89
+ "@vitest/coverage-v8": "^5.1.0",
90
+ "@vitest/ui": "^5.1.0",
92
91
  "del-cli": "^8.0.1",
93
92
  "eslint": "^10.14.0",
94
93
  "husky": "^9.1.7",
95
- "jscpd": "^5.4.2",
96
- "knip": "^6.44.1",
94
+ "jscpd": "^5.4.3",
95
+ "knip": "^6.44.2",
97
96
  "lint-staged": "^17.6.0",
98
97
  "prettier": "~3.8.5",
99
98
  "react": "^19.3.1",
100
99
  "stylelint": "~17.16.0",
101
- "turbo": "~2.11.10",
100
+ "turbo": "^2.11.10",
102
101
  "typescript": "^6.0.3",
103
- "vite": "^8.3.5",
104
- "vitest": "^5.0.5"
102
+ "vite": "^8.3.7",
103
+ "vitest": "^5.1.0"
105
104
  },
106
105
  "peerDependencies": {
107
106
  "eslint": "^10",
@@ -110,7 +109,7 @@
110
109
  "lint-staged": "^17.2.0",
111
110
  "prettier": "~3.8.0",
112
111
  "stylelint": "~17.16.0",
113
- "turbo": "~2.11.2"
112
+ "turbo": "^2.11.2"
114
113
  },
115
114
  "peerDependenciesMeta": {
116
115
  "stylelint": {
@@ -1,3 +0,0 @@
1
- import jsxA11y from "eslint-plugin-jsx-a11y";
2
- export { jsxA11y };
3
- //# sourceMappingURL=plugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/eslint/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -1,3 +0,0 @@
1
- import jsxA11y from "eslint-plugin-jsx-a11y";
2
- export { jsxA11y };
3
- //# sourceMappingURL=plugins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/eslint/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import jsxA11y from \"eslint-plugin-jsx-a11y\";\n\nexport { jsxA11y };\n"]}