@cdklabs/eslint-plugin 1.1.0 → 1.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.
- package/.test-output/no-this-in-static/static-function-using-super.ts +26 -0
- package/.test-output/no-this-in-static/static-function-using-this.ts +11 -0
- package/.test-output/no-this-in-static/this-in-constructor.ts +6 -0
- package/.test-output/no-this-in-static/this-in-instance-method.ts +4 -0
- package/README.md +21 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/rules/no-this-in-static.d.ts +11 -0
- package/lib/rules/no-this-in-static.js +120 -0
- package/lib/rules/no-throw-default-error.js +62 -21
- package/package.json +2 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class Super3 {
|
|
2
|
+
static propOneHop = 'abc';
|
|
3
|
+
static propThreeHops = 'abc';
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
class Super2 extends Super3 {
|
|
7
|
+
static oneHop() {
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
static twoHops() {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
class Super extends Super2 {
|
|
15
|
+
static propOneHop = 'abc';
|
|
16
|
+
static oneHop() {
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
class Foo extends Super {
|
|
21
|
+
static baz() {
|
|
22
|
+
Super.oneHop();
|
|
23
|
+
Super2.twoHops();
|
|
24
|
+
return Super.propOneHop + Super3.propThreeHops;
|
|
25
|
+
}
|
|
26
|
+
}
|
package/README.md
CHANGED
|
@@ -19,6 +19,27 @@ Eslint plugin for the CDK repository. Contains rules that need to be applied spe
|
|
|
19
19
|
|
|
20
20
|
* `consider-promise-all`: when using `Promise.all()`, attest that there is no unbounded parallelism.
|
|
21
21
|
|
|
22
|
+
* `no-throw-default-error`: Forbid throwing the default JavaScript error type. Instead a custom typed error should be thrown.
|
|
23
|
+
|
|
24
|
+
* `no-this-in-static`: Forbid the use of the keywords `this` and `super` in
|
|
25
|
+
static methods.
|
|
26
|
+
|
|
27
|
+
## How to use these rules
|
|
28
|
+
|
|
29
|
+
Import the plugin and declare rules with the `@cdklabs` prefix:
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
module.exports = {
|
|
33
|
+
plugins: [
|
|
34
|
+
// ... other plugins
|
|
35
|
+
'@cdklabs',
|
|
36
|
+
],
|
|
37
|
+
rules: {
|
|
38
|
+
'@cdklabs/no-throw-default-error': [ 'error' ],
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
22
43
|
## How to add new rules
|
|
23
44
|
|
|
24
45
|
* Make a new file in `lib/rules`. It should export one function called `create`. The
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -13,5 +13,6 @@ exports.rules = {
|
|
|
13
13
|
'no-invalid-path': require('./rules/no-invalid-path'),
|
|
14
14
|
'no-throw-default-error': require('./rules/no-throw-default-error'),
|
|
15
15
|
'promiseall-no-unbounded-parallelism': require('./rules/promiseall-no-unbounded-parallelism'),
|
|
16
|
+
'no-this-in-static': require('./rules/no-this-in-static'),
|
|
16
17
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBEQUEwRDs7O0FBRTdDLFFBQUEsSUFBSSxHQUFHO0lBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJO0lBQ3JDLE9BQU8sRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPO0NBQzVDLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBRztJQUNuQixtQkFBbUIsRUFBRSxPQUFPLENBQUMsMkJBQTJCLENBQUM7SUFDekQscUJBQXFCLEVBQUUsT0FBTyxDQUFDLDZCQUE2QixDQUFDO0lBQzdELHNCQUFzQixFQUFFLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztJQUMvRCxpQkFBaUIsRUFBRSxPQUFPLENBQUMseUJBQXlCLENBQUM7SUFDckQsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO0lBQ25FLHFDQUFxQyxFQUFFLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQztJQUM3RixtQkFBbUIsRUFBRSxPQUFPLENBQUMsMkJBQTJCLENBQUM7Q0FDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cblxuZXhwb3J0IGNvbnN0IG1ldGEgPSB7XG4gIG5hbWU6IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLm5hbWUsXG4gIHZlcnNpb246IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24sXG59O1xuXG5leHBvcnQgY29uc3QgcnVsZXMgPSB7XG4gICduby1jb3JlLWNvbnN0cnVjdCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tY29yZS1jb25zdHJ1Y3QnKSxcbiAgJ2ludmFsaWQtY2ZuLWltcG9ydHMnOiByZXF1aXJlKCcuL3J1bGVzL2ludmFsaWQtY2ZuLWltcG9ydHMnKSxcbiAgJ25vLWxpdGVyYWwtcGFydGl0aW9uJzogcmVxdWlyZSgnLi9ydWxlcy9uby1saXRlcmFsLXBhcnRpdGlvbicpLFxuICAnbm8taW52YWxpZC1wYXRoJzogcmVxdWlyZSgnLi9ydWxlcy9uby1pbnZhbGlkLXBhdGgnKSxcbiAgJ25vLXRocm93LWRlZmF1bHQtZXJyb3InOiByZXF1aXJlKCcuL3J1bGVzL25vLXRocm93LWRlZmF1bHQtZXJyb3InKSxcbiAgJ3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtJzogcmVxdWlyZSgnLi9ydWxlcy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbScpLFxuICAnbm8tdGhpcy1pbi1zdGF0aWMnOiByZXF1aXJlKCcuL3J1bGVzL25vLXRoaXMtaW4tc3RhdGljJyksXG59O1xuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapted from https://github.com/mysticatea/eslint-plugin/blob/v13.0.0/tests/lib/rules/no-this-in-static.js
|
|
3
|
+
* @author Toru Nagashima
|
|
4
|
+
* @copyright 2016 Toru Nagashima. All rights reserved.
|
|
5
|
+
* MIT License
|
|
6
|
+
*/
|
|
7
|
+
import { Rule } from 'eslint';
|
|
8
|
+
export declare const meta: {
|
|
9
|
+
fixable: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function create(context: Rule.RuleContext): Rule.NodeListener;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Adapted from https://github.com/mysticatea/eslint-plugin/blob/v13.0.0/tests/lib/rules/no-this-in-static.js
|
|
4
|
+
* @author Toru Nagashima
|
|
5
|
+
* @copyright 2016 Toru Nagashima. All rights reserved.
|
|
6
|
+
* MIT License
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.meta = void 0;
|
|
10
|
+
exports.create = create;
|
|
11
|
+
exports.meta = {
|
|
12
|
+
fixable: true,
|
|
13
|
+
};
|
|
14
|
+
function create(context) {
|
|
15
|
+
const sourceCode = context.sourceCode;
|
|
16
|
+
const staticFunctionStack = [];
|
|
17
|
+
const classDeclarations = new Map();
|
|
18
|
+
function isStaticMethod(node) {
|
|
19
|
+
return (node.type === 'FunctionExpression' &&
|
|
20
|
+
node.parent.type === 'MethodDefinition' &&
|
|
21
|
+
node.parent.static === true);
|
|
22
|
+
}
|
|
23
|
+
function enterFunction(node) {
|
|
24
|
+
staticFunctionStack.push(isStaticMethod(node));
|
|
25
|
+
}
|
|
26
|
+
function exitFunction() {
|
|
27
|
+
staticFunctionStack.pop();
|
|
28
|
+
}
|
|
29
|
+
function reportIfStatic(node) {
|
|
30
|
+
var _a;
|
|
31
|
+
const currentMethodIsStatic = staticFunctionStack.length > 0 && staticFunctionStack[staticFunctionStack.length - 1];
|
|
32
|
+
if (currentMethodIsStatic) {
|
|
33
|
+
context.report({
|
|
34
|
+
node,
|
|
35
|
+
loc: (_a = node.loc) !== null && _a !== void 0 ? _a : { line: 0, column: 0 },
|
|
36
|
+
message: "'{{type}}' keyword found in a static method. Replace it with the class name.",
|
|
37
|
+
data: { type: sourceCode.getText(node) },
|
|
38
|
+
fix(fixer) {
|
|
39
|
+
if (node.type === 'Super') {
|
|
40
|
+
const hierarchy = superClasses(findClassDeclaration(node));
|
|
41
|
+
const memberName = findMemberName(node);
|
|
42
|
+
if (memberName == null) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const superDecl = hierarchy.find(hasStaticMemberCalled(memberName));
|
|
46
|
+
return superDecl ? fixer.replaceText(node, superDecl.id.name) : null;
|
|
47
|
+
}
|
|
48
|
+
if (node.type === 'ThisExpression') {
|
|
49
|
+
const decl = findClassDeclaration(node);
|
|
50
|
+
return decl ? fixer.replaceText(node, decl.id.name) : null;
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function superClasses(node) {
|
|
58
|
+
var _a;
|
|
59
|
+
if (node == null) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
const result = [];
|
|
63
|
+
let superClass = node.superClass;
|
|
64
|
+
while (superClass != null) {
|
|
65
|
+
if (superClass.type === 'Identifier') {
|
|
66
|
+
const className = superClass.name;
|
|
67
|
+
const decl = classDeclarations.get(className);
|
|
68
|
+
result.push(decl);
|
|
69
|
+
superClass = (_a = classDeclarations.get(className)) === null || _a === void 0 ? void 0 : _a.superClass;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
function enterClass(node) {
|
|
75
|
+
classDeclarations.set(node.id.name, node);
|
|
76
|
+
}
|
|
77
|
+
function findClassDeclaration(node) {
|
|
78
|
+
let parent = node.parent;
|
|
79
|
+
while (parent != null) {
|
|
80
|
+
if (parent.type === 'ClassDeclaration') {
|
|
81
|
+
return parent;
|
|
82
|
+
}
|
|
83
|
+
parent = parent.parent;
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function findMemberName(node) {
|
|
88
|
+
let parent = node.parent;
|
|
89
|
+
while (parent != null) {
|
|
90
|
+
if (parent.type == 'MemberExpression'
|
|
91
|
+
&& parent.property.type === 'Identifier') {
|
|
92
|
+
return parent.property.name;
|
|
93
|
+
}
|
|
94
|
+
if (parent.type === 'CallExpression'
|
|
95
|
+
&& parent.callee.type === 'MemberExpression'
|
|
96
|
+
&& parent.callee.property.type === 'Identifier') {
|
|
97
|
+
return parent.callee.property.name;
|
|
98
|
+
}
|
|
99
|
+
parent = parent.parent;
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const hasStaticMemberCalled = (name) => (decl) => {
|
|
104
|
+
return decl.body.body.some((node) => {
|
|
105
|
+
return (node.type === 'MethodDefinition' || node.type === 'PropertyDefinition')
|
|
106
|
+
&& node.static && node.key.type === 'Identifier'
|
|
107
|
+
&& node.key.name === name;
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
'FunctionDeclaration': enterFunction,
|
|
112
|
+
'FunctionExpression': enterFunction,
|
|
113
|
+
'FunctionDeclaration:exit': exitFunction,
|
|
114
|
+
'FunctionExpression:exit': exitFunction,
|
|
115
|
+
'ThisExpression': reportIfStatic,
|
|
116
|
+
'Super': reportIfStatic,
|
|
117
|
+
'ClassDeclaration': enterClass,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdGhpcy1pbi1zdGF0aWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tdGhpcy1pbi1zdGF0aWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7QUFVSCx3QkF1SUM7QUEzSVksUUFBQSxJQUFJLEdBQUc7SUFDbEIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsU0FBZ0IsTUFBTSxDQUFDLE9BQXlCO0lBQzlDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDdEMsTUFBTSxtQkFBbUIsR0FBYyxFQUFFLENBQUM7SUFDMUMsTUFBTSxpQkFBaUIsR0FBa0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVuRSxTQUFTLGNBQWMsQ0FBQyxJQUFTO1FBQy9CLE9BQU8sQ0FDTCxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQjtZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxrQkFBa0I7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsYUFBYSxDQUFDLElBQXNFO1FBQzNGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsU0FBUyxZQUFZO1FBQ25CLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFvRDs7UUFDMUUsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwSCxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDYixJQUFJO2dCQUNKLEdBQUcsRUFBRSxN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QkFBcUIsRUFBRSxhQUFhO1FBQ3BDLG9CQUFvQixFQUFFLGFBQWE7UUFDbkMsMEJBQTBCLEVBQUUsWUFBWTtRQUN4Qyx5QkFBeUIsRUFBRSxZQUFZO1FBQ3ZDLGdCQUFnQixFQUFFLGNBQWM7UUFDaEMsT0FBTyxFQUFFLGNBQWM7UUFDdkIsa0JBQWtCLEVBQUUsVUFBVTtLQUMvQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9teXN0aWNhdGVhL2VzbGludC1wbHVnaW4vYmxvYi92MTMuMC4wL3Rlc3RzL2xpYi9ydWxlcy9uby10aGlzLWluLXN0YXRpYy5qc1xuICogQGF1dGhvciBUb3J1IE5hZ2FzaGltYVxuICogQGNvcHlyaWdodCAyMDE2IFRvcnUgTmFnYXNoaW1hLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTUlUIExpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHsgQ2xhc3NEZWNsYXJhdGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25FeHByZXNzaW9uLCBTdXBlciwgVGhpc0V4cHJlc3Npb24gfSBmcm9tICdlc3RyZWUnO1xuaW1wb3J0IE5vZGVQYXJlbnRFeHRlbnNpb24gPSBSdWxlLk5vZGVQYXJlbnRFeHRlbnNpb247XG5cbmV4cG9ydCBjb25zdCBtZXRhID0ge1xuICBmaXhhYmxlOiB0cnVlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5Ob2RlTGlzdGVuZXIge1xuICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5zb3VyY2VDb2RlO1xuICBjb25zdCBzdGF0aWNGdW5jdGlvblN0YWNrOiBib29sZWFuW10gPSBbXTtcbiAgY29uc3QgY2xhc3NEZWNsYXJhdGlvbnM6IE1hcDxzdHJpbmcsIENsYXNzRGVjbGFyYXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gIGZ1bmN0aW9uIGlzU3RhdGljTWV0aG9kKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBub2RlLnR5cGUgPT09ICdGdW5jdGlvbkV4cHJlc3Npb24nICYmXG4gICAgICBub2RlLnBhcmVudC50eXBlID09PSAnTWV0aG9kRGVmaW5pdGlvbicgJiZcbiAgICAgIG5vZGUucGFyZW50LnN0YXRpYyA9PT0gdHJ1ZVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBlbnRlckZ1bmN0aW9uKG5vZGU6IChGdW5jdGlvbkRlY2xhcmF0aW9uIHwgRnVuY3Rpb25FeHByZXNzaW9uKSAmIE5vZGVQYXJlbnRFeHRlbnNpb24pIHtcbiAgICBzdGF0aWNGdW5jdGlvblN0YWNrLnB1c2goaXNTdGF0aWNNZXRob2Qobm9kZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhpdEZ1bmN0aW9uKCkge1xuICAgIHN0YXRpY0Z1bmN0aW9uU3RhY2sucG9wKCk7XG4gIH1cblxuICBmdW5jdGlvbiByZXBvcnRJZlN0YXRpYyhub2RlOiAoVGhpc0V4cHJlc3Npb24gfCBTdXBlcikgJiBOb2RlUGFyZW50RXh0ZW5zaW9uKSB7XG4gICAgY29uc3QgY3VycmVudE1ldGhvZElzU3RhdGljID0gc3RhdGljRnVuY3Rpb25TdGFjay5sZW5ndGggPiAwICYmIHN0YXRpY0Z1bmN0aW9uU3RhY2tbc3RhdGljRnVuY3Rpb25TdGFjay5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjdXJyZW50TWV0aG9kSXNTdGF0aWMpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgbm9kZSxcbiAgICAgICAgbG9jOiBub2RlLmxvYyA/PyB7IGxpbmU6IDAsIGNvbHVtbjogMCB9LFxuICAgICAgICBtZXNzYWdlOiBcIid7e3R5cGV9fScga2V5d29yZCBmb3VuZCBpbiBhIHN0YXRpYyBtZXRob2QuIFJlcGxhY2UgaXQgd2l0aCB0aGUgY2xhc3MgbmFtZS5cIixcbiAgICAgICAgZGF0YTogeyB0eXBlOiBzb3VyY2VDb2RlLmdldFRleHQobm9kZSkgfSxcbiAgICAgICAgZml4KGZpeGVyOiBSdWxlLlJ1bGVGaXhlcikge1xuICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdTdXBlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeSA9IHN1cGVyQ2xhc3NlcyhmaW5kQ2xhc3NEZWNsYXJhdGlvbihub2RlKSk7XG4gICAgICAgICAgICBjb25zdCBtZW1iZXJOYW1lID0gZmluZE1lbWJlck5hbWUobm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZW1iZXJOYW1lID09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN1cGVyRGVjbCA9IGhpZXJhcmNoeS5maW5kKGhhc1N0YXRpY01lbWJlckNhbGxlZChtZW1iZXJOYW1lKSk7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXJEZWNsID8gZml4ZXIucmVwbGFjZVRleHQobm9kZSwgc3VwZXJEZWNsLmlkLm5hbWUpIDogbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobm9kZS50eXBlID09PSAnVGhpc0V4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNsID0gZmluZENsYXNzRGVjbGFyYXRpb24obm9kZSk7XG4gICAgICAgICAgICByZXR1cm4gZGVjbCA/IGZpeGVyLnJlcGxhY2VUZXh0KG5vZGUsIGRlY2wuaWQubmFtZSkgOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3VwZXJDbGFzc2VzKG5vZGU6IENsYXNzRGVjbGFyYXRpb24gfCBudWxsKTogQ2xhc3NEZWNsYXJhdGlvbltdIHtcbiAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBDbGFzc0RlY2xhcmF0aW9uW10gPSBbXTtcblxuICAgIGxldCBzdXBlckNsYXNzID0gbm9kZS5zdXBlckNsYXNzO1xuXG4gICAgd2hpbGUgKHN1cGVyQ2xhc3MgIT0gbnVsbCkge1xuICAgICAgaWYgKHN1cGVyQ2xhc3MudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHN1cGVyQ2xhc3MubmFtZTtcbiAgICAgICAgY29uc3QgZGVjbCA9IGNsYXNzRGVjbGFyYXRpb25zLmdldChjbGFzc05hbWUpITtcbiAgICAgICAgcmVzdWx0LnB1c2goZGVjbCk7XG4gICAgICAgIHN1cGVyQ2xhc3MgPSBjbGFzc0RlY2xhcmF0aW9ucy5nZXQoY2xhc3NOYW1lKT8uc3VwZXJDbGFzcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gZW50ZXJDbGFzcyhub2RlOiBDbGFzc0RlY2xhcmF0aW9uICYgTm9kZVBhcmVudEV4dGVuc2lvbikge1xuICAgIGNsYXNzRGVjbGFyYXRpb25zLnNldChub2RlLmlkLm5hbWUsIG5vZGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gZmluZENsYXNzRGVjbGFyYXRpb24obm9kZTogTm9kZVBhcmVudEV4dGVuc2lvbik6IENsYXNzRGVjbGFyYXRpb24gfCBudWxsIHtcbiAgICBsZXQgcGFyZW50ID0gbm9kZS5wYXJlbnQ7XG5cbiAgICB3aGlsZSAocGFyZW50ICE9IG51bGwpIHtcbiAgICAgIGlmIChwYXJlbnQudHlwZSA9PT0gJ0NsYXNzRGVjbGFyYXRpb24nKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBmaW5kTWVtYmVyTmFtZShub2RlOiBOb2RlUGFyZW50RXh0ZW5zaW9uKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuXG4gICAgd2hpbGUgKHBhcmVudCAhPSBudWxsKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHBhcmVudC50eXBlID09ICdNZW1iZXJFeHByZXNzaW9uJ1xuICAgICAgICAmJiBwYXJlbnQucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHBhcmVudC5wcm9wZXJ0eS5uYW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHBhcmVudC50eXBlID09PSAnQ2FsbEV4cHJlc3Npb24nXG4gICAgICAgICYmIHBhcmVudC5jYWxsZWUudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nXG4gICAgICAgICYmIHBhcmVudC5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHBhcmVudC5jYWxsZWUucHJvcGVydHkubmFtZTtcbiAgICAgIH1cblxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGhhc1N0YXRpY01lbWJlckNhbGxlZCA9IChuYW1lOiBzdHJpbmcpID0+IChkZWNsOiBDbGFzc0RlY2xhcmF0aW9uKSA9PiB7XG4gICAgcmV0dXJuIGRlY2wuYm9keS5ib2R5LnNvbWUoKG5vZGUpID0+IHtcbiAgICAgIHJldHVybiAobm9kZS50eXBlID09PSAnTWV0aG9kRGVmaW5pdGlvbicgfHwgbm9kZS50eXBlID09PSAnUHJvcGVydHlEZWZpbml0aW9uJylcbiAgICAgICAgJiYgbm9kZS5zdGF0aWMgJiYgbm9kZS5rZXkudHlwZSA9PT0gJ0lkZW50aWZpZXInXG4gICAgICAgICYmIG5vZGUua2V5Lm5hbWUgPT09IG5hbWU7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAnRnVuY3Rpb25EZWNsYXJhdGlvbic6IGVudGVyRnVuY3Rpb24sXG4gICAgJ0Z1bmN0aW9uRXhwcmVzc2lvbic6IGVudGVyRnVuY3Rpb24sXG4gICAgJ0Z1bmN0aW9uRGVjbGFyYXRpb246ZXhpdCc6IGV4aXRGdW5jdGlvbixcbiAgICAnRnVuY3Rpb25FeHByZXNzaW9uOmV4aXQnOiBleGl0RnVuY3Rpb24sXG4gICAgJ1RoaXNFeHByZXNzaW9uJzogcmVwb3J0SWZTdGF0aWMsXG4gICAgJ1N1cGVyJzogcmVwb3J0SWZTdGF0aWMsXG4gICAgJ0NsYXNzRGVjbGFyYXRpb24nOiBlbnRlckNsYXNzLFxuICB9O1xufVxuIl19
|
|
@@ -6,6 +6,8 @@ exports.meta = {
|
|
|
6
6
|
hasSuggestions: true,
|
|
7
7
|
};
|
|
8
8
|
function create(context) {
|
|
9
|
+
const fileName = context.filename;
|
|
10
|
+
const isCliFile = fileName.includes('packages/aws-cdk/');
|
|
9
11
|
return {
|
|
10
12
|
ThrowStatement(node) {
|
|
11
13
|
if (node.argument.type !== 'NewExpression') {
|
|
@@ -15,32 +17,71 @@ function create(context) {
|
|
|
15
17
|
if (newExpr.callee &&
|
|
16
18
|
newExpr.callee.type === 'Identifier' &&
|
|
17
19
|
newExpr.callee.name === 'Error') {
|
|
20
|
+
const suggestions = [
|
|
21
|
+
{
|
|
22
|
+
desc: 'Replace with `ValidationError`',
|
|
23
|
+
fix: (fixer) => {
|
|
24
|
+
var _a;
|
|
25
|
+
// no existing args
|
|
26
|
+
if (newExpr.arguments.length === 0) {
|
|
27
|
+
return fixer.replaceText(newExpr, "new ValidationError('<insert error message>', this)");
|
|
28
|
+
}
|
|
29
|
+
const fixes = [
|
|
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;
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
// Adds ToolkitError and AuthenticationError suggestions for CLI files.
|
|
41
|
+
if (isCliFile) {
|
|
42
|
+
suggestions.push({
|
|
43
|
+
desc: 'Replace with `ToolkitError`',
|
|
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`',
|
|
61
|
+
fix: (fixer) => {
|
|
62
|
+
var _a;
|
|
63
|
+
// no existing args
|
|
64
|
+
if (newExpr.arguments.length === 0) {
|
|
65
|
+
return fixer.replaceText(newExpr, "new AuthenticationError('<insert error message>')");
|
|
66
|
+
}
|
|
67
|
+
const fixes = [
|
|
68
|
+
fixer.replaceText(newExpr.callee, 'AuthenticationError'),
|
|
69
|
+
];
|
|
70
|
+
const last = (_a = newExpr.arguments.at(-1)) === null || _a === void 0 ? void 0 : _a.range;
|
|
71
|
+
if (last) {
|
|
72
|
+
fixes.push(fixer.insertTextAfterRange(last, ', this'));
|
|
73
|
+
}
|
|
74
|
+
return fixes;
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
18
78
|
context.report({
|
|
19
79
|
node: newExpr,
|
|
20
80
|
message: 'Expected a non-default error object to be thrown.',
|
|
21
|
-
suggest:
|
|
22
|
-
{
|
|
23
|
-
desc: 'Replace with `ValidationError`',
|
|
24
|
-
fix: (fixer) => {
|
|
25
|
-
var _a;
|
|
26
|
-
// no existing args
|
|
27
|
-
if (newExpr.arguments.length === 0) {
|
|
28
|
-
return fixer.replaceText(newExpr, "new ValidationError('<insert error message>', this)");
|
|
29
|
-
}
|
|
30
|
-
const fixes = [
|
|
31
|
-
fixer.replaceText(newExpr.callee, 'ValidationError'),
|
|
32
|
-
];
|
|
33
|
-
const last = (_a = newExpr.arguments.at(-1)) === null || _a === void 0 ? void 0 : _a.range;
|
|
34
|
-
if (last) {
|
|
35
|
-
fixes.push(fixer.insertTextAfterRange(last, ', this'));
|
|
36
|
-
}
|
|
37
|
-
return fixes;
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
],
|
|
81
|
+
suggest: suggestions,
|
|
41
82
|
});
|
|
42
83
|
}
|
|
43
84
|
},
|
|
44
85
|
};
|
|
45
86
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdGhyb3ctZGVmYXVsdC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby10aHJvdy1kZWZhdWx0LWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLHdCQW1HQztBQXZHWSxRQUFBLElBQUksR0FBRztJQUNsQixjQUFjLEVBQUUsSUFBSTtDQUNyQixDQUFDO0FBRUYsU0FBZ0IsTUFBTSxDQUFDLE9BQXlCO0lBQzlDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXpELE9BQU87UUFDTCxjQUFjLENBQUMsSUFBb0I7WUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQztnQkFDM0MsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBeUIsQ0FBQztZQUMvQyxJQUNFLE9BQU8sQ0FBQyxNQUFNO2dCQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7Z0JBQ3BDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFDL0IsQ0FBQztnQkFDRCxNQUFNLFdBQVcsR0FBRztvQkFDbEI7d0JBQ0UsSUFBSSxFQUFFLGdDQUFnQzt3QkFDdEMsR0FBRyxFQUFFLENBQUMsS0FBcUIsRUFBRSxFQUFFOzs0QkFDN0IsbUJBQW1COzRCQUNuQixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dDQUNuQyxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLHFEQUFxRCxDQUFDLENBQUM7NEJBQzNGLENBQUM7NEJBRUQsTUFBTSxLQUFLLEdBQUc7Z0NBQ1osS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDOzZCQUNyRCxDQUFDOzRCQUVGLE1BQU0sSUFBSSxHQUFHLE1BQUEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsMENBQUUsS0FBSyxDQUFDOzRCQUM3QyxJQUFJLElBQUksRUFBRSxDQUFDO2dDQUNULEtBQUssQ0FBQyxJQUFJLENBQ1IsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FDM0MsQ0FBQzs0QkFDSixDQUFDOzRCQUVELE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUM7cUJBQ0Y7aUJBQ0YsQ0FBQztnQkFFRix1RUFBdUU7Z0JBQ3ZFLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ2QsV0FBVyxDQUFDLElBQUksQ0FDZDt3QkFDRSxJQUFJLEVBQUUsNkJBQTZCO3dCQUNuQyxHQUFHLEVBQUUsQ0FBQyxLQUFxQixFQUFFLEVBQUU7OzRCQUM3QixtQkFBbUI7NEJBQ25CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0NBQ25DLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsNENBQTRDLENBQUMsQ0FBQzs0QkFDbEYsQ0FBQzs0QkFFRCxNQUFNLEtBQUssR0FBRztnQ0FDWixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDOzZCQUNsRCxDQUFDOzRCQUVGLE1BQU0sSUFBSSxHQUFHLE1BQUEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsMENBQUUsS0FBSyxDQUFDOzRCQUM3QyxJQUFJLElBQUksRUFBRSxDQUFDO2dDQUNULEtBQUssQ0FBQyxJQUFJLENBQ1IsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FDM0MsQ0FBQzs0QkFDSixDQUFDOzRCQUVELE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUM7cUJBQ0YsRUFDRDt3QkFDRSxJQUFJLEVBQUUsb0NBQW9DO3dCQUMxQyxHQUFHLEVBQUUsQ0FBQyxLQUFxQixFQUFFLEVBQUU7OzRCQUM3QixtQkFBbUI7NEJBQ25CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0NBQ25DLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsbURBQW1ELENBQUMsQ0FBQzs0QkFDekYsQ0FBQzs0QkFFRCxNQUFNLEtBQUssR0FBRztnQ0FDWixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUM7NkJBQ3pELENBQUM7NEJBRUYsTUFBTSxJQUFJLEdBQUcsTUFBQSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUM7NEJBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7Z0NBQ1QsS0FBSyxDQUFDLElBQUksQ0FDUixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUMzQyxDQUFDOzRCQUNKLENBQUM7NEJBRUQsT0FBTyxLQUFLLENBQUM7d0JBQ2YsQ0FBQztxQkFDRixDQUNGLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUNiLElBQUksRUFBRSxPQUFPO29CQUNiLE9BQU8sRUFBRSxtREFBbUQ7b0JBQzVELE9BQU8sRUFBRSxXQUFXO2lCQUNyQixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IE5ld0V4cHJlc3Npb24sIFRocm93U3RhdGVtZW50IH0gZnJvbSAnZXN0cmVlJztcblxuZXhwb3J0IGNvbnN0IG1ldGEgPSB7XG4gIGhhc1N1Z2dlc3Rpb25zOiB0cnVlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5Ob2RlTGlzdGVuZXIge1xuICBjb25zdCBmaWxlTmFtZSA9IGNvbnRleHQuZmlsZW5hbWU7XG4gIGNvbnN0IGlzQ2xpRmlsZSA9IGZpbGVOYW1lLmluY2x1ZGVzKCdwYWNrYWdlcy9hd3MtY2RrLycpO1xuXG4gIHJldHVybiB7XG4gICAgVGhyb3dTdGF0ZW1lbnQobm9kZTogVGhyb3dTdGF0ZW1lbnQpIHtcbiAgICAgIGlmIChub2RlLmFyZ3VtZW50LnR5cGUgIT09ICdOZXdFeHByZXNzaW9uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0V4cHIgPSBub2RlLmFyZ3VtZW50IGFzIE5ld0V4cHJlc3Npb247XG4gICAgICBpZiAoXG4gICAgICAgIG5ld0V4cHIuY2FsbGVlICYmXG4gICAgICAgIG5ld0V4cHIuY2FsbGVlLnR5cGUgPT09ICdJZGVudGlmaWVyJyAmJlxuICAgICAgICBuZXdFeHByLmNhbGxlZS5uYW1lID09PSAnRXJyb3InXG4gICAgICApIHtcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGVzYzogJ1JlcGxhY2Ugd2l0aCBgVmFsaWRhdGlvbkVycm9yYCcsXG4gICAgICAgICAgICBmaXg6IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IHtcbiAgICAgICAgICAgICAgLy8gbm8gZXhpc3RpbmcgYXJnc1xuICAgICAgICAgICAgICBpZiAobmV3RXhwci5hcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpeGVyLnJlcGxhY2VUZXh0KG5ld0V4cHIsIFwibmV3IFZhbGlkYXRpb25FcnJvcignPGluc2VydCBlcnJvciBtZXNzYWdlPicsIHRoaXMpXCIpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgZml4ZXMgPSBbXG4gICAgICAgICAgICAgICAgZml4ZXIucmVwbGFjZVRleHQobmV3RXhwci5jYWxsZWUsICdWYWxpZGF0aW9uRXJyb3InKSxcbiAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gbmV3RXhwci5hcmd1bWVudHMuYXQoLTEpPy5yYW5nZTtcbiAgICAgICAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgICBmaXhlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgZml4ZXIuaW5zZXJ0VGV4dEFmdGVyUmFuZ2UobGFzdCwgJywgdGhpcycpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gZml4ZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgLy8gQWRkcyBUb29sa2l0RXJyb3IgYW5kIEF1dGhlbnRpY2F0aW9uRXJyb3Igc3VnZ2VzdGlvbnMgZm9yIENMSSBmaWxlcy5cbiAgICAgICAgaWYgKGlzQ2xpRmlsZSkge1xuICAgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRlc2M6ICdSZXBsYWNlIHdpdGggYFRvb2xraXRFcnJvcmAnLFxuICAgICAgICAgICAgICBmaXg6IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBubyBleGlzdGluZyBhcmdzXG4gICAgICAgICAgICAgICAgaWYgKG5ld0V4cHIuYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpeGVyLnJlcGxhY2VUZXh0KG5ld0V4cHIsIFwibmV3IFRvb2xraXRFcnJvcignPGluc2VydCBlcnJvciBtZXNzYWdlPicpXCIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpeGVzID0gW1xuICAgICAgICAgICAgICAgICAgZml4ZXIucmVwbGFjZVRleHQobmV3RXhwci5jYWxsZWUsICdUb29sa2l0RXJyb3InKSxcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IG5ld0V4cHIuYXJndW1lbnRzLmF0KC0xKT8ucmFuZ2U7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgIGZpeGVzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGZpeGVyLmluc2VydFRleHRBZnRlclJhbmdlKGxhc3QsICcsIHRoaXMnKSxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpeGVzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGVzYzogJ1JlcGxhY2Ugd2l0aCBgQXV0aGVudGljYXRpb25FcnJvcmAnLFxuICAgICAgICAgICAgICBmaXg6IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBubyBleGlzdGluZyBhcmdzXG4gICAgICAgICAgICAgICAgaWYgKG5ld0V4cHIuYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpeGVyLnJlcGxhY2VUZXh0KG5ld0V4cHIsIFwibmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoJzxpbnNlcnQgZXJyb3IgbWVzc2FnZT4nKVwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXhlcyA9IFtcbiAgICAgICAgICAgICAgICAgIGZpeGVyLnJlcGxhY2VUZXh0KG5ld0V4cHIuY2FsbGVlLCAnQXV0aGVudGljYXRpb25FcnJvcicpLFxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gbmV3RXhwci5hcmd1bWVudHMuYXQoLTEpPy5yYW5nZTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgICAgICAgICAgZml4ZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgZml4ZXIuaW5zZXJ0VGV4dEFmdGVyUmFuZ2UobGFzdCwgJywgdGhpcycpLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZml4ZXM7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZTogbmV3RXhwcixcbiAgICAgICAgICBtZXNzYWdlOiAnRXhwZWN0ZWQgYSBub24tZGVmYXVsdCBlcnJvciBvYmplY3QgdG8gYmUgdGhyb3duLicsXG4gICAgICAgICAgc3VnZ2VzdDogc3VnZ2VzdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"commit-and-tag-version": "^12",
|
|
47
47
|
"constructs": "^10.0.0",
|
|
48
48
|
"eslint": "^8",
|
|
49
|
-
"eslint-import-resolver-typescript": "^3.
|
|
49
|
+
"eslint-import-resolver-typescript": "^3.7.0",
|
|
50
50
|
"eslint-plugin-import": "^2.31.0",
|
|
51
51
|
"jest": "^29.7.0",
|
|
52
52
|
"jest-junit": "^15",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"publishConfig": {
|
|
71
71
|
"access": "public"
|
|
72
72
|
},
|
|
73
|
-
"version": "1.
|
|
73
|
+
"version": "1.3.0",
|
|
74
74
|
"jest": {
|
|
75
75
|
"coverageProvider": "v8",
|
|
76
76
|
"testMatch": [
|