@meteorlxy/eslint-config 3.7.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
@@ -46,7 +46,9 @@ const ignores = (options = []) => [
46
46
  "**/.history",
47
47
  "**/.idea",
48
48
  "**/.next",
49
+ "**/.nx",
49
50
  "**/.nyc_output",
51
+ "**/.turbo",
50
52
  "**/.vercel",
51
53
  "**/.vite-inspect",
52
54
  "**/.vitepress/cache",
@@ -544,6 +546,7 @@ const builtinRules = {
544
546
  "error",
545
547
  { functions: true, classes: true, variables: true }
546
548
  ],
549
+ "no-useless-assignment": "error",
547
550
  "no-useless-backreference": "error",
548
551
  "no-useless-call": "off",
549
552
  "no-useless-catch": "error",
@@ -641,7 +644,6 @@ const builtinRules = {
641
644
  "radix": "error",
642
645
  "require-atomic-updates": "off",
643
646
  "require-await": "off",
644
- "require-jsdoc": "off",
645
647
  "require-unicode-regexp": "off",
646
648
  "require-yield": "error",
647
649
  "rest-spread-spacing": ["error", "never"],
@@ -676,7 +678,6 @@ const builtinRules = {
676
678
  "template-curly-spacing": "error",
677
679
  "unicode-bom": ["error", "never"],
678
680
  "use-isnan": "error",
679
- "valid-jsdoc": "off",
680
681
  "valid-typeof": [
681
682
  "error",
682
683
  {
@@ -741,6 +742,7 @@ const importsRules = {
741
742
  "prettier",
742
743
  "rollup",
743
744
  "stylelint",
745
+ "taze",
744
746
  "tsup",
745
747
  "vite",
746
748
  "vitest",
@@ -1008,6 +1010,7 @@ const reactRules = {
1008
1010
  }
1009
1011
  ],
1010
1012
  "react/jsx-props-no-multi-spaces": "error",
1013
+ "react/jsx-props-no-spread-multi": "error",
1011
1014
  "react/jsx-props-no-spreading": [
1012
1015
  "error",
1013
1016
  {
@@ -1228,11 +1231,6 @@ const typescriptRules = {
1228
1231
  // use noImplicitReturns instead
1229
1232
  "@typescript-eslint/default-param-last": "error",
1230
1233
  "@typescript-eslint/dot-notation": ["error", { allowKeywords: true }],
1231
- "@typescript-eslint/lines-between-class-members": [
1232
- "error",
1233
- "always",
1234
- { exceptAfterSingleLine: false }
1235
- ],
1236
1234
  "@typescript-eslint/no-array-constructor": "error",
1237
1235
  "@typescript-eslint/no-empty-function": [
1238
1236
  "error",
@@ -1253,8 +1251,6 @@ const typescriptRules = {
1253
1251
  }
1254
1252
  ],
1255
1253
  "@typescript-eslint/no-shadow": "error",
1256
- "@typescript-eslint/no-throw-literal": "off",
1257
- // deprecated
1258
1254
  "@typescript-eslint/no-unused-expressions": [
1259
1255
  "error",
1260
1256
  {
@@ -1313,6 +1309,8 @@ const typescriptRules = {
1313
1309
  ],
1314
1310
  "@typescript-eslint/no-dupe-class-members": "off",
1315
1311
  // checked by typescript
1312
+ "@typescript-eslint/no-empty-interface": "off",
1313
+ // deprecated
1316
1314
  "@typescript-eslint/no-import-type-side-effects": "error",
1317
1315
  "@typescript-eslint/no-invalid-this": "off",
1318
1316
  // checked by typescript
@@ -1323,14 +1321,30 @@ const typescriptRules = {
1323
1321
  "off",
1324
1322
  { paths: [], patterns: [] }
1325
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
+ ],
1326
1340
  "@typescript-eslint/no-type-alias": "off",
1327
1341
  // deprecated
1342
+ "@typescript-eslint/no-unnecessary-parameter-property-assignment": "error",
1328
1343
  "@typescript-eslint/no-unnecessary-qualifier": "off",
1329
1344
  "@typescript-eslint/no-unsafe-unary-minus": "error",
1330
1345
  "@typescript-eslint/no-useless-empty-export": "off",
1331
1346
  "@typescript-eslint/no-var-requires": ["error", { allow: [] }],
1332
1347
  "@typescript-eslint/only-throw-error": "error",
1333
- "@typescript-eslint/padding-line-between-statements": "off",
1334
1348
  "@typescript-eslint/parameter-properties": [
1335
1349
  "off",
1336
1350
  { allow: [], prefer: "class-property" }
@@ -1369,6 +1383,8 @@ const typescriptRules = {
1369
1383
  }
1370
1384
  ],
1371
1385
  "@typescript-eslint/prefer-regexp-exec": "off",
1386
+ "@typescript-eslint/prefer-ts-expect-error": "off",
1387
+ // deprecated
1372
1388
  "@typescript-eslint/promise-function-async": "error",
1373
1389
  "@typescript-eslint/require-array-sort-compare": [
1374
1390
  "error",
@@ -1861,8 +1877,7 @@ const react = async ({
1861
1877
 
1862
1878
  const typescript = ({
1863
1879
  files = ["**/*.ts", "**/*.tsx", "**/*.vue"],
1864
- overrides,
1865
- tsconfigPath
1880
+ overrides
1866
1881
  } = {}) => [
1867
1882
  {
1868
1883
  name: "meteorlxy/typescript/plugins",
@@ -1877,7 +1892,7 @@ const typescript = ({
1877
1892
  ecmaVersion: 2022,
1878
1893
  parser: tsParser__default,
1879
1894
  parserOptions: {
1880
- project: tsconfigPath,
1895
+ projectService: true,
1881
1896
  sourceType: "module"
1882
1897
  },
1883
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
@@ -34,7 +34,9 @@ const ignores = (options = []) => [
34
34
  "**/.history",
35
35
  "**/.idea",
36
36
  "**/.next",
37
+ "**/.nx",
37
38
  "**/.nyc_output",
39
+ "**/.turbo",
38
40
  "**/.vercel",
39
41
  "**/.vite-inspect",
40
42
  "**/.vitepress/cache",
@@ -532,6 +534,7 @@ const builtinRules = {
532
534
  "error",
533
535
  { functions: true, classes: true, variables: true }
534
536
  ],
537
+ "no-useless-assignment": "error",
535
538
  "no-useless-backreference": "error",
536
539
  "no-useless-call": "off",
537
540
  "no-useless-catch": "error",
@@ -629,7 +632,6 @@ const builtinRules = {
629
632
  "radix": "error",
630
633
  "require-atomic-updates": "off",
631
634
  "require-await": "off",
632
- "require-jsdoc": "off",
633
635
  "require-unicode-regexp": "off",
634
636
  "require-yield": "error",
635
637
  "rest-spread-spacing": ["error", "never"],
@@ -664,7 +666,6 @@ const builtinRules = {
664
666
  "template-curly-spacing": "error",
665
667
  "unicode-bom": ["error", "never"],
666
668
  "use-isnan": "error",
667
- "valid-jsdoc": "off",
668
669
  "valid-typeof": [
669
670
  "error",
670
671
  {
@@ -729,6 +730,7 @@ const importsRules = {
729
730
  "prettier",
730
731
  "rollup",
731
732
  "stylelint",
733
+ "taze",
732
734
  "tsup",
733
735
  "vite",
734
736
  "vitest",
@@ -996,6 +998,7 @@ const reactRules = {
996
998
  }
997
999
  ],
998
1000
  "react/jsx-props-no-multi-spaces": "error",
1001
+ "react/jsx-props-no-spread-multi": "error",
999
1002
  "react/jsx-props-no-spreading": [
1000
1003
  "error",
1001
1004
  {
@@ -1216,11 +1219,6 @@ const typescriptRules = {
1216
1219
  // use noImplicitReturns instead
1217
1220
  "@typescript-eslint/default-param-last": "error",
1218
1221
  "@typescript-eslint/dot-notation": ["error", { allowKeywords: true }],
1219
- "@typescript-eslint/lines-between-class-members": [
1220
- "error",
1221
- "always",
1222
- { exceptAfterSingleLine: false }
1223
- ],
1224
1222
  "@typescript-eslint/no-array-constructor": "error",
1225
1223
  "@typescript-eslint/no-empty-function": [
1226
1224
  "error",
@@ -1241,8 +1239,6 @@ const typescriptRules = {
1241
1239
  }
1242
1240
  ],
1243
1241
  "@typescript-eslint/no-shadow": "error",
1244
- "@typescript-eslint/no-throw-literal": "off",
1245
- // deprecated
1246
1242
  "@typescript-eslint/no-unused-expressions": [
1247
1243
  "error",
1248
1244
  {
@@ -1301,6 +1297,8 @@ const typescriptRules = {
1301
1297
  ],
1302
1298
  "@typescript-eslint/no-dupe-class-members": "off",
1303
1299
  // checked by typescript
1300
+ "@typescript-eslint/no-empty-interface": "off",
1301
+ // deprecated
1304
1302
  "@typescript-eslint/no-import-type-side-effects": "error",
1305
1303
  "@typescript-eslint/no-invalid-this": "off",
1306
1304
  // checked by typescript
@@ -1311,14 +1309,30 @@ const typescriptRules = {
1311
1309
  "off",
1312
1310
  { paths: [], patterns: [] }
1313
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
+ ],
1314
1328
  "@typescript-eslint/no-type-alias": "off",
1315
1329
  // deprecated
1330
+ "@typescript-eslint/no-unnecessary-parameter-property-assignment": "error",
1316
1331
  "@typescript-eslint/no-unnecessary-qualifier": "off",
1317
1332
  "@typescript-eslint/no-unsafe-unary-minus": "error",
1318
1333
  "@typescript-eslint/no-useless-empty-export": "off",
1319
1334
  "@typescript-eslint/no-var-requires": ["error", { allow: [] }],
1320
1335
  "@typescript-eslint/only-throw-error": "error",
1321
- "@typescript-eslint/padding-line-between-statements": "off",
1322
1336
  "@typescript-eslint/parameter-properties": [
1323
1337
  "off",
1324
1338
  { allow: [], prefer: "class-property" }
@@ -1357,6 +1371,8 @@ const typescriptRules = {
1357
1371
  }
1358
1372
  ],
1359
1373
  "@typescript-eslint/prefer-regexp-exec": "off",
1374
+ "@typescript-eslint/prefer-ts-expect-error": "off",
1375
+ // deprecated
1360
1376
  "@typescript-eslint/promise-function-async": "error",
1361
1377
  "@typescript-eslint/require-array-sort-compare": [
1362
1378
  "error",
@@ -1849,8 +1865,7 @@ const react = async ({
1849
1865
 
1850
1866
  const typescript = ({
1851
1867
  files = ["**/*.ts", "**/*.tsx", "**/*.vue"],
1852
- overrides,
1853
- tsconfigPath
1868
+ overrides
1854
1869
  } = {}) => [
1855
1870
  {
1856
1871
  name: "meteorlxy/typescript/plugins",
@@ -1865,7 +1880,7 @@ const typescript = ({
1865
1880
  ecmaVersion: 2022,
1866
1881
  parser: tsParser,
1867
1882
  parserOptions: {
1868
- project: tsconfigPath,
1883
+ projectService: true,
1869
1884
  sourceType: "module"
1870
1885
  },
1871
1886
  sourceType: "module"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meteorlxy/eslint-config",
3
- "version": "3.7.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.10.0",
36
- "@typescript-eslint/parser": "^7.10.0",
37
- "@typescript-eslint/utils": "^7.10.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": "^0.5.1",
42
- "eslint-plugin-markdown": "^5.0.0",
43
- "globals": "^15.3.0"
41
+ "eslint-plugin-import-x": "^3.1.0",
42
+ "eslint-plugin-markdown": "^5.1.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.1",
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.7",
52
- "eslint-plugin-vue": "^9.26.0",
53
- "vue-eslint-parser": "^9.4.2"
51
+ "eslint-plugin-react-refresh": "^0.4.9",
52
+ "eslint-plugin-vue": "^9.27.0",
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": "ad3292a1a4c007a1cb3ac0bafb04482eebd4dc38"
82
+ "gitHead": "272d83cfb00f75dc52598e46f1fe87181d895aa5"
83
83
  }