@typescript-eslint/eslint-plugin 8.17.1-alpha.6 → 8.17.1-alpha.7

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.
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const tsutils = __importStar(require("ts-api-utils"));
37
37
  const ts = __importStar(require("typescript"));
38
38
  const util_1 = require("../util");
39
+ const DEFAULT_COMMENT_PATTERN = /^no default$/iu;
39
40
  exports.default = (0, util_1.createRule)({
40
41
  name: 'switch-exhaustiveness-check',
41
42
  meta: {
@@ -63,6 +64,10 @@ exports.default = (0, util_1.createRule)({
63
64
  type: 'boolean',
64
65
  description: `If 'true', the 'default' clause is used to determine whether the switch statement is exhaustive for union type`,
65
66
  },
67
+ defaultCaseCommentPattern: {
68
+ type: 'string',
69
+ description: `Regular expression for a comment that can indicate an intentionally omitted default case.`,
70
+ },
66
71
  requireDefaultForNonUnion: {
67
72
  type: 'boolean',
68
73
  description: `If 'true', require a 'default' clause for switches on non-union types.`,
@@ -78,10 +83,24 @@ exports.default = (0, util_1.createRule)({
78
83
  requireDefaultForNonUnion: false,
79
84
  },
80
85
  ],
81
- create(context, [{ allowDefaultCaseForExhaustiveSwitch, considerDefaultExhaustiveForUnions, requireDefaultForNonUnion, },]) {
86
+ create(context, [{ allowDefaultCaseForExhaustiveSwitch, considerDefaultExhaustiveForUnions, defaultCaseCommentPattern, requireDefaultForNonUnion, },]) {
82
87
  const services = (0, util_1.getParserServices)(context);
83
88
  const checker = services.program.getTypeChecker();
84
89
  const compilerOptions = services.program.getCompilerOptions();
90
+ const commentRegExp = defaultCaseCommentPattern != null
91
+ ? new RegExp(defaultCaseCommentPattern, 'u')
92
+ : DEFAULT_COMMENT_PATTERN;
93
+ function getCommentDefaultCase(node) {
94
+ const lastCase = node.cases.at(-1);
95
+ const commentsAfterLastCase = lastCase
96
+ ? context.sourceCode.getCommentsAfter(lastCase)
97
+ : [];
98
+ const defaultCaseComment = commentsAfterLastCase.at(-1);
99
+ if (commentRegExp.test(defaultCaseComment?.value.trim() || '')) {
100
+ return defaultCaseComment;
101
+ }
102
+ return;
103
+ }
85
104
  function getSwitchMetadata(node) {
86
105
  const defaultCase = node.cases.find(switchCase => switchCase.test == null);
87
106
  const discriminantType = (0, util_1.getConstrainedTypeAtLocation)(services, node.discriminant);
@@ -115,7 +134,7 @@ exports.default = (0, util_1.createRule)({
115
134
  }
116
135
  return {
117
136
  containsNonLiteralType,
118
- defaultCase,
137
+ defaultCase: defaultCase ?? getCommentDefaultCase(node),
119
138
  missingLiteralBranchTypes,
120
139
  symbolName,
121
140
  };
@@ -142,7 +161,7 @@ exports.default = (0, util_1.createRule)({
142
161
  {
143
162
  messageId: 'addMissingCases',
144
163
  fix(fixer) {
145
- return fixSwitch(fixer, node, missingLiteralBranchTypes, symbolName?.toString());
164
+ return fixSwitch(fixer, node, missingLiteralBranchTypes, defaultCase, symbolName?.toString());
146
165
  },
147
166
  },
148
167
  ],
@@ -150,9 +169,8 @@ exports.default = (0, util_1.createRule)({
150
169
  }
151
170
  }
152
171
  function fixSwitch(fixer, node, missingBranchTypes, // null means default branch
153
- symbolName) {
172
+ defaultCase, symbolName) {
154
173
  const lastCase = node.cases.length > 0 ? node.cases[node.cases.length - 1] : null;
155
- const defaultCase = node.cases.find(caseEl => caseEl.test == null);
156
174
  const caseIndent = lastCase
157
175
  ? ' '.repeat(lastCase.loc.start.column)
158
176
  : // If there are no cases, use indentation of the switch statement and
@@ -227,7 +245,7 @@ exports.default = (0, util_1.createRule)({
227
245
  {
228
246
  messageId: 'addMissingCases',
229
247
  fix(fixer) {
230
- return fixSwitch(fixer, node, [null]);
248
+ return fixSwitch(fixer, node, [null], defaultCase);
231
249
  },
232
250
  },
233
251
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"switch-exhaustiveness-check.js","sourceRoot":"","sources":["../../src/rules/switch-exhaustiveness-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"switch-exhaustiveness-check.js","sourceRoot":"","sources":["../../src/rules/switch-exhaustiveness-check.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,27 @@ switch (literal) {
78
78
  }
79
79
  ```
80
80
 
81
+ ### `defaultCaseCommentPattern`
82
+
83
+ {/* insert option description */}
84
+
85
+ Default: `/^no default$/iu`.
86
+
87
+ It can sometimes be preferable to omit the default case for only some switch statements.
88
+ For those situations, this rule can be given a pattern for a comment that's allowed to take the place of a `default:`.
89
+
90
+ Examples of additional **correct** code with `{ defaultCaseCommentPattern: "^skip\\sdefault" }`:
91
+
92
+ ```ts option='{ "defaultCaseCommentPattern": "^skip default" }' showPlaygroundButton
93
+ declare const value: 'a' | 'b';
94
+
95
+ switch (value) {
96
+ case 'a':
97
+ break;
98
+ // skip default
99
+ }
100
+ ```
101
+
81
102
  ## Examples
82
103
 
83
104
  When the switch doesn't have exhaustive cases, either filling them all out or adding a default (if you have `considerDefaultExhaustiveForUnions` enabled) will address the rule's complaint.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typescript-eslint/eslint-plugin",
3
- "version": "8.17.1-alpha.6",
3
+ "version": "8.17.1-alpha.7",
4
4
  "description": "TypeScript plugin for ESLint",
5
5
  "files": [
6
6
  "dist",
@@ -61,10 +61,10 @@
61
61
  },
62
62
  "dependencies": {
63
63
  "@eslint-community/regexpp": "^4.10.0",
64
- "@typescript-eslint/scope-manager": "8.17.1-alpha.6",
65
- "@typescript-eslint/type-utils": "8.17.1-alpha.6",
66
- "@typescript-eslint/utils": "8.17.1-alpha.6",
67
- "@typescript-eslint/visitor-keys": "8.17.1-alpha.6",
64
+ "@typescript-eslint/scope-manager": "8.17.1-alpha.7",
65
+ "@typescript-eslint/type-utils": "8.17.1-alpha.7",
66
+ "@typescript-eslint/utils": "8.17.1-alpha.7",
67
+ "@typescript-eslint/visitor-keys": "8.17.1-alpha.7",
68
68
  "graphemer": "^1.4.0",
69
69
  "ignore": "^5.3.1",
70
70
  "natural-compare": "^1.4.0",
@@ -75,8 +75,8 @@
75
75
  "@types/marked": "^5.0.2",
76
76
  "@types/mdast": "^4.0.3",
77
77
  "@types/natural-compare": "*",
78
- "@typescript-eslint/rule-schema-to-typescript-types": "8.17.1-alpha.6",
79
- "@typescript-eslint/rule-tester": "8.17.1-alpha.6",
78
+ "@typescript-eslint/rule-schema-to-typescript-types": "8.17.1-alpha.7",
79
+ "@typescript-eslint/rule-tester": "8.17.1-alpha.7",
80
80
  "ajv": "^6.12.6",
81
81
  "cross-env": "^7.0.3",
82
82
  "cross-fetch": "*",