@cdklabs/eslint-plugin 1.1.0 → 1.2.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
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.2.0",
74
74
  "jest": {
75
75
  "coverageProvider": "v8",
76
76
  "testMatch": [