@typescript-eslint/eslint-plugin 7.2.1-alpha.5 → 7.3.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.
@@ -37,8 +37,55 @@ exports.default = (0, util_1.createRule)({
37
37
  },
38
38
  defaultOptions: ['fields'],
39
39
  create(context, [style]) {
40
- function getMethodName(node) {
41
- return ((0, util_1.getStaticStringValue)(node.key) ?? context.sourceCode.getText(node.key));
40
+ const propertiesInfoStack = [];
41
+ function getStringValue(node) {
42
+ return (0, util_1.getStaticStringValue)(node) ?? context.sourceCode.getText(node);
43
+ }
44
+ function enterClassBody() {
45
+ propertiesInfoStack.push({
46
+ properties: [],
47
+ excludeSet: new Set(),
48
+ });
49
+ }
50
+ function exitClassBody() {
51
+ const { properties, excludeSet } = (0, util_1.nullThrows)(propertiesInfoStack.pop(), 'Stack should exist on class exit');
52
+ properties.forEach(node => {
53
+ const { value } = node;
54
+ if (!value || !isSupportedLiteral(value)) {
55
+ return;
56
+ }
57
+ const name = getStringValue(node.key);
58
+ if (excludeSet.has(name)) {
59
+ return;
60
+ }
61
+ context.report({
62
+ node: node.key,
63
+ messageId: 'preferGetterStyle',
64
+ suggest: [
65
+ {
66
+ messageId: 'preferGetterStyleSuggestion',
67
+ fix(fixer) {
68
+ const name = context.sourceCode.getText(node.key);
69
+ let text = '';
70
+ text += printNodeModifiers(node, 'get');
71
+ text += node.computed ? `[${name}]` : name;
72
+ text += `() { return ${context.sourceCode.getText(value)}; }`;
73
+ return fixer.replaceText(node, text);
74
+ },
75
+ },
76
+ ],
77
+ });
78
+ });
79
+ }
80
+ function excludeAssignedProperty(node) {
81
+ if ((0, util_1.isAssignee)(node)) {
82
+ const { excludeSet } = propertiesInfoStack[propertiesInfoStack.length - 1];
83
+ const name = (0, util_1.getStaticStringValue)(node.property) ??
84
+ context.sourceCode.getText(node.property);
85
+ if (name) {
86
+ excludeSet.add(name);
87
+ }
88
+ }
42
89
  }
43
90
  return {
44
91
  ...(style === 'fields' && {
@@ -56,12 +103,12 @@ exports.default = (0, util_1.createRule)({
56
103
  if (!argument || !isSupportedLiteral(argument)) {
57
104
  return;
58
105
  }
59
- const name = getMethodName(node);
106
+ const name = getStringValue(node.key);
60
107
  if (node.parent.type === utils_1.AST_NODE_TYPES.ClassBody) {
61
108
  const hasDuplicateKeySetter = node.parent.body.some(element => {
62
109
  return (element.type === utils_1.AST_NODE_TYPES.MethodDefinition &&
63
110
  element.kind === 'set' &&
64
- getMethodName(element) === name);
111
+ getStringValue(element.key) === name);
65
112
  });
66
113
  if (hasDuplicateKeySetter) {
67
114
  return;
@@ -87,31 +134,26 @@ exports.default = (0, util_1.createRule)({
87
134
  },
88
135
  }),
89
136
  ...(style === 'getters' && {
137
+ ClassBody: enterClassBody,
138
+ 'ClassBody:exit': exitClassBody,
139
+ 'MethodDefinition[kind="constructor"] ThisExpression'(node) {
140
+ if (node.parent.type === utils_1.AST_NODE_TYPES.MemberExpression) {
141
+ let parent = node.parent;
142
+ while (!(0, util_1.isFunction)(parent)) {
143
+ parent = parent.parent;
144
+ }
145
+ if (parent.parent.type === utils_1.AST_NODE_TYPES.MethodDefinition &&
146
+ parent.parent.kind === 'constructor') {
147
+ excludeAssignedProperty(node.parent);
148
+ }
149
+ }
150
+ },
90
151
  PropertyDefinition(node) {
91
152
  if (!node.readonly || node.declare) {
92
153
  return;
93
154
  }
94
- const { value } = node;
95
- if (!value || !isSupportedLiteral(value)) {
96
- return;
97
- }
98
- context.report({
99
- node: node.key,
100
- messageId: 'preferGetterStyle',
101
- suggest: [
102
- {
103
- messageId: 'preferGetterStyleSuggestion',
104
- fix(fixer) {
105
- const name = context.sourceCode.getText(node.key);
106
- let text = '';
107
- text += printNodeModifiers(node, 'get');
108
- text += node.computed ? `[${name}]` : name;
109
- text += `() { return ${context.sourceCode.getText(value)}; }`;
110
- return fixer.replaceText(node, text);
111
- },
112
- },
113
- ],
114
- });
155
+ const { properties } = propertiesInfoStack[propertiesInfoStack.length - 1];
156
+ properties.push(node);
115
157
  },
116
158
  }),
117
159
  };
@@ -1 +1 @@
1
- {"version":3,"file":"class-literal-property-style.js","sourceRoot":"","sources":["../../src/rules/class-literal-property-style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-literal-property-style.js","sourceRoot":"","sources":["../../src/rules/class-literal-property-style.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,16 @@ exports.default = (0, util_1.createRule)({
70
70
  },
71
71
  ],
72
72
  create(context, [options]) {
73
+ const functionInfoStack = [];
74
+ function enterFunction(node) {
75
+ functionInfoStack.push({
76
+ node,
77
+ returns: [],
78
+ });
79
+ }
80
+ function popFunctionInfo(exitNodeType) {
81
+ return (0, util_1.nullThrows)(functionInfoStack.pop(), `Stack should exist on ${exitNodeType} exit`);
82
+ }
73
83
  function isAllowedFunction(node) {
74
84
  if (options.allowFunctionsWithoutTypeParameters && !node.typeParameters) {
75
85
  return true;
@@ -120,42 +130,50 @@ exports.default = (0, util_1.createRule)({
120
130
  function isIIFE(node) {
121
131
  return node.parent.type === utils_1.AST_NODE_TYPES.CallExpression;
122
132
  }
133
+ function exitFunctionExpression(node) {
134
+ const info = popFunctionInfo('function expression');
135
+ if (options.allowConciseArrowFunctionExpressionsStartingWithVoid &&
136
+ node.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression &&
137
+ node.expression &&
138
+ node.body.type === utils_1.AST_NODE_TYPES.UnaryExpression &&
139
+ node.body.operator === 'void') {
140
+ return;
141
+ }
142
+ if (isAllowedFunction(node)) {
143
+ return;
144
+ }
145
+ if (options.allowTypedFunctionExpressions &&
146
+ ((0, explicitReturnTypeUtils_1.isValidFunctionExpressionReturnType)(node, options) ||
147
+ (0, explicitReturnTypeUtils_1.ancestorHasReturnType)(node))) {
148
+ return;
149
+ }
150
+ (0, explicitReturnTypeUtils_1.checkFunctionReturnType)(info, options, context.sourceCode, loc => context.report({
151
+ node,
152
+ loc,
153
+ messageId: 'missingReturnType',
154
+ }));
155
+ }
123
156
  return {
124
- 'ArrowFunctionExpression, FunctionExpression'(node) {
125
- if (options.allowConciseArrowFunctionExpressionsStartingWithVoid &&
126
- node.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression &&
127
- node.expression &&
128
- node.body.type === utils_1.AST_NODE_TYPES.UnaryExpression &&
129
- node.body.operator === 'void') {
130
- return;
131
- }
132
- if (isAllowedFunction(node)) {
133
- return;
134
- }
135
- if (options.allowTypedFunctionExpressions &&
136
- ((0, explicitReturnTypeUtils_1.isValidFunctionExpressionReturnType)(node, options) ||
137
- (0, explicitReturnTypeUtils_1.ancestorHasReturnType)(node))) {
138
- return;
139
- }
140
- (0, explicitReturnTypeUtils_1.checkFunctionReturnType)(node, options, context.sourceCode, loc => context.report({
141
- node,
142
- loc,
143
- messageId: 'missingReturnType',
144
- }));
145
- },
146
- FunctionDeclaration(node) {
157
+ 'ArrowFunctionExpression, FunctionExpression, FunctionDeclaration': enterFunction,
158
+ 'ArrowFunctionExpression:exit': exitFunctionExpression,
159
+ 'FunctionExpression:exit': exitFunctionExpression,
160
+ 'FunctionDeclaration:exit'(node) {
161
+ const info = popFunctionInfo('function declaration');
147
162
  if (isAllowedFunction(node)) {
148
163
  return;
149
164
  }
150
165
  if (options.allowTypedFunctionExpressions && node.returnType) {
151
166
  return;
152
167
  }
153
- (0, explicitReturnTypeUtils_1.checkFunctionReturnType)(node, options, context.sourceCode, loc => context.report({
168
+ (0, explicitReturnTypeUtils_1.checkFunctionReturnType)(info, options, context.sourceCode, loc => context.report({
154
169
  node,
155
170
  loc,
156
171
  messageId: 'missingReturnType',
157
172
  }));
158
173
  },
174
+ ReturnStatement(node) {
175
+ functionInfoStack.at(-1)?.returns.push(node);
176
+ },
159
177
  };
160
178
  },
161
179
  });
@@ -1 +1 @@
1
- {"version":3,"file":"explicit-function-return-type.js","sourceRoot":"","sources":["../../src/rules/explicit-function-return-type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explicit-function-return-type.js","sourceRoot":"","sources":["../../src/rules/explicit-function-return-type.ts"],"names":[],"mappings":"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"}
@@ -68,11 +68,21 @@ exports.default = (0, util_1.createRule)({
68
68
  create(context, [options]) {
69
69
  // tracks all of the functions we've already checked
70
70
  const checkedFunctions = new Set();
71
- // tracks functions that were found whilst traversing
72
- const foundFunctions = [];
71
+ const functionStack = [];
72
+ const functionReturnsMap = new Map();
73
73
  // all nodes visited, avoids infinite recursion for cyclic references
74
74
  // (such as class member referring to itself)
75
75
  const alreadyVisited = new Set();
76
+ function getReturnsInFunction(node) {
77
+ return functionReturnsMap.get(node) ?? [];
78
+ }
79
+ function enterFunction(node) {
80
+ functionStack.push(node);
81
+ functionReturnsMap.set(node, []);
82
+ }
83
+ function exitFunction() {
84
+ functionStack.pop();
85
+ }
76
86
  /*
77
87
  # How the rule works:
78
88
 
@@ -84,10 +94,10 @@ exports.default = (0, util_1.createRule)({
84
94
  any of them are part of a higher-order function
85
95
  */
86
96
  return {
87
- ExportDefaultDeclaration(node) {
97
+ 'ExportDefaultDeclaration:exit'(node) {
88
98
  checkNode(node.declaration);
89
99
  },
90
- 'ExportNamedDeclaration:not([source])'(node) {
100
+ 'ExportNamedDeclaration:not([source]):exit'(node) {
91
101
  if (node.declaration) {
92
102
  checkNode(node.declaration);
93
103
  }
@@ -97,19 +107,24 @@ exports.default = (0, util_1.createRule)({
97
107
  }
98
108
  }
99
109
  },
100
- TSExportAssignment(node) {
110
+ 'TSExportAssignment:exit'(node) {
101
111
  checkNode(node.expression);
102
112
  },
103
- 'ArrowFunctionExpression, FunctionDeclaration, FunctionExpression'(node) {
104
- foundFunctions.push(node);
105
- },
113
+ 'ArrowFunctionExpression, FunctionDeclaration, FunctionExpression': enterFunction,
114
+ 'ArrowFunctionExpression:exit': exitFunction,
115
+ 'FunctionDeclaration:exit': exitFunction,
116
+ 'FunctionExpression:exit': exitFunction,
106
117
  'Program:exit'() {
107
- for (const func of foundFunctions) {
108
- if (isExportedHigherOrderFunction(func)) {
109
- checkNode(func);
118
+ for (const [node, returns] of functionReturnsMap) {
119
+ if (isExportedHigherOrderFunction({ node, returns })) {
120
+ checkNode(node);
110
121
  }
111
122
  }
112
123
  },
124
+ ReturnStatement(node) {
125
+ const current = functionStack[functionStack.length - 1];
126
+ functionReturnsMap.get(current)?.push(node);
127
+ },
113
128
  };
114
129
  function checkParameters(node) {
115
130
  function checkParameter(param) {
@@ -206,7 +221,7 @@ exports.default = (0, util_1.createRule)({
206
221
  }
207
222
  return false;
208
223
  }
209
- function isExportedHigherOrderFunction(node) {
224
+ function isExportedHigherOrderFunction({ node, }) {
210
225
  let current = node.parent;
211
226
  while (current) {
212
227
  if (current.type === utils_1.AST_NODE_TYPES.ReturnStatement) {
@@ -214,8 +229,11 @@ exports.default = (0, util_1.createRule)({
214
229
  current = current.parent.parent;
215
230
  continue;
216
231
  }
217
- if (!(0, util_1.isFunction)(current) ||
218
- !(0, explicitReturnTypeUtils_1.doesImmediatelyReturnFunctionExpression)(current)) {
232
+ if (!(0, util_1.isFunction)(current)) {
233
+ return false;
234
+ }
235
+ const returns = getReturnsInFunction(current);
236
+ if (!(0, explicitReturnTypeUtils_1.doesImmediatelyReturnFunctionExpression)({ node: current, returns })) {
219
237
  return false;
220
238
  }
221
239
  if (checkedFunctions.has(current)) {
@@ -261,8 +279,10 @@ exports.default = (0, util_1.createRule)({
261
279
  alreadyVisited.add(node);
262
280
  switch (node.type) {
263
281
  case utils_1.AST_NODE_TYPES.ArrowFunctionExpression:
264
- case utils_1.AST_NODE_TYPES.FunctionExpression:
265
- return checkFunctionExpression(node);
282
+ case utils_1.AST_NODE_TYPES.FunctionExpression: {
283
+ const returns = getReturnsInFunction(node);
284
+ return checkFunctionExpression({ node, returns });
285
+ }
266
286
  case utils_1.AST_NODE_TYPES.ArrayExpression:
267
287
  for (const element of node.elements) {
268
288
  checkNode(element);
@@ -280,8 +300,10 @@ exports.default = (0, util_1.createRule)({
280
300
  checkNode(element);
281
301
  }
282
302
  return;
283
- case utils_1.AST_NODE_TYPES.FunctionDeclaration:
284
- return checkFunction(node);
303
+ case utils_1.AST_NODE_TYPES.FunctionDeclaration: {
304
+ const returns = getReturnsInFunction(node);
305
+ return checkFunction({ node, returns });
306
+ }
285
307
  case utils_1.AST_NODE_TYPES.MethodDefinition:
286
308
  case utils_1.AST_NODE_TYPES.TSAbstractMethodDefinition:
287
309
  if (node.accessibility === 'private' ||
@@ -323,7 +345,7 @@ exports.default = (0, util_1.createRule)({
323
345
  }
324
346
  checkParameters(node);
325
347
  }
326
- function checkFunctionExpression(node) {
348
+ function checkFunctionExpression({ node, returns, }) {
327
349
  if (checkedFunctions.has(node)) {
328
350
  return;
329
351
  }
@@ -333,7 +355,7 @@ exports.default = (0, util_1.createRule)({
333
355
  (0, explicitReturnTypeUtils_1.ancestorHasReturnType)(node)) {
334
356
  return;
335
357
  }
336
- (0, explicitReturnTypeUtils_1.checkFunctionExpressionReturnType)(node, options, context.sourceCode, loc => {
358
+ (0, explicitReturnTypeUtils_1.checkFunctionExpressionReturnType)({ node, returns }, options, context.sourceCode, loc => {
337
359
  context.report({
338
360
  node,
339
361
  loc,
@@ -342,7 +364,7 @@ exports.default = (0, util_1.createRule)({
342
364
  });
343
365
  checkParameters(node);
344
366
  }
345
- function checkFunction(node) {
367
+ function checkFunction({ node, returns, }) {
346
368
  if (checkedFunctions.has(node)) {
347
369
  return;
348
370
  }
@@ -350,7 +372,7 @@ exports.default = (0, util_1.createRule)({
350
372
  if (isAllowedName(node) || (0, explicitReturnTypeUtils_1.ancestorHasReturnType)(node)) {
351
373
  return;
352
374
  }
353
- (0, explicitReturnTypeUtils_1.checkFunctionReturnType)(node, options, context.sourceCode, loc => {
375
+ (0, explicitReturnTypeUtils_1.checkFunctionReturnType)({ node, returns }, options, context.sourceCode, loc => {
354
376
  context.report({
355
377
  node,
356
378
  loc,
@@ -1 +1 @@
1
- {"version":3,"file":"explicit-module-boundary-types.js","sourceRoot":"","sources":["../../src/rules/explicit-module-boundary-types.ts"],"names":[],"mappings":";;AAAA,oEAAkE;AAElE,oDAA0D;AAE1D,kCAAiD;AAKjD,6EAMyC;AAkBzC,kBAAe,IAAA,iBAAU,EAAsB;IAC7C,IAAI,EAAE,gCAAgC;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,qGAAqG;SACxG;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,kCAAkC;YACrD,cAAc,EAAE,sCAAsC;YACtD,qBAAqB,EAAE,oCAAoC;YAC3D,WAAW,EAAE,0DAA0D;YACvE,kBAAkB,EAChB,wDAAwD;SAC3D;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,kCAAkC,EAAE;wBAClC,WAAW,EACT,iEAAiE;wBACnE,IAAI,EAAE,SAAS;qBAChB;oBACD,yCAAyC,EAAE;wBACzC,WAAW,EAAE;4BACX,kHAAkH;4BAClH,qDAAqD;yBACtD,CAAC,IAAI,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,SAAS;qBAChB;oBACD,YAAY,EAAE;wBACZ,WAAW,EACT,gGAAgG;wBAClG,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;wBACD,IAAI,EAAE,OAAO;qBACd;oBACD,yBAAyB,EAAE;wBACzB,WAAW,EAAE;4BACX,2GAA2G;4BAC3G,qDAAqD;yBACtD,CAAC,IAAI,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,SAAS;qBAChB;oBACD,6BAA6B,EAAE;wBAC7B,WAAW,EACT,8EAA8E;wBAChF,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,cAAc,EAAE;QACd;YACE,kCAAkC,EAAE,KAAK;YACzC,yCAAyC,EAAE,IAAI;YAC/C,YAAY,EAAE,EAAE;YAChB,yBAAyB,EAAE,IAAI;YAC/B,6BAA6B,EAAE,IAAI;SACpC;KACF;IACD,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;QACvB,oDAAoD;QACpD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAgB,CAAC;QAEjD,qDAAqD;QACrD,MAAM,cAAc,GAAmB,EAAE,CAAC;QAE1C,qEAAqE;QACrE,6CAA6C;QAC7C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAiB,CAAC;QAEhD;;;;;;;;;UASE;QAEF,OAAO;YACL,wBAAwB,CAAC,IAAI;gBAC3B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9B,CAAC;YACD,sCAAsC,CACpC,IAAqC;gBAErC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACxC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,kBAAkB,CAAC,IAAI;gBACrB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;YACD,kEAAkE,CAChE,IAAkB;gBAElB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,cAAc;gBACZ,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;oBAClC,IAAI,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;QAEF,SAAS,eAAe,CACtB,IAA2D;YAE3D,SAAS,cAAc,CAAC,KAAyB;gBAC/C,SAAS,MAAM,CACb,cAA0B,EAC1B,gBAA4B;oBAE5B,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU,EAAE,CAAC;wBAC7C,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,KAAK;4BACX,SAAS,EAAE,cAAc;4BACzB,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;yBAC3B,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,YAAY,EAAE,CAAC;wBACtD,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,KAAK;4BACX,SAAS,EAAE,gBAAgB;4BAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;yBAChC,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,aAAa,EAAE,CAAC;wBACvD,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,KAAK;4BACX,SAAS,EAAE,gBAAgB;4BAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;yBACjC,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,WAAW,EAAE,CAAC;wBACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU,EAAE,CAAC;4BACtD,OAAO,CAAC,MAAM,CAAC;gCACb,IAAI,EAAE,KAAK;gCACX,SAAS,EAAE,cAAc;gCACzB,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;6BACpC,CAAC,CAAC;wBACL,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,MAAM,CAAC;gCACb,IAAI,EAAE,KAAK;gCACX,SAAS,EAAE,gBAAgB;gCAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;6BACvB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,sBAAc,CAAC,YAAY,CAAC;oBACjC,KAAK,sBAAc,CAAC,UAAU,CAAC;oBAC/B,KAAK,sBAAc,CAAC,aAAa,CAAC;oBAClC,KAAK,sBAAc,CAAC,WAAW;wBAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;4BAC1B,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;wBACpD,CAAC;6BAAM,IACL,OAAO,CAAC,kCAAkC,KAAK,IAAI;4BACnD,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI;gCACtC,sBAAc,CAAC,YAAY,EAC7B,CAAC;4BACD,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;wBAC9C,CAAC;wBACD,OAAO;oBAET,KAAK,sBAAc,CAAC,mBAAmB;wBACrC,OAAO,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAEzC,KAAK,sBAAc,CAAC,iBAAiB,EAAE,8CAA8C;wBACnF,OAAO;gBACX,CAAC;YACH,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,cAAc,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED;;WAEG;QACH,SAAS,aAAa,CAAC,IAA+B;YACpD,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IACE,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB;gBAC/C,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,mBAAmB,EAChD,CAAC;gBACD,OAAO,CACL,IAAI,CAAC,EAAE,EAAE,IAAI,KAAK,sBAAc,CAAC,UAAU;oBAC3C,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAC5C,CAAC;YACJ,CAAC;iBAAM,IACL,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;gBAC7C,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,0BAA0B;gBACvD,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;gBACtD,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB,EAC/C,CAAC;gBACD,IACE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAc,CAAC,OAAO;oBACxC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,QAAQ,EAClC,CAAC;oBACD,OAAO,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvD,CAAC;gBACD,IACE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe;oBAChD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EACjC,CAAC;oBACD,OAAO,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrE,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU,EAAE,CAAC;oBAClE,OAAO,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,SAAS,6BAA6B,CAAC,IAAkB;YACvD,IAAI,OAAO,GAA8B,IAAI,CAAC,MAAM,CAAC;YACrD,OAAO,OAAO,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe,EAAE,CAAC;oBACpD,kFAAkF;oBAClF,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;oBAChC,SAAS;gBACX,CAAC;gBAED,IACE,CAAC,IAAA,iBAAU,EAAC,OAAO,CAAC;oBACpB,CAAC,IAAA,iEAAuC,EAAC,OAAO,CAAC,EACjD,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3B,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,SAAS,eAAe,CAAC,IAAyB;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,+BAA+B;YAC/B,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,yCAAyC;gBACzC,IACE;oBACE,8BAAc,CAAC,sBAAsB;oBACrC,8BAAc,CAAC,aAAa;oBAC5B,8BAAc,CAAC,WAAW;oBAC1B,8BAAc,CAAC,SAAS;iBACzB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAC3B,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YAED,mDAAmD;YACnD,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC5C;gBACE,6FAA6F;gBAC7F,CAAC,SAAS,CAAC,IAAI;oBACf,SAAS,CAAC,SAAS,EACnB,CAAC;oBACD,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS,SAAS,CAAC,IAA0B;YAC3C,IAAI,IAAI,IAAI,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEzB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,sBAAc,CAAC,uBAAuB,CAAC;gBAC5C,KAAK,sBAAc,CAAC,kBAAkB;oBACpC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAEvC,KAAK,sBAAc,CAAC,eAAe;oBACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACpC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC;oBACD,OAAO;gBAET,KAAK,sBAAc,CAAC,kBAAkB;oBACpC,IACE,IAAI,CAAC,aAAa,KAAK,SAAS;wBAChC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAc,CAAC,iBAAiB,EAClD,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE/B,KAAK,sBAAc,CAAC,gBAAgB,CAAC;gBACrC,KAAK,sBAAc,CAAC,eAAe;oBACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACrC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC;oBACD,OAAO;gBAET,KAAK,sBAAc,CAAC,mBAAmB;oBACrC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE7B,KAAK,sBAAc,CAAC,gBAAgB,CAAC;gBACrC,KAAK,sBAAc,CAAC,0BAA0B;oBAC5C,IACE,IAAI,CAAC,aAAa,KAAK,SAAS;wBAChC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAc,CAAC,iBAAiB,EAClD,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE/B,KAAK,sBAAc,CAAC,UAAU;oBAC5B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;gBAE/B,KAAK,sBAAc,CAAC,gBAAgB;oBAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACvC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACtB,CAAC;oBACD,OAAO;gBAET,KAAK,sBAAc,CAAC,QAAQ;oBAC1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE/B,KAAK,sBAAc,CAAC,6BAA6B;oBAC/C,OAAO,gCAAgC,CAAC,IAAI,CAAC,CAAC;gBAEhD,KAAK,sBAAc,CAAC,mBAAmB;oBACrC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC5C,SAAS,CAAC,WAAW,CAAC,CAAC;oBACzB,CAAC;oBACD,OAAO;gBAET,KAAK,sBAAc,CAAC,kBAAkB;oBACpC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,SAAS,gCAAgC,CACvC,IAA4C;YAE5C,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;gBACpD,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC;YACrC,MAAM,aAAa,GACjB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,0BAA0B;gBAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;YAC7B,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzD,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI;oBACJ,SAAS,EAAE,mBAAmB;iBAC/B,CAAC,CAAC;YACL,CAAC;YAED,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,SAAS,uBAAuB,CAAC,IAAwB;YACvD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE3B,IACE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC1B,IAAA,mDAAyB,EAAC,IAAI,EAAE,OAAO,CAAC;gBACxC,IAAA,+CAAqB,EAAC,IAAI,CAAC,EAC3B,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAA,2DAAiC,EAC/B,IAAI,EACJ,OAAO,EACP,OAAO,CAAC,UAAU,EAClB,GAAG,CAAC,EAAE;gBACJ,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI;oBACJ,GAAG;oBACH,SAAS,EAAE,mBAAmB;iBAC/B,CAAC,CAAC;YACL,CAAC,CACF,CAAC;YAEF,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,SAAS,aAAa,CAAC,IAAkC;YACvD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE3B,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,IAAA,+CAAqB,EAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,OAAO;YACT,CAAC;YAED,IAAA,iDAAuB,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;gBAC/D,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI;oBACJ,GAAG;oBACH,SAAS,EAAE,mBAAmB;iBAC/B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"explicit-module-boundary-types.js","sourceRoot":"","sources":["../../src/rules/explicit-module-boundary-types.ts"],"names":[],"mappings":"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"}
@@ -62,33 +62,6 @@ exports.default = (0, util_1.createRule)({
62
62
  const services = (0, util_1.getParserServices)(context);
63
63
  const checker = services.program.getTypeChecker();
64
64
  const compilerOptions = services.program.getCompilerOptions();
65
- /**
66
- * Sometimes tuple types don't have ObjectFlags.Tuple set, like when they're being matched against an inferred type.
67
- * So, in addition, check if there are integer properties 0..n and no other numeric keys
68
- */
69
- function couldBeTupleType(type) {
70
- const properties = type.getProperties();
71
- if (properties.length === 0) {
72
- return false;
73
- }
74
- let i = 0;
75
- for (; i < properties.length; ++i) {
76
- const name = properties[i].name;
77
- if (String(i) !== name) {
78
- if (i === 0) {
79
- // if there are no integer properties, this is not a tuple
80
- return false;
81
- }
82
- break;
83
- }
84
- }
85
- for (; i < properties.length; ++i) {
86
- if (String(+properties[i].name) === properties[i].name) {
87
- return false; // if there are any other numeric properties, this is not a tuple
88
- }
89
- }
90
- return true;
91
- }
92
65
  /**
93
66
  * Returns true if there's a chance the variable has been used before a value has been assigned to it
94
67
  */
@@ -127,6 +100,10 @@ exports.default = (0, util_1.createRule)({
127
100
  node.typeName.type === utils_1.AST_NODE_TYPES.Identifier &&
128
101
  node.typeName.name === 'const');
129
102
  }
103
+ function isConstVariableDeclaration(node) {
104
+ return (node.type === utils_1.AST_NODE_TYPES.VariableDeclaration &&
105
+ node.kind === 'const');
106
+ }
130
107
  return {
131
108
  TSNonNullExpression(node) {
132
109
  if (node.parent.type === utils_1.AST_NODE_TYPES.AssignmentExpression &&
@@ -199,21 +176,17 @@ exports.default = (0, util_1.createRule)({
199
176
  }
200
177
  },
201
178
  'TSAsExpression, TSTypeAssertion'(node) {
202
- if (options.typesToIgnore?.includes(context.sourceCode.getText(node.typeAnnotation)) ||
203
- isConstAssertion(node.typeAnnotation)) {
179
+ if (options.typesToIgnore?.includes(context.sourceCode.getText(node.typeAnnotation))) {
204
180
  return;
205
181
  }
206
182
  const castType = services.getTypeAtLocation(node);
207
- if ((0, util_1.isTypeFlagSet)(castType, ts.TypeFlags.Literal) ||
208
- (tsutils.isObjectType(castType) &&
209
- (tsutils.isObjectFlagSet(castType, ts.ObjectFlags.Tuple) ||
210
- couldBeTupleType(castType)))) {
211
- // It's not always safe to remove a cast to a literal type or tuple
212
- // type, as those types are sometimes widened without the cast.
213
- return;
214
- }
215
183
  const uncastType = services.getTypeAtLocation(node.expression);
216
- if (uncastType === castType) {
184
+ const typeIsUnchanged = uncastType === castType;
185
+ const wouldSameTypeBeInferred = castType.isLiteral()
186
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
187
+ isConstVariableDeclaration(node.parent.parent)
188
+ : !isConstAssertion(node.typeAnnotation);
189
+ if (typeIsUnchanged && wouldSameTypeBeInferred) {
217
190
  context.report({
218
191
  node,
219
192
  messageId: 'unnecessaryAssertion',
@@ -1 +1 @@
1
- {"version":3,"file":"no-unnecessary-type-assertion.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-type-assertion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-unnecessary-type-assertion.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-type-assertion.ts"],"names":[],"mappings":"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"}
@@ -72,44 +72,6 @@ exports.default = (0, util_1.createRule)({
72
72
  function contains(outer, inner) {
73
73
  return (outer.range[0] <= inner.range[0] && outer.range[1] >= inner.range[1]);
74
74
  }
75
- function isAssignee(node) {
76
- const parent = node.parent;
77
- if (!parent) {
78
- return false;
79
- }
80
- // a[i] = 1, a[i] += 1, etc.
81
- if (parent.type === utils_1.AST_NODE_TYPES.AssignmentExpression &&
82
- parent.left === node) {
83
- return true;
84
- }
85
- // delete a[i]
86
- if (parent.type === utils_1.AST_NODE_TYPES.UnaryExpression &&
87
- parent.operator === 'delete' &&
88
- parent.argument === node) {
89
- return true;
90
- }
91
- // a[i]++, --a[i], etc.
92
- if (parent.type === utils_1.AST_NODE_TYPES.UpdateExpression &&
93
- parent.argument === node) {
94
- return true;
95
- }
96
- // [a[i]] = [0]
97
- if (parent.type === utils_1.AST_NODE_TYPES.ArrayPattern) {
98
- return true;
99
- }
100
- // [...a[i]] = [0]
101
- if (parent.type === utils_1.AST_NODE_TYPES.RestElement) {
102
- return true;
103
- }
104
- // ({ foo: a[i] }) = { foo: 0 }
105
- if (parent.type === utils_1.AST_NODE_TYPES.Property &&
106
- parent.value === node &&
107
- parent.parent.type === utils_1.AST_NODE_TYPES.ObjectExpression &&
108
- isAssignee(parent.parent)) {
109
- return true;
110
- }
111
- return false;
112
- }
113
75
  function isIndexOnlyUsedWithArray(body, indexVar, arrayExpression) {
114
76
  const arrayText = context.sourceCode.getText(arrayExpression);
115
77
  return indexVar.references.every(reference => {
@@ -120,7 +82,7 @@ exports.default = (0, util_1.createRule)({
120
82
  node.object.type !== utils_1.AST_NODE_TYPES.ThisExpression &&
121
83
  node.property === id &&
122
84
  context.sourceCode.getText(node.object) === arrayText &&
123
- !isAssignee(node)));
85
+ !(0, util_1.isAssignee)(node)));
124
86
  });
125
87
  }
126
88
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-for-of.js","sourceRoot":"","sources":["../../src/rules/prefer-for-of.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefer-for-of.js","sourceRoot":"","sources":["../../src/rules/prefer-for-of.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,30 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  const utils_1 = require("@typescript-eslint/utils");
27
+ const tsutils = __importStar(require("ts-api-utils"));
4
28
  const util_1 = require("../util");
5
29
  const getMemberExpressionName = (member) => {
6
30
  if (!member.computed) {
@@ -31,6 +55,13 @@ exports.default = (0, util_1.createRule)({
31
55
  create(context) {
32
56
  const services = (0, util_1.getParserServices)(context);
33
57
  const checker = services.program.getTypeChecker();
58
+ function isArrayType(type) {
59
+ return tsutils
60
+ .unionTypeParts(type)
61
+ .every(unionPart => tsutils
62
+ .intersectionTypeParts(unionPart)
63
+ .every(t => checker.isArrayType(t) || checker.isTupleType(t)));
64
+ }
34
65
  return {
35
66
  'CallExpression > MemberExpression.callee'(callee) {
36
67
  if (getMemberExpressionName(callee) !== 'reduce') {
@@ -43,7 +74,7 @@ exports.default = (0, util_1.createRule)({
43
74
  // Get the symbol of the `reduce` method.
44
75
  const calleeObjType = (0, util_1.getConstrainedTypeAtLocation)(services, callee.object);
45
76
  // Check the owner type of the `reduce` method.
46
- if (checker.isArrayType(calleeObjType)) {
77
+ if (isArrayType(calleeObjType)) {
47
78
  context.report({
48
79
  messageId: 'preferTypeParameter',
49
80
  node: secondArg,
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-reduce-type-parameter.js","sourceRoot":"","sources":["../../src/rules/prefer-reduce-type-parameter.ts"],"names":[],"mappings":";;AACA,oDAA0D;AAE1D,kCAKiB;AAMjB,MAAM,uBAAuB,GAAG,CAC9B,MAAiC,EAClB,EAAE;IACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IACE,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,OAAO;QAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,EACzC,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE,8BAA8B;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,6EAA6E;YAC/E,WAAW,EAAE,QAAQ;YACrB,oBAAoB,EAAE,IAAI;SAC3B;QACD,QAAQ,EAAE;YACR,mBAAmB,EACjB,gFAAgF;SACnF;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAElD,OAAO;YACL,0CAA0C,CACxC,MAAgD;gBAEhD,IAAI,uBAAuB,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjD,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBAE9C,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,SAAS,CAAC,EAAE,CAAC;oBACtE,OAAO;gBACT,CAAC;gBAED,yCAAyC;gBACzC,MAAM,aAAa,GAAG,IAAA,mCAA4B,EAChD,QAAQ,EACR,MAAM,CAAC,MAAM,CACd,CAAC;gBAEF,+CAA+C;gBAC/C,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,MAAM,CAAC;wBACb,SAAS,EAAE,qBAAqB;wBAChC,IAAI,EAAE,SAAS;wBACf,GAAG,EAAE,KAAK,CAAC,EAAE;4BACX,MAAM,KAAK,GAAG;gCACZ,KAAK,CAAC,WAAW,CAAC;oCAChB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;oCAClB,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iCAC9B,CAAC;gCACF,KAAK,CAAC,WAAW,CAAC;oCAChB,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;oCAC7B,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;iCACnB,CAAC;6BACH,CAAC;4BAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gCACjC,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,eAAe,CACnB,MAAM,EACN,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAC5D,CACF,CAAC;4BACJ,CAAC;4BAED,OAAO,KAAK,CAAC;wBACf,CAAC;qBACF,CAAC,CAAC;oBAEH,OAAO;gBACT,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"prefer-reduce-type-parameter.js","sourceRoot":"","sources":["../../src/rules/prefer-reduce-type-parameter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAA0D;AAC1D,sDAAwC;AAGxC,kCAKiB;AAMjB,MAAM,uBAAuB,GAAG,CAC9B,MAAiC,EAClB,EAAE;IACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IACE,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,OAAO;QAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,EACzC,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE,8BAA8B;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,6EAA6E;YAC/E,WAAW,EAAE,QAAQ;YACrB,oBAAoB,EAAE,IAAI;SAC3B;QACD,QAAQ,EAAE;YACR,mBAAmB,EACjB,gFAAgF;SACnF;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAElD,SAAS,WAAW,CAAC,IAAa;YAChC,OAAO,OAAO;iBACX,cAAc,CAAC,IAAI,CAAC;iBACpB,KAAK,CAAC,SAAS,CAAC,EAAE,CACjB,OAAO;iBACJ,qBAAqB,CAAC,SAAS,CAAC;iBAChC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAChE,CAAC;QACN,CAAC;QAED,OAAO;YACL,0CAA0C,CACxC,MAAgD;gBAEhD,IAAI,uBAAuB,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjD,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBAE9C,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,SAAS,CAAC,EAAE,CAAC;oBACtE,OAAO;gBACT,CAAC;gBAED,yCAAyC;gBACzC,MAAM,aAAa,GAAG,IAAA,mCAA4B,EAChD,QAAQ,EACR,MAAM,CAAC,MAAM,CACd,CAAC;gBAEF,+CAA+C;gBAC/C,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,MAAM,CAAC;wBACb,SAAS,EAAE,qBAAqB;wBAChC,IAAI,EAAE,SAAS;wBACf,GAAG,EAAE,KAAK,CAAC,EAAE;4BACX,MAAM,KAAK,GAAG;gCACZ,KAAK,CAAC,WAAW,CAAC;oCAChB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;oCAClB,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;iCAC9B,CAAC;gCACF,KAAK,CAAC,WAAW,CAAC;oCAChB,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;oCAC7B,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;iCACnB,CAAC;6BACH,CAAC;4BAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gCACjC,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,eAAe,CACnB,MAAM,EACN,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAC5D,CACF,CAAC;4BACJ,CAAC;4BAED,OAAO,KAAK,CAAC;wBACf,CAAC;qBACF,CAAC,CAAC;oBAEH,OAAO;gBACT,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -93,20 +93,15 @@ function isPropertyOfObjectWithType(property) {
93
93
  * function fn() { return function() { ... } }
94
94
  * ```
95
95
  */
96
- function doesImmediatelyReturnFunctionExpression({ body, }) {
97
- // Check if body is a block with a single statement
98
- if (body.type === utils_1.AST_NODE_TYPES.BlockStatement && body.body.length === 1) {
99
- const [statement] = body.body;
100
- // Check if that statement is a return statement with an argument
101
- if (statement.type === utils_1.AST_NODE_TYPES.ReturnStatement &&
102
- !!statement.argument) {
103
- // If so, check that returned argument as body
104
- body = statement.argument;
105
- }
96
+ function doesImmediatelyReturnFunctionExpression({ node, returns, }) {
97
+ if (node.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression &&
98
+ utils_1.ASTUtils.isFunction(node.body)) {
99
+ return true;
100
+ }
101
+ if (returns.length === 0) {
102
+ return false;
106
103
  }
107
- // Check if the body being returned is a function expression
108
- return (body.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression ||
109
- body.type === utils_1.AST_NODE_TYPES.FunctionExpression);
104
+ return returns.every(node => node.argument && utils_1.ASTUtils.isFunction(node.argument));
110
105
  }
111
106
  exports.doesImmediatelyReturnFunctionExpression = doesImmediatelyReturnFunctionExpression;
112
107
  /**
@@ -167,9 +162,9 @@ exports.isValidFunctionExpressionReturnType = isValidFunctionExpressionReturnTyp
167
162
  /**
168
163
  * Check that the function expression or declaration is valid.
169
164
  */
170
- function isValidFunctionReturnType(node, options) {
165
+ function isValidFunctionReturnType({ node, returns }, options) {
171
166
  if (options.allowHigherOrderFunctions &&
172
- doesImmediatelyReturnFunctionExpression(node)) {
167
+ doesImmediatelyReturnFunctionExpression({ node, returns })) {
173
168
  return true;
174
169
  }
175
170
  return (node.returnType != null ||
@@ -179,8 +174,8 @@ function isValidFunctionReturnType(node, options) {
179
174
  /**
180
175
  * Checks if a function declaration/expression has a return type.
181
176
  */
182
- function checkFunctionReturnType(node, options, sourceCode, report) {
183
- if (isValidFunctionReturnType(node, options)) {
177
+ function checkFunctionReturnType({ node, returns }, options, sourceCode, report) {
178
+ if (isValidFunctionReturnType({ node, returns }, options)) {
184
179
  return;
185
180
  }
186
181
  report((0, getFunctionHeadLoc_1.getFunctionHeadLoc)(node, sourceCode));
@@ -189,11 +184,11 @@ exports.checkFunctionReturnType = checkFunctionReturnType;
189
184
  /**
190
185
  * Checks if a function declaration/expression has a return type.
191
186
  */
192
- function checkFunctionExpressionReturnType(node, options, sourceCode, report) {
193
- if (isValidFunctionExpressionReturnType(node, options)) {
187
+ function checkFunctionExpressionReturnType(info, options, sourceCode, report) {
188
+ if (isValidFunctionExpressionReturnType(info.node, options)) {
194
189
  return;
195
190
  }
196
- checkFunctionReturnType(node, options, sourceCode, report);
191
+ checkFunctionReturnType(info, options, sourceCode, report);
197
192
  }
198
193
  exports.checkFunctionExpressionReturnType = checkFunctionExpressionReturnType;
199
194
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"explicitReturnTypeUtils.js","sourceRoot":"","sources":["../../src/util/explicitReturnTypeUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explicitReturnTypeUtils.js","sourceRoot":"","sources":["../../src/util/explicitReturnTypeUtils.ts"],"names":[],"mappings":";;;AACA,oDAIkC;AAElC,yCAAsE;AACtE,6DAA0D;AAY1D;;;;;GAKG;AACH,SAAS,sCAAsC,CAC7C,IAAmB;IAEnB,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAC5E,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,sCAAsC,CAC7C,IAAmB;IAEnB,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CACzB,MAAqB,EACrB,MAA2B;IAE3B,OAAO,CACL,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc;QAC7C,+BAA+B;QAC/B,MAAM,CAAC,MAAM,KAAK,MAAM,CACzB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CACjB,IAAmB;IAEnB,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,sBAAsB;QACnD,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB,CAChD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,MAAqB,EACrB,MAA2B;IAE3B,OAAO,CACL,IAAA,0BAAe,EAAC,MAAM,CAAC;QACvB,sCAAsC,CAAC,MAAM,CAAC;QAC9C,sCAAsC,CAAC,MAAM,CAAC;QAC9C,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC;QAClC,UAAU,CAAC,MAAM,CAAC,CACnB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAC5B,IAAmB;IAEnB,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,aAAa,CAAC;AACpD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CACjC,QAAmC;IAEnC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,QAAQ,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;IACnC,IAAI,UAAU,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAEjC,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,uCAAuC,CAAC,EAC/C,IAAI,EACJ,OAAO,GACoB;IAC3B,IACE,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,uBAAuB;QACpD,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAClB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC5D,CAAC;AACJ,CAAC;AAqMC,0FAAuC;AAnMzC;;;;;GAKG;AACH,SAAS,6BAA6B,CACpC,IAAsC;IAEtC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,IAAI,IAAA,0BAAe,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,cAAc,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe,EAAE,CAAC;YAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;YACpC,IACE,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU;gBAC3C,QAAQ,CAAC,IAAI,KAAK,OAAO,EACzB,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AASD;;GAEG;AACH,SAAS,yBAAyB,CAChC,IAAwB,EACxB,OAAgB;IAEhB,MAAM,MAAM,GAAG,mBAAW,CAAC,UAAU,CACnC,IAAI,CAAC,MAAM,EACX,mBAAW,CAAC,iBAAiB,CAAC,aAAa,CAC5C,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3B,0BAA0B,CAAC,MAAM,CAAC;QAClC,qBAAqB,CAAC,MAAM,CAAC,CAC9B,CAAC;AACJ,CAAC;AAgJC,8DAAyB;AA9I3B;;;GAGG;AACH,SAAS,mCAAmC,CAC1C,IAAwB,EACxB,OAAgB;IAEhB,IAAI,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,mBAAW,CAAC,UAAU,CACnC,IAAI,CAAC,MAAM,EACX,mBAAW,CAAC,iBAAiB,CAAC,aAAa,CAC5C,CAAC;IACF,IACE,OAAO,CAAC,gBAAgB;QACxB,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB;QACjD,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;QAC/C,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,wBAAwB;QACvD,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB,EACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IACpE,OAAO,CACL,OAAO,CAAC,yCAAyC,KAAK,IAAI;QAC1D,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,uBAAuB;QACpD,6BAA6B,CAAC,IAAI,CAAC,CACpC,CAAC;AACJ,CAAC;AA+GC,kFAAmC;AA7GrC;;GAEG;AACH,SAAS,yBAAyB,CAChC,EAAE,IAAI,EAAE,OAAO,EAA8B,EAC7C,OAAgB;IAEhB,IACE,OAAO,CAAC,yBAAyB;QACjC,uCAAuC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAC1D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,IAAI,CAAC,UAAU,IAAI,IAAI;QACvB,IAAA,wBAAa,EAAC,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAA,mBAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,CACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,EAAE,IAAI,EAAE,OAAO,EAA8B,EAC7C,OAAgB,EAChB,UAA+B,EAC/B,MAA8C;IAE9C,IAAI,yBAAyB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAA,uCAAkB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/C,CAAC;AAqEC,0DAAuB;AAnEzB;;GAEG;AACH,SAAS,iCAAiC,CACxC,IAAsC,EACtC,OAAgB,EAChB,UAA+B,EAC/B,MAA8C;IAE9C,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAoDC,8EAAiC;AAlDnC;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAkB;IAC/C,IAAI,QAAQ,GAA8B,IAAI,CAAC,MAAM,CAAC;IAEtD,IAAI,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,QAAQ,EAAE,CAAC;QAC9C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,oGAAoG;IACpG,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe,CAAC;IAC3E,MAAM,eAAe,GACnB,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,uBAAuB;QACxD,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc,CAAC;IACvD,IAAI,CAAC,iBAAiB,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,EAAE,CAAC;QAChB,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,sBAAc,CAAC,uBAAuB,CAAC;YAC5C,KAAK,sBAAc,CAAC,kBAAkB,CAAC;YACvC,KAAK,sBAAc,CAAC,mBAAmB;gBACrC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACxB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM;YAER,2BAA2B;YAC3B,6DAA6D;YAC7D,KAAK,sBAAc,CAAC,kBAAkB;gBACpC,IAAI,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC;oBAC/B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM;YACR,KAAK,sBAAc,CAAC,kBAAkB;gBACpC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM;QACV,CAAC;QAED,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAUC,sDAAqB"}
@@ -31,6 +31,7 @@ __exportStar(require("./isUndefinedIdentifier"), exports);
31
31
  __exportStar(require("./misc"), exports);
32
32
  __exportStar(require("./objectIterators"), exports);
33
33
  __exportStar(require("./types"), exports);
34
+ __exportStar(require("./isAssignee"), exports);
34
35
  // this is done for convenience - saves migrating all of the old rules
35
36
  __exportStar(require("@typescript-eslint/type-utils"), exports);
36
37
  const { applyDefault, deepMerge, isObjectNotArray, getParserServices, nullThrows, NullThrowsReasons, } = utils_1.ESLintUtils;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAuD;AAEvD,6CAA2B;AAC3B,2DAAyC;AACzC,+CAA6B;AAC7B,uDAAqC;AACrC,0DAAwC;AACxC,yDAAuC;AACvC,oDAAkC;AAClC,sDAAoC;AACpC,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,yCAAuB;AACvB,oDAAkC;AAClC,0CAAwB;AAExB,sEAAsE;AACtE,gEAA8C;AAC9C,MAAM,EACJ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,GAAG,mBAAW,CAAC;AAMd,oCAAY;AACZ,8BAAS;AACT,4CAAgB;AAChB,8CAAiB;AACjB,gCAAU;AAGV,8CAAiB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAuD;AAEvD,6CAA2B;AAC3B,2DAAyC;AACzC,+CAA6B;AAC7B,uDAAqC;AACrC,0DAAwC;AACxC,yDAAuC;AACvC,oDAAkC;AAClC,sDAAoC;AACpC,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,yCAAuB;AACvB,oDAAkC;AAClC,0CAAwB;AACxB,+CAA6B;AAE7B,sEAAsE;AACtE,gEAA8C;AAC9C,MAAM,EACJ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,GAAG,mBAAW,CAAC;AAMd,oCAAY;AACZ,8BAAS;AACT,4CAAgB;AAChB,8CAAiB;AACjB,gCAAU;AAGV,8CAAiB"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAssignee = void 0;
4
+ const utils_1 = require("@typescript-eslint/utils");
5
+ function isAssignee(node) {
6
+ const parent = node.parent;
7
+ if (!parent) {
8
+ return false;
9
+ }
10
+ // a[i] = 1, a[i] += 1, etc.
11
+ if (parent.type === utils_1.AST_NODE_TYPES.AssignmentExpression &&
12
+ parent.left === node) {
13
+ return true;
14
+ }
15
+ // delete a[i]
16
+ if (parent.type === utils_1.AST_NODE_TYPES.UnaryExpression &&
17
+ parent.operator === 'delete' &&
18
+ parent.argument === node) {
19
+ return true;
20
+ }
21
+ // a[i]++, --a[i], etc.
22
+ if (parent.type === utils_1.AST_NODE_TYPES.UpdateExpression &&
23
+ parent.argument === node) {
24
+ return true;
25
+ }
26
+ // [a[i]] = [0]
27
+ if (parent.type === utils_1.AST_NODE_TYPES.ArrayPattern) {
28
+ return true;
29
+ }
30
+ // [...a[i]] = [0]
31
+ if (parent.type === utils_1.AST_NODE_TYPES.RestElement) {
32
+ return true;
33
+ }
34
+ // ({ foo: a[i] }) = { foo: 0 }
35
+ if (parent.type === utils_1.AST_NODE_TYPES.Property &&
36
+ parent.value === node &&
37
+ parent.parent.type === utils_1.AST_NODE_TYPES.ObjectExpression &&
38
+ isAssignee(parent.parent)) {
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
+ exports.isAssignee = isAssignee;
44
+ //# sourceMappingURL=isAssignee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAssignee.js","sourceRoot":"","sources":["../../src/util/isAssignee.ts"],"names":[],"mappings":";;;AACA,oDAA0D;AAE1D,SAAgB,UAAU,CAAC,IAAmB;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,oBAAoB;QACnD,MAAM,CAAC,IAAI,KAAK,IAAI,EACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;IACd,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe;QAC9C,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAC5B,MAAM,CAAC,QAAQ,KAAK,IAAI,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB;IACvB,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;QAC/C,MAAM,CAAC,QAAQ,KAAK,IAAI,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,IACE,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,QAAQ;QACvC,MAAM,CAAC,KAAK,KAAK,IAAI;QACrB,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;QACtD,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AApDD,gCAoDC"}
@@ -37,6 +37,10 @@ type Foo = 3;
37
37
  const foo = 3 as Foo;
38
38
  ```
39
39
 
40
+ ```ts
41
+ const foo = 'foo' as const;
42
+ ```
43
+
40
44
  ```ts
41
45
  function foo(x: number): number {
42
46
  return x!; // unnecessary non-null
@@ -55,7 +59,7 @@ const foo = 3 as number;
55
59
  ```
56
60
 
57
61
  ```ts
58
- const foo = 'foo' as const;
62
+ let foo = 'foo' as const;
59
63
  ```
60
64
 
61
65
  ```ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typescript-eslint/eslint-plugin",
3
- "version": "7.2.1-alpha.5",
3
+ "version": "7.3.0",
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.5.1",
64
- "@typescript-eslint/scope-manager": "7.2.1-alpha.5",
65
- "@typescript-eslint/type-utils": "7.2.1-alpha.5",
66
- "@typescript-eslint/utils": "7.2.1-alpha.5",
67
- "@typescript-eslint/visitor-keys": "7.2.1-alpha.5",
64
+ "@typescript-eslint/scope-manager": "7.3.0",
65
+ "@typescript-eslint/type-utils": "7.3.0",
66
+ "@typescript-eslint/utils": "7.3.0",
67
+ "@typescript-eslint/visitor-keys": "7.3.0",
68
68
  "debug": "^4.3.4",
69
69
  "graphemer": "^1.4.0",
70
70
  "ignore": "^5.2.4",
@@ -76,8 +76,8 @@
76
76
  "@types/debug": "*",
77
77
  "@types/marked": "*",
78
78
  "@types/natural-compare": "*",
79
- "@typescript-eslint/rule-schema-to-typescript-types": "7.2.1-alpha.5",
80
- "@typescript-eslint/rule-tester": "7.2.1-alpha.5",
79
+ "@typescript-eslint/rule-schema-to-typescript-types": "7.3.0",
80
+ "@typescript-eslint/rule-tester": "7.3.0",
81
81
  "ajv": "^6.12.6",
82
82
  "chalk": "^5.3.0",
83
83
  "cross-env": "^7.0.3",