@meteorlxy/eslint-config 3.8.0 → 4.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/dist/index.cjs CHANGED
@@ -546,6 +546,7 @@ const builtinRules = {
546
546
  "error",
547
547
  { functions: true, classes: true, variables: true }
548
548
  ],
549
+ "no-useless-assignment": "error",
549
550
  "no-useless-backreference": "error",
550
551
  "no-useless-call": "off",
551
552
  "no-useless-catch": "error",
@@ -643,7 +644,6 @@ const builtinRules = {
643
644
  "radix": "error",
644
645
  "require-atomic-updates": "off",
645
646
  "require-await": "off",
646
- "require-jsdoc": "off",
647
647
  "require-unicode-regexp": "off",
648
648
  "require-yield": "error",
649
649
  "rest-spread-spacing": ["error", "never"],
@@ -678,7 +678,6 @@ const builtinRules = {
678
678
  "template-curly-spacing": "error",
679
679
  "unicode-bom": ["error", "never"],
680
680
  "use-isnan": "error",
681
- "valid-jsdoc": "off",
682
681
  "valid-typeof": [
683
682
  "error",
684
683
  {
@@ -743,6 +742,7 @@ const importsRules = {
743
742
  "prettier",
744
743
  "rollup",
745
744
  "stylelint",
745
+ "taze",
746
746
  "tsup",
747
747
  "vite",
748
748
  "vitest",
@@ -1010,6 +1010,7 @@ const reactRules = {
1010
1010
  }
1011
1011
  ],
1012
1012
  "react/jsx-props-no-multi-spaces": "error",
1013
+ "react/jsx-props-no-spread-multi": "error",
1013
1014
  "react/jsx-props-no-spreading": [
1014
1015
  "error",
1015
1016
  {
@@ -1230,11 +1231,6 @@ const typescriptRules = {
1230
1231
  // use noImplicitReturns instead
1231
1232
  "@typescript-eslint/default-param-last": "error",
1232
1233
  "@typescript-eslint/dot-notation": ["error", { allowKeywords: true }],
1233
- "@typescript-eslint/lines-between-class-members": [
1234
- "error",
1235
- "always",
1236
- { exceptAfterSingleLine: false }
1237
- ],
1238
1234
  "@typescript-eslint/no-array-constructor": "error",
1239
1235
  "@typescript-eslint/no-empty-function": [
1240
1236
  "error",
@@ -1255,8 +1251,6 @@ const typescriptRules = {
1255
1251
  }
1256
1252
  ],
1257
1253
  "@typescript-eslint/no-shadow": "error",
1258
- "@typescript-eslint/no-throw-literal": "off",
1259
- // deprecated
1260
1254
  "@typescript-eslint/no-unused-expressions": [
1261
1255
  "error",
1262
1256
  {
@@ -1315,6 +1309,8 @@ const typescriptRules = {
1315
1309
  ],
1316
1310
  "@typescript-eslint/no-dupe-class-members": "off",
1317
1311
  // checked by typescript
1312
+ "@typescript-eslint/no-empty-interface": "off",
1313
+ // deprecated
1318
1314
  "@typescript-eslint/no-import-type-side-effects": "error",
1319
1315
  "@typescript-eslint/no-invalid-this": "off",
1320
1316
  // checked by typescript
@@ -1325,14 +1321,30 @@ const typescriptRules = {
1325
1321
  "off",
1326
1322
  { paths: [], patterns: [] }
1327
1323
  ],
1324
+ "@typescript-eslint/no-restricted-types": [
1325
+ "off",
1326
+ {
1327
+ types: {
1328
+ OldType: "Don't use OldType because it is unsafe",
1329
+ OldAPI: {
1330
+ message: "Use NewAPI instead",
1331
+ fixWith: "NewAPI"
1332
+ },
1333
+ SoonToBeOldAPI: {
1334
+ message: "Use NewAPI instead",
1335
+ suggest: ["NewAPIOne", "NewAPITwo"]
1336
+ }
1337
+ }
1338
+ }
1339
+ ],
1328
1340
  "@typescript-eslint/no-type-alias": "off",
1329
1341
  // deprecated
1342
+ "@typescript-eslint/no-unnecessary-parameter-property-assignment": "error",
1330
1343
  "@typescript-eslint/no-unnecessary-qualifier": "off",
1331
1344
  "@typescript-eslint/no-unsafe-unary-minus": "error",
1332
1345
  "@typescript-eslint/no-useless-empty-export": "off",
1333
1346
  "@typescript-eslint/no-var-requires": ["error", { allow: [] }],
1334
1347
  "@typescript-eslint/only-throw-error": "error",
1335
- "@typescript-eslint/padding-line-between-statements": "off",
1336
1348
  "@typescript-eslint/parameter-properties": [
1337
1349
  "off",
1338
1350
  { allow: [], prefer: "class-property" }
@@ -1371,6 +1383,8 @@ const typescriptRules = {
1371
1383
  }
1372
1384
  ],
1373
1385
  "@typescript-eslint/prefer-regexp-exec": "off",
1386
+ "@typescript-eslint/prefer-ts-expect-error": "off",
1387
+ // deprecated
1374
1388
  "@typescript-eslint/promise-function-async": "error",
1375
1389
  "@typescript-eslint/require-array-sort-compare": [
1376
1390
  "error",
@@ -1863,8 +1877,7 @@ const react = async ({
1863
1877
 
1864
1878
  const typescript = ({
1865
1879
  files = ["**/*.ts", "**/*.tsx", "**/*.vue"],
1866
- overrides,
1867
- tsconfigPath
1880
+ overrides
1868
1881
  } = {}) => [
1869
1882
  {
1870
1883
  name: "meteorlxy/typescript/plugins",
@@ -1879,7 +1892,7 @@ const typescript = ({
1879
1892
  ecmaVersion: 2022,
1880
1893
  parser: tsParser__default,
1881
1894
  parserOptions: {
1882
- project: tsconfigPath,
1895
+ projectService: true,
1883
1896
  sourceType: "module"
1884
1897
  },
1885
1898
  sourceType: "module"
package/dist/index.d.cts CHANGED
@@ -40,12 +40,11 @@ declare const react: ({ files, overrides, }?: EslintReactOptions) => Promise<Fla
40
40
  interface EslintTypescriptOptions {
41
41
  files?: FlatConfig.Config['files'];
42
42
  overrides?: FlatConfig.Config['rules'];
43
- tsconfigPath?: string[] | string;
44
43
  }
45
44
  /**
46
45
  * Typescript configuration for eslint.
47
46
  */
48
- declare const typescript: ({ files, overrides, tsconfigPath, }?: EslintTypescriptOptions) => FlatConfig.Config[];
47
+ declare const typescript: ({ files, overrides, }?: EslintTypescriptOptions) => FlatConfig.Config[];
49
48
 
50
49
  interface EslintVueOptions {
51
50
  files?: FlatConfig.Config['files'];
@@ -436,6 +435,7 @@ declare const builtinRules: {
436
435
  classes: boolean;
437
436
  variables: boolean;
438
437
  }];
438
+ 'no-useless-assignment': "error";
439
439
  'no-useless-backreference': "error";
440
440
  'no-useless-call': "off";
441
441
  'no-useless-catch': "error";
@@ -503,7 +503,6 @@ declare const builtinRules: {
503
503
  radix: "error";
504
504
  'require-atomic-updates': "off";
505
505
  'require-await': "off";
506
- 'require-jsdoc': "off";
507
506
  'require-unicode-regexp': "off";
508
507
  'require-yield': "error";
509
508
  'rest-spread-spacing': ["error", string];
@@ -531,7 +530,6 @@ declare const builtinRules: {
531
530
  'template-curly-spacing': "error";
532
531
  'unicode-bom': ["error", string];
533
532
  'use-isnan': "error";
534
- 'valid-jsdoc': "off";
535
533
  'valid-typeof': ["error", {
536
534
  requireStringLiterals: boolean;
537
535
  }];
@@ -786,6 +784,7 @@ declare const reactRules: {
786
784
  ignore: never[];
787
785
  }];
788
786
  'react/jsx-props-no-multi-spaces': "error";
787
+ 'react/jsx-props-no-spread-multi': "error";
789
788
  'react/jsx-props-no-spreading': ["error", {
790
789
  html: string;
791
790
  custom: string;
@@ -976,9 +975,6 @@ declare const typescriptRules: {
976
975
  '@typescript-eslint/dot-notation': ["error", {
977
976
  allowKeywords: boolean;
978
977
  }];
979
- '@typescript-eslint/lines-between-class-members': ["error", string, {
980
- exceptAfterSingleLine: boolean;
981
- }];
982
978
  '@typescript-eslint/no-array-constructor': "error";
983
979
  '@typescript-eslint/no-empty-function': ["error", {
984
980
  allow: string[];
@@ -993,7 +989,6 @@ declare const typescriptRules: {
993
989
  detectObjects: boolean;
994
990
  }];
995
991
  '@typescript-eslint/no-shadow': "error";
996
- '@typescript-eslint/no-throw-literal': "off";
997
992
  '@typescript-eslint/no-unused-expressions': ["error", {
998
993
  allowShortCircuit: boolean;
999
994
  allowTernary: boolean;
@@ -1038,6 +1033,7 @@ declare const typescriptRules: {
1038
1033
  format: string[];
1039
1034
  }];
1040
1035
  '@typescript-eslint/no-dupe-class-members': "off";
1036
+ '@typescript-eslint/no-empty-interface': "off";
1041
1037
  '@typescript-eslint/no-import-type-side-effects': "error";
1042
1038
  '@typescript-eslint/no-invalid-this': "off";
1043
1039
  '@typescript-eslint/no-redeclare': "off";
@@ -1048,7 +1044,21 @@ declare const typescriptRules: {
1048
1044
  paths: never[];
1049
1045
  patterns: never[];
1050
1046
  }];
1047
+ '@typescript-eslint/no-restricted-types': ["off", {
1048
+ types: {
1049
+ OldType: string;
1050
+ OldAPI: {
1051
+ message: string;
1052
+ fixWith: string;
1053
+ };
1054
+ SoonToBeOldAPI: {
1055
+ message: string;
1056
+ suggest: string[];
1057
+ };
1058
+ };
1059
+ }];
1051
1060
  '@typescript-eslint/no-type-alias': "off";
1061
+ '@typescript-eslint/no-unnecessary-parameter-property-assignment': "error";
1052
1062
  '@typescript-eslint/no-unnecessary-qualifier': "off";
1053
1063
  '@typescript-eslint/no-unsafe-unary-minus': "error";
1054
1064
  '@typescript-eslint/no-useless-empty-export': "off";
@@ -1056,7 +1066,6 @@ declare const typescriptRules: {
1056
1066
  allow: never[];
1057
1067
  }];
1058
1068
  '@typescript-eslint/only-throw-error': "error";
1059
- '@typescript-eslint/padding-line-between-statements': "off";
1060
1069
  '@typescript-eslint/parameter-properties': ["off", {
1061
1070
  allow: never[];
1062
1071
  prefer: string;
@@ -1089,6 +1098,7 @@ declare const typescriptRules: {
1089
1098
  treatMethodsAsReadonly: boolean;
1090
1099
  }];
1091
1100
  '@typescript-eslint/prefer-regexp-exec': "off";
1101
+ '@typescript-eslint/prefer-ts-expect-error': "off";
1092
1102
  '@typescript-eslint/promise-function-async': "error";
1093
1103
  '@typescript-eslint/require-array-sort-compare': ["error", {
1094
1104
  ignoreStringArrays: boolean;
package/dist/index.d.mts CHANGED
@@ -40,12 +40,11 @@ declare const react: ({ files, overrides, }?: EslintReactOptions) => Promise<Fla
40
40
  interface EslintTypescriptOptions {
41
41
  files?: FlatConfig.Config['files'];
42
42
  overrides?: FlatConfig.Config['rules'];
43
- tsconfigPath?: string[] | string;
44
43
  }
45
44
  /**
46
45
  * Typescript configuration for eslint.
47
46
  */
48
- declare const typescript: ({ files, overrides, tsconfigPath, }?: EslintTypescriptOptions) => FlatConfig.Config[];
47
+ declare const typescript: ({ files, overrides, }?: EslintTypescriptOptions) => FlatConfig.Config[];
49
48
 
50
49
  interface EslintVueOptions {
51
50
  files?: FlatConfig.Config['files'];
@@ -436,6 +435,7 @@ declare const builtinRules: {
436
435
  classes: boolean;
437
436
  variables: boolean;
438
437
  }];
438
+ 'no-useless-assignment': "error";
439
439
  'no-useless-backreference': "error";
440
440
  'no-useless-call': "off";
441
441
  'no-useless-catch': "error";
@@ -503,7 +503,6 @@ declare const builtinRules: {
503
503
  radix: "error";
504
504
  'require-atomic-updates': "off";
505
505
  'require-await': "off";
506
- 'require-jsdoc': "off";
507
506
  'require-unicode-regexp': "off";
508
507
  'require-yield': "error";
509
508
  'rest-spread-spacing': ["error", string];
@@ -531,7 +530,6 @@ declare const builtinRules: {
531
530
  'template-curly-spacing': "error";
532
531
  'unicode-bom': ["error", string];
533
532
  'use-isnan': "error";
534
- 'valid-jsdoc': "off";
535
533
  'valid-typeof': ["error", {
536
534
  requireStringLiterals: boolean;
537
535
  }];
@@ -786,6 +784,7 @@ declare const reactRules: {
786
784
  ignore: never[];
787
785
  }];
788
786
  'react/jsx-props-no-multi-spaces': "error";
787
+ 'react/jsx-props-no-spread-multi': "error";
789
788
  'react/jsx-props-no-spreading': ["error", {
790
789
  html: string;
791
790
  custom: string;
@@ -976,9 +975,6 @@ declare const typescriptRules: {
976
975
  '@typescript-eslint/dot-notation': ["error", {
977
976
  allowKeywords: boolean;
978
977
  }];
979
- '@typescript-eslint/lines-between-class-members': ["error", string, {
980
- exceptAfterSingleLine: boolean;
981
- }];
982
978
  '@typescript-eslint/no-array-constructor': "error";
983
979
  '@typescript-eslint/no-empty-function': ["error", {
984
980
  allow: string[];
@@ -993,7 +989,6 @@ declare const typescriptRules: {
993
989
  detectObjects: boolean;
994
990
  }];
995
991
  '@typescript-eslint/no-shadow': "error";
996
- '@typescript-eslint/no-throw-literal': "off";
997
992
  '@typescript-eslint/no-unused-expressions': ["error", {
998
993
  allowShortCircuit: boolean;
999
994
  allowTernary: boolean;
@@ -1038,6 +1033,7 @@ declare const typescriptRules: {
1038
1033
  format: string[];
1039
1034
  }];
1040
1035
  '@typescript-eslint/no-dupe-class-members': "off";
1036
+ '@typescript-eslint/no-empty-interface': "off";
1041
1037
  '@typescript-eslint/no-import-type-side-effects': "error";
1042
1038
  '@typescript-eslint/no-invalid-this': "off";
1043
1039
  '@typescript-eslint/no-redeclare': "off";
@@ -1048,7 +1044,21 @@ declare const typescriptRules: {
1048
1044
  paths: never[];
1049
1045
  patterns: never[];
1050
1046
  }];
1047
+ '@typescript-eslint/no-restricted-types': ["off", {
1048
+ types: {
1049
+ OldType: string;
1050
+ OldAPI: {
1051
+ message: string;
1052
+ fixWith: string;
1053
+ };
1054
+ SoonToBeOldAPI: {
1055
+ message: string;
1056
+ suggest: string[];
1057
+ };
1058
+ };
1059
+ }];
1051
1060
  '@typescript-eslint/no-type-alias': "off";
1061
+ '@typescript-eslint/no-unnecessary-parameter-property-assignment': "error";
1052
1062
  '@typescript-eslint/no-unnecessary-qualifier': "off";
1053
1063
  '@typescript-eslint/no-unsafe-unary-minus': "error";
1054
1064
  '@typescript-eslint/no-useless-empty-export': "off";
@@ -1056,7 +1066,6 @@ declare const typescriptRules: {
1056
1066
  allow: never[];
1057
1067
  }];
1058
1068
  '@typescript-eslint/only-throw-error': "error";
1059
- '@typescript-eslint/padding-line-between-statements': "off";
1060
1069
  '@typescript-eslint/parameter-properties': ["off", {
1061
1070
  allow: never[];
1062
1071
  prefer: string;
@@ -1089,6 +1098,7 @@ declare const typescriptRules: {
1089
1098
  treatMethodsAsReadonly: boolean;
1090
1099
  }];
1091
1100
  '@typescript-eslint/prefer-regexp-exec': "off";
1101
+ '@typescript-eslint/prefer-ts-expect-error': "off";
1092
1102
  '@typescript-eslint/promise-function-async': "error";
1093
1103
  '@typescript-eslint/require-array-sort-compare': ["error", {
1094
1104
  ignoreStringArrays: boolean;
package/dist/index.d.ts CHANGED
@@ -40,12 +40,11 @@ declare const react: ({ files, overrides, }?: EslintReactOptions) => Promise<Fla
40
40
  interface EslintTypescriptOptions {
41
41
  files?: FlatConfig.Config['files'];
42
42
  overrides?: FlatConfig.Config['rules'];
43
- tsconfigPath?: string[] | string;
44
43
  }
45
44
  /**
46
45
  * Typescript configuration for eslint.
47
46
  */
48
- declare const typescript: ({ files, overrides, tsconfigPath, }?: EslintTypescriptOptions) => FlatConfig.Config[];
47
+ declare const typescript: ({ files, overrides, }?: EslintTypescriptOptions) => FlatConfig.Config[];
49
48
 
50
49
  interface EslintVueOptions {
51
50
  files?: FlatConfig.Config['files'];
@@ -436,6 +435,7 @@ declare const builtinRules: {
436
435
  classes: boolean;
437
436
  variables: boolean;
438
437
  }];
438
+ 'no-useless-assignment': "error";
439
439
  'no-useless-backreference': "error";
440
440
  'no-useless-call': "off";
441
441
  'no-useless-catch': "error";
@@ -503,7 +503,6 @@ declare const builtinRules: {
503
503
  radix: "error";
504
504
  'require-atomic-updates': "off";
505
505
  'require-await': "off";
506
- 'require-jsdoc': "off";
507
506
  'require-unicode-regexp': "off";
508
507
  'require-yield': "error";
509
508
  'rest-spread-spacing': ["error", string];
@@ -531,7 +530,6 @@ declare const builtinRules: {
531
530
  'template-curly-spacing': "error";
532
531
  'unicode-bom': ["error", string];
533
532
  'use-isnan': "error";
534
- 'valid-jsdoc': "off";
535
533
  'valid-typeof': ["error", {
536
534
  requireStringLiterals: boolean;
537
535
  }];
@@ -786,6 +784,7 @@ declare const reactRules: {
786
784
  ignore: never[];
787
785
  }];
788
786
  'react/jsx-props-no-multi-spaces': "error";
787
+ 'react/jsx-props-no-spread-multi': "error";
789
788
  'react/jsx-props-no-spreading': ["error", {
790
789
  html: string;
791
790
  custom: string;
@@ -976,9 +975,6 @@ declare const typescriptRules: {
976
975
  '@typescript-eslint/dot-notation': ["error", {
977
976
  allowKeywords: boolean;
978
977
  }];
979
- '@typescript-eslint/lines-between-class-members': ["error", string, {
980
- exceptAfterSingleLine: boolean;
981
- }];
982
978
  '@typescript-eslint/no-array-constructor': "error";
983
979
  '@typescript-eslint/no-empty-function': ["error", {
984
980
  allow: string[];
@@ -993,7 +989,6 @@ declare const typescriptRules: {
993
989
  detectObjects: boolean;
994
990
  }];
995
991
  '@typescript-eslint/no-shadow': "error";
996
- '@typescript-eslint/no-throw-literal': "off";
997
992
  '@typescript-eslint/no-unused-expressions': ["error", {
998
993
  allowShortCircuit: boolean;
999
994
  allowTernary: boolean;
@@ -1038,6 +1033,7 @@ declare const typescriptRules: {
1038
1033
  format: string[];
1039
1034
  }];
1040
1035
  '@typescript-eslint/no-dupe-class-members': "off";
1036
+ '@typescript-eslint/no-empty-interface': "off";
1041
1037
  '@typescript-eslint/no-import-type-side-effects': "error";
1042
1038
  '@typescript-eslint/no-invalid-this': "off";
1043
1039
  '@typescript-eslint/no-redeclare': "off";
@@ -1048,7 +1044,21 @@ declare const typescriptRules: {
1048
1044
  paths: never[];
1049
1045
  patterns: never[];
1050
1046
  }];
1047
+ '@typescript-eslint/no-restricted-types': ["off", {
1048
+ types: {
1049
+ OldType: string;
1050
+ OldAPI: {
1051
+ message: string;
1052
+ fixWith: string;
1053
+ };
1054
+ SoonToBeOldAPI: {
1055
+ message: string;
1056
+ suggest: string[];
1057
+ };
1058
+ };
1059
+ }];
1051
1060
  '@typescript-eslint/no-type-alias': "off";
1061
+ '@typescript-eslint/no-unnecessary-parameter-property-assignment': "error";
1052
1062
  '@typescript-eslint/no-unnecessary-qualifier': "off";
1053
1063
  '@typescript-eslint/no-unsafe-unary-minus': "error";
1054
1064
  '@typescript-eslint/no-useless-empty-export': "off";
@@ -1056,7 +1066,6 @@ declare const typescriptRules: {
1056
1066
  allow: never[];
1057
1067
  }];
1058
1068
  '@typescript-eslint/only-throw-error': "error";
1059
- '@typescript-eslint/padding-line-between-statements': "off";
1060
1069
  '@typescript-eslint/parameter-properties': ["off", {
1061
1070
  allow: never[];
1062
1071
  prefer: string;
@@ -1089,6 +1098,7 @@ declare const typescriptRules: {
1089
1098
  treatMethodsAsReadonly: boolean;
1090
1099
  }];
1091
1100
  '@typescript-eslint/prefer-regexp-exec': "off";
1101
+ '@typescript-eslint/prefer-ts-expect-error': "off";
1092
1102
  '@typescript-eslint/promise-function-async': "error";
1093
1103
  '@typescript-eslint/require-array-sort-compare': ["error", {
1094
1104
  ignoreStringArrays: boolean;
package/dist/index.mjs CHANGED
@@ -534,6 +534,7 @@ const builtinRules = {
534
534
  "error",
535
535
  { functions: true, classes: true, variables: true }
536
536
  ],
537
+ "no-useless-assignment": "error",
537
538
  "no-useless-backreference": "error",
538
539
  "no-useless-call": "off",
539
540
  "no-useless-catch": "error",
@@ -631,7 +632,6 @@ const builtinRules = {
631
632
  "radix": "error",
632
633
  "require-atomic-updates": "off",
633
634
  "require-await": "off",
634
- "require-jsdoc": "off",
635
635
  "require-unicode-regexp": "off",
636
636
  "require-yield": "error",
637
637
  "rest-spread-spacing": ["error", "never"],
@@ -666,7 +666,6 @@ const builtinRules = {
666
666
  "template-curly-spacing": "error",
667
667
  "unicode-bom": ["error", "never"],
668
668
  "use-isnan": "error",
669
- "valid-jsdoc": "off",
670
669
  "valid-typeof": [
671
670
  "error",
672
671
  {
@@ -731,6 +730,7 @@ const importsRules = {
731
730
  "prettier",
732
731
  "rollup",
733
732
  "stylelint",
733
+ "taze",
734
734
  "tsup",
735
735
  "vite",
736
736
  "vitest",
@@ -998,6 +998,7 @@ const reactRules = {
998
998
  }
999
999
  ],
1000
1000
  "react/jsx-props-no-multi-spaces": "error",
1001
+ "react/jsx-props-no-spread-multi": "error",
1001
1002
  "react/jsx-props-no-spreading": [
1002
1003
  "error",
1003
1004
  {
@@ -1218,11 +1219,6 @@ const typescriptRules = {
1218
1219
  // use noImplicitReturns instead
1219
1220
  "@typescript-eslint/default-param-last": "error",
1220
1221
  "@typescript-eslint/dot-notation": ["error", { allowKeywords: true }],
1221
- "@typescript-eslint/lines-between-class-members": [
1222
- "error",
1223
- "always",
1224
- { exceptAfterSingleLine: false }
1225
- ],
1226
1222
  "@typescript-eslint/no-array-constructor": "error",
1227
1223
  "@typescript-eslint/no-empty-function": [
1228
1224
  "error",
@@ -1243,8 +1239,6 @@ const typescriptRules = {
1243
1239
  }
1244
1240
  ],
1245
1241
  "@typescript-eslint/no-shadow": "error",
1246
- "@typescript-eslint/no-throw-literal": "off",
1247
- // deprecated
1248
1242
  "@typescript-eslint/no-unused-expressions": [
1249
1243
  "error",
1250
1244
  {
@@ -1303,6 +1297,8 @@ const typescriptRules = {
1303
1297
  ],
1304
1298
  "@typescript-eslint/no-dupe-class-members": "off",
1305
1299
  // checked by typescript
1300
+ "@typescript-eslint/no-empty-interface": "off",
1301
+ // deprecated
1306
1302
  "@typescript-eslint/no-import-type-side-effects": "error",
1307
1303
  "@typescript-eslint/no-invalid-this": "off",
1308
1304
  // checked by typescript
@@ -1313,14 +1309,30 @@ const typescriptRules = {
1313
1309
  "off",
1314
1310
  { paths: [], patterns: [] }
1315
1311
  ],
1312
+ "@typescript-eslint/no-restricted-types": [
1313
+ "off",
1314
+ {
1315
+ types: {
1316
+ OldType: "Don't use OldType because it is unsafe",
1317
+ OldAPI: {
1318
+ message: "Use NewAPI instead",
1319
+ fixWith: "NewAPI"
1320
+ },
1321
+ SoonToBeOldAPI: {
1322
+ message: "Use NewAPI instead",
1323
+ suggest: ["NewAPIOne", "NewAPITwo"]
1324
+ }
1325
+ }
1326
+ }
1327
+ ],
1316
1328
  "@typescript-eslint/no-type-alias": "off",
1317
1329
  // deprecated
1330
+ "@typescript-eslint/no-unnecessary-parameter-property-assignment": "error",
1318
1331
  "@typescript-eslint/no-unnecessary-qualifier": "off",
1319
1332
  "@typescript-eslint/no-unsafe-unary-minus": "error",
1320
1333
  "@typescript-eslint/no-useless-empty-export": "off",
1321
1334
  "@typescript-eslint/no-var-requires": ["error", { allow: [] }],
1322
1335
  "@typescript-eslint/only-throw-error": "error",
1323
- "@typescript-eslint/padding-line-between-statements": "off",
1324
1336
  "@typescript-eslint/parameter-properties": [
1325
1337
  "off",
1326
1338
  { allow: [], prefer: "class-property" }
@@ -1359,6 +1371,8 @@ const typescriptRules = {
1359
1371
  }
1360
1372
  ],
1361
1373
  "@typescript-eslint/prefer-regexp-exec": "off",
1374
+ "@typescript-eslint/prefer-ts-expect-error": "off",
1375
+ // deprecated
1362
1376
  "@typescript-eslint/promise-function-async": "error",
1363
1377
  "@typescript-eslint/require-array-sort-compare": [
1364
1378
  "error",
@@ -1851,8 +1865,7 @@ const react = async ({
1851
1865
 
1852
1866
  const typescript = ({
1853
1867
  files = ["**/*.ts", "**/*.tsx", "**/*.vue"],
1854
- overrides,
1855
- tsconfigPath
1868
+ overrides
1856
1869
  } = {}) => [
1857
1870
  {
1858
1871
  name: "meteorlxy/typescript/plugins",
@@ -1867,7 +1880,7 @@ const typescript = ({
1867
1880
  ecmaVersion: 2022,
1868
1881
  parser: tsParser,
1869
1882
  parserOptions: {
1870
- project: tsconfigPath,
1883
+ projectService: true,
1871
1884
  sourceType: "module"
1872
1885
  },
1873
1886
  sourceType: "module"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meteorlxy/eslint-config",
3
- "version": "3.8.0",
3
+ "version": "4.0.0",
4
4
  "description": "meteorlxy eslint config",
5
5
  "keywords": [
6
6
  "config",
@@ -32,32 +32,32 @@
32
32
  "clean": "rimraf ./dist"
33
33
  },
34
34
  "dependencies": {
35
- "@typescript-eslint/eslint-plugin": "^7.16.0",
36
- "@typescript-eslint/parser": "^7.16.0",
37
- "@typescript-eslint/utils": "^7.16.0",
35
+ "@typescript-eslint/eslint-plugin": "^8.1.0",
36
+ "@typescript-eslint/parser": "^8.1.0",
37
+ "@typescript-eslint/utils": "^8.1.0",
38
38
  "confusing-browser-globals": "^1.0.11",
39
39
  "eslint-config-prettier": "^9.1.0",
40
40
  "eslint-plugin-eslint-comments": "^3.2.0",
41
- "eslint-plugin-import-x": "^3.0.1",
41
+ "eslint-plugin-import-x": "^3.1.0",
42
42
  "eslint-plugin-markdown": "^5.1.0",
43
- "globals": "^15.8.0"
43
+ "globals": "^15.9.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/confusing-browser-globals": "^1.0.3",
47
- "@types/eslint": "^8.56.10",
48
- "eslint": "^8.57.0",
49
- "eslint-plugin-react": "^7.34.4",
47
+ "@types/eslint": "^9.6.0",
48
+ "eslint": "^9.9.0",
49
+ "eslint-plugin-react": "^7.35.0",
50
50
  "eslint-plugin-react-hooks": "^4.6.2",
51
- "eslint-plugin-react-refresh": "^0.4.8",
51
+ "eslint-plugin-react-refresh": "^0.4.9",
52
52
  "eslint-plugin-vue": "^9.27.0",
53
53
  "vue-eslint-parser": "^9.4.3"
54
54
  },
55
55
  "peerDependencies": {
56
- "eslint-plugin-react": "^7.34.1",
57
- "eslint-plugin-react-hooks": "^4.6.0",
58
- "eslint-plugin-react-refresh": "^0.4.6",
59
- "eslint-plugin-vue": "^9.23.0",
60
- "vue-eslint-parser": "^9.4.2"
56
+ "eslint-plugin-react": "^7.35.0",
57
+ "eslint-plugin-react-hooks": "^4.6.2",
58
+ "eslint-plugin-react-refresh": "^0.4.9",
59
+ "eslint-plugin-vue": "^9.27.0",
60
+ "vue-eslint-parser": "^9.4.3"
61
61
  },
62
62
  "peerDependenciesMeta": {
63
63
  "eslint-plugin-react": {
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "56e5a2c7d9e89512c30186db3e540fff0854996d"
82
+ "gitHead": "272d83cfb00f75dc52598e46f1fe87181d895aa5"
83
83
  }