awslint 2.53.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 -15
- package/lib/rules/resource.ts +4 -0
- package/package.json +5 -5
package/lib/rules/resource.js
CHANGED
|
@@ -151,21 +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
|
-
|
|
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
|
+
},
|
|
168
173
|
});
|
|
174
|
+
*/
|
|
169
175
|
exports.resourceLinter.add({
|
|
170
176
|
code: 'grant-result',
|
|
171
177
|
message: `"grant" method must return ${GRANT_RESULT_FQN}`,
|
|
@@ -241,4 +247,4 @@ function guessResourceName(fqn) {
|
|
|
241
247
|
}
|
|
242
248
|
return `${org}::${ns}::${rs}`;
|
|
243
249
|
}
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBdUM7QUFFdkMsc0NBQW1DO0FBQ25DLGlEQUF1RDtBQUN2RCwyQ0FBa0Q7QUFDbEQsNkNBQXlDO0FBQ3pDLGlDQUFtQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFRN0UsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBR3hCO0FBRUQsTUFBYSxrQkFBa0I7SUEwQjdCLFlBQTRCLFNBQThCO1FBQTlCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVoQyxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLFNBQVMsQ0FBQyxHQUFHLElBQUk7Z0JBQzlELE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUM7Z0JBQzlFLG9IQUFvSCxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFD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SUFFRCxpRkFBaUY7SUFDakYsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsb0NBQXFCLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLEdBQUcsRUFBRTtZQUNQLE9BQU8sR0FBRyxDQUFDO1NBQ1o7S0FDRjtJQUVELG1DQUFtQztJQUNuQyxLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUUsRUFBRTtRQUMvQyxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLEdBQUcsRUFBRTtZQUNQLE9BQU8sR0FBRyxDQUFDO1NBQ1o7S0FDRjtJQUVELGtCQUFrQjtJQUNsQixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxHQUFXO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLHFEQUFxRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUVqQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUU3QyxPQUFPLEdBQUcsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2FtZWxjYXNlIGZyb20gJ2NhbWVsY2FzZSc7XG5pbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBMaW50ZXIgfSBmcm9tICcuLi9saW50ZXInO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UnO1xuaW1wb3J0IHsgQ29uc3RydWN0UmVmbGVjdGlvbiB9IGZyb20gJy4vY29uc3RydWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBnZXREb2NUYWcgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBHUkFOVF9SRVNVTFRfRlFOID0gJ0Bhd3MtY2RrL2F3cy1pYW0uR3JhbnQnO1xuXG5leHBvcnQgY29uc3QgcmVzb3VyY2VMaW50ZXIgPSBuZXcgTGludGVyKGEgPT4gUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRBbGwoYSkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIHNpdGU6IEF0dHJpYnV0ZVNpdGU7XG4gIHByb3BlcnR5OiByZWZsZWN0LlByb3BlcnR5O1xuICBjZm5BdHRyaWJ1dGVOYW1lczogc3RyaW5nW107IC8vIGJ1Y2tldEFyblxufVxuXG5leHBvcnQgZW51bSBBdHRyaWJ1dGVTaXRlIHtcbiAgSW50ZXJmYWNlID0gJ2ludGVyZmFjZScsXG4gIENsYXNzID0gJ2NsYXNzJ1xufVxuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VSZWZsZWN0aW9uIHtcblxuICAvKipcbiAgICogQHJldHVybnMgYWxsIHJlc291cmNlIGNvbnN0cnVjdHMgKGV2ZXJ5dGhpbmcgdGhhdCBleHRlbmRzIGBjZGsuUmVzb3VyY2VgKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmaW5kQWxsKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5KSB7XG4gICAgaWYgKENvcmVUeXBlcy5oYXNDb3JlTW9kdWxlKGFzc2VtYmx5KSkge1xuICAgICAgcmV0dXJuIFtdOyAvLyBub3QgcGFydCBvZiB0aGUgZGVwIHN0YWNrXG4gICAgfVxuXG4gICAgcmV0dXJuIENvbnN0cnVjdFJlZmxlY3Rpb25cbiAgICAgIC5maW5kQWxsQ29uc3RydWN0cyhhc3NlbWJseSlcbiAgICAgIC5maWx0ZXIoYyA9PiBDb3JlVHlwZXMuaXNSZXNvdXJjZUNsYXNzKGMuY2xhc3NUeXBlKSlcbiAgICAgIC5tYXAoYyA9PiBuZXcgUmVzb3VyY2VSZWZsZWN0aW9uKGMpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXTsgLy8gYWN0dWFsIGF0dHJpYnV0ZSBwcm9wc1xuICBwdWJsaWMgcmVhZG9ubHkgZnFuOiBzdHJpbmc7IC8vIGV4cGVjdGVkIGZxbiBvZiByZXNvdXJjZSBjbGFzc1xuXG4gIHB1YmxpYyByZWFkb25seSBhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseTtcbiAgcHVibGljIHJlYWRvbmx5IHN5czogcmVmbGVjdC5UeXBlU3lzdGVtO1xuICBwdWJsaWMgcmVhZG9ubHkgY2ZuOiBDZm5SZXNvdXJjZVJlZmxlY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBiYXNlbmFtZTogc3RyaW5nOyAvLyBpLmUuIEJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgY29yZTogQ29yZVR5cGVzO1xuICBwdWJsaWMgcmVhZG9ubHkgcGh5c2ljYWxOYW1lUHJvcD86IHJlZmxlY3QuUHJvcGVydHk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNvbnN0cnVjdDogQ29uc3RydWN0UmVmbGVjdGlvbikge1xuICAgIHRoaXMuYXNzZW1ibHkgPSBjb25zdHJ1Y3QuY2xhc3NUeXBlLmFzc2VtYmx5O1xuICAgIHRoaXMuc3lzID0gdGhpcy5hc3NlbWJseS5zeXN0ZW07XG5cbiAgICBjb25zdCBjZm4gPSB0cnlSZXNvbHZlQ2ZuUmVzb3VyY2UoY29uc3RydWN0LmNsYXNzVHlwZSk7XG4gICAgaWYgKCFjZm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgTDEgY2xhc3MgZm9yIEwyICR7Y29uc3RydWN0LmZxbn0uIGAgK1xuICAgICAgICBgSXMgXCIke2d1ZXNzUmVzb3VyY2VOYW1lKGNvbnN0cnVjdC5mcW4pfVwiIGFuIGFjdHVhbCBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS4gYCArXG4gICAgICAgICdJZiBub3QsIHVzZSB0aGUgXCJAcmVzb3VyY2VcIiBkb2MgdGFnIHRvIGluZGljYXRlIHRoZSBmdWxsIHJlc291cmNlIG5hbWUgKGUuZy4gXCJAcmVzb3VyY2UgQVdTOjpSb3V0ZTUzOjpIb3N0ZWRab25lXCIpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb3JlID0gbmV3IENvcmVUeXBlcyh0aGlzLnN5cyk7XG4gICAgdGhpcy5jZm4gPSBjZm47XG4gICAgdGhpcy5iYXNlbmFtZSA9IGNvbnN0cnVjdC5jbGFzc1R5cGUubmFtZTtcbiAgICB0aGlzLmZxbiA9IGNvbnN0cnVjdC5mcW47XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdGhpcy5maW5kQXR0cmlidXRlUHJvcGVydGllcygpO1xuICAgIHRoaXMucGh5c2ljYWxOYW1lUHJvcCA9IHRoaXMuZmluZFBoeXNpY2FsTmFtZVByb3AoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBoeXNpY2FsTmFtZVByb3AoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnN0cnVjdC5wcm9wc1R5cGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VOYW1lID0gY2FtZWxjYXNlKHRoaXMuY2ZuLmJhc2VuYW1lKTtcblxuICAgIC8vIGlmIHJlc291cmNlIG5hbWUgZW5kcyB3aXRoIFwiTmFtZVwiIChlLmcuIERvbWFpbk5hbWUsIHRoZW4ganVzdCB1c2UgaXQgYXMtaXMsIG90aGVyd2lzZSBhcHBlbmQgXCJOYW1lXCIpXG4gICAgY29uc3QgcGh5c2ljYWxOYW1lUHJvcCA9IHJlc291cmNlTmFtZS5lbmRzV2l0aCgnTmFtZScpID8gcmVzb3VyY2VOYW1lIDogYCR7cmVzb3VyY2VOYW1lfU5hbWVgO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdC5wcm9wc1R5cGUuYWxsUHJvcGVydGllcy5maW5kKHggPT4geC5uYW1lID09PSBwaHlzaWNhbE5hbWVQcm9wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgcHJvcGVydGllcyBhcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYmVnaW4gd2l0aCB0aGUgdHlwZSBuYW1lIChlLmcuIGJ1Y2tldFh4eCkuXG4gICAqL1xuICBwcml2YXRlIGZpbmRBdHRyaWJ1dGVQcm9wZXJ0aWVzKCk6IEF0dHJpYnV0ZVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8QXR0cmlidXRlPigpO1xuXG4gICAgZm9yIChjb25zdCBwIG9mIHRoaXMuY29uc3RydWN0LmNsYXNzVHlwZS5hbGxQcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAocC5wcm90ZWN0ZWQpIHtcbiAgICAgICAgY29udGludWU7IC8vIHNraXAgYW55IHByb3RlY3RlZCBwcm9wZXJ0aWVzXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhc2VuYW1lID0gY2FtZWxjYXNlKHRoaXMuY2ZuLmJhc2VuYW1lKTtcblxuICAgICAgLy8gYW4gYXR0cmlidXRlIHByb3BlcnR5IGlzIGEgcHJvcGVydHkgd2hpY2ggc3RhcnRzIHdpdGggdGhlIHR5cGUgbmFtZVxuICAgICAgLy8gKGUuZy4gXCJidWNrZXRYeHhcIikgYW5kL29yIGhhcyBhbiBAYXR0cmlidXRlIGRvYyB0YWcuXG4gICAgICBjb25zdCB0YWcgPSBnZXREb2NUYWcocCwgJ2F0dHJpYnV0ZScpO1xuICAgICAgaWYgKCFwLm5hbWUuc3RhcnRzV2l0aChiYXNlbmFtZSkgJiYgIXRhZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNmbkF0dHJpYnV0ZU5hbWVzO1xuICAgICAgaWYgKHRhZyAmJiB0YWcgIT09ICd0cnVlJykge1xuICAgICAgICAvLyBpZiB0aGVyZSdzIGFuIGBAYXR0cmlidXRlYCBkb2MgdGFnIHdpdGggYSB2YWx1ZSBvdGhlciB0aGFuIFwidHJ1ZVwiXG4gICAgICAgIC8vIGl0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBDRk4gYXR0cmlidXRlIG5hbWUgaW5zdGVhZCBvZiB0aGUgcHJvcGVydHkgbmFtZVxuICAgICAgICAvLyBtdWx0aXBsZSBhdHRyaWJ1dGUgbmFtZXMgY2FuIGJlIGxpc3RlZCBhcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4gICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gdGFnLnNwbGl0KCcsJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBva2F5LCB3ZSBkb24ndCBoYXZlIGFuIGV4cGxpY2l0IENGTiBhdHRyaWJ1dGUgbmFtZSwgc28gd2UnbGwgZ3Vlc3MgaXRcbiAgICAgICAgLy8gZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG5cbiAgICAgICAgY29uc3QgbmFtZSA9IGNhbWVsY2FzZShwLm5hbWUsIHsgcGFzY2FsQ2FzZTogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKHRoaXMuY2ZuLmF0dHJpYnV0ZU5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiB0aGVyZSBpcyBhIGNsb3VkZm9ybWF0aW9uIHJlc291cmNlIHR5cGUgaW4gdGhlIGF0dHJpYnV0ZSBuYW1lXG4gICAgICAgICAgLy8gZm9yIGV4YW1wbGUgJ1JvbGVJZCcuXG4gICAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMgPSBbbmFtZV07XG4gICAgICAgIH0gZWxzZSBpZiAocC5uYW1lLnN0YXJ0c1dpdGgoYmFzZW5hbWUpKSB7XG4gICAgICAgICAgLy8gYmVnaW5zIHdpdGggdGhlIHJlc291cmNlIG5hbWUsIGp1c3QgdHJpbSBpdFxuICAgICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gW25hbWUuc3Vic3RyaW5nKHRoaXMuY2ZuLmJhc2VuYW1lLmxlbmd0aCldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHdlIGNvdWxkbid0IGRldGVybWluZSBDRk4gYXR0cmlidXRlIG5hbWUsIHNvIHdlIGRvbid0IGFjY291bnQgZm9yIHRoaXNcbiAgICAgICAgICAvLyBhcyBhbiBhdHRyaWJ1dGUuIHRoaXMgY291bGQgYmUsIGZvciBleGFtcGxlLCB3aGVuIGEgY29uc3RydWN0IGltcGxlbWVudHNcbiAgICAgICAgICAvLyBhbiBpbnRlcmZhY2UgdGhhdCByZXByZXNlbnRzIGFub3RoZXIgcmVzb3VyY2UgKGUuZy4gYGxhbWJkYS5BbGlhc2AgaW1wbGVtZW50cyBgSUZ1bmN0aW9uYCkuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2sgaWYgdGhpcyBhdHRyaWJ1dGUgaXMgZGVmaW5lZCBvbiBhbiBpbnRlcmZhY2Ugb3Igb24gYSBjbGFzc1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBmaW5kRGVjbGFyYXRpb25TaXRlKHApO1xuICAgICAgY29uc3Qgc2l0ZSA9IHByb3BlcnR5LnBhcmVudFR5cGUuaXNJbnRlcmZhY2VUeXBlKCkgPyBBdHRyaWJ1dGVTaXRlLkludGVyZmFjZSA6IEF0dHJpYnV0ZVNpdGUuQ2xhc3M7XG5cbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgc2l0ZSxcbiAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMsXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kRGVjbGFyYXRpb25TaXRlKHByb3A6IHJlZmxlY3QuUHJvcGVydHkpOiByZWZsZWN0LlByb3BlcnR5IHtcbiAgaWYgKCFwcm9wLm92ZXJyaWRlcyB8fCAoIXByb3Aub3ZlcnJpZGVzLmlzQ2xhc3NUeXBlKCkgJiYgIXByb3Aub3ZlcnJpZGVzLmlzSW50ZXJmYWNlVHlwZSgpKSkge1xuICAgIGlmICghcHJvcC5wYXJlbnRUeXBlLmlzQ2xhc3NUeXBlKCkgJiYgIXByb3AucGFyZW50VHlwZS5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBhcmVudCB0eXBlJyk7XG4gICAgfVxuICAgIHJldHVybiBwcm9wO1xuICB9XG5cbiAgY29uc3Qgb3ZlcnJpZGVzUHJvcCA9IHByb3Aub3ZlcnJpZGVzLmFsbFByb3BlcnRpZXMuZmluZChwID0+IHAubmFtZSA9PT0gcHJvcC5uYW1lKTtcbiAgaWYgKCFvdmVycmlkZXNQcm9wKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBwcm9wZXJ0eSAke3Byb3AubmFtZX0gaW4gb3ZlcnJpZGUgc2l0ZSAke3Byb3Aub3ZlcnJpZGVzLmZxbn1gKTtcbiAgfVxuICByZXR1cm4gZmluZERlY2xhcmF0aW9uU2l0ZShvdmVycmlkZXNQcm9wKTtcbn1cblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWNsYXNzLWV4dGVuZHMtcmVzb3VyY2UnLFxuICBtZXNzYWdlOiAncmVzb3VyY2UgY2xhc3NlcyBtdXN0IGV4dGVuZCBcImNkay5SZXNvdXJjZVwiIGRpcmVjdGx5IG9yIGluZGlyZWN0bHknLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCByZXNvdXJjZUJhc2UgPSBlLmN0eC5zeXMuZmluZENsYXNzKGUuY3R4LmNvcmUucmVzb3VyY2VDbGFzcy5mcW4pO1xuICAgIGUuYXNzZXJ0KGUuY3R4LmNvbnN0cnVjdC5jbGFzc1R5cGUuZXh0ZW5kcyhyZXNvdXJjZUJhc2UpLCBlLmN0eC5jb25zdHJ1Y3QuZnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtaW50ZXJmYWNlJyxcbiAgd2FybmluZzogdHJ1ZSxcbiAgbWVzc2FnZTogJ2V2ZXJ5IHJlc291cmNlIG11c3QgaGF2ZSBhIHJlc291cmNlIGludGVyZmFjZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGUuYXNzZXJ0KGUuY3R4LmNvbnN0cnVjdC5pbnRlcmZhY2VUeXBlLCBlLmN0eC5jb25zdHJ1Y3QuZnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtaW50ZXJmYWNlLWV4dGVuZHMtcmVzb3VyY2UnLFxuICBtZXNzYWdlOiAnY29uc3RydWN0IGludGVyZmFjZXMgb2YgQVdTIHJlc291cmNlcyBtdXN0IGV4dGVuZCBjZGsuSVJlc291cmNlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2VJbnRlcmZhY2UgPSBlLmN0eC5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZTtcbiAgICBpZiAoIXJlc291cmNlSW50ZXJmYWNlKSB7IHJldHVybjsgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VJbnRlcmZhY2VGcW4gPSBlLmN0eC5jb3JlLnJlc291cmNlSW50ZXJmYWNlLmZxbjtcbiAgICBjb25zdCBpbnRlcmZhY2VCYXNlID0gZS5jdHguc3lzLmZpbmRJbnRlcmZhY2UocmVzb3VyY2VJbnRlcmZhY2VGcW4pO1xuICAgIGUuYXNzZXJ0KHJlc291cmNlSW50ZXJmYWNlLmV4dGVuZHMoaW50ZXJmYWNlQmFzZSksIHJlc291cmNlSW50ZXJmYWNlLmZxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWF0dHJpYnV0ZScsXG4gIG1lc3NhZ2U6XG4gICAgJ3Jlc291cmNlcyBtdXN0IHJlcHJlc2VudCBhbGwgY2xvdWRmb3JtYXRpb24gYXR0cmlidXRlcyBhcyBhdHRyaWJ1dGUgcHJvcGVydGllcy4gJyArXG4gICAgJ1wiQGF0dHJpYnV0ZSBBVFRSWyxBVFRSXVwiIGNhbiBiZSB1c2VkIHRvIHRhZyBub24tc3RhbmRhcmQgYXR0cmlidXRlIG5hbWVzLiAnICtcbiAgICAnbWlzc2luZyBwcm9wZXJ0eTonLFxuICBldmFsOiBlID0+IHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZS5jdHguY2ZuLmF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IGNhbWVsY2FzZShuYW1lKS5zdGFydHNXaXRoKGNhbWVsY2FzZShlLmN0eC5jZm4uYmFzZW5hbWUpKVxuICAgICAgICA/IGNhbWVsY2FzZShuYW1lKVxuICAgICAgICA6IGNhbWVsY2FzZShlLmN0eC5jZm4uYmFzZW5hbWUgKyBuYW1lKTtcblxuICAgICAgY29uc3QgZm91bmQgPSBlLmN0eC5hdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLmNmbkF0dHJpYnV0ZU5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgICAgIGUuYXNzZXJ0KGZvdW5kLCBgJHtlLmN0eC5mcW59LiR7ZXhwZWN0ZWR9YCwgZXhwZWN0ZWQpO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAnZ3JhbnQtcmVzdWx0JyxcbiAgbWVzc2FnZTogYFwiZ3JhbnRcIiBtZXRob2QgbXVzdCByZXR1cm4gJHtHUkFOVF9SRVNVTFRfRlFOfWAsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IGdyYW50UmVzdWx0VHlwZSA9IGUuY3R4LnN5cy50cnlGaW5kRnFuKEdSQU5UX1JFU1VMVF9GUU4pO1xuXG4gICAgLy8gdGhpcyBpbXBsaWVzIHRoYXQgd2UgYXJlIGF0IGEgbG93ZXIgbGF5ZXIgKGkuZS4gQGF3cy1jZGsvY29yZSlcbiAgICBpZiAoIWdyYW50UmVzdWx0VHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdyYW50TWV0aG9kcyA9IGUuY3R4LmNvbnN0cnVjdC5jbGFzc1R5cGUuYWxsTWV0aG9kcy5maWx0ZXIobSA9PiBtLm5hbWUuc3RhcnRzV2l0aCgnZ3JhbnQnKSk7XG5cbiAgICBmb3IgKGNvbnN0IGdyYW50TWV0aG9kIG9mIGdyYW50TWV0aG9kcykge1xuICAgICAgZS5hc3NlcnRTaWduYXR1cmUoZ3JhbnRNZXRob2QsIHtcbiAgICAgICAgcmV0dXJuczogZ3JhbnRSZXN1bHRUeXBlLFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1waHlzaWNhbC1uYW1lJyxcbiAgbWVzc2FnZTogJ0V2ZXJ5IFJlc291cmNlIG11c3QgaGF2ZSBhIHNpbmdsZSBwaHlzaWNhbCBuYW1lIGNvbnN0cnVjdGlvbiBwcm9wZXJ0eSwgJyArXG4gICAgJ3dpdGggYSBuYW1lIHRoYXQgaXMgYW4gZW5kaW5nIHN1YnN0cmluZyBvZiA8Y2ZuUmVzb3VyY2U+TmFtZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguY29uc3RydWN0LnByb3BzVHlwZSkgeyByZXR1cm47IH1cbiAgICBlLmFzc2VydChlLmN0eC5waHlzaWNhbE5hbWVQcm9wLCBlLmN0eC5jb25zdHJ1Y3QucHJvcHNGcW4pO1xuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1waHlzaWNhbC1uYW1lLXR5cGUnLFxuICBtZXNzYWdlOiAnVGhlIHR5cGUgb2YgdGhlIHBoeXNpY2FsIG5hbWUgcHJvcCBzaG91bGQgYWx3YXlzIGJlIGEgXCJzdHJpbmdcIicsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucGh5c2ljYWxOYW1lUHJvcCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm9wID0gZS5jdHgucGh5c2ljYWxOYW1lUHJvcDtcbiAgICBlLmFzc2VydFR5cGVzRXF1YWwoZS5jdHguc3lzLCBwcm9wLnR5cGUsICdzdHJpbmcnLCBgJHtlLmN0eC5jb25zdHJ1Y3QucHJvcHNGcW59LiR7cHJvcC5uYW1lfWApO1xuICB9LFxufSk7XG5cbmZ1bmN0aW9uIHRyeVJlc29sdmVDZm5SZXNvdXJjZShyZXNvdXJjZUNsYXNzOiByZWZsZWN0LkNsYXNzVHlwZSk6IENmblJlc291cmNlUmVmbGVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN5cyA9IHJlc291cmNlQ2xhc3Muc3lzdGVtO1xuXG4gIC8vIGlmIHRoZXJlIGlzIGEgQHJlc291cmNlIGRvYyB0YWcsIGl0IHRha2VzIHByZWNlZGVjZVxuICBjb25zdCB0YWcgPSByZXNvdXJjZUNsYXNzLmRvY3MuY3VzdG9tVGFnKCdyZXNvdXJjZScpO1xuICBpZiAodGFnKSB7XG4gICAgcmV0dXJuIENmblJlc291cmNlUmVmbGVjdGlvbi5maW5kQnlOYW1lKHN5cywgdGFnKTtcbiAgfVxuXG4gIC8vIHBhcnNlIHRoZSBGUU4gb2YgdGhlIGNsYXNzIG5hbWUgYW5kIHNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIENGTiByZXNvdXJjZVxuICBjb25zdCBndWVzcyA9IGd1ZXNzUmVzb3VyY2VOYW1lKHJlc291cmNlQ2xhc3MuZnFuKTtcbiAgaWYgKGd1ZXNzKSB7XG4gICAgY29uc3QgY2ZuID0gQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRCeU5hbWUoc3lzLCBndWVzcyk7XG4gICAgaWYgKGNmbikge1xuICAgICAgcmV0dXJuIGNmbjtcbiAgICB9XG4gIH1cblxuICAvLyB0cnkgdG8gcmVzb2x2ZSB0aHJvdWdoIGFuY2VzdG9yc1xuICBmb3IgKGNvbnN0IGJhc2Ugb2YgcmVzb3VyY2VDbGFzcy5nZXRBbmNlc3RvcnMoKSkge1xuICAgIGNvbnN0IHJldCA9IHRyeVJlc29sdmVDZm5SZXNvdXJjZShiYXNlKTtcbiAgICBpZiAocmV0KSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuXG4gIC8vIGZhaWxlZCBtaXNyYWJseVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBndWVzc1Jlc291cmNlTmFtZShmcW46IHN0cmluZykge1xuICBjb25zdCBtYXRjaCA9IC9AYXdzLWNka1xcLyhbYS16XSspLShbYS16MC05XSspXFwuKFtBLVpdW2EtekEtWjAtOV0rKS8uZXhlYyhmcW4pO1xuICBpZiAoIW1hdGNoKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBbLCBvcmcsIG5zLCByc10gPSBtYXRjaDtcbiAgaWYgKCFvcmcgfHwgIW5zIHx8ICFycykgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgcmV0dXJuIGAke29yZ306OiR7bnN9Ojoke3JzfWA7XG59XG4iXX0=
|
|
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,8 +185,11 @@ resourceLinter.add({
|
|
|
185
185
|
},
|
|
186
186
|
});
|
|
187
187
|
|
|
188
|
+
/*
|
|
189
|
+
// This rule is the worst
|
|
188
190
|
resourceLinter.add({
|
|
189
191
|
code: 'resource-attribute',
|
|
192
|
+
warning: true,
|
|
190
193
|
message:
|
|
191
194
|
'resources must represent all cloudformation attributes as attribute properties. ' +
|
|
192
195
|
'"@attribute ATTR[,ATTR]" can be used to tag non-standard attribute names. ' +
|
|
@@ -202,6 +205,7 @@ resourceLinter.add({
|
|
|
202
205
|
}
|
|
203
206
|
},
|
|
204
207
|
});
|
|
208
|
+
*/
|
|
205
209
|
|
|
206
210
|
resourceLinter.add({
|
|
207
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"
|