@typescript-eslint/eslint-plugin 8.70.1-alpha.20 → 8.70.1-alpha.22

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.d.ts CHANGED
@@ -994,7 +994,7 @@ declare const _default: {
994
994
  'no-useless-constructor': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUselessConstructor" | "removeConstructor", [], import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
995
995
  name: string;
996
996
  };
997
- 'no-useless-default-assignment': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noStrictNullCheck" | "preferOptionalSyntax" | "uselessDefaultAssignment" | "uselessUndefined", [{
997
+ 'no-useless-default-assignment': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noStrictNullCheck" | "preferOptionalSyntax" | "removeDefaultAssignment" | "useOptionalSyntax" | "uselessDefaultAssignment" | "uselessUndefined", [{
998
998
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
999
999
  }], import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
1000
1000
  name: string;
@@ -1017,7 +1017,7 @@ declare const _default: {
1017
1017
  'no-useless-constructor': TSESLint.RuleModule<"noUselessConstructor" | "removeConstructor", [], import("../rules").ESLintPluginDocs, TSESLint.RuleListener> & {
1018
1018
  name: string;
1019
1019
  };
1020
- 'no-useless-default-assignment': TSESLint.RuleModule<"noStrictNullCheck" | "preferOptionalSyntax" | "uselessDefaultAssignment" | "uselessUndefined", [{
1020
+ 'no-useless-default-assignment': TSESLint.RuleModule<"noStrictNullCheck" | "preferOptionalSyntax" | "removeDefaultAssignment" | "useOptionalSyntax" | "uselessDefaultAssignment" | "uselessUndefined", [{
1021
1021
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
1022
1022
  }], import("../rules").ESLintPluginDocs, TSESLint.RuleListener> & {
1023
1023
  name: string;
@@ -315,7 +315,7 @@ declare const rules: {
315
315
  'no-useless-constructor': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUselessConstructor" | "removeConstructor", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
316
316
  name: string;
317
317
  };
318
- 'no-useless-default-assignment': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noStrictNullCheck" | "preferOptionalSyntax" | "uselessDefaultAssignment" | "uselessUndefined", [{
318
+ 'no-useless-default-assignment': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noStrictNullCheck" | "preferOptionalSyntax" | "removeDefaultAssignment" | "useOptionalSyntax" | "uselessDefaultAssignment" | "uselessUndefined", [{
319
319
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
320
320
  }], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
321
321
  name: string;
@@ -1,5 +1,5 @@
1
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
- type MessageId = 'noStrictNullCheck' | 'preferOptionalSyntax' | 'uselessDefaultAssignment' | 'uselessUndefined';
2
+ type MessageId = 'noStrictNullCheck' | 'preferOptionalSyntax' | 'removeDefaultAssignment' | 'uselessDefaultAssignment' | 'uselessUndefined' | 'useOptionalSyntax';
3
3
  type Options = [
4
4
  {
5
5
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
@@ -46,12 +46,14 @@ exports.default = (0, util_1.createRule)({
46
46
  recommended: 'strict',
47
47
  requiresTypeChecking: true,
48
48
  },
49
- fixable: 'code',
49
+ hasSuggestions: true,
50
50
  messages: {
51
51
  noStrictNullCheck: 'This rule requires the `strictNullChecks` compiler option to be turned on to function correctly.',
52
- preferOptionalSyntax: 'Using `= undefined` to make a parameter optional adds unnecessary runtime logic. Use the `?` optional syntax instead.',
52
+ preferOptionalSyntax: 'Using `= undefined` to make a parameter optional adds unnecessary runtime logic.',
53
+ removeDefaultAssignment: 'Remove the default value.',
53
54
  uselessDefaultAssignment: 'Default value is useless because the {{ type }} is not optional.',
54
55
  uselessUndefined: 'Default value is useless because it is undefined. Optional {{ type }}s are already undefined by default.',
56
+ useOptionalSyntax: 'Use the `?` optional syntax instead.',
55
57
  },
56
58
  schema: [
57
59
  {
@@ -286,7 +288,7 @@ exports.default = (0, util_1.createRule)({
286
288
  node: node.right,
287
289
  messageId: 'uselessDefaultAssignment',
288
290
  data: { type },
289
- fix: fixer => removeDefault(fixer, node),
291
+ suggest: [removeDefaultSuggestion(node)],
290
292
  });
291
293
  }
292
294
  function reportUselessUndefined(node, type) {
@@ -294,13 +296,19 @@ exports.default = (0, util_1.createRule)({
294
296
  node: node.right,
295
297
  messageId: 'uselessUndefined',
296
298
  data: { type },
297
- fix: fixer => removeDefault(fixer, node),
299
+ suggest: [removeDefaultSuggestion(node)],
298
300
  });
299
301
  }
300
302
  function reportPreferOptionalSyntax(node) {
301
303
  context.report({
302
304
  node: node.right,
303
305
  messageId: 'preferOptionalSyntax',
306
+ suggest: [useOptionalSyntaxSuggestion(node)],
307
+ });
308
+ }
309
+ function useOptionalSyntaxSuggestion(node) {
310
+ return {
311
+ messageId: 'useOptionalSyntax',
304
312
  *fix(fixer) {
305
313
  yield removeDefault(fixer, node);
306
314
  const { left } = node;
@@ -308,7 +316,13 @@ exports.default = (0, util_1.createRule)({
308
316
  yield fixer.insertTextAfterRange([left.range[0], left.range[0] + left.name.length], '?');
309
317
  }
310
318
  },
311
- });
319
+ };
320
+ }
321
+ function removeDefaultSuggestion(node) {
322
+ return {
323
+ messageId: 'removeDefaultAssignment',
324
+ fix: fixer => removeDefault(fixer, node),
325
+ };
312
326
  }
313
327
  function removeDefault(fixer, node) {
314
328
  const start = node.left.range[1];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typescript-eslint/eslint-plugin",
3
- "version": "8.70.1-alpha.20",
3
+ "version": "8.70.1-alpha.22",
4
4
  "description": "TypeScript plugin for ESLint",
5
5
  "files": [
6
6
  "dist",
@@ -47,10 +47,10 @@
47
47
  ],
48
48
  "dependencies": {
49
49
  "@eslint-community/regexpp": "^4.12.2",
50
- "@typescript-eslint/scope-manager": "8.70.1-alpha.20",
51
- "@typescript-eslint/type-utils": "8.70.1-alpha.20",
52
- "@typescript-eslint/utils": "8.70.1-alpha.20",
53
- "@typescript-eslint/visitor-keys": "8.70.1-alpha.20",
50
+ "@typescript-eslint/scope-manager": "8.70.1-alpha.22",
51
+ "@typescript-eslint/type-utils": "8.70.1-alpha.22",
52
+ "@typescript-eslint/utils": "8.70.1-alpha.22",
53
+ "@typescript-eslint/visitor-keys": "8.70.1-alpha.22",
54
54
  "ignore": "^7.0.5",
55
55
  "natural-compare": "^1.4.0",
56
56
  "ts-api-utils": "^2.5.0"
@@ -60,8 +60,8 @@
60
60
  "@types/mdast": "^4.0.4",
61
61
  "@types/natural-compare": "^1.4.3",
62
62
  "@types/react": "^18.3.21",
63
- "@typescript-eslint/rule-schema-to-typescript-types": "8.70.1-alpha.20",
64
- "@typescript-eslint/rule-tester": "8.70.1-alpha.20",
63
+ "@typescript-eslint/rule-schema-to-typescript-types": "8.70.1-alpha.22",
64
+ "@typescript-eslint/rule-tester": "8.70.1-alpha.22",
65
65
  "@typescript/native": "npm:typescript@^7.0.2",
66
66
  "@vitest/coverage-v8": "^4.0.18",
67
67
  "ajv": "^6.12.6",
@@ -81,7 +81,7 @@
81
81
  "vitest": "^4.0.18"
82
82
  },
83
83
  "peerDependencies": {
84
- "@typescript-eslint/parser": "^8.70.1-alpha.20",
84
+ "@typescript-eslint/parser": "^8.70.1-alpha.22",
85
85
  "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
86
86
  "typescript": ">=4.8.4 <6.1.0"
87
87
  },