awslint 2.54.0 → 2.55.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/lib/rules/resource.js +21 -16
- package/lib/rules/resource.ts +3 -0
- package/package.json +5 -5
package/lib/rules/resource.js
CHANGED
|
@@ -151,22 +151,27 @@ exports.resourceLinter.add({
|
|
|
151
151
|
e.assert(resourceInterface.extends(interfaceBase), resourceInterface.fqn);
|
|
152
152
|
},
|
|
153
153
|
});
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
154
|
+
/*
|
|
155
|
+
// This rule is the worst
|
|
156
|
+
resourceLinter.add({
|
|
157
|
+
code: 'resource-attribute',
|
|
158
|
+
warning: true,
|
|
159
|
+
message:
|
|
160
|
+
'resources must represent all cloudformation attributes as attribute properties. ' +
|
|
161
|
+
'"@attribute ATTR[,ATTR]" can be used to tag non-standard attribute names. ' +
|
|
162
|
+
'missing property:',
|
|
163
|
+
eval: e => {
|
|
164
|
+
for (const name of e.ctx.cfn.attributeNames) {
|
|
165
|
+
const expected = camelcase(name).startsWith(camelcase(e.ctx.cfn.basename))
|
|
166
|
+
? camelcase(name)
|
|
167
|
+
: camelcase(e.ctx.cfn.basename + name);
|
|
168
|
+
|
|
169
|
+
const found = e.ctx.attributes.find(a => a.cfnAttributeNames.includes(name));
|
|
170
|
+
e.assert(found, `${e.ctx.fqn}.${expected}`, expected);
|
|
171
|
+
}
|
|
172
|
+
},
|
|
169
173
|
});
|
|
174
|
+
*/
|
|
170
175
|
exports.resourceLinter.add({
|
|
171
176
|
code: 'grant-result',
|
|
172
177
|
message: `"grant" method must return ${GRANT_RESULT_FQN}`,
|
|
@@ -242,4 +247,4 @@ function guessResourceName(fqn) {
|
|
|
242
247
|
}
|
|
243
248
|
return `${org}::${ns}::${rs}`;
|
|
244
249
|
}
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBdUM7QUFFdkMsc0NBQW1DO0FBQ25DLGlEQUF1RDtBQUN2RCwyQ0FBa0Q7QUFDbEQsNkNBQXlDO0FBQ3pDLGlDQUFtQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFRN0UsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBR3hCO0FBRUQsTUFBYSxrQkFBa0I7SUEwQjdCLFlBQTRCLFNBQThCO1FBQTlCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVoQyxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLFNBQVMsQ0FBQyxHQUFHLElBQUk7Z0JBQzlELE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUM7Z0JBQzlFLG9IQUFvSCxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFD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QUFHLENBQUMsQ0FBQztLQUNuRDtJQUVELGlGQUFpRjtJQUNqRixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLEdBQUcsR0FBRyxvQ0FBcUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksR0FBRyxFQUFFO1lBQ1AsT0FBTyxHQUFHLENBQUM7U0FDWjtLQUNGO0lBRUQsbUNBQW1DO0lBQ25DLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxDQUFDLFlBQVksRUFBRSxFQUFFO1FBQy9DLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksR0FBRyxFQUFFO1lBQ1AsT0FBTyxHQUFHLENBQUM7U0FDWjtLQUNGO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEdBQVc7SUFDcEMsTUFBTSxLQUFLLEdBQUcscURBQXFELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlFLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBRWpDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBRTdDLE9BQU8sR0FBRyxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjYW1lbGNhc2UgZnJvbSAnY2FtZWxjYXNlJztcbmltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5pbXBvcnQgeyBDZm5SZXNvdXJjZVJlZmxlY3Rpb24gfSBmcm9tICcuL2Nmbi1yZXNvdXJjZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RSZWZsZWN0aW9uIH0gZnJvbSAnLi9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgQ29yZVR5cGVzIH0gZnJvbSAnLi9jb3JlLXR5cGVzJztcbmltcG9ydCB7IGdldERvY1RhZyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IEdSQU5UX1JFU1VMVF9GUU4gPSAnQGF3cy1jZGsvYXdzLWlhbS5HcmFudCc7XG5cbmV4cG9ydCBjb25zdCByZXNvdXJjZUxpbnRlciA9IG5ldyBMaW50ZXIoYSA9PiBSZXNvdXJjZVJlZmxlY3Rpb24uZmluZEFsbChhKSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlIHtcbiAgc2l0ZTogQXR0cmlidXRlU2l0ZTtcbiAgcHJvcGVydHk6IHJlZmxlY3QuUHJvcGVydHk7XG4gIGNmbkF0dHJpYnV0ZU5hbWVzOiBzdHJpbmdbXTsgLy8gYnVja2V0QXJuXG59XG5cbmV4cG9ydCBlbnVtIEF0dHJpYnV0ZVNpdGUge1xuICBJbnRlcmZhY2UgPSAnaW50ZXJmYWNlJyxcbiAgQ2xhc3MgPSAnY2xhc3MnXG59XG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVJlZmxlY3Rpb24ge1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhbGwgcmVzb3VyY2UgY29uc3RydWN0cyAoZXZlcnl0aGluZyB0aGF0IGV4dGVuZHMgYGNkay5SZXNvdXJjZWApXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbmRBbGwoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHkpIHtcbiAgICBpZiAoQ29yZVR5cGVzLmhhc0NvcmVNb2R1bGUoYXNzZW1ibHkpKSB7XG4gICAgICByZXR1cm4gW107IC8vIG5vdCBwYXJ0IG9mIHRoZSBkZXAgc3RhY2tcbiAgICB9XG5cbiAgICByZXR1cm4gQ29uc3RydWN0UmVmbGVjdGlvblxuICAgICAgLmZpbmRBbGxDb25zdHJ1Y3RzKGFzc2VtYmx5KVxuICAgICAgLmZpbHRlcihjID0+IENvcmVUeXBlcy5pc1Jlc291cmNlQ2xhc3MoYy5jbGFzc1R5cGUpKVxuICAgICAgLm1hcChjID0+IG5ldyBSZXNvdXJjZVJlZmxlY3Rpb24oYykpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdOyAvLyBhY3R1YWwgYXR0cmlidXRlIHByb3BzXG4gIHB1YmxpYyByZWFkb25seSBmcW46IHN0cmluZzsgLy8gZXhwZWN0ZWQgZnFuIG9mIHJlc291cmNlIGNsYXNzXG5cbiAgcHVibGljIHJlYWRvbmx5IGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5O1xuICBwdWJsaWMgcmVhZG9ubHkgc3lzOiByZWZsZWN0LlR5cGVTeXN0ZW07XG4gIHB1YmxpYyByZWFkb25seSBjZm46IENmblJlc291cmNlUmVmbGVjdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IGJhc2VuYW1lOiBzdHJpbmc7IC8vIGkuZS4gQnVja2V0XG4gIHB1YmxpYyByZWFkb25seSBjb3JlOiBDb3JlVHlwZXM7XG4gIHB1YmxpYyByZWFkb25seSBwaHlzaWNhbE5hbWVQcm9wPzogcmVmbGVjdC5Qcm9wZXJ0eTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY29uc3RydWN0OiBDb25zdHJ1Y3RSZWZsZWN0aW9uKSB7XG4gICAgdGhpcy5hc3NlbWJseSA9IGNvbnN0cnVjdC5jbGFzc1R5cGUuYXNzZW1ibHk7XG4gICAgdGhpcy5zeXMgPSB0aGlzLmFzc2VtYmx5LnN5c3RlbTtcblxuICAgIGNvbnN0IGNmbiA9IHRyeVJlc29sdmVDZm5SZXNvdXJjZShjb25zdHJ1Y3QuY2xhc3NUeXBlKTtcbiAgICBpZiAoIWNmbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBMMSBjbGFzcyBmb3IgTDIgJHtjb25zdHJ1Y3QuZnFufS4gYCArXG4gICAgICAgIGBJcyBcIiR7Z3Vlc3NSZXNvdXJjZU5hbWUoY29uc3RydWN0LmZxbil9XCIgYW4gYWN0dWFsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLiBgICtcbiAgICAgICAgJ0lmIG5vdCwgdXNlIHRoZSBcIkByZXNvdXJjZVwiIGRvYyB0YWcgdG8gaW5kaWNhdGUgdGhlIGZ1bGwgcmVzb3VyY2UgbmFtZSAoZS5nLiBcIkByZXNvdXJjZSBBV1M6OlJvdXRlNTM6Okhvc3RlZFpvbmVcIiknKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvcmUgPSBuZXcgQ29yZVR5cGVzKHRoaXMuc3lzKTtcbiAgICB0aGlzLmNmbiA9IGNmbjtcbiAgICB0aGlzLmJhc2VuYW1lID0gY29uc3RydWN0LmNsYXNzVHlwZS5uYW1lO1xuICAgIHRoaXMuZnFuID0gY29uc3RydWN0LmZxbjtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSB0aGlzLmZpbmRBdHRyaWJ1dGVQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5waHlzaWNhbE5hbWVQcm9wID0gdGhpcy5maW5kUGh5c2ljYWxOYW1lUHJvcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGh5c2ljYWxOYW1lUHJvcCgpIHtcbiAgICBpZiAoIXRoaXMuY29uc3RydWN0LnByb3BzVHlwZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBjYW1lbGNhc2UodGhpcy5jZm4uYmFzZW5hbWUpO1xuXG4gICAgLy8gaWYgcmVzb3VyY2UgbmFtZSBlbmRzIHdpdGggXCJOYW1lXCIgKGUuZy4gRG9tYWluTmFtZSwgdGhlbiBqdXN0IHVzZSBpdCBhcy1pcywgb3RoZXJ3aXNlIGFwcGVuZCBcIk5hbWVcIilcbiAgICBjb25zdCBwaHlzaWNhbE5hbWVQcm9wID0gcmVzb3VyY2VOYW1lLmVuZHNXaXRoKCdOYW1lJykgPyByZXNvdXJjZU5hbWUgOiBgJHtyZXNvdXJjZU5hbWV9TmFtZWA7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0LnByb3BzVHlwZS5hbGxQcm9wZXJ0aWVzLmZpbmQoeCA9PiB4Lm5hbWUgPT09IHBoeXNpY2FsTmFtZVByb3ApO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBwcm9wZXJ0aWVzIGFyZSBhbGwgdGhlIHByb3BlcnRpZXMgdGhhdCBiZWdpbiB3aXRoIHRoZSB0eXBlIG5hbWUgKGUuZy4gYnVja2V0WHh4KS5cbiAgICovXG4gIHByaXZhdGUgZmluZEF0dHJpYnV0ZVByb3BlcnRpZXMoKTogQXR0cmlidXRlW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxBdHRyaWJ1dGU+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5jb25zdHJ1Y3QuY2xhc3NUeXBlLmFsbFByb3BlcnRpZXMpIHtcbiAgICAgIGlmIChwLnByb3RlY3RlZCkge1xuICAgICAgICBjb250aW51ZTsgLy8gc2tpcCBhbnkgcHJvdGVjdGVkIHByb3BlcnRpZXNcbiAgICAgIH1cblxuICAgICAgY29uc3QgYmFzZW5hbWUgPSBjYW1lbGNhc2UodGhpcy5jZm4uYmFzZW5hbWUpO1xuXG4gICAgICAvLyBhbiBhdHRyaWJ1dGUgcHJvcGVydHkgaXMgYSBwcm9wZXJ0eSB3aGljaCBzdGFydHMgd2l0aCB0aGUgdHlwZSBuYW1lXG4gICAgICAvLyAoZS5nLiBcImJ1Y2tldFh4eFwiKSBhbmQvb3IgaGFzIGFuIEBhdHRyaWJ1dGUgZG9jIHRhZy5cbiAgICAgIGNvbnN0IHRhZyA9IGdldERvY1RhZyhwLCAnYXR0cmlidXRlJyk7XG4gICAgICBpZiAoIXAubmFtZS5zdGFydHNXaXRoKGJhc2VuYW1lKSAmJiAhdGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2ZuQXR0cmlidXRlTmFtZXM7XG4gICAgICBpZiAodGFnICYmIHRhZyAhPT0gJ3RydWUnKSB7XG4gICAgICAgIC8vIGlmIHRoZXJlJ3MgYW4gYEBhdHRyaWJ1dGVgIGRvYyB0YWcgd2l0aCBhIHZhbHVlIG90aGVyIHRoYW4gXCJ0cnVlXCJcbiAgICAgICAgLy8gaXQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIENGTiBhdHRyaWJ1dGUgbmFtZSBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0eSBuYW1lXG4gICAgICAgIC8vIG11bHRpcGxlIGF0dHJpYnV0ZSBuYW1lcyBjYW4gYmUgbGlzdGVkIGFzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3RcbiAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMgPSB0YWcuc3BsaXQoJywnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG9rYXksIHdlIGRvbid0IGhhdmUgYW4gZXhwbGljaXQgQ0ZOIGF0dHJpYnV0ZSBuYW1lLCBzbyB3ZSdsbCBndWVzcyBpdFxuICAgICAgICAvLyBmcm9tIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cblxuICAgICAgICBjb25zdCBuYW1lID0gY2FtZWxjYXNlKHAubmFtZSwgeyBwYXNjYWxDYXNlOiB0cnVlIH0pO1xuICAgICAgICBpZiAodGhpcy5jZm4uYXR0cmlidXRlTmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IHRoZXJlIGlzIGEgY2xvdWRmb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBpbiB0aGUgYXR0cmlidXRlIG5hbWVcbiAgICAgICAgICAvLyBmb3IgZXhhbXBsZSAnUm9sZUlkJy5cbiAgICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyA9IFtuYW1lXTtcbiAgICAgICAgfSBlbHNlIGlmIChwLm5hbWUuc3RhcnRzV2l0aChiYXNlbmFtZSkpIHtcbiAgICAgICAgICAvLyBiZWdpbnMgd2l0aCB0aGUgcmVzb3VyY2UgbmFtZSwganVzdCB0cmltIGl0XG4gICAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMgPSBbbmFtZS5zdWJzdHJpbmcodGhpcy5jZm4uYmFzZW5hbWUubGVuZ3RoKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gd2UgY291bGRuJ3QgZGV0ZXJtaW5lIENGTiBhdHRyaWJ1dGUgbmFtZSwgc28gd2UgZG9uJ3QgYWNjb3VudCBmb3IgdGhpc1xuICAgICAgICAgIC8vIGFzIGFuIGF0dHJpYnV0ZS4gdGhpcyBjb3VsZCBiZSwgZm9yIGV4YW1wbGUsIHdoZW4gYSBjb25zdHJ1Y3QgaW1wbGVtZW50c1xuICAgICAgICAgIC8vIGFuIGludGVyZmFjZSB0aGF0IHJlcHJlc2VudHMgYW5vdGhlciByZXNvdXJjZSAoZS5nLiBgbGFtYmRhLkFsaWFzYCBpbXBsZW1lbnRzIGBJRnVuY3Rpb25gKS5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBjaGVjayBpZiB0aGlzIGF0dHJpYnV0ZSBpcyBkZWZpbmVkIG9uIGFuIGludGVyZmFjZSBvciBvbiBhIGNsYXNzXG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGZpbmREZWNsYXJhdGlvblNpdGUocCk7XG4gICAgICBjb25zdCBzaXRlID0gcHJvcGVydHkucGFyZW50VHlwZS5pc0ludGVyZmFjZVR5cGUoKSA/IEF0dHJpYnV0ZVNpdGUuSW50ZXJmYWNlIDogQXR0cmlidXRlU2l0ZS5DbGFzcztcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBzaXRlLFxuICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyxcbiAgICAgICAgcHJvcGVydHksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmREZWNsYXJhdGlvblNpdGUocHJvcDogcmVmbGVjdC5Qcm9wZXJ0eSk6IHJlZmxlY3QuUHJvcGVydHkge1xuICBpZiAoIXByb3Aub3ZlcnJpZGVzIHx8ICghcHJvcC5vdmVycmlkZXMuaXNDbGFzc1R5cGUoKSAmJiAhcHJvcC5vdmVycmlkZXMuaXNJbnRlcmZhY2VUeXBlKCkpKSB7XG4gICAgaWYgKCFwcm9wLnBhcmVudFR5cGUuaXNDbGFzc1R5cGUoKSAmJiAhcHJvcC5wYXJlbnRUeXBlLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcGFyZW50IHR5cGUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3A7XG4gIH1cblxuICBjb25zdCBvdmVycmlkZXNQcm9wID0gcHJvcC5vdmVycmlkZXMuYWxsUHJvcGVydGllcy5maW5kKHAgPT4gcC5uYW1lID09PSBwcm9wLm5hbWUpO1xuICBpZiAoIW92ZXJyaWRlc1Byb3ApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHByb3BlcnR5ICR7cHJvcC5uYW1lfSBpbiBvdmVycmlkZSBzaXRlICR7cHJvcC5vdmVycmlkZXMuZnFufWApO1xuICB9XG4gIHJldHVybiBmaW5kRGVjbGFyYXRpb25TaXRlKG92ZXJyaWRlc1Byb3ApO1xufVxuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtY2xhc3MtZXh0ZW5kcy1yZXNvdXJjZScsXG4gIG1lc3NhZ2U6ICdyZXNvdXJjZSBjbGFzc2VzIG11c3QgZXh0ZW5kIFwiY2RrLlJlc291cmNlXCIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlQmFzZSA9IGUuY3R4LnN5cy5maW5kQ2xhc3MoZS5jdHguY29yZS5yZXNvdXJjZUNsYXNzLmZxbik7XG4gICAgZS5hc3NlcnQoZS5jdHguY29uc3RydWN0LmNsYXNzVHlwZS5leHRlbmRzKHJlc291cmNlQmFzZSksIGUuY3R4LmNvbnN0cnVjdC5mcW4pO1xuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1pbnRlcmZhY2UnLFxuICB3YXJuaW5nOiB0cnVlLFxuICBtZXNzYWdlOiAnZXZlcnkgcmVzb3VyY2UgbXVzdCBoYXZlIGEgcmVzb3VyY2UgaW50ZXJmYWNlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgZS5hc3NlcnQoZS5jdHguY29uc3RydWN0LmludGVyZmFjZVR5cGUsIGUuY3R4LmNvbnN0cnVjdC5mcW4pO1xuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1pbnRlcmZhY2UtZXh0ZW5kcy1yZXNvdXJjZScsXG4gIG1lc3NhZ2U6ICdjb25zdHJ1Y3QgaW50ZXJmYWNlcyBvZiBBV1MgcmVzb3VyY2VzIG11c3QgZXh0ZW5kIGNkay5JUmVzb3VyY2UnLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCByZXNvdXJjZUludGVyZmFjZSA9IGUuY3R4LmNvbnN0cnVjdC5pbnRlcmZhY2VUeXBlO1xuICAgIGlmICghcmVzb3VyY2VJbnRlcmZhY2UpIHsgcmV0dXJuOyB9XG5cbiAgICBjb25zdCByZXNvdXJjZUludGVyZmFjZUZxbiA9IGUuY3R4LmNvcmUucmVzb3VyY2VJbnRlcmZhY2UuZnFuO1xuICAgIGNvbnN0IGludGVyZmFjZUJhc2UgPSBlLmN0eC5zeXMuZmluZEludGVyZmFjZShyZXNvdXJjZUludGVyZmFjZUZxbik7XG4gICAgZS5hc3NlcnQocmVzb3VyY2VJbnRlcmZhY2UuZXh0ZW5kcyhpbnRlcmZhY2VCYXNlKSwgcmVzb3VyY2VJbnRlcmZhY2UuZnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtYXR0cmlidXRlJyxcbiAgd2FybmluZzogdHJ1ZSxcbiAgbWVzc2FnZTpcbiAgICAncmVzb3VyY2VzIG11c3QgcmVwcmVzZW50IGFsbCBjbG91ZGZvcm1hdGlvbiBhdHRyaWJ1dGVzIGFzIGF0dHJpYnV0ZSBwcm9wZXJ0aWVzLiAnICtcbiAgICAnXCJAYXR0cmlidXRlIEFUVFJbLEFUVFJdXCIgY2FuIGJlIHVzZWQgdG8gdGFnIG5vbi1zdGFuZGFyZCBhdHRyaWJ1dGUgbmFtZXMuICcgK1xuICAgICdtaXNzaW5nIHByb3BlcnR5OicsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlLmN0eC5jZm4uYXR0cmlidXRlTmFtZXMpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gY2FtZWxjYXNlKG5hbWUpLnN0YXJ0c1dpdGgoY2FtZWxjYXNlKGUuY3R4LmNmbi5iYXNlbmFtZSkpXG4gICAgICAgID8gY2FtZWxjYXNlKG5hbWUpXG4gICAgICAgIDogY2FtZWxjYXNlKGUuY3R4LmNmbi5iYXNlbmFtZSArIG5hbWUpO1xuXG4gICAgICBjb25zdCBmb3VuZCA9IGUuY3R4LmF0dHJpYnV0ZXMuZmluZChhID0+IGEuY2ZuQXR0cmlidXRlTmFtZXMuaW5jbHVkZXMobmFtZSkpO1xuICAgICAgZS5hc3NlcnQoZm91bmQsIGAke2UuY3R4LmZxbn0uJHtleHBlY3RlZH1gLCBleHBlY3RlZCk7XG4gICAgfVxuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdncmFudC1yZXN1bHQnLFxuICBtZXNzYWdlOiBgXCJncmFudFwiIG1ldGhvZCBtdXN0IHJldHVybiAke0dSQU5UX1JFU1VMVF9GUU59YCxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgZ3JhbnRSZXN1bHRUeXBlID0gZS5jdHguc3lzLnRyeUZpbmRGcW4oR1JBTlRfUkVTVUxUX0ZRTik7XG5cbiAgICAvLyB0aGlzIGltcGxpZXMgdGhhdCB3ZSBhcmUgYXQgYSBsb3dlciBsYXllciAoaS5lLiBAYXdzLWNkay9jb3JlKVxuICAgIGlmICghZ3JhbnRSZXN1bHRUeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ3JhbnRNZXRob2RzID0gZS5jdHguY29uc3RydWN0LmNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbHRlcihtID0+IG0ubmFtZS5zdGFydHNXaXRoKCdncmFudCcpKTtcblxuICAgIGZvciAoY29uc3QgZ3JhbnRNZXRob2Qgb2YgZ3JhbnRNZXRob2RzKSB7XG4gICAgICBlLmFzc2VydFNpZ25hdHVyZShncmFudE1ldGhvZCwge1xuICAgICAgICByZXR1cm5zOiBncmFudFJlc3VsdFR5cGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXBoeXNpY2FsLW5hbWUnLFxuICBtZXNzYWdlOiAnRXZlcnkgUmVzb3VyY2UgbXVzdCBoYXZlIGEgc2luZ2xlIHBoeXNpY2FsIG5hbWUgY29uc3RydWN0aW9uIHByb3BlcnR5LCAnICtcbiAgICAnd2l0aCBhIG5hbWUgdGhhdCBpcyBhbiBlbmRpbmcgc3Vic3RyaW5nIG9mIDxjZm5SZXNvdXJjZT5OYW1lJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5jb25zdHJ1Y3QucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGUuYXNzZXJ0KGUuY3R4LnBoeXNpY2FsTmFtZVByb3AsIGUuY3R4LmNvbnN0cnVjdC5wcm9wc0Zxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXBoeXNpY2FsLW5hbWUtdHlwZScsXG4gIG1lc3NhZ2U6ICdUaGUgdHlwZSBvZiB0aGUgcGh5c2ljYWwgbmFtZSBwcm9wIHNob3VsZCBhbHdheXMgYmUgYSBcInN0cmluZ1wiJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5waHlzaWNhbE5hbWVQcm9wKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb3AgPSBlLmN0eC5waHlzaWNhbE5hbWVQcm9wO1xuICAgIGUuYXNzZXJ0VHlwZXNFcXVhbChlLmN0eC5zeXMsIHByb3AudHlwZSwgJ3N0cmluZycsIGAke2UuY3R4LmNvbnN0cnVjdC5wcm9wc0Zxbn0uJHtwcm9wLm5hbWV9YCk7XG4gIH0sXG59KTtcblxuZnVuY3Rpb24gdHJ5UmVzb2x2ZUNmblJlc291cmNlKHJlc291cmNlQ2xhc3M6IHJlZmxlY3QuQ2xhc3NUeXBlKTogQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3lzID0gcmVzb3VyY2VDbGFzcy5zeXN0ZW07XG5cbiAgLy8gaWYgdGhlcmUgaXMgYSBAcmVzb3VyY2UgZG9jIHRhZywgaXQgdGFrZXMgcHJlY2VkZWNlXG4gIGNvbnN0IHRhZyA9IHJlc291cmNlQ2xhc3MuZG9jcy5jdXN0b21UYWcoJ3Jlc291cmNlJyk7XG4gIGlmICh0YWcpIHtcbiAgICByZXR1cm4gQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRCeU5hbWUoc3lzLCB0YWcpO1xuICB9XG5cbiAgLy8gcGFyc2UgdGhlIEZRTiBvZiB0aGUgY2xhc3MgbmFtZSBhbmQgc2VlIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgQ0ZOIHJlc291cmNlXG4gIGNvbnN0IGd1ZXNzID0gZ3Vlc3NSZXNvdXJjZU5hbWUocmVzb3VyY2VDbGFzcy5mcW4pO1xuICBpZiAoZ3Vlc3MpIHtcbiAgICBjb25zdCBjZm4gPSBDZm5SZXNvdXJjZVJlZmxlY3Rpb24uZmluZEJ5TmFtZShzeXMsIGd1ZXNzKTtcbiAgICBpZiAoY2ZuKSB7XG4gICAgICByZXR1cm4gY2ZuO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRyeSB0byByZXNvbHZlIHRocm91Z2ggYW5jZXN0b3JzXG4gIGZvciAoY29uc3QgYmFzZSBvZiByZXNvdXJjZUNsYXNzLmdldEFuY2VzdG9ycygpKSB7XG4gICAgY29uc3QgcmV0ID0gdHJ5UmVzb2x2ZUNmblJlc291cmNlKGJhc2UpO1xuICAgIGlmIChyZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9XG5cbiAgLy8gZmFpbGVkIG1pc3JhYmx5XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGd1ZXNzUmVzb3VyY2VOYW1lKGZxbjogc3RyaW5nKSB7XG4gIGNvbnN0IG1hdGNoID0gL0Bhd3MtY2RrXFwvKFthLXpdKyktKFthLXowLTldKylcXC4oW0EtWl1bYS16QS1aMC05XSspLy5leGVjKGZxbik7XG4gIGlmICghbWF0Y2gpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuXG4gIGNvbnN0IFssIG9yZywgbnMsIHJzXSA9IG1hdGNoO1xuICBpZiAoIW9yZyB8fCAhbnMgfHwgIXJzKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICByZXR1cm4gYCR7b3JnfTo6JHtuc306OiR7cnN9YDtcbn1cbiJdfQ==
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBdUM7QUFFdkMsc0NBQW1DO0FBQ25DLGlEQUF1RDtBQUN2RCwyQ0FBa0Q7QUFDbEQsNkNBQXlDO0FBQ3pDLGlDQUFtQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFRN0UsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBR3hCO0FBRUQsTUFBYSxrQkFBa0I7SUEwQjdCLFlBQTRCLFNBQThCO1FBQTlCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVoQyxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLFNBQVMsQ0FBQyxHQUFHLElBQUk7Z0JBQzlELE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUM7Z0JBQzlFLG9IQUFvSCxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFD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QUFDLEVBQUUsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFFN0MsT0FBTyxHQUFHLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNhbWVsY2FzZSBmcm9tICdjYW1lbGNhc2UnO1xuaW1wb3J0ICogYXMgcmVmbGVjdCBmcm9tICdqc2lpLXJlZmxlY3QnO1xuaW1wb3J0IHsgTGludGVyIH0gZnJvbSAnLi4vbGludGVyJztcbmltcG9ydCB7IENmblJlc291cmNlUmVmbGVjdGlvbiB9IGZyb20gJy4vY2ZuLXJlc291cmNlJztcbmltcG9ydCB7IENvbnN0cnVjdFJlZmxlY3Rpb24gfSBmcm9tICcuL2NvbnN0cnVjdCc7XG5pbXBvcnQgeyBDb3JlVHlwZXMgfSBmcm9tICcuL2NvcmUtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0RG9jVGFnIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgR1JBTlRfUkVTVUxUX0ZRTiA9ICdAYXdzLWNkay9hd3MtaWFtLkdyYW50JztcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlTGludGVyID0gbmV3IExpbnRlcihhID0+IFJlc291cmNlUmVmbGVjdGlvbi5maW5kQWxsKGEpKTtcblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBzaXRlOiBBdHRyaWJ1dGVTaXRlO1xuICBwcm9wZXJ0eTogcmVmbGVjdC5Qcm9wZXJ0eTtcbiAgY2ZuQXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdOyAvLyBidWNrZXRBcm5cbn1cblxuZXhwb3J0IGVudW0gQXR0cmlidXRlU2l0ZSB7XG4gIEludGVyZmFjZSA9ICdpbnRlcmZhY2UnLFxuICBDbGFzcyA9ICdjbGFzcydcbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlUmVmbGVjdGlvbiB7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGFsbCByZXNvdXJjZSBjb25zdHJ1Y3RzIChldmVyeXRoaW5nIHRoYXQgZXh0ZW5kcyBgY2RrLlJlc291cmNlYClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbChhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSkge1xuICAgIGlmIChDb3JlVHlwZXMuaGFzQ29yZU1vZHVsZShhc3NlbWJseSkpIHtcbiAgICAgIHJldHVybiBbXTsgLy8gbm90IHBhcnQgb2YgdGhlIGRlcCBzdGFja1xuICAgIH1cblxuICAgIHJldHVybiBDb25zdHJ1Y3RSZWZsZWN0aW9uXG4gICAgICAuZmluZEFsbENvbnN0cnVjdHMoYXNzZW1ibHkpXG4gICAgICAuZmlsdGVyKGMgPT4gQ29yZVR5cGVzLmlzUmVzb3VyY2VDbGFzcyhjLmNsYXNzVHlwZSkpXG4gICAgICAubWFwKGMgPT4gbmV3IFJlc291cmNlUmVmbGVjdGlvbihjKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlW107IC8vIGFjdHVhbCBhdHRyaWJ1dGUgcHJvcHNcbiAgcHVibGljIHJlYWRvbmx5IGZxbjogc3RyaW5nOyAvLyBleHBlY3RlZCBmcW4gb2YgcmVzb3VyY2UgY2xhc3NcblxuICBwdWJsaWMgcmVhZG9ubHkgYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHk7XG4gIHB1YmxpYyByZWFkb25seSBzeXM6IHJlZmxlY3QuVHlwZVN5c3RlbTtcbiAgcHVibGljIHJlYWRvbmx5IGNmbjogQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZW5hbWU6IHN0cmluZzsgLy8gaS5lLiBCdWNrZXRcbiAgcHVibGljIHJlYWRvbmx5IGNvcmU6IENvcmVUeXBlcztcbiAgcHVibGljIHJlYWRvbmx5IHBoeXNpY2FsTmFtZVByb3A/OiByZWZsZWN0LlByb3BlcnR5O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb25zdHJ1Y3Q6IENvbnN0cnVjdFJlZmxlY3Rpb24pIHtcbiAgICB0aGlzLmFzc2VtYmx5ID0gY29uc3RydWN0LmNsYXNzVHlwZS5hc3NlbWJseTtcbiAgICB0aGlzLnN5cyA9IHRoaXMuYXNzZW1ibHkuc3lzdGVtO1xuXG4gICAgY29uc3QgY2ZuID0gdHJ5UmVzb2x2ZUNmblJlc291cmNlKGNvbnN0cnVjdC5jbGFzc1R5cGUpO1xuICAgIGlmICghY2ZuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIEwxIGNsYXNzIGZvciBMMiAke2NvbnN0cnVjdC5mcW59LiBgICtcbiAgICAgICAgYElzIFwiJHtndWVzc1Jlc291cmNlTmFtZShjb25zdHJ1Y3QuZnFuKX1cIiBhbiBhY3R1YWwgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UuIGAgK1xuICAgICAgICAnSWYgbm90LCB1c2UgdGhlIFwiQHJlc291cmNlXCIgZG9jIHRhZyB0byBpbmRpY2F0ZSB0aGUgZnVsbCByZXNvdXJjZSBuYW1lIChlLmcuIFwiQHJlc291cmNlIEFXUzo6Um91dGU1Mzo6SG9zdGVkWm9uZVwiKScpO1xuICAgIH1cblxuICAgIHRoaXMuY29yZSA9IG5ldyBDb3JlVHlwZXModGhpcy5zeXMpO1xuICAgIHRoaXMuY2ZuID0gY2ZuO1xuICAgIHRoaXMuYmFzZW5hbWUgPSBjb25zdHJ1Y3QuY2xhc3NUeXBlLm5hbWU7XG4gICAgdGhpcy5mcW4gPSBjb25zdHJ1Y3QuZnFuO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHRoaXMuZmluZEF0dHJpYnV0ZVByb3BlcnRpZXMoKTtcbiAgICB0aGlzLnBoeXNpY2FsTmFtZVByb3AgPSB0aGlzLmZpbmRQaHlzaWNhbE5hbWVQcm9wKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQaHlzaWNhbE5hbWVQcm9wKCkge1xuICAgIGlmICghdGhpcy5jb25zdHJ1Y3QucHJvcHNUeXBlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IGNhbWVsY2FzZSh0aGlzLmNmbi5iYXNlbmFtZSk7XG5cbiAgICAvLyBpZiByZXNvdXJjZSBuYW1lIGVuZHMgd2l0aCBcIk5hbWVcIiAoZS5nLiBEb21haW5OYW1lLCB0aGVuIGp1c3QgdXNlIGl0IGFzLWlzLCBvdGhlcndpc2UgYXBwZW5kIFwiTmFtZVwiKVxuICAgIGNvbnN0IHBoeXNpY2FsTmFtZVByb3AgPSByZXNvdXJjZU5hbWUuZW5kc1dpdGgoJ05hbWUnKSA/IHJlc291cmNlTmFtZSA6IGAke3Jlc291cmNlTmFtZX1OYW1lYDtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3QucHJvcHNUeXBlLmFsbFByb3BlcnRpZXMuZmluZCh4ID0+IHgubmFtZSA9PT0gcGh5c2ljYWxOYW1lUHJvcCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0cmlidXRlIHByb3BlcnRpZXMgYXJlIGFsbCB0aGUgcHJvcGVydGllcyB0aGF0IGJlZ2luIHdpdGggdGhlIHR5cGUgbmFtZSAoZS5nLiBidWNrZXRYeHgpLlxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kQXR0cmlidXRlUHJvcGVydGllcygpOiBBdHRyaWJ1dGVbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PEF0dHJpYnV0ZT4oKTtcblxuICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLmNvbnN0cnVjdC5jbGFzc1R5cGUuYWxsUHJvcGVydGllcykge1xuICAgICAgaWYgKHAucHJvdGVjdGVkKSB7XG4gICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIGFueSBwcm90ZWN0ZWQgcHJvcGVydGllc1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGNhbWVsY2FzZSh0aGlzLmNmbi5iYXNlbmFtZSk7XG5cbiAgICAgIC8vIGFuIGF0dHJpYnV0ZSBwcm9wZXJ0eSBpcyBhIHByb3BlcnR5IHdoaWNoIHN0YXJ0cyB3aXRoIHRoZSB0eXBlIG5hbWVcbiAgICAgIC8vIChlLmcuIFwiYnVja2V0WHh4XCIpIGFuZC9vciBoYXMgYW4gQGF0dHJpYnV0ZSBkb2MgdGFnLlxuICAgICAgY29uc3QgdGFnID0gZ2V0RG9jVGFnKHAsICdhdHRyaWJ1dGUnKTtcbiAgICAgIGlmICghcC5uYW1lLnN0YXJ0c1dpdGgoYmFzZW5hbWUpICYmICF0YWcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxldCBjZm5BdHRyaWJ1dGVOYW1lcztcbiAgICAgIGlmICh0YWcgJiYgdGFnICE9PSAndHJ1ZScpIHtcbiAgICAgICAgLy8gaWYgdGhlcmUncyBhbiBgQGF0dHJpYnV0ZWAgZG9jIHRhZyB3aXRoIGEgdmFsdWUgb3RoZXIgdGhhbiBcInRydWVcIlxuICAgICAgICAvLyBpdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgQ0ZOIGF0dHJpYnV0ZSBuYW1lIGluc3RlYWQgb2YgdGhlIHByb3BlcnR5IG5hbWVcbiAgICAgICAgLy8gbXVsdGlwbGUgYXR0cmlidXRlIG5hbWVzIGNhbiBiZSBsaXN0ZWQgYXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyA9IHRhZy5zcGxpdCgnLCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb2theSwgd2UgZG9uJ3QgaGF2ZSBhbiBleHBsaWNpdCBDRk4gYXR0cmlidXRlIG5hbWUsIHNvIHdlJ2xsIGd1ZXNzIGl0XG4gICAgICAgIC8vIGZyb20gdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuXG4gICAgICAgIGNvbnN0IG5hbWUgPSBjYW1lbGNhc2UocC5uYW1lLCB7IHBhc2NhbENhc2U6IHRydWUgfSk7XG4gICAgICAgIGlmICh0aGlzLmNmbi5hdHRyaWJ1dGVOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogdGhlcmUgaXMgYSBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIGluIHRoZSBhdHRyaWJ1dGUgbmFtZVxuICAgICAgICAgIC8vIGZvciBleGFtcGxlICdSb2xlSWQnLlxuICAgICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gW25hbWVdO1xuICAgICAgICB9IGVsc2UgaWYgKHAubmFtZS5zdGFydHNXaXRoKGJhc2VuYW1lKSkge1xuICAgICAgICAgIC8vIGJlZ2lucyB3aXRoIHRoZSByZXNvdXJjZSBuYW1lLCBqdXN0IHRyaW0gaXRcbiAgICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyA9IFtuYW1lLnN1YnN0cmluZyh0aGlzLmNmbi5iYXNlbmFtZS5sZW5ndGgpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBkZXRlcm1pbmUgQ0ZOIGF0dHJpYnV0ZSBuYW1lLCBzbyB3ZSBkb24ndCBhY2NvdW50IGZvciB0aGlzXG4gICAgICAgICAgLy8gYXMgYW4gYXR0cmlidXRlLiB0aGlzIGNvdWxkIGJlLCBmb3IgZXhhbXBsZSwgd2hlbiBhIGNvbnN0cnVjdCBpbXBsZW1lbnRzXG4gICAgICAgICAgLy8gYW4gaW50ZXJmYWNlIHRoYXQgcmVwcmVzZW50cyBhbm90aGVyIHJlc291cmNlIChlLmcuIGBsYW1iZGEuQWxpYXNgIGltcGxlbWVudHMgYElGdW5jdGlvbmApLlxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrIGlmIHRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgb24gYW4gaW50ZXJmYWNlIG9yIG9uIGEgY2xhc3NcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gZmluZERlY2xhcmF0aW9uU2l0ZShwKTtcbiAgICAgIGNvbnN0IHNpdGUgPSBwcm9wZXJ0eS5wYXJlbnRUeXBlLmlzSW50ZXJmYWNlVHlwZSgpID8gQXR0cmlidXRlU2l0ZS5JbnRlcmZhY2UgOiBBdHRyaWJ1dGVTaXRlLkNsYXNzO1xuXG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIHNpdGUsXG4gICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzLFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZERlY2xhcmF0aW9uU2l0ZShwcm9wOiByZWZsZWN0LlByb3BlcnR5KTogcmVmbGVjdC5Qcm9wZXJ0eSB7XG4gIGlmICghcHJvcC5vdmVycmlkZXMgfHwgKCFwcm9wLm92ZXJyaWRlcy5pc0NsYXNzVHlwZSgpICYmICFwcm9wLm92ZXJyaWRlcy5pc0ludGVyZmFjZVR5cGUoKSkpIHtcbiAgICBpZiAoIXByb3AucGFyZW50VHlwZS5pc0NsYXNzVHlwZSgpICYmICFwcm9wLnBhcmVudFR5cGUuaXNJbnRlcmZhY2VUeXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwYXJlbnQgdHlwZScpO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcDtcbiAgfVxuXG4gIGNvbnN0IG92ZXJyaWRlc1Byb3AgPSBwcm9wLm92ZXJyaWRlcy5hbGxQcm9wZXJ0aWVzLmZpbmQocCA9PiBwLm5hbWUgPT09IHByb3AubmFtZSk7XG4gIGlmICghb3ZlcnJpZGVzUHJvcCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcHJvcGVydHkgJHtwcm9wLm5hbWV9IGluIG92ZXJyaWRlIHNpdGUgJHtwcm9wLm92ZXJyaWRlcy5mcW59YCk7XG4gIH1cbiAgcmV0dXJuIGZpbmREZWNsYXJhdGlvblNpdGUob3ZlcnJpZGVzUHJvcCk7XG59XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1jbGFzcy1leHRlbmRzLXJlc291cmNlJyxcbiAgbWVzc2FnZTogJ3Jlc291cmNlIGNsYXNzZXMgbXVzdCBleHRlbmQgXCJjZGsuUmVzb3VyY2VcIiBkaXJlY3RseSBvciBpbmRpcmVjdGx5JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2VCYXNlID0gZS5jdHguc3lzLmZpbmRDbGFzcyhlLmN0eC5jb3JlLnJlc291cmNlQ2xhc3MuZnFuKTtcbiAgICBlLmFzc2VydChlLmN0eC5jb25zdHJ1Y3QuY2xhc3NUeXBlLmV4dGVuZHMocmVzb3VyY2VCYXNlKSwgZS5jdHguY29uc3RydWN0LmZxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWludGVyZmFjZScsXG4gIHdhcm5pbmc6IHRydWUsXG4gIG1lc3NhZ2U6ICdldmVyeSByZXNvdXJjZSBtdXN0IGhhdmUgYSByZXNvdXJjZSBpbnRlcmZhY2UnLFxuICBldmFsOiBlID0+IHtcbiAgICBlLmFzc2VydChlLmN0eC5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZSwgZS5jdHguY29uc3RydWN0LmZxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWludGVyZmFjZS1leHRlbmRzLXJlc291cmNlJyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBpbnRlcmZhY2VzIG9mIEFXUyByZXNvdXJjZXMgbXVzdCBleHRlbmQgY2RrLklSZXNvdXJjZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlSW50ZXJmYWNlID0gZS5jdHguY29uc3RydWN0LmludGVyZmFjZVR5cGU7XG4gICAgaWYgKCFyZXNvdXJjZUludGVyZmFjZSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHJlc291cmNlSW50ZXJmYWNlRnFuID0gZS5jdHguY29yZS5yZXNvdXJjZUludGVyZmFjZS5mcW47XG4gICAgY29uc3QgaW50ZXJmYWNlQmFzZSA9IGUuY3R4LnN5cy5maW5kSW50ZXJmYWNlKHJlc291cmNlSW50ZXJmYWNlRnFuKTtcbiAgICBlLmFzc2VydChyZXNvdXJjZUludGVyZmFjZS5leHRlbmRzKGludGVyZmFjZUJhc2UpLCByZXNvdXJjZUludGVyZmFjZS5mcW4pO1xuICB9LFxufSk7XG5cbi8qXG4vLyBUaGlzIHJ1bGUgaXMgdGhlIHdvcnN0XG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtYXR0cmlidXRlJyxcbiAgd2FybmluZzogdHJ1ZSxcbiAgbWVzc2FnZTpcbiAgICAncmVzb3VyY2VzIG11c3QgcmVwcmVzZW50IGFsbCBjbG91ZGZvcm1hdGlvbiBhdHRyaWJ1dGVzIGFzIGF0dHJpYnV0ZSBwcm9wZXJ0aWVzLiAnICtcbiAgICAnXCJAYXR0cmlidXRlIEFUVFJbLEFUVFJdXCIgY2FuIGJlIHVzZWQgdG8gdGFnIG5vbi1zdGFuZGFyZCBhdHRyaWJ1dGUgbmFtZXMuICcgK1xuICAgICdtaXNzaW5nIHByb3BlcnR5OicsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlLmN0eC5jZm4uYXR0cmlidXRlTmFtZXMpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gY2FtZWxjYXNlKG5hbWUpLnN0YXJ0c1dpdGgoY2FtZWxjYXNlKGUuY3R4LmNmbi5iYXNlbmFtZSkpXG4gICAgICAgID8gY2FtZWxjYXNlKG5hbWUpXG4gICAgICAgIDogY2FtZWxjYXNlKGUuY3R4LmNmbi5iYXNlbmFtZSArIG5hbWUpO1xuXG4gICAgICBjb25zdCBmb3VuZCA9IGUuY3R4LmF0dHJpYnV0ZXMuZmluZChhID0+IGEuY2ZuQXR0cmlidXRlTmFtZXMuaW5jbHVkZXMobmFtZSkpO1xuICAgICAgZS5hc3NlcnQoZm91bmQsIGAke2UuY3R4LmZxbn0uJHtleHBlY3RlZH1gLCBleHBlY3RlZCk7XG4gICAgfVxuICB9LFxufSk7XG4qL1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAnZ3JhbnQtcmVzdWx0JyxcbiAgbWVzc2FnZTogYFwiZ3JhbnRcIiBtZXRob2QgbXVzdCByZXR1cm4gJHtHUkFOVF9SRVNVTFRfRlFOfWAsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IGdyYW50UmVzdWx0VHlwZSA9IGUuY3R4LnN5cy50cnlGaW5kRnFuKEdSQU5UX1JFU1VMVF9GUU4pO1xuXG4gICAgLy8gdGhpcyBpbXBsaWVzIHRoYXQgd2UgYXJlIGF0IGEgbG93ZXIgbGF5ZXIgKGkuZS4gQGF3cy1jZGsvY29yZSlcbiAgICBpZiAoIWdyYW50UmVzdWx0VHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdyYW50TWV0aG9kcyA9IGUuY3R4LmNvbnN0cnVjdC5jbGFzc1R5cGUuYWxsTWV0aG9kcy5maWx0ZXIobSA9PiBtLm5hbWUuc3RhcnRzV2l0aCgnZ3JhbnQnKSk7XG5cbiAgICBmb3IgKGNvbnN0IGdyYW50TWV0aG9kIG9mIGdyYW50TWV0aG9kcykge1xuICAgICAgZS5hc3NlcnRTaWduYXR1cmUoZ3JhbnRNZXRob2QsIHtcbiAgICAgICAgcmV0dXJuczogZ3JhbnRSZXN1bHRUeXBlLFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1waHlzaWNhbC1uYW1lJyxcbiAgbWVzc2FnZTogJ0V2ZXJ5IFJlc291cmNlIG11c3QgaGF2ZSBhIHNpbmdsZSBwaHlzaWNhbCBuYW1lIGNvbnN0cnVjdGlvbiBwcm9wZXJ0eSwgJyArXG4gICAgJ3dpdGggYSBuYW1lIHRoYXQgaXMgYW4gZW5kaW5nIHN1YnN0cmluZyBvZiA8Y2ZuUmVzb3VyY2U+TmFtZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguY29uc3RydWN0LnByb3BzVHlwZSkgeyByZXR1cm47IH1cbiAgICBlLmFzc2VydChlLmN0eC5waHlzaWNhbE5hbWVQcm9wLCBlLmN0eC5jb25zdHJ1Y3QucHJvcHNGcW4pO1xuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1waHlzaWNhbC1uYW1lLXR5cGUnLFxuICBtZXNzYWdlOiAnVGhlIHR5cGUgb2YgdGhlIHBoeXNpY2FsIG5hbWUgcHJvcCBzaG91bGQgYWx3YXlzIGJlIGEgXCJzdHJpbmdcIicsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucGh5c2ljYWxOYW1lUHJvcCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm9wID0gZS5jdHgucGh5c2ljYWxOYW1lUHJvcDtcbiAgICBlLmFzc2VydFR5cGVzRXF1YWwoZS5jdHguc3lzLCBwcm9wLnR5cGUsICdzdHJpbmcnLCBgJHtlLmN0eC5jb25zdHJ1Y3QucHJvcHNGcW59LiR7cHJvcC5uYW1lfWApO1xuICB9LFxufSk7XG5cbmZ1bmN0aW9uIHRyeVJlc29sdmVDZm5SZXNvdXJjZShyZXNvdXJjZUNsYXNzOiByZWZsZWN0LkNsYXNzVHlwZSk6IENmblJlc291cmNlUmVmbGVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN5cyA9IHJlc291cmNlQ2xhc3Muc3lzdGVtO1xuXG4gIC8vIGlmIHRoZXJlIGlzIGEgQHJlc291cmNlIGRvYyB0YWcsIGl0IHRha2VzIHByZWNlZGVjZVxuICBjb25zdCB0YWcgPSByZXNvdXJjZUNsYXNzLmRvY3MuY3VzdG9tVGFnKCdyZXNvdXJjZScpO1xuICBpZiAodGFnKSB7XG4gICAgcmV0dXJuIENmblJlc291cmNlUmVmbGVjdGlvbi5maW5kQnlOYW1lKHN5cywgdGFnKTtcbiAgfVxuXG4gIC8vIHBhcnNlIHRoZSBGUU4gb2YgdGhlIGNsYXNzIG5hbWUgYW5kIHNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIENGTiByZXNvdXJjZVxuICBjb25zdCBndWVzcyA9IGd1ZXNzUmVzb3VyY2VOYW1lKHJlc291cmNlQ2xhc3MuZnFuKTtcbiAgaWYgKGd1ZXNzKSB7XG4gICAgY29uc3QgY2ZuID0gQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRCeU5hbWUoc3lzLCBndWVzcyk7XG4gICAgaWYgKGNmbikge1xuICAgICAgcmV0dXJuIGNmbjtcbiAgICB9XG4gIH1cblxuICAvLyB0cnkgdG8gcmVzb2x2ZSB0aHJvdWdoIGFuY2VzdG9yc1xuICBmb3IgKGNvbnN0IGJhc2Ugb2YgcmVzb3VyY2VDbGFzcy5nZXRBbmNlc3RvcnMoKSkge1xuICAgIGNvbnN0IHJldCA9IHRyeVJlc29sdmVDZm5SZXNvdXJjZShiYXNlKTtcbiAgICBpZiAocmV0KSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuXG4gIC8vIGZhaWxlZCBtaXNyYWJseVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBndWVzc1Jlc291cmNlTmFtZShmcW46IHN0cmluZykge1xuICBjb25zdCBtYXRjaCA9IC9AYXdzLWNka1xcLyhbYS16XSspLShbYS16MC05XSspXFwuKFtBLVpdW2EtekEtWjAtOV0rKS8uZXhlYyhmcW4pO1xuICBpZiAoIW1hdGNoKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBbLCBvcmcsIG5zLCByc10gPSBtYXRjaDtcbiAgaWYgKCFvcmcgfHwgIW5zIHx8ICFycykgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgcmV0dXJuIGAke29yZ306OiR7bnN9Ojoke3JzfWA7XG59XG4iXX0=
|
package/lib/rules/resource.ts
CHANGED
|
@@ -185,6 +185,8 @@ resourceLinter.add({
|
|
|
185
185
|
},
|
|
186
186
|
});
|
|
187
187
|
|
|
188
|
+
/*
|
|
189
|
+
// This rule is the worst
|
|
188
190
|
resourceLinter.add({
|
|
189
191
|
code: 'resource-attribute',
|
|
190
192
|
warning: true,
|
|
@@ -203,6 +205,7 @@ resourceLinter.add({
|
|
|
203
205
|
}
|
|
204
206
|
},
|
|
205
207
|
});
|
|
208
|
+
*/
|
|
206
209
|
|
|
207
210
|
resourceLinter.add({
|
|
208
211
|
code: 'grant-result',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "awslint",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.55.0",
|
|
4
4
|
"description": "Enforces the AWS Construct Library guidelines",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc -b && eslint . --ext=.ts && pkglint && chmod +x bin/awslint",
|
|
@@ -18,25 +18,25 @@
|
|
|
18
18
|
"awslint": "bin/awslint"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@jsii/spec": "1.
|
|
21
|
+
"@jsii/spec": "1.72.0",
|
|
22
22
|
"camelcase": "^6.3.0",
|
|
23
23
|
"chalk": "^4",
|
|
24
24
|
"fs-extra": "^9.1.0",
|
|
25
|
-
"jsii-reflect": "1.
|
|
25
|
+
"jsii-reflect": "1.72.0",
|
|
26
26
|
"yargs": "^16.2.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/fs-extra": "^8.1.2",
|
|
30
30
|
"@types/jest": "^27.5.2",
|
|
31
31
|
"@types/yargs": "^15.0.14",
|
|
32
|
-
"@aws-cdk/pkglint": "2.
|
|
32
|
+
"@aws-cdk/pkglint": "2.55.0",
|
|
33
33
|
"typescript": "~3.9.10",
|
|
34
34
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
35
35
|
"@typescript-eslint/parser": "^4.33.0",
|
|
36
36
|
"eslint": "^7.32.0",
|
|
37
37
|
"eslint-import-resolver-node": "^0.3.6",
|
|
38
38
|
"eslint-import-resolver-typescript": "^2.7.1",
|
|
39
|
-
"@aws-cdk/eslint-plugin": "2.
|
|
39
|
+
"@aws-cdk/eslint-plugin": "2.55.0",
|
|
40
40
|
"eslint-plugin-import": "^2.26.0",
|
|
41
41
|
"eslint-plugin-jest": "^24.7.0",
|
|
42
42
|
"jest": "^27.5.1"
|