@cdklabs/eslint-plugin 1.3.0 → 1.3.2
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.
|
@@ -5,9 +5,11 @@ exports.create = create;
|
|
|
5
5
|
exports.meta = {
|
|
6
6
|
hasSuggestions: true,
|
|
7
7
|
};
|
|
8
|
+
// list of paths that should trigger the toolkit error suggestions
|
|
9
|
+
const toolkitErrorPaths = ['packages/aws-cdk/', 'packages/@aws-cdk/toolkit/'];
|
|
8
10
|
function create(context) {
|
|
9
11
|
const fileName = context.filename;
|
|
10
|
-
const
|
|
12
|
+
const isToolkitFile = toolkitErrorPaths.some((path) => fileName.includes(path));
|
|
11
13
|
return {
|
|
12
14
|
ThrowStatement(node) {
|
|
13
15
|
if (node.argument.type !== 'NewExpression') {
|
|
@@ -17,55 +19,34 @@ function create(context) {
|
|
|
17
19
|
if (newExpr.callee &&
|
|
18
20
|
newExpr.callee.type === 'Identifier' &&
|
|
19
21
|
newExpr.callee.name === 'Error') {
|
|
20
|
-
const suggestions = [
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
const suggestions = [];
|
|
23
|
+
const replaceErrorClassSuggestion = (suggested) => {
|
|
24
|
+
return {
|
|
25
|
+
desc: `Replace with \`${suggested}\``,
|
|
23
26
|
fix: (fixer) => {
|
|
24
|
-
|
|
25
|
-
// no existing args
|
|
27
|
+
// no args
|
|
26
28
|
if (newExpr.arguments.length === 0) {
|
|
27
|
-
return fixer.replaceText(newExpr,
|
|
29
|
+
return fixer.replaceText(newExpr, `new ${suggested}('<insert error message>')`);
|
|
28
30
|
}
|
|
29
|
-
|
|
30
|
-
fixer.replaceText(newExpr.callee, 'ValidationError'),
|
|
31
|
-
];
|
|
32
|
-
const last = (_a = newExpr.arguments.at(-1)) === null || _a === void 0 ? void 0 : _a.range;
|
|
33
|
-
if (last) {
|
|
34
|
-
fixes.push(fixer.insertTextAfterRange(last, ', this'));
|
|
35
|
-
}
|
|
36
|
-
return fixes;
|
|
31
|
+
return [fixer.replaceText(newExpr.callee, suggested)];
|
|
37
32
|
},
|
|
38
|
-
}
|
|
39
|
-
|
|
33
|
+
};
|
|
34
|
+
};
|
|
40
35
|
// Adds ToolkitError and AuthenticationError suggestions for CLI files.
|
|
41
|
-
if (
|
|
36
|
+
if (isToolkitFile) {
|
|
37
|
+
suggestions.push(replaceErrorClassSuggestion('ToolkitError'), replaceErrorClassSuggestion('AuthenticationError'), replaceErrorClassSuggestion('AssemblyError'), replaceErrorClassSuggestion('ContextProviderError'));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
42
40
|
suggestions.push({
|
|
43
|
-
desc: 'Replace with `
|
|
44
|
-
fix: (fixer) => {
|
|
45
|
-
var _a;
|
|
46
|
-
// no existing args
|
|
47
|
-
if (newExpr.arguments.length === 0) {
|
|
48
|
-
return fixer.replaceText(newExpr, "new ToolkitError('<insert error message>')");
|
|
49
|
-
}
|
|
50
|
-
const fixes = [
|
|
51
|
-
fixer.replaceText(newExpr.callee, 'ToolkitError'),
|
|
52
|
-
];
|
|
53
|
-
const last = (_a = newExpr.arguments.at(-1)) === null || _a === void 0 ? void 0 : _a.range;
|
|
54
|
-
if (last) {
|
|
55
|
-
fixes.push(fixer.insertTextAfterRange(last, ', this'));
|
|
56
|
-
}
|
|
57
|
-
return fixes;
|
|
58
|
-
},
|
|
59
|
-
}, {
|
|
60
|
-
desc: 'Replace with `AuthenticationError`',
|
|
41
|
+
desc: 'Replace with `ValidationError`',
|
|
61
42
|
fix: (fixer) => {
|
|
62
43
|
var _a;
|
|
63
44
|
// no existing args
|
|
64
45
|
if (newExpr.arguments.length === 0) {
|
|
65
|
-
return fixer.replaceText(newExpr, "new
|
|
46
|
+
return fixer.replaceText(newExpr, "new ValidationError('<insert error message>', this)");
|
|
66
47
|
}
|
|
67
48
|
const fixes = [
|
|
68
|
-
fixer.replaceText(newExpr.callee, '
|
|
49
|
+
fixer.replaceText(newExpr.callee, 'ValidationError'),
|
|
69
50
|
];
|
|
70
51
|
const last = (_a = newExpr.arguments.at(-1)) === null || _a === void 0 ? void 0 : _a.range;
|
|
71
52
|
if (last) {
|
|
@@ -84,4 +65,4 @@ function create(context) {
|
|
|
84
65
|
},
|
|
85
66
|
};
|
|
86
67
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdGhyb3ctZGVmYXVsdC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby10aHJvdy1kZWZhdWx0LWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLHdCQTRFQztBQW5GWSxRQUFBLElBQUksR0FBRztJQUNsQixjQUFjLEVBQUUsSUFBSTtDQUNyQixDQUFDO0FBRUYsa0VBQWtFO0FBQ2xFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0FBRTlFLFNBQWdCLE1BQU0sQ0FBQyxPQUF5QjtJQUM5QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ2xDLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3BELFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQ3hCLENBQUM7SUFFRixPQUFPO1FBQ0wsY0FBYyxDQUFDLElBQW9CO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7Z0JBQzNDLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQXlCLENBQUM7WUFDL0MsSUFDRSxPQUFPLENBQUMsTUFBTTtnQkFDZCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO2dCQUNwQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQy9CLENBQUM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUV2QixNQUFNLDJCQUEyQixHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFO29CQUN4RCxPQUFPO3dCQUNMLElBQUksRUFBRSxrQkFBa0IsU0FBUyxJQUFJO3dCQUNyQyxHQUFHLEVBQUUsQ0FBQyxLQUFxQixFQUFFLEVBQUU7NEJBQzdCLFVBQVU7NEJBQ1YsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQ0FDbkMsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLFNBQVMsNEJBQTRCLENBQUMsQ0FBQzs0QkFDbEYsQ0FBQzs0QkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7d0JBQ3hELENBQUM7cUJBQ0YsQ0FBQztnQkFDSixDQUFDLENBQUM7Z0JBR0YsdUVBQXVFO2dCQUN2RSxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNsQixXQUFXLENBQUMsSUFBSSxDQUNkLDJCQUEyQixDQUFDLGNBQWMsQ0FBQyxFQUMzQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxFQUNsRCwyQkFBMkIsQ0FBQyxlQUFlLENBQUMsRUFDNUMsMkJBQTJCLENBQUMsc0JBQXNCLENBQUMsQ0FDcEQsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sV0FBVyxDQUFDLElBQUksQ0FBQzt3QkFDZixJQUFJLEVBQUUsZ0NBQWdDO3dCQUN0QyxHQUFHLEVBQUUsQ0FBQyxLQUFxQixFQUFFLEVBQUU7OzRCQUM3QixtQkFBbUI7NEJBQ25CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0NBQ25DLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FDdEIsT0FBTyxFQUNQLHFEQUFxRCxDQUN0RCxDQUFDOzRCQUNKLENBQUM7NEJBRUQsTUFBTSxLQUFLLEdBQUc7Z0NBQ1osS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDOzZCQUNyRCxDQUFDOzRCQUVGLE1BQU0sSUFBSSxHQUFHLE1BQUEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsMENBQUUsS0FBSyxDQUFDOzRCQUM3QyxJQUFJLElBQUksRUFBRSxDQUFDO2dDQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDOzRCQUN6RCxDQUFDOzRCQUVELE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUM7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDYixJQUFJLEVBQUUsT0FBTztvQkFDYixPQUFPLEVBQUUsbURBQW1EO29CQUM1RCxPQUFPLEVBQUUsV0FBVztpQkFDckIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUgeyBOZXdFeHByZXNzaW9uLCBUaHJvd1N0YXRlbWVudCB9IGZyb20gJ2VzdHJlZSc7XG5cbmV4cG9ydCBjb25zdCBtZXRhID0ge1xuICBoYXNTdWdnZXN0aW9uczogdHJ1ZSxcbn07XG5cbi8vIGxpc3Qgb2YgcGF0aHMgdGhhdCBzaG91bGQgdHJpZ2dlciB0aGUgdG9vbGtpdCBlcnJvciBzdWdnZXN0aW9uc1xuY29uc3QgdG9vbGtpdEVycm9yUGF0aHMgPSBbJ3BhY2thZ2VzL2F3cy1jZGsvJywgJ3BhY2thZ2VzL0Bhd3MtY2RrL3Rvb2xraXQvJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuTm9kZUxpc3RlbmVyIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBjb250ZXh0LmZpbGVuYW1lO1xuICBjb25zdCBpc1Rvb2xraXRGaWxlID0gdG9vbGtpdEVycm9yUGF0aHMuc29tZSgocGF0aCkgPT5cbiAgICBmaWxlTmFtZS5pbmNsdWRlcyhwYXRoKSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIFRocm93U3RhdGVtZW50KG5vZGU6IFRocm93U3RhdGVtZW50KSB7XG4gICAgICBpZiAobm9kZS5hcmd1bWVudC50eXBlICE9PSAnTmV3RXhwcmVzc2lvbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdFeHByID0gbm9kZS5hcmd1bWVudCBhcyBOZXdFeHByZXNzaW9uO1xuICAgICAgaWYgKFxuICAgICAgICBuZXdFeHByLmNhbGxlZSAmJlxuICAgICAgICBuZXdFeHByLmNhbGxlZS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICAgICAgbmV3RXhwci5jYWxsZWUubmFtZSA9PT0gJ0Vycm9yJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gW107XG5cbiAgICAgICAgY29uc3QgcmVwbGFjZUVycm9yQ2xhc3NTdWdnZXN0aW9uID0gKHN1Z2dlc3RlZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlc2M6IGBSZXBsYWNlIHdpdGggXFxgJHtzdWdnZXN0ZWR9XFxgYCxcbiAgICAgICAgICAgIGZpeDogKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcikgPT4ge1xuICAgICAgICAgICAgICAvLyBubyBhcmdzXG4gICAgICAgICAgICAgIGlmIChuZXdFeHByLmFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZml4ZXIucmVwbGFjZVRleHQobmV3RXhwciwgYG5ldyAke3N1Z2dlc3RlZH0oJzxpbnNlcnQgZXJyb3IgbWVzc2FnZT4nKWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBbZml4ZXIucmVwbGFjZVRleHQobmV3RXhwci5jYWxsZWUsIHN1Z2dlc3RlZCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG5cbiAgICAgICAgLy8gQWRkcyBUb29sa2l0RXJyb3IgYW5kIEF1dGhlbnRpY2F0aW9uRXJyb3Igc3VnZ2VzdGlvbnMgZm9yIENMSSBmaWxlcy5cbiAgICAgICAgaWYgKGlzVG9vbGtpdEZpbGUpIHtcbiAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgcmVwbGFjZUVycm9yQ2xhc3NTdWdnZXN0aW9uKCdUb29sa2l0RXJyb3InKSxcbiAgICAgICAgICAgIHJlcGxhY2VFcnJvckNsYXNzU3VnZ2VzdGlvbignQXV0aGVudGljYXRpb25FcnJvcicpLFxuICAgICAgICAgICAgcmVwbGFjZUVycm9yQ2xhc3NTdWdnZXN0aW9uKCdBc3NlbWJseUVycm9yJyksXG4gICAgICAgICAgICByZXBsYWNlRXJyb3JDbGFzc1N1Z2dlc3Rpb24oJ0NvbnRleHRQcm92aWRlckVycm9yJyksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIGRlc2M6ICdSZXBsYWNlIHdpdGggYFZhbGlkYXRpb25FcnJvcmAnLFxuICAgICAgICAgICAgZml4OiAoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKSA9PiB7XG4gICAgICAgICAgICAgIC8vIG5vIGV4aXN0aW5nIGFyZ3NcbiAgICAgICAgICAgICAgaWYgKG5ld0V4cHIuYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaXhlci5yZXBsYWNlVGV4dChcbiAgICAgICAgICAgICAgICAgIG5ld0V4cHIsXG4gICAgICAgICAgICAgICAgICBcIm5ldyBWYWxpZGF0aW9uRXJyb3IoJzxpbnNlcnQgZXJyb3IgbWVzc2FnZT4nLCB0aGlzKVwiLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBmaXhlcyA9IFtcbiAgICAgICAgICAgICAgICBmaXhlci5yZXBsYWNlVGV4dChuZXdFeHByLmNhbGxlZSwgJ1ZhbGlkYXRpb25FcnJvcicpLFxuICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBuZXdFeHByLmFyZ3VtZW50cy5hdCgtMSk/LnJhbmdlO1xuICAgICAgICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgICAgICAgIGZpeGVzLnB1c2goZml4ZXIuaW5zZXJ0VGV4dEFmdGVyUmFuZ2UobGFzdCwgJywgdGhpcycpKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBmaXhlcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZTogbmV3RXhwcixcbiAgICAgICAgICBtZXNzYWdlOiAnRXhwZWN0ZWQgYSBub24tZGVmYXVsdCBlcnJvciBvYmplY3QgdG8gYmUgdGhyb3duLicsXG4gICAgICAgICAgc3VnZ2VzdDogc3VnZ2VzdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -53,14 +53,14 @@
|
|
|
53
53
|
"projen": "^0.90.5",
|
|
54
54
|
"ts-jest": "^29.2.5",
|
|
55
55
|
"ts-node": "^10.9.2",
|
|
56
|
-
"typescript": "^5.7.
|
|
56
|
+
"typescript": "^5.7.3"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"@typescript-eslint/parser": "^7.18.0",
|
|
60
60
|
"eslint": ">=6 <9"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"fs-extra": "^11.
|
|
63
|
+
"fs-extra": "^11.3.0"
|
|
64
64
|
},
|
|
65
65
|
"engines": {
|
|
66
66
|
"node": ">= 18.12.0"
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"publishConfig": {
|
|
71
71
|
"access": "public"
|
|
72
72
|
},
|
|
73
|
-
"version": "1.3.
|
|
73
|
+
"version": "1.3.2",
|
|
74
74
|
"jest": {
|
|
75
75
|
"coverageProvider": "v8",
|
|
76
76
|
"testMatch": [
|