@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.
@@ -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
+ }
@@ -0,0 +1,11 @@
1
+ class Foo {
2
+ static prop = 'abc';
3
+
4
+ static bar() {
5
+ }
6
+
7
+ static baz() {
8
+ Foo.bar();
9
+ return Foo.prop;
10
+ }
11
+ }
@@ -0,0 +1,6 @@
1
+ class A {
2
+ x: string;
3
+ constructor(x: string) {
4
+ this.x = x;
5
+ }
6
+ }
@@ -0,0 +1,4 @@
1
+ class A {
2
+ private x = 'foo';
3
+ foo() { return this.x; }
4
+ }
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
@@ -9,4 +9,5 @@ export declare const rules: {
9
9
  'no-invalid-path': any;
10
10
  'no-throw-default-error': any;
11
11
  'promiseall-no-unbounded-parallelism': any;
12
+ 'no-this-in-static': any;
12
13
  };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBEQUEwRDs7O0FBRTdDLFFBQUEsSUFBSSxHQUFHO0lBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJO0lBQ3JDLE9BQU8sRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPO0NBQzVDLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBRztJQUNuQixtQkFBbUIsRUFBRSxPQUFPLENBQUMsMkJBQTJCLENBQUM7SUFDekQscUJBQXFCLEVBQUUsT0FBTyxDQUFDLDZCQUE2QixDQUFDO0lBQzdELHNCQUFzQixFQUFFLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztJQUMvRCxpQkFBaUIsRUFBRSxPQUFPLENBQUMseUJBQXlCLENBQUM7SUFDckQsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO0lBQ25FLHFDQUFxQyxFQUFFLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQztDQUM5RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG5leHBvcnQgY29uc3QgbWV0YSA9IHtcbiAgbmFtZTogcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykubmFtZSxcbiAgdmVyc2lvbjogcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbixcbn07XG5cbmV4cG9ydCBjb25zdCBydWxlcyA9IHtcbiAgJ25vLWNvcmUtY29uc3RydWN0JzogcmVxdWlyZSgnLi9ydWxlcy9uby1jb3JlLWNvbnN0cnVjdCcpLFxuICAnaW52YWxpZC1jZm4taW1wb3J0cyc6IHJlcXVpcmUoJy4vcnVsZXMvaW52YWxpZC1jZm4taW1wb3J0cycpLFxuICAnbm8tbGl0ZXJhbC1wYXJ0aXRpb24nOiByZXF1aXJlKCcuL3J1bGVzL25vLWxpdGVyYWwtcGFydGl0aW9uJyksXG4gICduby1pbnZhbGlkLXBhdGgnOiByZXF1aXJlKCcuL3J1bGVzL25vLWludmFsaWQtcGF0aCcpLFxuICAnbm8tdGhyb3ctZGVmYXVsdC1lcnJvcic6IHJlcXVpcmUoJy4vcnVsZXMvbm8tdGhyb3ctZGVmYXVsdC1lcnJvcicpLFxuICAncHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc20nOiByZXF1aXJlKCcuL3J1bGVzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtJyksXG59O1xuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdGhyb3ctZGVmYXVsdC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby10aHJvdy1kZWZhdWx0LWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLHdCQTRDQztBQWhEWSxRQUFBLElBQUksR0FBRztJQUNsQixjQUFjLEVBQUUsSUFBSTtDQUNyQixDQUFDO0FBRUYsU0FBZ0IsTUFBTSxDQUFDLE9BQXlCO0lBQzlDLE9BQU87UUFDTCxjQUFjLENBQUMsSUFBb0I7WUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQztnQkFDM0MsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBeUIsQ0FBQztZQUMvQyxJQUNFLE9BQU8sQ0FBQyxNQUFNO2dCQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7Z0JBQ3BDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFDL0IsQ0FBQztnQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUNiLElBQUksRUFBRSxPQUFPO29CQUNiLE9BQU8sRUFBRSxtREFBbUQ7b0JBQzVELE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsZ0NBQWdDOzRCQUN0QyxHQUFHLEVBQUUsQ0FBQyxLQUFxQixFQUFFLEVBQUU7O2dDQUM3QixtQkFBbUI7Z0NBQ25CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0NBQ25DLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUscURBQXFELENBQUMsQ0FBQztnQ0FDM0YsQ0FBQztnQ0FFRCxNQUFNLEtBQUssR0FBRztvQ0FDWixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUM7aUNBQ3JELENBQUM7Z0NBRUYsTUFBTSxJQUFJLEdBQUcsTUFBQSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUM7Z0NBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7b0NBQ1QsS0FBSyxDQUFDLElBQUksQ0FDUixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUMzQyxDQUFDO2dDQUNKLENBQUM7Z0NBRUQsT0FBTyxLQUFLLENBQUM7NEJBQ2YsQ0FBQzt5QkFDRjtxQkFDRjtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IE5ld0V4cHJlc3Npb24sIFRocm93U3RhdGVtZW50IH0gZnJvbSAnZXN0cmVlJztcblxuZXhwb3J0IGNvbnN0IG1ldGEgPSB7XG4gIGhhc1N1Z2dlc3Rpb25zOiB0cnVlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5Ob2RlTGlzdGVuZXIge1xuICByZXR1cm4ge1xuICAgIFRocm93U3RhdGVtZW50KG5vZGU6IFRocm93U3RhdGVtZW50KSB7XG4gICAgICBpZiAobm9kZS5hcmd1bWVudC50eXBlICE9PSAnTmV3RXhwcmVzc2lvbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdFeHByID0gbm9kZS5hcmd1bWVudCBhcyBOZXdFeHByZXNzaW9uO1xuICAgICAgaWYgKFxuICAgICAgICBuZXdFeHByLmNhbGxlZSAmJlxuICAgICAgICBuZXdFeHByLmNhbGxlZS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICAgICAgbmV3RXhwci5jYWxsZWUubmFtZSA9PT0gJ0Vycm9yJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBub2RlOiBuZXdFeHByLFxuICAgICAgICAgIG1lc3NhZ2U6ICdFeHBlY3RlZCBhIG5vbi1kZWZhdWx0IGVycm9yIG9iamVjdCB0byBiZSB0aHJvd24uJyxcbiAgICAgICAgICBzdWdnZXN0OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRlc2M6ICdSZXBsYWNlIHdpdGggYFZhbGlkYXRpb25FcnJvcmAnLFxuICAgICAgICAgICAgICBmaXg6IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBubyBleGlzdGluZyBhcmdzXG4gICAgICAgICAgICAgICAgaWYgKG5ld0V4cHIuYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpeGVyLnJlcGxhY2VUZXh0KG5ld0V4cHIsIFwibmV3IFZhbGlkYXRpb25FcnJvcignPGluc2VydCBlcnJvciBtZXNzYWdlPicsIHRoaXMpXCIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpeGVzID0gW1xuICAgICAgICAgICAgICAgICAgZml4ZXIucmVwbGFjZVRleHQobmV3RXhwci5jYWxsZWUsICdWYWxpZGF0aW9uRXJyb3InKSxcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IG5ld0V4cHIuYXJndW1lbnRzLmF0KC0xKT8ucmFuZ2U7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgIGZpeGVzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGZpeGVyLmluc2VydFRleHRBZnRlclJhbmdlKGxhc3QsICcsIHRoaXMnKSxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpeGVzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl19
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.6.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.1.0",
73
+ "version": "1.3.0",
74
74
  "jest": {
75
75
  "coverageProvider": "v8",
76
76
  "testMatch": [