awslint 2.235.0-alpha.0 → 2.236.0-alpha.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/bin/awslint.js +1 -2
- package/bin/awslint.ts +0 -1
- package/lib/rules/index.js +3 -2
- package/lib/rules/index.ts +2 -0
- package/lib/rules/l2-interfaces.d.ts +2 -0
- package/lib/rules/l2-interfaces.js +19 -0
- package/lib/rules/l2-interfaces.ts +20 -0
- package/package.json +3 -3
package/bin/awslint.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/* eslint-disable no-console */
|
|
4
3
|
const child_process = require("child_process");
|
|
5
4
|
const path = require("path");
|
|
6
5
|
const chalk = require("chalk");
|
|
@@ -261,4 +260,4 @@ async function shell(command) {
|
|
|
261
260
|
child.once('error', ko);
|
|
262
261
|
});
|
|
263
262
|
}
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzbGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2xpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwrQkFBK0I7QUFDL0IsK0NBQStDO0FBQy9DLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLHdDQUF3QztBQUN4QywrQkFBK0I7QUFDL0IsZ0NBQTBFO0FBRTFFLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztBQUV2QixLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxLQUFLO1NBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQztTQUNkLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQztTQUNwQyxjQUFjLENBQUMsSUFBSSxDQUFDO1NBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLENBQUM7U0FDbEQsT0FBTyxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQztTQUMzQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQ3BHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLDZEQUE2RCxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUNsSSxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUscUdBQXFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ2hLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLHdDQUF3QyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNs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LENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxPQUFPLHVCQUF1QixNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IEFMTF9SVUxFU19MSU5URVIsIERpYWdub3N0aWNMZXZlbCwgUnVsZUZpbHRlclNldCB9IGZyb20gJy4uL2xpYic7XG5cbmxldCBzdGFja1RyYWNlID0gZmFsc2U7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IGFyZ3YgPSB5YXJnc1xuICAgIC5lbnYoJ0FXU0xJTlQnKVxuICAgIC51c2FnZSgnYXdzbGludCBbb3B0aW9uc10gW2NvbW1hbmRdJylcbiAgICAuc2hvd0hlbHBPbkZhaWwodHJ1ZSlcbiAgICAuY29tbWFuZCgnJDAnLCAnbGludCB0aGUgY3VycmVudCBtb2R1bGUgKGRlZmF1bHQpJylcbiAgICAuY29tbWFuZCgnbGlzdCcsICdsaXN0IGFsbCBhdmFpbGFibGUgcnVsZXMnKVxuICAgIC5vcHRpb24oJ2luY2x1ZGUnLCB7IGFsaWFzOiAnaScsIHR5cGU6ICdhcnJheScsIGRlc2M6ICdldmFsdWF0ZSBvbmx5IHRoaXMgcnVsZShzKScsIGRlZmF1bHQ6IFsnKiddIH0pXG4gICAgLm9wdGlvbignZXhjbHVkZScsIHsgYWxpYXM6ICd4JywgdHlwZTogJ2FycmF5JywgZGVzYzogJ2RvIG5vdCBldmFsdWF0ZSB0aGVzZSBydWxlcyAodGFrZXMgcHJpb3JpdHkgb3ZlciAtLWluY2x1ZGUpJywgZGVmYXVsdDogW10gfSlcbiAgICAub3B0aW9uKCdzYXZlJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICd1cGRhdGVzIHBhY2thZ2UuanNvbiAob3IgYXdzbGludC5qc29uIGlmIGl0IGV4aXN0cykgd2l0aCBcImV4Y2x1ZGVcIiBzdGF0ZW1lbnRzIGZvciBhbGwgZmFpbGluZyBydWxlcycsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgLm9wdGlvbigndmVyYm9zZScsIHsgYWxpYXM6ICd2JywgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAndmVyYm9zZSBvdXRwdXQgKHByaW50cyBhbGwgYXNzZXJ0aW9ucyknLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgIC5vcHRpb24oJ3F1aWV0JywgeyBhbGlhczogJ3EnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdxdWlldCBtb2RlIC0gc2hvd3Mgb25seSBlcnJvcnMnLCBkZWZhdWx0OiB0cnVlIH0pXG4gICAgLm9wdGlvbignZm9yY2UnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3N1Y2NlZWQgc2lsZW50bHkgaWYgdGhpcyBpcyBub3QgYSBqc2lpIG1vZHVsZScsIGRlZmF1bHQ6IHRydWUgfSlcbiAgICAub3B0aW9uKCdjb25maWcnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3JlYWRzIG9wdGlvbnMgZnJvbSBcImF3c2xpbnQuanNvblwiIGlmIGl0IGV4aXN0cywgYW5kIG90aGVyd2lzZSBmcm9tIHRoZSBcImF3c2xpbnRcIiBzZWN0aW9uIGluIHBhY2thZ2UuanNvbicsIGRlZmF1bHQ6IHRydWUgfSlcbiAgICAub3B0aW9uKCdkZWJ1ZycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnZGVidWcgb3V0cHV0JywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAub3B0aW9uKCdjb21waWxlJywgeyBhbGlhczogJ2MnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdhbHdheXMgcnVuIHRoZSBqc2lpIGNvbXBpbGVyICh1c2UgXCItLW5vLWNvbXBpbGVcIiB0byBuZXZlciBydW4gdGhlIGNvbXBpbGVyLCBldmVuIGlmIC5qc2lpIGRvZXNuXFwndCBleGlzdCknIH0pXG4gICAgLmdyb3VwKCdpbmNsdWRlJywgJ0ZpbHRlcmluZycpXG4gICAgLmdyb3VwKCdleGNsdWRlJywgJ0ZpbHRlcmluZycpXG4gICAgLmdyb3VwKCdjb25maWcnLCAnQ29uZmlndXJhdGlvbicpXG4gICAgLmdyb3VwKCdzYXZlJywgJ0NvbmZpZ3VyYXRpb24nKVxuICAgIC5ncm91cCgndmVyYm9zZScsICdPdXRwdXQnKVxuICAgIC5ncm91cCgncXVpZXQnLCAnT3V0cHV0JylcbiAgICAuZ3JvdXAoJ2RlYnVnJywgJ091dHB1dCcpXG4gICAgLmdyb3VwKCdjb21waWxlJywgJ0J1aWxkJylcbiAgICAuZXhhbXBsZSgnYXdzbGludCcsICdsaW50cyB0aGUgY3VycmVudCBtb2R1bGUgYWdhaW5zdCBhbGwgcnVsZXMnKVxuICAgIC5leGFtcGxlKCdhd3NsaW50IC12IC1pIFwicmVzb3VyY2UqXCIgLWkgXCJpbXBvcnQqXCInLCAnbGludHMgYWdhaW5zdCBhbGwgcnVsZXMgdGhhdCBzdGFydCB3aXRoIFwicmVzb3VyY2VcIiBvciBcImltcG9ydFwiIGFuZCBwcmludCBzdWNjZXNzZXMnKVxuICAgIC5leGFtcGxlKCdhd3NsaW50IC14IFwiKjpAYXdzLWNkay9hd3MtczMqXCInLCAnZXZhbHVhdGUgYWxsIHJ1bGVzIGluIGFsbCBzY29wZXMgYmVzaWRlcyBvbmVzIHRoYXQgYmVnaW4gd2l0aCBcIkBhd3MtY2RrL2F3cy1zM1wiJylcbiAgICAuZXhhbXBsZSgnYXdzbGludCAtLXNhdmUnLCAndXBkYXRlZCBcImF3c2xpbnQuanNvblwiIHdpdGggXCJleGNsdWRlXCJzIGZvciBhbGwgZmFpbGluZyBydWxlcycpO1xuXG4gIGlmICghcHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAvLyBEaXNhYmxlIGNoYWxrIGNvbG9yIGhpZ2hsaWdodGluZ1xuICAgIHByb2Nlc3MuZW52LkZPUkNFX0NPTE9SID0gJzAnO1xuICB9XG5cbiAgY29uc3QgYXJncyA9IGFyZ3YuYXJndjtcblxuICBzdGFja1RyYWNlID0gYXJncy52ZXJib3NlIHx8IGFyZ3MuZGVidWc7XG5cbiAgaWYgKGFyZ3MuXy5sZW5ndGggPiAxKSB7XG4gICAgYXJndi5zaG93SGVscCgpO1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNvbW1hbmQgPSBhcmdzLl9bMF0gfHwgJ2xpbnQnO1xuICBjb25zdCB3b3JrZGlyID0gcHJvY2Vzcy5jd2QoKTtcblxuICBjb25zdCBwa2dDb25maWcgPSBwYXRoLmpvaW4od29ya2RpciwgJ3BhY2thZ2UuanNvbicpO1xuICBjb25zdCBhd3NsaW50Q29uZmlnID0gcGF0aC5qb2luKHdvcmtkaXIsICdhd3NsaW50Lmpzb24nKTtcblxuICBpZiAoY29tbWFuZCA9PT0gJ2xpc3QnKSB7XG4gICAgZm9yIChjb25zdCBydWxlIG9mIEFMTF9SVUxFU19MSU5URVIucnVsZXMpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhgJHtjaGFsay5jeWFuKHJ1bGUuY29kZSl9OiAke3J1bGUubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaWYgbm8gcGFja2FnZS5qc29uIGFuZCBmb3JjZSBpcyB0cnVlIChkZWZhdWx0KSwganVzdCBkb24ndCBkbyBhbnl0aGluZ1xuICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMocGtnQ29uZmlnKSAmJiBhcmdzLmZvcmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGtnID0gYXdhaXQgZnMucmVhZEpTT04ocGtnQ29uZmlnKTtcblxuICAvLyBpZiB0aGlzIGlzIG5vdCBhIGpzaWkgbW9kdWxlIHdlIGhhdmUgbm90aGluZyB0byBsb29rIGZvclxuICBpZiAoIXBrZy5qc2lpKSB7XG4gICAgaWYgKGFyZ3MuZm9yY2UpIHtcbiAgICAgIHJldHVybjsgLy8ganVzdCBzaWxlbnRseSBzdWNjZWVkXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgaW4gJHt3b3JrZGlyfSBpcyBub3QgYSBqc2lpIG1vZHVsZSAobm8gXCJqc2lpXCIgc2VjdGlvbiBpbiBwYWNrYWdlLmpzb24pYCk7XG4gIH1cblxuICAvLyBpZiBwYWNrYWdlLmpzb24gY29udGFpbnMgYSBganNpaWAgc2VjdGlvbiBidXQgdGhlcmUgaXMgbm8gLmpzaWkgZmlsZVxuICAvLyBpdCBtZWFucyB3ZSBoYXZlbid0IGNvbXBpbGVkIHRoZSBtb2R1bGUuXG4gIGlmIChhd2FpdCBzaG91bGRDb21waWxlKCkpIHtcbiAgICBhd2FpdCBzaGVsbCgnanNpaScpO1xuICB9XG5cbiAgLy8gYXdzbGludC5qc29uIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBwYWNrYWdlLmpzb24gZm9yIGF3c2xpbnQgb3B0aW9ucy5cbiAgY29uc3Qgc3RhbmRsb25lT3B0aW9ucyA9IGF3YWl0IHJlYWRTdGFuZGFsb25lT3B0aW9ucyhhd3NsaW50Q29uZmlnKTtcblxuICAvLyByZWFkIFwiYXdzbGludFwiIGZyb20gcGFja2FnZS5qc29uXG4gIGlmIChhcmdzLmNvbmZpZykge1xuICAgIGlmIChzdGFuZGxvbmVPcHRpb25zKSB7XG4gICAgICBpZiAocGtnLmF3c2xpbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdhd3NsaW50IG9wdGlvbnMgaW4gcGFja2FnZS5qc29uIHdpbGwgYmUgaWdub3JlZCBzaW5jZSBhd3NsaW50Lmpzb24gZXhpc3RzLicpO1xuICAgICAgfVxuICAgICAgbWVyZ2VPcHRpb25zKGFyZ3MsIHN0YW5kbG9uZU9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZU9wdGlvbnMoYXJncywgcGtnLmF3c2xpbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhcmdzLmRlYnVnKSB7XG4gICAgY29uc29sZS5lcnJvcignY29tbWFuZDogJyArIGNvbW1hbmQpO1xuICAgIGNvbnNvbGUuZXJyb3IoJ29wdGlvbnM6ICcgKyBKU09OLnN0cmluZ2lmeShhcmdzLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIGlmIChjb21tYW5kID09PSAnbGludCcpIHtcbiAgICBjb25zdCBhc3NlbWJseSA9IGF3YWl0IGxvYWRNb2R1bGUod29ya2Rpcik7XG4gICAgaWYgKCFhc3NlbWJseSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4Y2x1ZGVzVG9TYXZlID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBsZXQgZXJyb3JzID0gMDtcblxuICAgIGNvbnN0IGluY2x1ZGVSdWxlcyA9IG5ldyBSdWxlRmlsdGVyU2V0KGFyZ3MuaW5jbHVkZSk7XG4gICAgY29uc3QgZXhjbHVkZVJ1bGVzID0gbmV3IFJ1bGVGaWx0ZXJTZXQoYXJncy5leGNsdWRlKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIHJlc3VsdHMucHVzaCguLi5BTExfUlVMRVNfTElOVEVSLmV2YWwoYXNzZW1ibHksIHtcbiAgICAgIGluY2x1ZGVSdWxlczogaW5jbHVkZVJ1bGVzLFxuICAgICAgZXhjbHVkZVJ1bGVzOiBleGNsdWRlUnVsZXMsXG4gICAgfSkpO1xuXG4gICAgLy8gU29ydCBlcnJvcnMgdG8gdGhlIHRvcCAoaGlnaGVzdCBzZXZlcml0eSBmaXJzdClcbiAgICByZXN1bHRzLnNvcnQoKGEsIGIpID0+IGIubGV2ZWwgLSBhLmxldmVsKTtcblxuICAgIC8vIHByb2Nlc3MgcmVzdWx0c1xuXG4gICAgZm9yIChjb25zdCBkaWFnIG9mIHJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IHN1cHByZXNzaW9uS2V5ID0gYCR7ZGlhZy5ydWxlLmNvZGV9OiR7ZGlhZy5zY29wZX1gO1xuXG4gICAgICBsZXQgY29sb3I7XG4gICAgICBzd2l0Y2ggKGRpYWcubGV2ZWwpIHtcbiAgICAgICAgY2FzZSBEaWFnbm9zdGljTGV2ZWwuU3VjY2VzczpcbiAgICAgICAgICBpZiAoYXJncy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLmdyYXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5FcnJvcjpcbiAgICAgICAgICBlcnJvcnMrKztcbiAgICAgICAgICBjb2xvciA9IGNoYWxrLnJlZDtcbiAgICAgICAgICBpZiAoYXJncy5zYXZlKSB7XG4gICAgICAgICAgICBleGNsdWRlc1RvU2F2ZS5wdXNoKHN1cHByZXNzaW9uS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLldhcm5pbmc6XG4gICAgICAgICAgaWYgKCFhcmdzLnF1aWV0KSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLnllbGxvdztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLlNraXBwZWQ6XG4gICAgICAgICAgaWYgKCFhcmdzLnF1aWV0KSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLmJsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihjb2xvcihgJHtEaWFnbm9zdGljTGV2ZWxbZGlhZy5sZXZlbF0udG9Mb3dlckNhc2UoKX06IFske2NoYWxrLmJvbGQoYGF3c2xpbnQ6JHtkaWFnLnJ1bGUuY29kZX1gKX06JHtjaGFsay5ib2xkKGRpYWcuc2NvcGUpfV0gJHtkaWFnLm1lc3NhZ2V9YCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleGNsdWRlc1RvU2F2ZS5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoc3RhbmRsb25lT3B0aW9ucykge1xuICAgICAgICBpZiAoIXN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSkge1xuICAgICAgICAgIHN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXBrZy5hd3NsaW50KSB7XG4gICAgICAgICAgcGtnLmF3c2xpbnQgPSB7IH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBrZy5hd3NsaW50LmV4Y2x1ZGUpIHtcbiAgICAgICAgICBwa2cuYXdzbGludC5leGNsdWRlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhjbHVkZXM6IHN0cmluZ1tdID0gc3RhbmRsb25lT3B0aW9ucyA/IHN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSA6IHBrZy5hd3NsaW50LmV4Y2x1ZGU7XG5cbiAgICAgIGZvciAoY29uc3QgZXhjbHVkZSBvZiBleGNsdWRlc1RvU2F2ZSkge1xuICAgICAgICBpZiAoZXhjbHVkZXMuaW5kZXhPZihleGNsdWRlKSA9PT0gLTEpIHtcbiAgICAgICAgICBleGNsdWRlcy5wdXNoKGV4Y2x1ZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChleGNsdWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChzdGFuZGxvbmVPcHRpb25zKSB7XG4gICAgICAgICAgLy8gSWYgYXdzbGludC5qc29uIGV4aXN0cywgd3JpdGUgdGhlIGV4Y2x1ZGVzIHRoZXJlIGluc3RlYWQgb2YgdGhlIG9sZCBwYWNrYWdlLmpzb24gKGxlZ2FjeSBmb3JtYXQpLlxuICAgICAgICAgIGlmIChwa2cuYXdzbGludCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeGNsdWRlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gYXdzbGludC5qc29uLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBmcy53cml0ZUpTT04oYXdzbGludENvbmZpZywgc3RhbmRsb25lT3B0aW9ucywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgZnMud3JpdGVKU09OKHBrZ0NvbmZpZywgcGtnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMgJiYgIWFyZ3Muc2F2ZSkge1xuICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXJndi5zaG93SGVscCgpO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNob3VsZENvbXBpbGUoKSB7XG4gICAgLy8gaWYgLS1jb21waWxlIGlzIGV4cGxpY2l0bHkgZW5hYmxlZCB0aGVuIGp1c3QgY29tcGlsZSBhbHdheXNcbiAgICBpZiAoYXJncy5jb21waWxlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBoYXZlIGEgLmpzaWkgZmlsZSBhbmQgd2UgYXJlIG5vdCBmb3JjZWQgdG8gY29tcGlsZSwgdGhlbiBkb24ndCBjb21waWxlXG4gICAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtkaXIsICcuanNpaScpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHdlIGRvbid0IGhhdmUgYSAuanNpaSBmaWxlLCBhbmQgLS1uby1jb21waWxlIGlzIGV4cGxpY2lseSBzZXQsIHRoZW4gaXQncyBhbiBlcnJvclxuICAgIGlmIChhcmdzLmNvbXBpbGUgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIC5qc2lpIGZpbGUgYW5kIC0tbm8tY29tcGlsZSBpcyBzZXQnKTtcbiAgICB9XG5cbiAgICAvLyBjb21waWxlIVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgY29uc29sZS5lcnJvcihjaGFsay5yZWQoZS5tZXNzYWdlKSk7XG4gIGlmIChzdGFja1RyYWNlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLnN0YWNrKTtcbiAgfVxuICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkTW9kdWxlKGRpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRzID0gbmV3IHJlZmxlY3QuVHlwZVN5c3RlbSgpO1xuICBhd2FpdCB0cy5sb2FkKGRpciwge1xuICAgIHZhbGlkYXRlOiBmYWxzZSwgLy8gRG9uJ3QgdmFsaWRhdGUgdG8gc2F2ZSA2NiUgb2YgZXhlY3V0aW9uIHRpbWUgKDIwcyB2cyAxbWluKS5cbiAgICBzdXBwb3J0ZWRGZWF0dXJlczogWydpbnRlcnNlY3Rpb24tdHlwZXMnLCAnY2xhc3MtY292YXJpYW50LW92ZXJyaWRlcyddLFxuICB9KTtcbiAgLy8gV2UgcnVuICdhd3NsaW50JyBkdXJpbmcgYnVpbGQgdGltZSwgYXNzZW1ibGllcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBvay5cblxuICAvLyBXZSB3b24ndCBsb2FkIGFueSBtb3JlIGFzc2VtYmxpZXMuIExvY2sgdGhlIHR5cGVzeXN0ZW0gdG8gYmVuZWZpdCBmcm9tIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy5cbiAgdHMubG9jaygpO1xuXG4gIGlmICh0cy5yb290cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGluZyBvbmx5IGEgc2luZ2xlIHJvb3QgYXNzZW1ibHknKTtcbiAgfVxuXG4gIHJldHVybiB0cy5yb290c1swXTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlc3Q6IGFueSwgcGtnPzogYW55KSB7XG4gIGlmICghcGtnKSB7IHJldHVybjsgfSAvLyBubyBvcHRpb25zIGluIHBhY2thZ2UuanNvblxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBrZykpIHtcbiAgICAvLyBpZiB0aGlzIGlzIGFuIGFycmF5IG9wdGlvbiwgdGhlbiBhZGQgdmFsdWVzIHRvIGRlc3RpbmF0aW9uXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb25zdCBhcnIgPSBkZXN0W2tleV0gfHwgW107XG4gICAgICBhcnIucHVzaCguLi52YWx1ZSk7XG4gICAgICBkZXN0W2tleV0gPSBhcnI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBvYmplY3RzIGFyZSBub3QgYWxsb3dlZFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgb3B0aW9uIFwiJHtrZXl9XCIgaW4gcGFja2FnZS5qc29uOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgICB9XG5cbiAgICAvLyBwcmltaXRpdmVzIHNpbXBseSBvdmVycmlkZVxuICAgIGRlc3Rba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRTdGFuZGFsb25lT3B0aW9ucyhhd3NsaW50Q29uZmlnOiBzdHJpbmcpIHtcbiAgaWYgKCFhd2FpdCBmcy5wYXRoRXhpc3RzKGF3c2xpbnRDb25maWcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZzLnJlYWRKU09OKGF3c2xpbnRDb25maWcpO1xuICByZXR1cm4gb3B0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2hlbGwoY29tbWFuZDogc3RyaW5nKSB7XG4gIGNvbnN0IGNoaWxkID0gY2hpbGRfcHJvY2Vzcy5zcGF3bihjb21tYW5kLCBbXSwgeyBzdGRpbzogWydpbmhlcml0JywgJ2luaGVyaXQnLCAnaW5oZXJpdCddIH0pO1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKG9rLCBrbykgPT4ge1xuICAgIGNoaWxkLm9uY2UoJ2V4aXQnLCAoc3RhdHVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9rKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga28obmV3IEVycm9yKGAke2NvbW1hbmR9IGV4aXRlZCB3aXRoIHN0YXR1cyAke3N0YXR1c31gKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2hpbGQub25jZSgnZXJyb3InLCBrbyk7XG4gIH0pO1xufVxuIl19
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzbGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2xpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwrQ0FBK0M7QUFDL0MsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0Isd0NBQXdDO0FBQ3hDLCtCQUErQjtBQUMvQixnQ0FBMEU7QUFFMUUsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBRXZCLEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sSUFBSSxHQUFHLEtBQUs7U0FDZixHQUFHLENBQUMsU0FBUyxDQUFDO1NBQ2QsS0FBSyxDQUFDLDZCQUE2QixDQUFDO1NBQ3BDLGNBQWMsQ0FBQyxJQUFJLENBQUM7U0FDcEIsT0FBTyxDQUFDLElBQUksRUFBRSxtQ0FBbUMsQ0FBQztTQUNsRCxPQUFPLENBQUMsTUFBTSxFQUFFLDBCQUEwQixDQUFDO1NBQzNDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDcEcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsNkRBQTZELEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ2xJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxxR0FBcUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDaEssTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsd0NBQXdDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ2xILE1BQU0sQ0FBQyxP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QUssQ0FBQyxHQUFHLE9BQU8sdUJBQXVCLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgcmVmbGVjdCBmcm9tICdqc2lpLXJlZmxlY3QnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgQUxMX1JVTEVTX0xJTlRFUiwgRGlhZ25vc3RpY0xldmVsLCBSdWxlRmlsdGVyU2V0IH0gZnJvbSAnLi4vbGliJztcblxubGV0IHN0YWNrVHJhY2UgPSBmYWxzZTtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJndiA9IHlhcmdzXG4gICAgLmVudignQVdTTElOVCcpXG4gICAgLnVzYWdlKCdhd3NsaW50IFtvcHRpb25zXSBbY29tbWFuZF0nKVxuICAgIC5zaG93SGVscE9uRmFpbCh0cnVlKVxuICAgIC5jb21tYW5kKCckMCcsICdsaW50IHRoZSBjdXJyZW50IG1vZHVsZSAoZGVmYXVsdCknKVxuICAgIC5jb21tYW5kKCdsaXN0JywgJ2xpc3QgYWxsIGF2YWlsYWJsZSBydWxlcycpXG4gICAgLm9wdGlvbignaW5jbHVkZScsIHsgYWxpYXM6ICdpJywgdHlwZTogJ2FycmF5JywgZGVzYzogJ2V2YWx1YXRlIG9ubHkgdGhpcyBydWxlKHMpJywgZGVmYXVsdDogWycqJ10gfSlcbiAgICAub3B0aW9uKCdleGNsdWRlJywgeyBhbGlhczogJ3gnLCB0eXBlOiAnYXJyYXknLCBkZXNjOiAnZG8gbm90IGV2YWx1YXRlIHRoZXNlIHJ1bGVzICh0YWtlcyBwcmlvcml0eSBvdmVyIC0taW5jbHVkZSknLCBkZWZhdWx0OiBbXSB9KVxuICAgIC5vcHRpb24oJ3NhdmUnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3VwZGF0ZXMgcGFja2FnZS5qc29uIChvciBhd3NsaW50Lmpzb24gaWYgaXQgZXhpc3RzKSB3aXRoIFwiZXhjbHVkZVwiIHN0YXRlbWVudHMgZm9yIGFsbCBmYWlsaW5nIHJ1bGVzJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAub3B0aW9uKCd2ZXJib3NlJywgeyBhbGlhczogJ3YnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICd2ZXJib3NlIG91dHB1dCAocHJpbnRzIGFsbCBhc3NlcnRpb25zKScsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgLm9wdGlvbigncXVpZXQnLCB7IGFsaWFzOiAncScsIHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3F1aWV0IG1vZGUgLSBzaG93cyBvbmx5IGVycm9ycycsIGRlZmF1bHQ6IHRydWUgfSlcbiAgICAub3B0aW9uKCdmb3JjZScsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnc3VjY2VlZCBzaWxlbnRseSBpZiB0aGlzIGlzIG5vdCBhIGpzaWkgbW9kdWxlJywgZGVmYXVsdDogdHJ1ZSB9KVxuICAgIC5vcHRpb24oJ2NvbmZpZycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAncmVhZHMgb3B0aW9ucyBmcm9tIFwiYXdzbGludC5qc29uXCIgaWYgaXQgZXhpc3RzLCBhbmQgb3RoZXJ3aXNlIGZyb20gdGhlIFwiYXdzbGludFwiIHNlY3Rpb24gaW4gcGFja2FnZS5qc29uJywgZGVmYXVsdDogdHJ1ZSB9KVxuICAgIC5vcHRpb24oJ2RlYnVnJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdkZWJ1ZyBvdXRwdXQnLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgIC5vcHRpb24oJ2NvbXBpbGUnLCB7IGFsaWFzOiAnYycsIHR5cGU6ICdib29sZWFuJywgZGVzYzogJ2Fsd2F5cyBydW4gdGhlIGpzaWkgY29tcGlsZXIgKHVzZSBcIi0tbm8tY29tcGlsZVwiIHRvIG5ldmVyIHJ1biB0aGUgY29tcGlsZXIsIGV2ZW4gaWYgLmpzaWkgZG9lc25cXCd0IGV4aXN0KScgfSlcbiAgICAuZ3JvdXAoJ2luY2x1ZGUnLCAnRmlsdGVyaW5nJylcbiAgICAuZ3JvdXAoJ2V4Y2x1ZGUnLCAnRmlsdGVyaW5nJylcbiAgICAuZ3JvdXAoJ2NvbmZpZycsICdDb25maWd1cmF0aW9uJylcbiAgICAuZ3JvdXAoJ3NhdmUnLCAnQ29uZmlndXJhdGlvbicpXG4gICAgLmdyb3VwKCd2ZXJib3NlJywgJ091dHB1dCcpXG4gICAgLmdyb3VwKCdxdWlldCcsICdPdXRwdXQnKVxuICAgIC5ncm91cCgnZGVidWcnLCAnT3V0cHV0JylcbiAgICAuZ3JvdXAoJ2NvbXBpbGUnLCAnQnVpbGQnKVxuICAgIC5leGFtcGxlKCdhd3NsaW50JywgJ2xpbnRzIHRoZSBjdXJyZW50IG1vZHVsZSBhZ2FpbnN0IGFsbCBydWxlcycpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQgLXYgLWkgXCJyZXNvdXJjZSpcIiAtaSBcImltcG9ydCpcIicsICdsaW50cyBhZ2FpbnN0IGFsbCBydWxlcyB0aGF0IHN0YXJ0IHdpdGggXCJyZXNvdXJjZVwiIG9yIFwiaW1wb3J0XCIgYW5kIHByaW50IHN1Y2Nlc3NlcycpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQgLXggXCIqOkBhd3MtY2RrL2F3cy1zMypcIicsICdldmFsdWF0ZSBhbGwgcnVsZXMgaW4gYWxsIHNjb3BlcyBiZXNpZGVzIG9uZXMgdGhhdCBiZWdpbiB3aXRoIFwiQGF3cy1jZGsvYXdzLXMzXCInKVxuICAgIC5leGFtcGxlKCdhd3NsaW50IC0tc2F2ZScsICd1cGRhdGVkIFwiYXdzbGludC5qc29uXCIgd2l0aCBcImV4Y2x1ZGVcInMgZm9yIGFsbCBmYWlsaW5nIHJ1bGVzJyk7XG5cbiAgaWYgKCFwcm9jZXNzLnN0ZG91dC5pc1RUWSkge1xuICAgIC8vIERpc2FibGUgY2hhbGsgY29sb3IgaGlnaGxpZ2h0aW5nXG4gICAgcHJvY2Vzcy5lbnYuRk9SQ0VfQ09MT1IgPSAnMCc7XG4gIH1cblxuICBjb25zdCBhcmdzID0gYXJndi5hcmd2O1xuXG4gIHN0YWNrVHJhY2UgPSBhcmdzLnZlcmJvc2UgfHwgYXJncy5kZWJ1ZztcblxuICBpZiAoYXJncy5fLmxlbmd0aCA+IDEpIHtcbiAgICBhcmd2LnNob3dIZWxwKCk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29tbWFuZCA9IGFyZ3MuX1swXSB8fCAnbGludCc7XG4gIGNvbnN0IHdvcmtkaXIgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIGNvbnN0IHBrZ0NvbmZpZyA9IHBhdGguam9pbih3b3JrZGlyLCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IGF3c2xpbnRDb25maWcgPSBwYXRoLmpvaW4od29ya2RpciwgJ2F3c2xpbnQuanNvbicpO1xuXG4gIGlmIChjb21tYW5kID09PSAnbGlzdCcpIHtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgQUxMX1JVTEVTX0xJTlRFUi5ydWxlcykge1xuICAgICAgY29uc29sZS5pbmZvKGAke2NoYWxrLmN5YW4ocnVsZS5jb2RlKX06ICR7cnVsZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBpZiBubyBwYWNrYWdlLmpzb24gYW5kIGZvcmNlIGlzIHRydWUgKGRlZmF1bHQpLCBqdXN0IGRvbid0IGRvIGFueXRoaW5nXG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhwa2dDb25maWcpICYmIGFyZ3MuZm9yY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwa2cgPSBhd2FpdCBmcy5yZWFkSlNPTihwa2dDb25maWcpO1xuXG4gIC8vIGlmIHRoaXMgaXMgbm90IGEganNpaSBtb2R1bGUgd2UgaGF2ZSBub3RoaW5nIHRvIGxvb2sgZm9yXG4gIGlmICghcGtnLmpzaWkpIHtcbiAgICBpZiAoYXJncy5mb3JjZSkge1xuICAgICAgcmV0dXJuOyAvLyBqdXN0IHNpbGVudGx5IHN1Y2NlZWRcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBpbiAke3dvcmtkaXJ9IGlzIG5vdCBhIGpzaWkgbW9kdWxlIChubyBcImpzaWlcIiBzZWN0aW9uIGluIHBhY2thZ2UuanNvbilgKTtcbiAgfVxuXG4gIC8vIGlmIHBhY2thZ2UuanNvbiBjb250YWlucyBhIGBqc2lpYCBzZWN0aW9uIGJ1dCB0aGVyZSBpcyBubyAuanNpaSBmaWxlXG4gIC8vIGl0IG1lYW5zIHdlIGhhdmVuJ3QgY29tcGlsZWQgdGhlIG1vZHVsZS5cbiAgaWYgKGF3YWl0IHNob3VsZENvbXBpbGUoKSkge1xuICAgIGF3YWl0IHNoZWxsKCdqc2lpJyk7XG4gIH1cblxuICAvLyBhd3NsaW50Lmpzb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHBhY2thZ2UuanNvbiBmb3IgYXdzbGludCBvcHRpb25zLlxuICBjb25zdCBzdGFuZGxvbmVPcHRpb25zID0gYXdhaXQgcmVhZFN0YW5kYWxvbmVPcHRpb25zKGF3c2xpbnRDb25maWcpO1xuXG4gIC8vIHJlYWQgXCJhd3NsaW50XCIgZnJvbSBwYWNrYWdlLmpzb25cbiAgaWYgKGFyZ3MuY29uZmlnKSB7XG4gICAgaWYgKHN0YW5kbG9uZU9wdGlvbnMpIHtcbiAgICAgIGlmIChwa2cuYXdzbGludCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2F3c2xpbnQgb3B0aW9ucyBpbiBwYWNrYWdlLmpzb24gd2lsbCBiZSBpZ25vcmVkIHNpbmNlIGF3c2xpbnQuanNvbiBleGlzdHMuJyk7XG4gICAgICB9XG4gICAgICBtZXJnZU9wdGlvbnMoYXJncywgc3RhbmRsb25lT3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlT3B0aW9ucyhhcmdzLCBwa2cuYXdzbGludCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGFyZ3MuZGVidWcpIHtcbiAgICBjb25zb2xlLmVycm9yKCdjb21tYW5kOiAnICsgY29tbWFuZCk7XG4gICAgY29uc29sZS5lcnJvcignb3B0aW9uczogJyArIEpTT04uc3RyaW5naWZ5KGFyZ3MsIHVuZGVmaW5lZCwgMikpO1xuICB9XG5cbiAgaWYgKGNvbW1hbmQgPT09ICdsaW50Jykge1xuICAgIGNvbnN0IGFzc2VtYmx5ID0gYXdhaXQgbG9hZE1vZHVsZSh3b3JrZGlyKTtcbiAgICBpZiAoIWFzc2VtYmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXhjbHVkZXNUb1NhdmUgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGxldCBlcnJvcnMgPSAwO1xuXG4gICAgY29uc3QgaW5jbHVkZVJ1bGVzID0gbmV3IFJ1bGVGaWx0ZXJTZXQoYXJncy5pbmNsdWRlKTtcbiAgICBjb25zdCBleGNsdWRlUnVsZXMgPSBuZXcgUnVsZUZpbHRlclNldChhcmdzLmV4Y2x1ZGUpO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gICAgcmVzdWx0cy5wdXNoKC4uLkFMTF9SVUxFU19MSU5URVIuZXZhbChhc3NlbWJseSwge1xuICAgICAgaW5jbHVkZVJ1bGVzOiBpbmNsdWRlUnVsZXMsXG4gICAgICBleGNsdWRlUnVsZXM6IGV4Y2x1ZGVSdWxlcyxcbiAgICB9KSk7XG5cbiAgICAvLyBTb3J0IGVycm9ycyB0byB0aGUgdG9wIChoaWdoZXN0IHNldmVyaXR5IGZpcnN0KVxuICAgIHJlc3VsdHMuc29ydCgoYSwgYikgPT4gYi5sZXZlbCAtIGEubGV2ZWwpO1xuXG4gICAgLy8gcHJvY2VzcyByZXN1bHRzXG5cbiAgICBmb3IgKGNvbnN0IGRpYWcgb2YgcmVzdWx0cykge1xuICAgICAgY29uc3Qgc3VwcHJlc3Npb25LZXkgPSBgJHtkaWFnLnJ1bGUuY29kZX06JHtkaWFnLnNjb3BlfWA7XG5cbiAgICAgIGxldCBjb2xvcjtcbiAgICAgIHN3aXRjaCAoZGlhZy5sZXZlbCkge1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5TdWNjZXNzOlxuICAgICAgICAgIGlmIChhcmdzLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGNvbG9yID0gY2hhbGsuZ3JheTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLkVycm9yOlxuICAgICAgICAgIGVycm9ycysrO1xuICAgICAgICAgIGNvbG9yID0gY2hhbGsucmVkO1xuICAgICAgICAgIGlmIChhcmdzLnNhdmUpIHtcbiAgICAgICAgICAgIGV4Y2x1ZGVzVG9TYXZlLnB1c2goc3VwcHJlc3Npb25LZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBEaWFnbm9zdGljTGV2ZWwuV2FybmluZzpcbiAgICAgICAgICBpZiAoIWFyZ3MucXVpZXQpIHtcbiAgICAgICAgICAgIGNvbG9yID0gY2hhbGsueWVsbG93O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBEaWFnbm9zdGljTGV2ZWwuU2tpcHBlZDpcbiAgICAgICAgICBpZiAoIWFyZ3MucXVpZXQpIHtcbiAgICAgICAgICAgIGNvbG9yID0gY2hhbGsuYmx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2xvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNvbG9yKGAke0RpYWdub3N0aWNMZXZlbFtkaWFnLmxldmVsXS50b0xvd2VyQ2FzZSgpfTogWyR7Y2hhbGsuYm9sZChgYXdzbGludDoke2RpYWcucnVsZS5jb2RlfWApfToke2NoYWxrLmJvbGQoZGlhZy5zY29wZSl9XSAke2RpYWcubWVzc2FnZX1gKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4Y2x1ZGVzVG9TYXZlLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChzdGFuZGxvbmVPcHRpb25zKSB7XG4gICAgICAgIGlmICghc3RhbmRsb25lT3B0aW9ucy5leGNsdWRlKSB7XG4gICAgICAgICAgc3RhbmRsb25lT3B0aW9ucy5leGNsdWRlID0gW107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghcGtnLmF3c2xpbnQpIHtcbiAgICAgICAgICBwa2cuYXdzbGludCA9IHsgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGtnLmF3c2xpbnQuZXhjbHVkZSkge1xuICAgICAgICAgIHBrZy5hd3NsaW50LmV4Y2x1ZGUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBleGNsdWRlczogc3RyaW5nW10gPSBzdGFuZGxvbmVPcHRpb25zID8gc3RhbmRsb25lT3B0aW9ucy5leGNsdWRlIDogcGtnLmF3c2xpbnQuZXhjbHVkZTtcblxuICAgICAgZm9yIChjb25zdCBleGNsdWRlIG9mIGV4Y2x1ZGVzVG9TYXZlKSB7XG4gICAgICAgIGlmIChleGNsdWRlcy5pbmRleE9mKGV4Y2x1ZGUpID09PSAtMSkge1xuICAgICAgICAgIGV4Y2x1ZGVzLnB1c2goZXhjbHVkZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGV4Y2x1ZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHN0YW5kbG9uZU9wdGlvbnMpIHtcbiAgICAgICAgICAvLyBJZiBhd3NsaW50Lmpzb24gZXhpc3RzLCB3cml0ZSB0aGUgZXhjbHVkZXMgdGhlcmUgaW5zdGVhZCBvZiB0aGUgb2xkIHBhY2thZ2UuanNvbiAobGVnYWN5IGZvcm1hdCkuXG4gICAgICAgICAgaWYgKHBrZy5hd3NsaW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0V4Y2x1ZGVzIHdpbGwgYmUgd3JpdHRlbiB0byBhd3NsaW50Lmpzb24uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGZzLndyaXRlSlNPTihhd3NsaW50Q29uZmlnLCBzdGFuZGxvbmVPcHRpb25zLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCBmcy53cml0ZUpTT04ocGtnQ29uZmlnLCBwa2csIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycyAmJiAhYXJncy5zYXZlKSB7XG4gICAgICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBhcmd2LnNob3dIZWxwKCk7XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb21tYW5kOiAke2NvbW1hbmR9YCk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2hvdWxkQ29tcGlsZSgpIHtcbiAgICAvLyBpZiAtLWNvbXBpbGUgaXMgZXhwbGljaXRseSBlbmFibGVkIHRoZW4ganVzdCBjb21waWxlIGFsd2F5c1xuICAgIGlmIChhcmdzLmNvbXBpbGUgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgYSAuanNpaSBmaWxlIGFuZCB3ZSBhcmUgbm90IGZvcmNlZCB0byBjb21waWxlLCB0aGVuIGRvbid0IGNvbXBpbGVcbiAgICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya2RpciwgJy5qc2lpJykpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gd2UgZG9uJ3QgaGF2ZSBhIC5qc2lpIGZpbGUsIGFuZCAtLW5vLWNvbXBpbGUgaXMgZXhwbGljaWx5IHNldCwgdGhlbiBpdCdzIGFuIGVycm9yXG4gICAgaWYgKGFyZ3MuY29tcGlsZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gLmpzaWkgZmlsZSBhbmQgLS1uby1jb21waWxlIGlzIHNldCcpO1xuICAgIH1cblxuICAgIC8vIGNvbXBpbGUhXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlLm1lc3NhZ2UpKTtcbiAgaWYgKHN0YWNrVHJhY2UpIHtcbiAgICBjb25zb2xlLmVycm9yKGUuc3RhY2spO1xuICB9XG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGUoZGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgdHMgPSBuZXcgcmVmbGVjdC5UeXBlU3lzdGVtKCk7XG4gIGF3YWl0IHRzLmxvYWQoZGlyLCB7XG4gICAgdmFsaWRhdGU6IGZhbHNlLCAvLyBEb24ndCB2YWxpZGF0ZSB0byBzYXZlIDY2JSBvZiBleGVjdXRpb24gdGltZSAoMjBzIHZzIDFtaW4pLlxuICAgIHN1cHBvcnRlZEZlYXR1cmVzOiBbJ2ludGVyc2VjdGlvbi10eXBlcycsICdjbGFzcy1jb3ZhcmlhbnQtb3ZlcnJpZGVzJ10sXG4gIH0pO1xuICAvLyBXZSBydW4gJ2F3c2xpbnQnIGR1cmluZyBidWlsZCB0aW1lLCBhc3NlbWJsaWVzIGFyZSBndWFyYW50ZWVkIHRvIGJlIG9rLlxuXG4gIC8vIFdlIHdvbid0IGxvYWQgYW55IG1vcmUgYXNzZW1ibGllcy4gTG9jayB0aGUgdHlwZXN5c3RlbSB0byBiZW5lZml0IGZyb20gcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLlxuICB0cy5sb2NrKCk7XG5cbiAgaWYgKHRzLnJvb3RzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0aW5nIG9ubHkgYSBzaW5nbGUgcm9vdCBhc3NlbWJseScpO1xuICB9XG5cbiAgcmV0dXJuIHRzLnJvb3RzWzBdO1xufVxuXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMoZGVzdDogYW55LCBwa2c/OiBhbnkpIHtcbiAgaWYgKCFwa2cpIHsgcmV0dXJuOyB9IC8vIG5vIG9wdGlvbnMgaW4gcGFja2FnZS5qc29uXG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGtnKSkge1xuICAgIC8vIGlmIHRoaXMgaXMgYW4gYXJyYXkgb3B0aW9uLCB0aGVuIGFkZCB2YWx1ZXMgdG8gZGVzdGluYXRpb25cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGFyciA9IGRlc3Rba2V5XSB8fCBbXTtcbiAgICAgIGFyci5wdXNoKC4uLnZhbHVlKTtcbiAgICAgIGRlc3Rba2V5XSA9IGFycjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIG9iamVjdHMgYXJlIG5vdCBhbGxvd2VkXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBvcHRpb24gXCIke2tleX1cIiBpbiBwYWNrYWdlLmpzb246ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICAgIH1cblxuICAgIC8vIHByaW1pdGl2ZXMgc2ltcGx5IG92ZXJyaWRlXG4gICAgZGVzdFtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN0YW5kYWxvbmVPcHRpb25zKGF3c2xpbnRDb25maWc6IHN0cmluZykge1xuICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMoYXdzbGludENvbmZpZykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvcHRpb25zID0gYXdhaXQgZnMucmVhZEpTT04oYXdzbGludENvbmZpZyk7XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaGVsbChjb21tYW5kOiBzdHJpbmcpIHtcbiAgY29uc3QgY2hpbGQgPSBjaGlsZF9wcm9jZXNzLnNwYXduKGNvbW1hbmQsIFtdLCB7IHN0ZGlvOiBbJ2luaGVyaXQnLCAnaW5oZXJpdCcsICdpbmhlcml0J10gfSk7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigob2ssIGtvKSA9PiB7XG4gICAgY2hpbGQub25jZSgnZXhpdCcsIChzdGF0dXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBrbyhuZXcgRXJyb3IoYCR7Y29tbWFuZH0gZXhpdGVkIHdpdGggc3RhdHVzICR7c3RhdHVzfWApKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGtvKTtcbiAgfSk7XG59XG4iXX0=
|
package/bin/awslint.ts
CHANGED
package/lib/rules/index.js
CHANGED
|
@@ -17,5 +17,6 @@ const public_static_properties_1 = require("./public-static-properties");
|
|
|
17
17
|
const resource_1 = require("./resource");
|
|
18
18
|
const linter_1 = require("../linter");
|
|
19
19
|
const grant_methods_1 = require("./grant-methods");
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const l2_interfaces_1 = require("./l2-interfaces");
|
|
21
|
+
exports.ALL_RULES_LINTER = new linter_1.AggregateLinter(module_1.moduleLinter, construct_1.constructLinter, cfn_resource_1.cfnResourceLinter, resource_1.resourceLinter, api_1.apiLinter, imports_1.importsLinter, attributes_1.attributesLinter, exports_1.exportsLinter, cloudwatch_events_1.eventsLinter, integrations_1.integrationLinter, no_unused_type_1.noUnusedTypeLinter, durations_1.durationsLinter, public_static_properties_1.publicStaticPropertiesLinter, docs_1.docsLinter, grant_methods_1.grantsMethodsLinter, l2_interfaces_1.l2InterfaceLinter);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBa0M7QUFDbEMsNkNBQWdEO0FBQ2hELGlEQUFtRDtBQUNuRCwyREFBbUQ7QUFDbkQsMkNBQThDO0FBQzlDLGlDQUFvQztBQUNwQywyQ0FBOEM7QUFDOUMsdUNBQTBDO0FBQzFDLHVDQUEwQztBQUMxQyxpREFBbUQ7QUFDbkQscUNBQXdDO0FBQ3hDLHFEQUFzRDtBQUN0RCx5RUFBMEU7QUFDMUUseUNBQTRDO0FBQzVDLHNDQUE0QztBQUM1QyxtREFBc0Q7QUFDdEQsbURBQW9EO0FBRXZDLFFBQUEsZ0JBQWdCLEdBQUcsSUFBSSx3QkFBZSxDQUNqRCxxQkFBWSxFQUNaLDJCQUFlLEVBQ2YsZ0NBQWlCLEVBQ2pCLHlCQUFjLEVBQ2QsZUFBUyxFQUNULHVCQUFhLEVBQ2IsNkJBQWdCLEVBQ2hCLHVCQUFhLEVBQ2IsZ0NBQVksRUFDWixnQ0FBaUIsRUFDakIsbUNBQWtCLEVBQ2xCLDJCQUFlLEVBQ2YsdURBQTRCLEVBQzVCLGlCQUFVLEVBQ1YsbUNBQW1CLEVBQ25CLGlDQUFpQixDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBpTGludGVyIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgYXR0cmlidXRlc0xpbnRlciB9IGZyb20gJy4vYXR0cmlidXRlcyc7XG5pbXBvcnQgeyBjZm5SZXNvdXJjZUxpbnRlciB9IGZyb20gJy4vY2ZuLXJlc291cmNlJztcbmltcG9ydCB7IGV2ZW50c0xpbnRlciB9IGZyb20gJy4vY2xvdWR3YXRjaC1ldmVudHMnO1xuaW1wb3J0IHsgY29uc3RydWN0TGludGVyIH0gZnJvbSAnLi9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgZG9jc0xpbnRlciB9IGZyb20gJy4vZG9jcyc7XG5pbXBvcnQgeyBkdXJhdGlvbnNMaW50ZXIgfSBmcm9tICcuL2R1cmF0aW9ucyc7XG5pbXBvcnQgeyBleHBvcnRzTGludGVyIH0gZnJvbSAnLi9leHBvcnRzJztcbmltcG9ydCB7IGltcG9ydHNMaW50ZXIgfSBmcm9tICcuL2ltcG9ydHMnO1xuaW1wb3J0IHsgaW50ZWdyYXRpb25MaW50ZXIgfSBmcm9tICcuL2ludGVncmF0aW9ucyc7XG5pbXBvcnQgeyBtb2R1bGVMaW50ZXIgfSBmcm9tICcuL21vZHVsZSc7XG5pbXBvcnQgeyBub1VudXNlZFR5cGVMaW50ZXIgfSBmcm9tICcuL25vLXVudXNlZC10eXBlJztcbmltcG9ydCB7IHB1YmxpY1N0YXRpY1Byb3BlcnRpZXNMaW50ZXIgfSBmcm9tICcuL3B1YmxpYy1zdGF0aWMtcHJvcGVydGllcyc7XG5pbXBvcnQgeyByZXNvdXJjZUxpbnRlciB9IGZyb20gJy4vcmVzb3VyY2UnO1xuaW1wb3J0IHsgQWdncmVnYXRlTGludGVyIH0gZnJvbSAnLi4vbGludGVyJztcbmltcG9ydCB7IGdyYW50c01ldGhvZHNMaW50ZXIgfSBmcm9tICcuL2dyYW50LW1ldGhvZHMnO1xuaW1wb3J0IHsgbDJJbnRlcmZhY2VMaW50ZXIgfSBmcm9tICcuL2wyLWludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgQUxMX1JVTEVTX0xJTlRFUiA9IG5ldyBBZ2dyZWdhdGVMaW50ZXIoXG4gIG1vZHVsZUxpbnRlcixcbiAgY29uc3RydWN0TGludGVyLFxuICBjZm5SZXNvdXJjZUxpbnRlcixcbiAgcmVzb3VyY2VMaW50ZXIsXG4gIGFwaUxpbnRlcixcbiAgaW1wb3J0c0xpbnRlcixcbiAgYXR0cmlidXRlc0xpbnRlcixcbiAgZXhwb3J0c0xpbnRlcixcbiAgZXZlbnRzTGludGVyLFxuICBpbnRlZ3JhdGlvbkxpbnRlcixcbiAgbm9VbnVzZWRUeXBlTGludGVyLFxuICBkdXJhdGlvbnNMaW50ZXIsXG4gIHB1YmxpY1N0YXRpY1Byb3BlcnRpZXNMaW50ZXIsXG4gIGRvY3NMaW50ZXIsXG4gIGdyYW50c01ldGhvZHNMaW50ZXIsXG4gIGwySW50ZXJmYWNlTGludGVyLFxuKTtcbiJdfQ==
|
package/lib/rules/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { publicStaticPropertiesLinter } from './public-static-properties';
|
|
|
14
14
|
import { resourceLinter } from './resource';
|
|
15
15
|
import { AggregateLinter } from '../linter';
|
|
16
16
|
import { grantsMethodsLinter } from './grant-methods';
|
|
17
|
+
import { l2InterfaceLinter } from './l2-interfaces';
|
|
17
18
|
|
|
18
19
|
export const ALL_RULES_LINTER = new AggregateLinter(
|
|
19
20
|
moduleLinter,
|
|
@@ -31,4 +32,5 @@ export const ALL_RULES_LINTER = new AggregateLinter(
|
|
|
31
32
|
publicStaticPropertiesLinter,
|
|
32
33
|
docsLinter,
|
|
33
34
|
grantsMethodsLinter,
|
|
35
|
+
l2InterfaceLinter,
|
|
34
36
|
);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.l2InterfaceLinter = void 0;
|
|
4
|
+
const linter_1 = require("../linter");
|
|
5
|
+
const INTERFACE_EXTENDS_REF = 'interface-extends-ref';
|
|
6
|
+
// lint all interfaces that are L2 interfaces
|
|
7
|
+
exports.l2InterfaceLinter = new linter_1.Linter(asm => {
|
|
8
|
+
const iResource = asm.system.findInterface('aws-cdk-lib.IResource');
|
|
9
|
+
return asm.allInterfaces.filter(i => i !== iResource && i.extends(iResource));
|
|
10
|
+
});
|
|
11
|
+
exports.l2InterfaceLinter.add({
|
|
12
|
+
code: INTERFACE_EXTENDS_REF,
|
|
13
|
+
message: 'L2 interface API should also extend the corresponding Ref interface (`interface IXxx extends IXxxRef`)',
|
|
14
|
+
eval: e => {
|
|
15
|
+
const bases = e.ctx.getInterfaces(true);
|
|
16
|
+
e.assert(bases.some(b => b.name.endsWith('Ref')), e.ctx.fqn);
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDItaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImwyLWludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQW1DO0FBRW5DLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUM7QUFFdEQsNkNBQTZDO0FBQ2hDLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxlQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDaEQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVwRSxPQUFPLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFDLENBQUM7QUFFSCx5QkFBaUIsQ0FBQyxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixPQUFPLEVBQUUsd0dBQXdHO0lBQ2pILElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludGVyIH0gZnJvbSAnLi4vbGludGVyJztcblxuY29uc3QgSU5URVJGQUNFX0VYVEVORFNfUkVGID0gJ2ludGVyZmFjZS1leHRlbmRzLXJlZic7XG5cbi8vIGxpbnQgYWxsIGludGVyZmFjZXMgdGhhdCBhcmUgTDIgaW50ZXJmYWNlc1xuZXhwb3J0IGNvbnN0IGwySW50ZXJmYWNlTGludGVyID0gbmV3IExpbnRlcihhc20gPT4ge1xuICBjb25zdCBpUmVzb3VyY2UgPSBhc20uc3lzdGVtLmZpbmRJbnRlcmZhY2UoJ2F3cy1jZGstbGliLklSZXNvdXJjZScpO1xuXG4gIHJldHVybiBhc20uYWxsSW50ZXJmYWNlcy5maWx0ZXIoaSA9PiBpICE9PSBpUmVzb3VyY2UgJiYgaS5leHRlbmRzKGlSZXNvdXJjZSkpO1xufSk7XG5cbmwySW50ZXJmYWNlTGludGVyLmFkZCh7XG4gIGNvZGU6IElOVEVSRkFDRV9FWFRFTkRTX1JFRixcbiAgbWVzc2FnZTogJ0wyIGludGVyZmFjZSBBUEkgc2hvdWxkIGFsc28gZXh0ZW5kIHRoZSBjb3JyZXNwb25kaW5nIFJlZiBpbnRlcmZhY2UgKGBpbnRlcmZhY2UgSVh4eCBleHRlbmRzIElYeHhSZWZgKScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IGJhc2VzID0gZS5jdHguZ2V0SW50ZXJmYWNlcyh0cnVlKTtcblxuICAgIGUuYXNzZXJ0KGJhc2VzLnNvbWUoYiA9PiBiLm5hbWUuZW5kc1dpdGgoJ1JlZicpKSwgZS5jdHguZnFuKTtcbiAgfSxcbn0pO1xuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Linter } from '../linter';
|
|
2
|
+
|
|
3
|
+
const INTERFACE_EXTENDS_REF = 'interface-extends-ref';
|
|
4
|
+
|
|
5
|
+
// lint all interfaces that are L2 interfaces
|
|
6
|
+
export const l2InterfaceLinter = new Linter(asm => {
|
|
7
|
+
const iResource = asm.system.findInterface('aws-cdk-lib.IResource');
|
|
8
|
+
|
|
9
|
+
return asm.allInterfaces.filter(i => i !== iResource && i.extends(iResource));
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
l2InterfaceLinter.add({
|
|
13
|
+
code: INTERFACE_EXTENDS_REF,
|
|
14
|
+
message: 'L2 interface API should also extend the corresponding Ref interface (`interface IXxx extends IXxxRef`)',
|
|
15
|
+
eval: e => {
|
|
16
|
+
const bases = e.ctx.getInterfaces(true);
|
|
17
|
+
|
|
18
|
+
e.assert(bases.some(b => b.name.endsWith('Ref')), e.ctx.fqn);
|
|
19
|
+
},
|
|
20
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "awslint",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.236.0-alpha.0",
|
|
4
4
|
"description": "Enforces the AWS Construct Library guidelines",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc -b && eslint && pkglint && chmod +x bin/awslint",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"yargs": "^16.2.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@aws-cdk/eslint-config": "2.
|
|
30
|
-
"@aws-cdk/pkglint": "2.
|
|
29
|
+
"@aws-cdk/eslint-config": "2.236.0-alpha.0",
|
|
30
|
+
"@aws-cdk/pkglint": "2.236.0-alpha.0",
|
|
31
31
|
"@types/fs-extra": "^9.0.13",
|
|
32
32
|
"@types/jest": "^29.5.14",
|
|
33
33
|
"@types/yargs": "^15.0.20",
|