@typescript-eslint/eslint-plugin 8.16.1-alpha.4 → 8.16.1-alpha.6
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.
@@ -104,19 +104,6 @@ exports.default = (0, util_1.createRule)({
|
|
104
104
|
const services = (0, util_1.getParserServices)(context);
|
105
105
|
const checker = services.program.getTypeChecker();
|
106
106
|
function validateNode(node) {
|
107
|
-
const signatures = services.getTypeAtLocation(node).getCallSignatures();
|
108
|
-
if (!signatures.length) {
|
109
|
-
return;
|
110
|
-
}
|
111
|
-
const returnType = checker.getReturnTypeOfSignature(signatures[0]);
|
112
|
-
if (!(0, util_1.containsAllTypesByName)(returnType,
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
114
|
-
allowAny, allAllowedPromiseNames,
|
115
|
-
// If no return type is explicitly set, we check if any parts of the return type match a Promise (instead of requiring all to match).
|
116
|
-
node.returnType == null)) {
|
117
|
-
// Return type is not a promise
|
118
|
-
return;
|
119
|
-
}
|
120
107
|
if (node.parent.type === utils_1.AST_NODE_TYPES.TSAbstractMethodDefinition) {
|
121
108
|
// Abstract method can't be async
|
122
109
|
return;
|
@@ -127,7 +114,13 @@ exports.default = (0, util_1.createRule)({
|
|
127
114
|
// Getters and setters can't be async
|
128
115
|
return;
|
129
116
|
}
|
130
|
-
|
117
|
+
const signatures = services.getTypeAtLocation(node).getCallSignatures();
|
118
|
+
if (!signatures.length) {
|
119
|
+
return;
|
120
|
+
}
|
121
|
+
const returnTypes = signatures.map(signature => checker.getReturnTypeOfSignature(signature));
|
122
|
+
if (!allowAny &&
|
123
|
+
returnTypes.some(type => (0, util_1.isTypeFlagSet)(type, ts.TypeFlags.Any | ts.TypeFlags.Unknown))) {
|
131
124
|
// Report without auto fixer because the return type is unknown
|
132
125
|
return context.report({
|
133
126
|
loc: (0, util_1.getFunctionHeadLoc)(node, context.sourceCode),
|
@@ -135,39 +128,46 @@ exports.default = (0, util_1.createRule)({
|
|
135
128
|
messageId: 'missingAsync',
|
136
129
|
});
|
137
130
|
}
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
method
|
152
|
-
const
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
131
|
+
if (
|
132
|
+
// require all potential return types to be promise/any/unknown
|
133
|
+
returnTypes.every(type => (0, util_1.containsAllTypesByName)(type, true, allAllowedPromiseNames,
|
134
|
+
// If no return type is explicitly set, we check if any parts of the return type match a Promise (instead of requiring all to match).
|
135
|
+
node.returnType == null))) {
|
136
|
+
context.report({
|
137
|
+
loc: (0, util_1.getFunctionHeadLoc)(node, context.sourceCode),
|
138
|
+
node,
|
139
|
+
messageId: 'missingAsync',
|
140
|
+
fix: fixer => {
|
141
|
+
if (node.parent.type === utils_1.AST_NODE_TYPES.MethodDefinition ||
|
142
|
+
(node.parent.type === utils_1.AST_NODE_TYPES.Property &&
|
143
|
+
node.parent.method)) {
|
144
|
+
// this function is a class method or object function property shorthand
|
145
|
+
const method = node.parent;
|
146
|
+
// the token to put `async` before
|
147
|
+
let keyToken = (0, util_1.nullThrows)(context.sourceCode.getFirstToken(method), util_1.NullThrowsReasons.MissingToken('key token', 'method'));
|
148
|
+
// if there are decorators then skip past them
|
149
|
+
if (method.type === utils_1.AST_NODE_TYPES.MethodDefinition &&
|
150
|
+
method.decorators.length) {
|
151
|
+
const lastDecorator = method.decorators[method.decorators.length - 1];
|
152
|
+
keyToken = (0, util_1.nullThrows)(context.sourceCode.getTokenAfter(lastDecorator), util_1.NullThrowsReasons.MissingToken('key token', 'last decorator'));
|
153
|
+
}
|
154
|
+
// if current token is a keyword like `static` or `public` then skip it
|
155
|
+
while (keyToken.type === utils_1.AST_TOKEN_TYPES.Keyword &&
|
156
|
+
keyToken.range[0] < method.key.range[0]) {
|
157
|
+
keyToken = (0, util_1.nullThrows)(context.sourceCode.getTokenAfter(keyToken), util_1.NullThrowsReasons.MissingToken('token', 'keyword'));
|
158
|
+
}
|
159
|
+
// check if there is a space between key and previous token
|
160
|
+
const insertSpace = !context.sourceCode.isSpaceBetween((0, util_1.nullThrows)(context.sourceCode.getTokenBefore(keyToken), util_1.NullThrowsReasons.MissingToken('token', 'keyword')), keyToken);
|
161
|
+
let code = 'async ';
|
162
|
+
if (insertSpace) {
|
163
|
+
code = ` ${code}`;
|
164
|
+
}
|
165
|
+
return fixer.insertTextBefore(keyToken, code);
|
165
166
|
}
|
166
|
-
return fixer.insertTextBefore(
|
167
|
-
}
|
168
|
-
|
169
|
-
|
170
|
-
});
|
167
|
+
return fixer.insertTextBefore(node, 'async ');
|
168
|
+
},
|
169
|
+
});
|
170
|
+
}
|
171
171
|
}
|
172
172
|
return {
|
173
173
|
...(checkArrowFunctions && {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"promise-function-async.js","sourceRoot":"","sources":["../../src/rules/promise-function-async.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,oDAA2E;AAC3E,+CAAiC;AAEjC,kCAQiB;AAcjB,kBAAe,IAAA,iBAAU,EAAsB;IAC7C,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,0EAA0E;YAC5E,oBAAoB,EAAE,IAAI;SAC3B;QACD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACR,YAAY,EAAE,+CAA+C;SAC9D;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,QAAQ,EAAE;wBACR,IAAI,EAAE,SAAS;wBACf,WAAW,EACT,yDAAyD;qBAC5D;oBACD,mBAAmB,EAAE;wBACnB,IAAI,EAAE,OAAO;wBACb,WAAW,EACT,qEAAqE;wBACvE,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;oBACD,mBAAmB,EAAE;wBACnB,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,mCAAmC;qBACjD;oBACD,yBAAyB,EAAE;wBACzB,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,oDAAoD;qBAClE;oBACD,wBAAwB,EAAE;wBACxB,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,8CAA8C;qBAC5D;oBACD,uBAAuB,EAAE;wBACvB,IAAI,EAAE,SAAS;wBACf,WAAW,EACT,0DAA0D;qBAC7D;iBACF;aACF;SACF;KACF;IACD,cAAc,EAAE;QACd;YACE,QAAQ,EAAE,IAAI;YACd,mBAAmB,EAAE,EAAE;YACvB,mBAAmB,EAAE,IAAI;YACzB,yBAAyB,EAAE,IAAI;YAC/B,wBAAwB,EAAE,IAAI;YAC9B,uBAAuB,EAAE,IAAI;SAC9B;KACF;IACD,MAAM,CACJ,OAAO,EACP,CACE,EACE,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,GACxB,EACF;QAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;YACrC,SAAS;YACT,qEAAqE;YACrE,oEAAoE;YACpE,GAAG,mBAAoB;SACxB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAElD,SAAS,YAAY,CACnB,IAG+B;YAE/B,
|
1
|
+
{"version":3,"file":"promise-function-async.js","sourceRoot":"","sources":["../../src/rules/promise-function-async.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@typescript-eslint/eslint-plugin",
|
3
|
-
"version": "8.16.1-alpha.
|
3
|
+
"version": "8.16.1-alpha.6",
|
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.16.1-alpha.
|
65
|
-
"@typescript-eslint/type-utils": "8.16.1-alpha.
|
66
|
-
"@typescript-eslint/utils": "8.16.1-alpha.
|
67
|
-
"@typescript-eslint/visitor-keys": "8.16.1-alpha.
|
64
|
+
"@typescript-eslint/scope-manager": "8.16.1-alpha.6",
|
65
|
+
"@typescript-eslint/type-utils": "8.16.1-alpha.6",
|
66
|
+
"@typescript-eslint/utils": "8.16.1-alpha.6",
|
67
|
+
"@typescript-eslint/visitor-keys": "8.16.1-alpha.6",
|
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.16.1-alpha.
|
79
|
-
"@typescript-eslint/rule-tester": "8.16.1-alpha.
|
78
|
+
"@typescript-eslint/rule-schema-to-typescript-types": "8.16.1-alpha.6",
|
79
|
+
"@typescript-eslint/rule-tester": "8.16.1-alpha.6",
|
80
80
|
"ajv": "^6.12.6",
|
81
81
|
"cross-env": "^7.0.3",
|
82
82
|
"cross-fetch": "*",
|