@will-stone/eslint-config 21.4.0 → 23.0.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/README.md CHANGED
@@ -12,8 +12,8 @@ pnpm add -D eslint @will-stone/eslint-config
12
12
 
13
13
  ### Optional Peer Dependencies
14
14
 
15
- If you are using any of the following packages, you will also need to install
16
- the corresponding plugin.
15
+ If you are using any of the following packages, you will also need to install the corresponding
16
+ plugin.
17
17
 
18
18
  | Package | Plugin |
19
19
  | ------------- | ----------------------------------------------- |
@@ -45,8 +45,8 @@ For example:
45
45
 
46
46
  ### Lint Staged
47
47
 
48
- If you would like to apply lint and auto-fix before every commit, you can add
49
- the following to your `package.json`:
48
+ If you would like to apply lint and auto-fix before every commit, you can add the following to your
49
+ `package.json`:
50
50
 
51
51
  ```json
52
52
  {
@@ -66,6 +66,5 @@ echo "lint-staged" > .husky/pre-commit
66
66
 
67
67
  ## Credits
68
68
 
69
- Inspired by the excellent
70
- [Flat eslint-config](https://github.com/antfu/eslint-config) by
69
+ Inspired by the excellent [Flat eslint-config](https://github.com/antfu/eslint-config) by
71
70
  [Anthony Fu](https://github.com/antfu).
package/dist/index.d.ts CHANGED
@@ -12,9 +12,7 @@ type Options = {
12
12
  config?: string;
13
13
  cssFiles?: string[];
14
14
  } | boolean;
15
- typescript?: boolean | {
16
- tsconfigPath?: string;
17
- };
15
+ typescript?: boolean;
18
16
  vitest?: boolean;
19
17
  };
20
18
  //#endregion
package/dist/index.js CHANGED
@@ -90,6 +90,7 @@ async function astro(_configContext) {
90
90
  "astro/no-deprecated-astro-resolve": "error",
91
91
  "astro/no-deprecated-getentrybyslug": "error",
92
92
  "astro/no-exports-from-components": "error",
93
+ "astro/no-unsafe-inline-scripts": "error",
93
94
  "astro/no-unused-define-vars-in-style": "error",
94
95
  "astro/semi": "off",
95
96
  "astro/sort-attributes": "warn",
@@ -410,6 +411,7 @@ function jsdoc() {
410
411
  "jsdoc/check-values": "warn",
411
412
  "jsdoc/convert-to-jsdoc-comments": "off",
412
413
  "jsdoc/empty-tags": "warn",
414
+ "jsdoc/escape-inline-tags": "error",
413
415
  "jsdoc/implements-on-classes": "off",
414
416
  "jsdoc/imports-as-dependencies": "off",
415
417
  "jsdoc/informative-docs": "warn",
@@ -426,6 +428,7 @@ function jsdoc() {
426
428
  "jsdoc/no-restricted-syntax": "off",
427
429
  "jsdoc/no-types": "warn",
428
430
  "jsdoc/no-undefined-types": "off",
431
+ "jsdoc/prefer-import-tag": "warn",
429
432
  "jsdoc/reject-any-type": "error",
430
433
  "jsdoc/reject-function-type": "error",
431
434
  "jsdoc/require-asterisk-prefix": "warn",
@@ -445,11 +448,14 @@ function jsdoc() {
445
448
  "jsdoc/require-property-description": "off",
446
449
  "jsdoc/require-property-name": "off",
447
450
  "jsdoc/require-property-type": "off",
451
+ "jsdoc/require-rejects": "error",
448
452
  "jsdoc/require-returns": "off",
449
453
  "jsdoc/require-returns-check": "warn",
450
454
  "jsdoc/require-returns-description": "warn",
451
455
  "jsdoc/require-returns-type": "off",
456
+ "jsdoc/require-tags": "off",
452
457
  "jsdoc/require-template": "off",
458
+ "jsdoc/require-template-description": "error",
453
459
  "jsdoc/require-throws": "warn",
454
460
  "jsdoc/require-throws-description": "error",
455
461
  "jsdoc/require-throws-type": "off",
@@ -457,10 +463,13 @@ function jsdoc() {
457
463
  "jsdoc/require-yields-check": "warn",
458
464
  "jsdoc/require-yields-description": "error",
459
465
  "jsdoc/require-yields-type": "off",
460
- "jsdoc/required-tags": "off",
461
466
  "jsdoc/sort-tags": "warn",
462
467
  "jsdoc/tag-lines": "off",
463
468
  "jsdoc/text-escaping": "off",
469
+ "jsdoc/ts-method-signature-style": "off",
470
+ "jsdoc/ts-no-empty-object-type": "off",
471
+ "jsdoc/ts-no-unnecessary-template-expression": "off",
472
+ "jsdoc/ts-prefer-function-type": "off",
464
473
  "jsdoc/type-formatting": "off",
465
474
  "jsdoc/valid-types": "off"
466
475
  }
@@ -604,7 +613,7 @@ function perfectionist() {
604
613
  "perfectionist/sort-imports": ["warn", { type: "natural" }],
605
614
  "perfectionist/sort-interfaces": "off",
606
615
  "perfectionist/sort-intersection-types": "off",
607
- "perfectionist/sort-jsx-props": "off",
616
+ "perfectionist/sort-jsx-props": ["warn", { type: "natural" }],
608
617
  "perfectionist/sort-maps": "off",
609
618
  "perfectionist/sort-modules": "off",
610
619
  "perfectionist/sort-named-exports": ["warn", { type: "natural" }],
@@ -877,11 +886,14 @@ async function react(_configContext) {
877
886
  "react/state-in-constructor": "error",
878
887
  "react/static-property-placement": "error",
879
888
  "react/style-prop-object": "error",
880
- "react/void-dom-elements-no-children": "error",
881
- "react-hooks/exhaustive-deps": "warn",
882
- "react-hooks/rules-of-hooks": "error"
889
+ "react/void-dom-elements-no-children": "error"
883
890
  },
884
891
  settings: { react: { version: "detect" } }
892
+ }, {
893
+ files: [GLOB_SRC],
894
+ languageOptions: { globals: globals.browser },
895
+ name: "will-stone/react-hooks",
896
+ ...pluginReactHooks.configs.flat["recommended-latest"]
885
897
  }];
886
898
  }
887
899
 
@@ -906,6 +918,8 @@ function style() {
906
918
  "@stylistic/curly-newline": "off",
907
919
  "@stylistic/dot-location": "off",
908
920
  "@stylistic/eol-last": "off",
921
+ "@stylistic/exp-jsx-props-style": "off",
922
+ "@stylistic/exp-list-style": "off",
909
923
  "@stylistic/function-call-argument-newline": "off",
910
924
  "@stylistic/function-call-spacing": "off",
911
925
  "@stylistic/function-paren-newline": "off",
@@ -929,7 +943,6 @@ function style() {
929
943
  "@stylistic/jsx-pascal-case": "off",
930
944
  "@stylistic/jsx-quotes": "off",
931
945
  "@stylistic/jsx-self-closing-comp": "off",
932
- "@stylistic/jsx-sort-props": "off",
933
946
  "@stylistic/jsx-tag-spacing": "off",
934
947
  "@stylistic/jsx-wrap-multilines": "off",
935
948
  "@stylistic/key-spacing": "off",
@@ -1029,8 +1042,7 @@ async function tailwind({ options: { tailwind: rawOptions } }) {
1029
1042
 
1030
1043
  //#endregion
1031
1044
  //#region src/configs/typescript.ts
1032
- function typescript({ options: { typescript: rawOptions } }) {
1033
- const options = !rawOptions || typeof rawOptions === "boolean" ? {} : rawOptions;
1045
+ function typescript() {
1034
1046
  return [{
1035
1047
  files: [
1036
1048
  GLOB_ASTRO_TS,
@@ -1039,13 +1051,7 @@ function typescript({ options: { typescript: rawOptions } }) {
1039
1051
  ],
1040
1052
  languageOptions: {
1041
1053
  parser: parserTypescript,
1042
- parserOptions: { ...options.tsconfigPath ? {
1043
- projectService: {
1044
- allowDefaultProject: ["./*.js"],
1045
- defaultProject: options.tsconfigPath
1046
- },
1047
- tsconfigRootDir: process.cwd()
1048
- } : {} }
1054
+ parserOptions: { projectService: true }
1049
1055
  },
1050
1056
  name: "will-stone/typescript",
1051
1057
  plugins: { "@typescript-eslint": pluginTypescript },
@@ -1089,67 +1095,67 @@ function typescript({ options: { typescript: rawOptions } }) {
1089
1095
  "@typescript-eslint/triple-slash-reference": "error",
1090
1096
  "no-array-constructor": "off",
1091
1097
  "no-empty-function": "off",
1092
- ...options?.tsconfigPath ? {
1093
- "@typescript-eslint/await-thenable": "off",
1094
- "@typescript-eslint/consistent-return": "off",
1095
- "@typescript-eslint/consistent-type-exports": "warn",
1096
- "@typescript-eslint/dot-notation": "off",
1097
- "@typescript-eslint/naming-convention": "off",
1098
- "@typescript-eslint/no-array-delete": "off",
1099
- "@typescript-eslint/no-base-to-string": "off",
1100
- "@typescript-eslint/no-confusing-void-expression": "off",
1101
- "@typescript-eslint/no-deprecated": "off",
1102
- "@typescript-eslint/no-duplicate-type-constituents": "off",
1103
- "@typescript-eslint/no-floating-promises": "off",
1104
- "@typescript-eslint/no-for-in-array": "off",
1105
- "@typescript-eslint/no-implied-eval": "off",
1106
- "@typescript-eslint/no-meaningless-void-operator": "off",
1107
- "@typescript-eslint/no-misused-promises": "off",
1108
- "@typescript-eslint/no-misused-spread": "off",
1109
- "@typescript-eslint/no-mixed-enums": "off",
1110
- "@typescript-eslint/no-redundant-type-constituents": "off",
1111
- "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
1112
- "@typescript-eslint/no-unnecessary-condition": "off",
1113
- "@typescript-eslint/no-unnecessary-qualifier": "off",
1114
- "@typescript-eslint/no-unnecessary-template-expression": "error",
1115
- "@typescript-eslint/no-unnecessary-type-arguments": "off",
1116
- "@typescript-eslint/no-unnecessary-type-assertion": "off",
1117
- "@typescript-eslint/no-unnecessary-type-conversion": "off",
1118
- "@typescript-eslint/no-unnecessary-type-parameters": "error",
1119
- "@typescript-eslint/no-unsafe-argument": "off",
1120
- "@typescript-eslint/no-unsafe-assignment": "off",
1121
- "@typescript-eslint/no-unsafe-call": "off",
1122
- "@typescript-eslint/no-unsafe-enum-comparison": "off",
1123
- "@typescript-eslint/no-unsafe-member-access": "off",
1124
- "@typescript-eslint/no-unsafe-return": "off",
1125
- "@typescript-eslint/no-unsafe-type-assertion": "off",
1126
- "@typescript-eslint/no-unsafe-unary-minus": "off",
1127
- "@typescript-eslint/non-nullable-type-assertion-style": "off",
1128
- "@typescript-eslint/only-throw-error": "off",
1129
- "@typescript-eslint/prefer-destructuring": "off",
1130
- "@typescript-eslint/prefer-find": "off",
1131
- "@typescript-eslint/prefer-includes": "off",
1132
- "@typescript-eslint/prefer-nullish-coalescing": "off",
1133
- "@typescript-eslint/prefer-optional-chain": "off",
1134
- "@typescript-eslint/prefer-promise-reject-errors": "off",
1135
- "@typescript-eslint/prefer-readonly": "off",
1136
- "@typescript-eslint/prefer-readonly-parameter-types": "off",
1137
- "@typescript-eslint/prefer-reduce-type-parameter": "off",
1138
- "@typescript-eslint/prefer-regexp-exec": "off",
1139
- "@typescript-eslint/prefer-return-this-type": "off",
1140
- "@typescript-eslint/prefer-string-starts-ends-with": "off",
1141
- "@typescript-eslint/promise-function-async": "off",
1142
- "@typescript-eslint/related-getter-setter-pairs": "off",
1143
- "@typescript-eslint/require-array-sort-compare": "off",
1144
- "@typescript-eslint/require-await": "off",
1145
- "@typescript-eslint/restrict-plus-operands": "off",
1146
- "@typescript-eslint/restrict-template-expressions": "off",
1147
- "@typescript-eslint/return-await": "off",
1148
- "@typescript-eslint/strict-boolean-expressions": "off",
1149
- "@typescript-eslint/switch-exhaustiveness-check": "off",
1150
- "@typescript-eslint/unbound-method": "off",
1151
- "@typescript-eslint/use-unknown-in-catch-callback-variable": "off"
1152
- } : {},
1098
+ "@typescript-eslint/await-thenable": "off",
1099
+ "@typescript-eslint/consistent-return": "off",
1100
+ "@typescript-eslint/consistent-type-exports": "warn",
1101
+ "@typescript-eslint/dot-notation": "off",
1102
+ "@typescript-eslint/naming-convention": "off",
1103
+ "@typescript-eslint/no-array-delete": "off",
1104
+ "@typescript-eslint/no-base-to-string": "off",
1105
+ "@typescript-eslint/no-confusing-void-expression": "off",
1106
+ "@typescript-eslint/no-deprecated": "off",
1107
+ "@typescript-eslint/no-duplicate-type-constituents": "off",
1108
+ "@typescript-eslint/no-floating-promises": "off",
1109
+ "@typescript-eslint/no-for-in-array": "off",
1110
+ "@typescript-eslint/no-implied-eval": "off",
1111
+ "@typescript-eslint/no-meaningless-void-operator": "warn",
1112
+ "@typescript-eslint/no-misused-promises": "off",
1113
+ "@typescript-eslint/no-misused-spread": "off",
1114
+ "@typescript-eslint/no-mixed-enums": "off",
1115
+ "@typescript-eslint/no-redundant-type-constituents": "off",
1116
+ "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
1117
+ "@typescript-eslint/no-unnecessary-condition": "off",
1118
+ "@typescript-eslint/no-unnecessary-qualifier": "off",
1119
+ "@typescript-eslint/no-unnecessary-template-expression": "error",
1120
+ "@typescript-eslint/no-unnecessary-type-arguments": "off",
1121
+ "@typescript-eslint/no-unnecessary-type-assertion": "off",
1122
+ "@typescript-eslint/no-unnecessary-type-conversion": "off",
1123
+ "@typescript-eslint/no-unnecessary-type-parameters": "error",
1124
+ "@typescript-eslint/no-unsafe-argument": "off",
1125
+ "@typescript-eslint/no-unsafe-assignment": "off",
1126
+ "@typescript-eslint/no-unsafe-call": "off",
1127
+ "@typescript-eslint/no-unsafe-enum-comparison": "off",
1128
+ "@typescript-eslint/no-unsafe-member-access": "off",
1129
+ "@typescript-eslint/no-unsafe-return": "off",
1130
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
1131
+ "@typescript-eslint/no-unsafe-unary-minus": "off",
1132
+ "@typescript-eslint/no-useless-default-assignment": "off",
1133
+ "@typescript-eslint/non-nullable-type-assertion-style": "off",
1134
+ "@typescript-eslint/only-throw-error": "off",
1135
+ "@typescript-eslint/prefer-destructuring": "off",
1136
+ "@typescript-eslint/prefer-find": "off",
1137
+ "@typescript-eslint/prefer-includes": "off",
1138
+ "@typescript-eslint/prefer-nullish-coalescing": "off",
1139
+ "@typescript-eslint/prefer-optional-chain": "off",
1140
+ "@typescript-eslint/prefer-promise-reject-errors": "off",
1141
+ "@typescript-eslint/prefer-readonly": "off",
1142
+ "@typescript-eslint/prefer-readonly-parameter-types": "off",
1143
+ "@typescript-eslint/prefer-reduce-type-parameter": "off",
1144
+ "@typescript-eslint/prefer-regexp-exec": "off",
1145
+ "@typescript-eslint/prefer-return-this-type": "off",
1146
+ "@typescript-eslint/prefer-string-starts-ends-with": "off",
1147
+ "@typescript-eslint/promise-function-async": "off",
1148
+ "@typescript-eslint/related-getter-setter-pairs": "off",
1149
+ "@typescript-eslint/require-array-sort-compare": "off",
1150
+ "@typescript-eslint/require-await": "off",
1151
+ "@typescript-eslint/restrict-plus-operands": "off",
1152
+ "@typescript-eslint/restrict-template-expressions": "off",
1153
+ "@typescript-eslint/return-await": "off",
1154
+ "@typescript-eslint/strict-boolean-expressions": "off",
1155
+ "@typescript-eslint/strict-void-return": "off",
1156
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
1157
+ "@typescript-eslint/unbound-method": "off",
1158
+ "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
1153
1159
  "class-methods-use-this": "off",
1154
1160
  "default-param-last": "off",
1155
1161
  "no-duplicate-imports": "off",
@@ -1159,6 +1165,7 @@ function typescript({ options: { typescript: rawOptions } }) {
1159
1165
  "no-restricted-imports": "off",
1160
1166
  "no-shadow": "off",
1161
1167
  "no-unused-expressions": "off",
1168
+ "no-unused-private-class-members": "off",
1162
1169
  "no-unused-vars": "off",
1163
1170
  "no-use-before-define": "off",
1164
1171
  "no-useless-constructor": "off",
@@ -1202,6 +1209,7 @@ function typescript({ options: { typescript: rawOptions } }) {
1202
1209
  "@typescript-eslint/no-unnecessary-type-constraint": "warn",
1203
1210
  "@typescript-eslint/no-unsafe-declaration-merging": "error",
1204
1211
  "@typescript-eslint/no-unused-expressions": ["error"],
1212
+ "@typescript-eslint/no-unused-private-class-members": "error",
1205
1213
  "@typescript-eslint/no-unused-vars": ["error", {
1206
1214
  argsIgnorePattern: "^_",
1207
1215
  varsIgnorePattern: "[iI]gnored"
@@ -1375,12 +1383,12 @@ function unicorn() {
1375
1383
  //#endregion
1376
1384
  //#region src/configs/vitest.ts
1377
1385
  async function vitest(_configContext) {
1378
- const pluginVitest = await interopDefault(import("@vitest/eslint-plugin"));
1379
1386
  return [{
1380
1387
  files: GLOB_TESTS,
1381
1388
  name: "will-stone/vitest",
1382
- plugins: { vitest: pluginVitest },
1389
+ plugins: { vitest: await interopDefault(import("@vitest/eslint-plugin")) },
1383
1390
  rules: {
1391
+ "vitest/consistent-each-for": "off",
1384
1392
  "vitest/consistent-test-filename": "warn",
1385
1393
  "vitest/consistent-test-it": "warn",
1386
1394
  "vitest/consistent-vitest-vi": "warn",
@@ -1408,6 +1416,7 @@ async function vitest(_configContext) {
1408
1416
  "vitest/no-standalone-expect": "warn",
1409
1417
  "vitest/no-test-prefixes": "warn",
1410
1418
  "vitest/no-test-return-statement": "warn",
1419
+ "vitest/no-unneeded-async-expect-function": "warn",
1411
1420
  "vitest/padding-around-after-all-blocks": "warn",
1412
1421
  "vitest/padding-around-after-each-blocks": "warn",
1413
1422
  "vitest/padding-around-all": "off",
@@ -1416,6 +1425,7 @@ async function vitest(_configContext) {
1416
1425
  "vitest/padding-around-describe-blocks": "warn",
1417
1426
  "vitest/padding-around-expect-groups": "off",
1418
1427
  "vitest/padding-around-test-blocks": "warn",
1428
+ "vitest/prefer-called-exactly-once-with": "warn",
1419
1429
  "vitest/prefer-called-once": "warn",
1420
1430
  "vitest/prefer-called-times": "off",
1421
1431
  "vitest/prefer-called-with": "warn",
@@ -1428,9 +1438,11 @@ async function vitest(_configContext) {
1428
1438
  "vitest/prefer-expect-type-of": "warn",
1429
1439
  "vitest/prefer-hooks-in-order": "warn",
1430
1440
  "vitest/prefer-hooks-on-top": "warn",
1441
+ "vitest/prefer-import-in-mock": "warn",
1431
1442
  "vitest/prefer-importing-vitest-globals": "warn",
1432
1443
  "vitest/prefer-lowercase-title": "warn",
1433
1444
  "vitest/prefer-mock-promise-shorthand": "warn",
1445
+ "vitest/prefer-mock-return-shorthand": "warn",
1434
1446
  "vitest/prefer-snapshot-hint": "warn",
1435
1447
  "vitest/prefer-spy-on": "warn",
1436
1448
  "vitest/prefer-strict-boolean-matchers": "warn",
@@ -1440,12 +1452,15 @@ async function vitest(_configContext) {
1440
1452
  "vitest/prefer-to-be-object": "warn",
1441
1453
  "vitest/prefer-to-be-truthy": "off",
1442
1454
  "vitest/prefer-to-contain": "warn",
1455
+ "vitest/prefer-to-have-been-called-times": "warn",
1443
1456
  "vitest/prefer-to-have-length": "warn",
1444
1457
  "vitest/prefer-todo": "warn",
1445
1458
  "vitest/prefer-vi-mocked": "warn",
1459
+ "vitest/require-awaited-expect-poll": "error",
1446
1460
  "vitest/require-hook": "warn",
1447
1461
  "vitest/require-local-test-context-for-concurrent-snapshots": "error",
1448
1462
  "vitest/require-mock-type-parameters": "warn",
1463
+ "vitest/require-test-timeout": "off",
1449
1464
  "vitest/require-to-throw-message": "warn",
1450
1465
  "vitest/require-top-level-describe": "off",
1451
1466
  "vitest/valid-describe-callback": "error",
@@ -1532,21 +1547,19 @@ const autoConfigs = [
1532
1547
  * devDependencies field.
1533
1548
  */
1534
1549
  function checkDepsExist(depNames) {
1535
- const depCount = depNames.length;
1536
1550
  const allPackageJsonPaths = globbySync(["**/package.json", "!**/node_modules/**"]);
1537
1551
  const hasPackageMap = {};
1552
+ const checkAllFound = () => Object.values(hasPackageMap).every(Boolean);
1538
1553
  for (const depName of depNames) hasPackageMap[depName] = false;
1539
- let foundCount = 0;
1540
1554
  for (const packageJsonPath of allPackageJsonPaths) {
1541
1555
  const buffer = readFileSync(packageJsonPath);
1542
1556
  const data = new TextDecoder().decode(buffer);
1543
1557
  const package_ = JSON.parse(data);
1544
1558
  for (const depName of depNames) if (package_ && (package_.dependencies?.[depName] || package_.devDependencies?.[depName])) {
1545
1559
  hasPackageMap[depName] = true;
1546
- foundCount = foundCount + 1;
1547
- if (foundCount === depCount) break;
1560
+ if (checkAllFound()) break;
1548
1561
  }
1549
- if (foundCount === depCount) break;
1562
+ if (checkAllFound()) break;
1550
1563
  }
1551
1564
  return hasPackageMap;
1552
1565
  }
@@ -1563,8 +1576,7 @@ const defaultOptions = {};
1563
1576
  */
1564
1577
  async function configImpl(options = defaultOptions) {
1565
1578
  const configs = [];
1566
- const autoConfigDeps = Object.values(autoConfigs).map(({ dep }) => dep);
1567
- const existingAutoConfigDeps = checkDepsExist(autoConfigDeps);
1579
+ const existingAutoConfigDeps = checkDepsExist(Object.values(autoConfigs).map(({ dep }) => dep));
1568
1580
  const enabledAutoConfigs = autoConfigs.filter(({ dep, optionName }) => {
1569
1581
  return options?.[optionName] || existingAutoConfigDeps[dep] && options?.[optionName] !== false;
1570
1582
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@will-stone/eslint-config",
3
- "version": "21.4.0",
3
+ "version": "23.0.0",
4
4
  "description": "Will Stone's ESLint config",
5
5
  "keywords": [
6
6
  "eslint-config"
@@ -30,48 +30,49 @@
30
30
  "typecheck": "tsc --noEmit"
31
31
  },
32
32
  "dependencies": {
33
- "@stylistic/eslint-plugin": "^5.4.0",
33
+ "@stylistic/eslint-plugin": "^5.8.0",
34
34
  "@types/confusing-browser-globals": "^1.0.3",
35
35
  "@types/debug": "^4.1.12",
36
- "@typescript-eslint/eslint-plugin": "^8.44.0",
37
- "@typescript-eslint/parser": "^8.44.0",
36
+ "@typescript-eslint/eslint-plugin": "^8.55.0",
37
+ "@typescript-eslint/parser": "^8.55.0",
38
38
  "confusing-browser-globals": "^1.0.11",
39
39
  "debug": "^4.4.3",
40
40
  "eslint-config-flat-gitignore": "^2.1.0",
41
- "eslint-plugin-jsdoc": "^59.1.0",
41
+ "eslint-plugin-jsdoc": "^62.5.4",
42
42
  "eslint-plugin-jsx-a11y": "^6.10.2",
43
- "eslint-plugin-n": "^17.23.1",
44
- "eslint-plugin-package-json": "^0.56.3",
45
- "eslint-plugin-perfectionist": "^4.15.0",
43
+ "eslint-plugin-n": "^17.23.2",
44
+ "eslint-plugin-package-json": "^0.56.4",
45
+ "eslint-plugin-perfectionist": "^4.15.1",
46
46
  "eslint-plugin-unicorn": "^61.0.2",
47
- "globals": "^16.4.0",
47
+ "globals": "^16.5.0",
48
48
  "globby": "^14.1.0",
49
- "type-fest": "^5.0.1",
50
- "typescript-eslint": "^8.44.0"
49
+ "type-fest": "^5.4.4",
50
+ "typescript-eslint": "^8.55.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@commits-with-character/conventional-changelog-preset": "^5.1.1",
54
- "@eslint/config-inspector": "^1.3.0",
55
- "@release-it/conventional-changelog": "^10.0.1",
56
- "@types/node": "^22.15.29",
57
- "@typescript-eslint/utils": "^8.44.0",
58
- "@vitest/eslint-plugin": "^1.3.12",
59
- "@will-stone/prettier-config": "^11.0.1",
54
+ "@eslint/config-inspector": "^1.4.2",
55
+ "@release-it/conventional-changelog": "^10.0.5",
56
+ "@types/node": "^24.10.13",
57
+ "@typescript-eslint/utils": "^8.55.0",
58
+ "@vitest/eslint-plugin": "^1.6.7",
59
+ "@will-stone/prettier-config": "^12.0.0",
60
60
  "astro-eslint-parser": "^1.2.2",
61
- "eslint": "^9.36.0",
62
- "eslint-plugin-astro": "^1.3.1",
61
+ "baseline-browser-mapping": "^2.9.19",
62
+ "eslint": "^9.39.2",
63
+ "eslint-plugin-astro": "^1.5.0",
63
64
  "eslint-plugin-react": "^7.37.5",
64
- "eslint-plugin-react-hooks": "^5.2.0",
65
+ "eslint-plugin-react-hooks": "^7.0.1",
65
66
  "eslint-plugin-tailwindcss": "^3.18.2",
66
67
  "husky": "^9.1.7",
67
- "jiti": "^2.5.1",
68
- "lint-staged": "^16.1.6",
69
- "memfs": "^4.42.0",
70
- "prettier": "^3.6.2",
71
- "release-it": "^19.0.5",
72
- "tsdown": "^0.15.3",
73
- "typescript": "^5.9.2",
74
- "vitest": "^3.2.4"
68
+ "jiti": "^2.6.1",
69
+ "lint-staged": "^16.2.7",
70
+ "memfs": "^4.56.10",
71
+ "prettier": "^3.8.1",
72
+ "release-it": "^19.2.4",
73
+ "tsdown": "^0.15.12",
74
+ "typescript": "^5.9.3",
75
+ "vitest": "^4.0.18"
75
76
  },
76
77
  "peerDependencies": {
77
78
  "@vitest/eslint-plugin": "^1.1.43",
@@ -102,7 +103,7 @@
102
103
  "optional": true
103
104
  }
104
105
  },
105
- "packageManager": "pnpm@10.17.0",
106
+ "packageManager": "pnpm@10.28.2",
106
107
  "engines": {
107
108
  "node": ">=22"
108
109
  },