awslint 2.110.1-alpha.0 → 2.112.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 +7 -4
- package/bin/awslint.ts +7 -3
- package/lib/case.d.ts +2 -0
- package/lib/case.js +19 -0
- package/lib/case.ts +18 -0
- package/lib/rules/api.js +2 -2
- package/lib/rules/api.ts +1 -1
- package/lib/rules/cfn-resource.js +3 -3
- package/lib/rules/cfn-resource.ts +2 -2
- package/lib/rules/construct.d.ts +0 -4
- package/lib/rules/construct.js +4 -12
- package/lib/rules/construct.ts +3 -16
- package/lib/rules/core-types.d.ts +32 -2
- package/lib/rules/core-types.js +40 -15
- package/lib/rules/core-types.ts +44 -15
- package/lib/rules/imports.js +3 -5
- package/lib/rules/imports.ts +2 -4
- package/lib/rules/resource.js +11 -12
- package/lib/rules/resource.ts +10 -11
- package/lib/rules/util.js +5 -4
- package/lib/rules/util.ts +4 -3
- package/package.json +10 -10
package/bin/awslint.js
CHANGED
|
@@ -46,7 +46,8 @@ async function main() {
|
|
|
46
46
|
stackTrace = args.verbose || args.debug;
|
|
47
47
|
if (args._.length > 1) {
|
|
48
48
|
argv.showHelp();
|
|
49
|
-
process.
|
|
49
|
+
process.exitCode = 1;
|
|
50
|
+
return;
|
|
50
51
|
}
|
|
51
52
|
const command = args._[0] || 'lint';
|
|
52
53
|
const workdir = process.cwd();
|
|
@@ -175,7 +176,7 @@ async function main() {
|
|
|
175
176
|
}
|
|
176
177
|
}
|
|
177
178
|
if (errors && !args.save) {
|
|
178
|
-
process.
|
|
179
|
+
process.exitCode = 1;
|
|
179
180
|
}
|
|
180
181
|
return;
|
|
181
182
|
}
|
|
@@ -203,12 +204,14 @@ main().catch(e => {
|
|
|
203
204
|
if (stackTrace) {
|
|
204
205
|
console.error(e.stack);
|
|
205
206
|
}
|
|
206
|
-
process.
|
|
207
|
+
process.exitCode = 1;
|
|
207
208
|
});
|
|
208
209
|
async function loadModule(dir) {
|
|
209
210
|
const ts = new reflect.TypeSystem();
|
|
210
211
|
await ts.load(dir, { validate: false }); // Don't validate to save 66% of execution time (20s vs 1min).
|
|
211
212
|
// We run 'awslint' during build time, assemblies are guaranteed to be ok.
|
|
213
|
+
// We won't load any more assemblies. Lock the typesystem to benefit from performance improvements.
|
|
214
|
+
ts.lock();
|
|
212
215
|
if (ts.roots.length !== 1) {
|
|
213
216
|
throw new Error('Expecting only a single root assembly');
|
|
214
217
|
}
|
|
@@ -256,4 +259,4 @@ async function shell(command) {
|
|
|
256
259
|
child.once('error', ko);
|
|
257
260
|
});
|
|
258
261
|
}
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzbGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2xpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQix3Q0FBd0M7QUFDeEMsK0JBQStCO0FBQy9CLGdDQUEwRTtBQUUxRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFFdkIsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxJQUFJLEdBQUcsS0FBSztTQUNmLEdBQUcsQ0FBQyxTQUFTLENBQUM7U0FDZCxLQUFLLENBQUMsNkJBQTZCLENBQUM7U0FDcEMsY0FBYyxDQUFDLElBQUksQ0FBQztTQUNwQixPQUFPLENBQUMsSUFBSSxFQUFFLG1DQUFtQyxDQUFDO1NBQ2xELE9BQU8sQ0FBQyxNQUFNLEVBQUUsMEJBQTBCLENBQUM7U0FDM0MsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUNwRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSw2REFBNkQsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDbEksTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLHFHQUFxRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNoSyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSx3Q0FBd0MsRUFBRSxPQUFPLEVBQUUsS0FBSyxF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Q0FBQztBQUVELEtBQUssVUFBVSxLQUFLLENBQUMsT0FBZTtJQUNsQyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDakMsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNoQixPQUFPLEVBQUUsRUFBRSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxPQUFPLHVCQUF1QixNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDakU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgcmVmbGVjdCBmcm9tICdqc2lpLXJlZmxlY3QnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgQUxMX1JVTEVTX0xJTlRFUiwgRGlhZ25vc3RpY0xldmVsLCBSdWxlRmlsdGVyU2V0IH0gZnJvbSAnLi4vbGliJztcblxubGV0IHN0YWNrVHJhY2UgPSBmYWxzZTtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJndiA9IHlhcmdzXG4gICAgLmVudignQVdTTElOVCcpXG4gICAgLnVzYWdlKCdhd3NsaW50IFtvcHRpb25zXSBbY29tbWFuZF0nKVxuICAgIC5zaG93SGVscE9uRmFpbCh0cnVlKVxuICAgIC5jb21tYW5kKCckMCcsICdsaW50IHRoZSBjdXJyZW50IG1vZHVsZSAoZGVmYXVsdCknKVxuICAgIC5jb21tYW5kKCdsaXN0JywgJ2xpc3QgYWxsIGF2YWlsYWJsZSBydWxlcycpXG4gICAgLm9wdGlvbignaW5jbHVkZScsIHsgYWxpYXM6ICdpJywgdHlwZTogJ2FycmF5JywgZGVzYzogJ2V2YWx1YXRlIG9ubHkgdGhpcyBydWxlKHMpJywgZGVmYXVsdDogWycqJ10gfSlcbiAgICAub3B0aW9uKCdleGNsdWRlJywgeyBhbGlhczogJ3gnLCB0eXBlOiAnYXJyYXknLCBkZXNjOiAnZG8gbm90IGV2YWx1YXRlIHRoZXNlIHJ1bGVzICh0YWtlcyBwcmlvcml0eSBvdmVyIC0taW5jbHVkZSknLCBkZWZhdWx0OiBbXSB9KVxuICAgIC5vcHRpb24oJ3NhdmUnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3VwZGF0ZXMgcGFja2FnZS5qc29uIChvciBhd3NsaW50Lmpzb24gaWYgaXQgZXhpc3RzKSB3aXRoIFwiZXhjbHVkZVwiIHN0YXRlbWVudHMgZm9yIGFsbCBmYWlsaW5nIHJ1bGVzJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAub3B0aW9uKCd2ZXJib3NlJywgeyBhbGlhczogJ3YnLCB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICd2ZXJib3NlIG91dHB1dCAocHJpbnRzIGFsbCBhc3NlcnRpb25zKScsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgLm9wdGlvbigncXVpZXQnLCB7IGFsaWFzOiAncScsIHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3F1aWV0IG1vZGUgLSBzaG93cyBvbmx5IGVycm9ycycsIGRlZmF1bHQ6IHRydWUgfSlcbiAgICAub3B0aW9uKCdmb3JjZScsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnc3VjY2VlZCBzaWxlbnRseSBpZiB0aGlzIGlzIG5vdCBhIGpzaWkgbW9kdWxlJywgZGVmYXVsdDogdHJ1ZSB9KVxuICAgIC5vcHRpb24oJ2NvbmZpZycsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAncmVhZHMgb3B0aW9ucyBmcm9tIFwiYXdzbGludC5qc29uXCIgaWYgaXQgZXhpc3RzLCBhbmQgb3RoZXJ3aXNlIGZyb20gdGhlIFwiYXdzbGludFwiIHNlY3Rpb24gaW4gcGFja2FnZS5qc29uJywgZGVmYXVsdDogdHJ1ZSB9KVxuICAgIC5vcHRpb24oJ2RlYnVnJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdkZWJ1ZyBvdXRwdXQnLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgIC5vcHRpb24oJ2NvbXBpbGUnLCB7IGFsaWFzOiAnYycsIHR5cGU6ICdib29sZWFuJywgZGVzYzogJ2Fsd2F5cyBydW4gdGhlIGpzaWkgY29tcGlsZXIgKHVzZSBcIi0tbm8tY29tcGlsZVwiIHRvIG5ldmVyIHJ1biB0aGUgY29tcGlsZXIsIGV2ZW4gaWYgLmpzaWkgZG9lc25cXCd0IGV4aXN0KScgfSlcbiAgICAuZ3JvdXAoJ2luY2x1ZGUnLCAnRmlsdGVyaW5nJylcbiAgICAuZ3JvdXAoJ2V4Y2x1ZGUnLCAnRmlsdGVyaW5nJylcbiAgICAuZ3JvdXAoJ2NvbmZpZycsICdDb25maWd1cmF0aW9uJylcbiAgICAuZ3JvdXAoJ3NhdmUnLCAnQ29uZmlndXJhdGlvbicpXG4gICAgLmdyb3VwKCd2ZXJib3NlJywgJ091dHB1dCcpXG4gICAgLmdyb3VwKCdxdWlldCcsICdPdXRwdXQnKVxuICAgIC5ncm91cCgnZGVidWcnLCAnT3V0cHV0JylcbiAgICAuZ3JvdXAoJ2NvbXBpbGUnLCAnQnVpbGQnKVxuICAgIC5leGFtcGxlKCdhd3NsaW50JywgJ2xpbnRzIHRoZSBjdXJyZW50IG1vZHVsZSBhZ2FpbnN0IGFsbCBydWxlcycpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQgLXYgLWkgXCJyZXNvdXJjZSpcIiAtaSBcImltcG9ydCpcIicsICdsaW50cyBhZ2FpbnN0IGFsbCBydWxlcyB0aGF0IHN0YXJ0IHdpdGggXCJyZXNvdXJjZVwiIG9yIFwiaW1wb3J0XCIgYW5kIHByaW50IHN1Y2Nlc3NlcycpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQgLXggXCIqOkBhd3MtY2RrL2F3cy1zMypcIicsICdldmFsdWF0ZSBhbGwgcnVsZXMgaW4gYWxsIHNjb3BlcyBiZXNpZGVzIG9uZXMgdGhhdCBiZWdpbiB3aXRoIFwiQGF3cy1jZGsvYXdzLXMzXCInKVxuICAgIC5leGFtcGxlKCdhd3NsaW50IC0tc2F2ZScsICd1cGRhdGVkIFwiYXdzbGludC5qc29uXCIgd2l0aCBcImV4Y2x1ZGVcInMgZm9yIGFsbCBmYWlsaW5nIHJ1bGVzJyk7XG5cbiAgaWYgKCFwcm9jZXNzLnN0ZG91dC5pc1RUWSkge1xuICAgIC8vIERpc2FibGUgY2hhbGsgY29sb3IgaGlnaGxpZ2h0aW5nXG4gICAgcHJvY2Vzcy5lbnYuRk9SQ0VfQ09MT1IgPSAnMCc7XG4gIH1cblxuICBjb25zdCBhcmdzID0gYXJndi5hcmd2O1xuXG4gIHN0YWNrVHJhY2UgPSBhcmdzLnZlcmJvc2UgfHwgYXJncy5kZWJ1ZztcblxuICBpZiAoYXJncy5fLmxlbmd0aCA+IDEpIHtcbiAgICBhcmd2LnNob3dIZWxwKCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgY29uc3QgY29tbWFuZCA9IGFyZ3MuX1swXSB8fCAnbGludCc7XG4gIGNvbnN0IHdvcmtkaXIgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIGNvbnN0IHBrZ0NvbmZpZyA9IHBhdGguam9pbih3b3JrZGlyLCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IGF3c2xpbnRDb25maWcgPSBwYXRoLmpvaW4od29ya2RpciwgJ2F3c2xpbnQuanNvbicpO1xuXG4gIGlmIChjb21tYW5kID09PSAnbGlzdCcpIHtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgQUxMX1JVTEVTX0xJTlRFUi5ydWxlcykge1xuICAgICAgY29uc29sZS5pbmZvKGAke2NoYWxrLmN5YW4ocnVsZS5jb2RlKX06ICR7cnVsZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBpZiBubyBwYWNrYWdlLmpzb24gYW5kIGZvcmNlIGlzIHRydWUgKGRlZmF1bHQpLCBqdXN0IGRvbid0IGRvIGFueXRoaW5nXG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhwa2dDb25maWcpICYmIGFyZ3MuZm9yY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwa2cgPSBhd2FpdCBmcy5yZWFkSlNPTihwa2dDb25maWcpO1xuXG4gIC8vIGlmIHRoaXMgaXMgbm90IGEganNpaSBtb2R1bGUgd2UgaGF2ZSBub3RoaW5nIHRvIGxvb2sgZm9yXG4gIGlmICghcGtnLmpzaWkpIHtcbiAgICBpZiAoYXJncy5mb3JjZSkge1xuICAgICAgcmV0dXJuOyAvLyBqdXN0IHNpbGVudGx5IHN1Y2NlZWRcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBpbiAke3dvcmtkaXJ9IGlzIG5vdCBhIGpzaWkgbW9kdWxlIChubyBcImpzaWlcIiBzZWN0aW9uIGluIHBhY2thZ2UuanNvbilgKTtcbiAgfVxuXG4gIC8vIGlmIHBhY2thZ2UuanNvbiBjb250YWlucyBhIGBqc2lpYCBzZWN0aW9uIGJ1dCB0aGVyZSBpcyBubyAuanNpaSBmaWxlXG4gIC8vIGl0IG1lYW5zIHdlIGhhdmVuJ3QgY29tcGlsZWQgdGhlIG1vZHVsZS5cbiAgaWYgKGF3YWl0IHNob3VsZENvbXBpbGUoKSkge1xuICAgIGF3YWl0IHNoZWxsKCdqc2lpJyk7XG4gIH1cblxuICAvLyBhd3NsaW50Lmpzb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHBhY2thZ2UuanNvbiBmb3IgYXdzbGludCBvcHRpb25zLlxuICBjb25zdCBzdGFuZGxvbmVPcHRpb25zID0gYXdhaXQgcmVhZFN0YW5kYWxvbmVPcHRpb25zKGF3c2xpbnRDb25maWcpO1xuXG4gIC8vIHJlYWQgXCJhd3NsaW50XCIgZnJvbSBwYWNrYWdlLmpzb25cbiAgaWYgKGFyZ3MuY29uZmlnKSB7XG4gICAgaWYgKHN0YW5kbG9uZU9wdGlvbnMpIHtcbiAgICAgIGlmIChwa2cuYXdzbGludCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2F3c2xpbnQgb3B0aW9ucyBpbiBwYWNrYWdlLmpzb24gd2lsbCBiZSBpZ25vcmVkIHNpbmNlIGF3c2xpbnQuanNvbiBleGlzdHMuJyk7XG4gICAgICB9XG4gICAgICBtZXJnZU9wdGlvbnMoYXJncywgc3RhbmRsb25lT3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlT3B0aW9ucyhhcmdzLCBwa2cuYXdzbGludCk7XG4gICAgfVxuICB9XG5cblxuICBpZiAoYXJncy5kZWJ1Zykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ2NvbW1hbmQ6ICcgKyBjb21tYW5kKTtcbiAgICBjb25zb2xlLmVycm9yKCdvcHRpb25zOiAnICsgSlNPTi5zdHJpbmdpZnkoYXJncywgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICBpZiAoY29tbWFuZCA9PT0gJ2xpbnQnKSB7XG4gICAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCBsb2FkTW9kdWxlKHdvcmtkaXIpO1xuICAgIGlmICghYXNzZW1ibHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleGNsdWRlc1RvU2F2ZSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgbGV0IGVycm9ycyA9IDA7XG5cbiAgICBjb25zdCBpbmNsdWRlUnVsZXMgPSBuZXcgUnVsZUZpbHRlclNldChhcmdzLmluY2x1ZGUpO1xuICAgIGNvbnN0IGV4Y2x1ZGVSdWxlcyA9IG5ldyBSdWxlRmlsdGVyU2V0KGFyZ3MuZXhjbHVkZSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICByZXN1bHRzLnB1c2goLi4uQUxMX1JVTEVTX0xJTlRFUi5ldmFsKGFzc2VtYmx5LCB7XG4gICAgICBpbmNsdWRlUnVsZXM6IGluY2x1ZGVSdWxlcyxcbiAgICAgIGV4Y2x1ZGVSdWxlczogZXhjbHVkZVJ1bGVzLFxuICAgIH0pKTtcblxuICAgIC8vIFNvcnQgZXJyb3JzIHRvIHRoZSB0b3AgKGhpZ2hlc3Qgc2V2ZXJpdHkgZmlyc3QpXG4gICAgcmVzdWx0cy5zb3J0KChhLCBiKSA9PiBiLmxldmVsIC0gYS5sZXZlbCk7XG5cbiAgICAvLyBwcm9jZXNzIHJlc3VsdHNcblxuICAgIGZvciAoY29uc3QgZGlhZyBvZiByZXN1bHRzKSB7XG4gICAgICBjb25zdCBzdXBwcmVzc2lvbktleSA9IGAke2RpYWcucnVsZS5jb2RlfToke2RpYWcuc2NvcGV9YDtcblxuICAgICAgbGV0IGNvbG9yO1xuICAgICAgc3dpdGNoIChkaWFnLmxldmVsKSB7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLlN1Y2Nlc3M6XG4gICAgICAgICAgaWYgKGFyZ3MudmVyYm9zZSkge1xuICAgICAgICAgICAgY29sb3IgPSBjaGFsay5ncmF5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBEaWFnbm9zdGljTGV2ZWwuRXJyb3I6XG4gICAgICAgICAgZXJyb3JzKys7XG4gICAgICAgICAgY29sb3IgPSBjaGFsay5yZWQ7XG4gICAgICAgICAgaWYgKGFyZ3Muc2F2ZSkge1xuICAgICAgICAgICAgZXhjbHVkZXNUb1NhdmUucHVzaChzdXBwcmVzc2lvbktleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5XYXJuaW5nOlxuICAgICAgICAgIGlmICghYXJncy5xdWlldCkge1xuICAgICAgICAgICAgY29sb3IgPSBjaGFsay55ZWxsb3c7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5Ta2lwcGVkOlxuICAgICAgICAgIGlmICghYXJncy5xdWlldCkge1xuICAgICAgICAgICAgY29sb3IgPSBjaGFsay5ibHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoY29sb3IoYCR7RGlhZ25vc3RpY0xldmVsW2RpYWcubGV2ZWxdLnRvTG93ZXJDYXNlKCl9OiBbJHtjaGFsay5ib2xkKGBhd3NsaW50OiR7ZGlhZy5ydWxlLmNvZGV9YCl9OiR7Y2hhbGsuYm9sZChkaWFnLnNjb3BlKX1dICR7ZGlhZy5tZXNzYWdlfWApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhjbHVkZXNUb1NhdmUubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHN0YW5kbG9uZU9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFzdGFuZGxvbmVPcHRpb25zLmV4Y2x1ZGUpIHtcbiAgICAgICAgICBzdGFuZGxvbmVPcHRpb25zLmV4Y2x1ZGUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwa2cuYXdzbGludCkge1xuICAgICAgICAgIHBrZy5hd3NsaW50ID0geyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwa2cuYXdzbGludC5leGNsdWRlKSB7XG4gICAgICAgICAgcGtnLmF3c2xpbnQuZXhjbHVkZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4Y2x1ZGVzOiBzdHJpbmdbXSA9IHN0YW5kbG9uZU9wdGlvbnMgPyBzdGFuZGxvbmVPcHRpb25zLmV4Y2x1ZGUgOiBwa2cuYXdzbGludC5leGNsdWRlO1xuXG4gICAgICBmb3IgKGNvbnN0IGV4Y2x1ZGUgb2YgZXhjbHVkZXNUb1NhdmUpIHtcbiAgICAgICAgaWYgKGV4Y2x1ZGVzLmluZGV4T2YoZXhjbHVkZSkgPT09IC0xKSB7XG4gICAgICAgICAgZXhjbHVkZXMucHVzaChleGNsdWRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZXhjbHVkZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoc3RhbmRsb25lT3B0aW9ucykge1xuICAgICAgICAgIC8vIElmIGF3c2xpbnQuanNvbiBleGlzdHMsIHdyaXRlIHRoZSBleGNsdWRlcyB0aGVyZSBpbnN0ZWFkIG9mIHRoZSBvbGQgcGFja2FnZS5qc29uIChsZWdhY3kgZm9ybWF0KS5cbiAgICAgICAgICBpZiAocGtnLmF3c2xpbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXhjbHVkZXMgd2lsbCBiZSB3cml0dGVuIHRvIGF3c2xpbnQuanNvbi4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgZnMud3JpdGVKU09OKGF3c2xpbnRDb25maWcsIHN0YW5kbG9uZU9wdGlvbnMsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGZzLndyaXRlSlNPTihwa2dDb25maWcsIHBrZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzICYmICFhcmdzLnNhdmUpIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBhcmd2LnNob3dIZWxwKCk7XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb21tYW5kOiAke2NvbW1hbmR9YCk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2hvdWxkQ29tcGlsZSgpIHtcblxuICAgIC8vIGlmIC0tY29tcGlsZSBpcyBleHBsaWNpdGx5IGVuYWJsZWQgdGhlbiBqdXN0IGNvbXBpbGUgYWx3YXlzXG4gICAgaWYgKGFyZ3MuY29tcGlsZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gaWYgd2UgaGF2ZSBhIC5qc2lpIGZpbGUgYW5kIHdlIGFyZSBub3QgZm9yY2VkIHRvIGNvbXBpbGUsIHRoZW4gZG9uJ3QgY29tcGlsZVxuICAgIGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrZGlyLCAnLmpzaWknKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyB3ZSBkb24ndCBoYXZlIGEgLmpzaWkgZmlsZSwgYW5kIC0tbm8tY29tcGlsZSBpcyBleHBsaWNpbHkgc2V0LCB0aGVuIGl0J3MgYW4gZXJyb3JcbiAgICBpZiAoYXJncy5jb21waWxlID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyAuanNpaSBmaWxlIGFuZCAtLW5vLWNvbXBpbGUgaXMgc2V0Jyk7XG4gICAgfVxuXG4gICAgLy8gY29tcGlsZSFcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgY29uc29sZS5lcnJvcihjaGFsay5yZWQoZS5tZXNzYWdlKSk7XG4gIGlmIChzdGFja1RyYWNlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLnN0YWNrKTtcbiAgfVxuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZE1vZHVsZShkaXI6IHN0cmluZykge1xuICBjb25zdCB0cyA9IG5ldyByZWZsZWN0LlR5cGVTeXN0ZW0oKTtcbiAgYXdhaXQgdHMubG9hZChkaXIsIHsgdmFsaWRhdGU6IGZhbHNlIH0pOyAvLyBEb24ndCB2YWxpZGF0ZSB0byBzYXZlIDY2JSBvZiBleGVjdXRpb24gdGltZSAoMjBzIHZzIDFtaW4pLlxuICAvLyBXZSBydW4gJ2F3c2xpbnQnIGR1cmluZyBidWlsZCB0aW1lLCBhc3NlbWJsaWVzIGFyZSBndWFyYW50ZWVkIHRvIGJlIG9rLlxuXG4gIGlmICh0cy5yb290cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGluZyBvbmx5IGEgc2luZ2xlIHJvb3QgYXNzZW1ibHknKTtcbiAgfVxuXG4gIHJldHVybiB0cy5yb290c1swXTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlc3Q6IGFueSwgcGtnPzogYW55KSB7XG4gIGlmICghcGtnKSB7IHJldHVybjsgfSAvLyBubyBvcHRpb25zIGluIHBhY2thZ2UuanNvblxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBrZykpIHtcblxuICAgIC8vIGlmIHRoaXMgaXMgYW4gYXJyYXkgb3B0aW9uLCB0aGVuIGFkZCB2YWx1ZXMgdG8gZGVzdGluYXRpb25cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGFyciA9IGRlc3Rba2V5XSB8fCBbXTtcbiAgICAgIGFyci5wdXNoKC4uLnZhbHVlKTtcbiAgICAgIGRlc3Rba2V5XSA9IGFycjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIG9iamVjdHMgYXJlIG5vdCBhbGxvd2VkXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBvcHRpb24gXCIke2tleX1cIiBpbiBwYWNrYWdlLmpzb246ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICAgIH1cblxuICAgIC8vIHByaW1pdGl2ZXMgc2ltcGx5IG92ZXJyaWRlXG4gICAgZGVzdFtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN0YW5kYWxvbmVPcHRpb25zKGF3c2xpbnRDb25maWc6IHN0cmluZykge1xuICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMoYXdzbGludENvbmZpZykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvcHRpb25zID0gYXdhaXQgZnMucmVhZEpTT04oYXdzbGludENvbmZpZyk7XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaGVsbChjb21tYW5kOiBzdHJpbmcpIHtcbiAgY29uc3QgY2hpbGQgPSBjaGlsZF9wcm9jZXNzLnNwYXduKGNvbW1hbmQsIFtdLCB7IHN0ZGlvOiBbJ2luaGVyaXQnLCAnaW5oZXJpdCcsICdpbmhlcml0J10gfSk7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigob2ssIGtvKSA9PiB7XG4gICAgY2hpbGQub25jZSgnZXhpdCcsIChzdGF0dXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBrbyhuZXcgRXJyb3IoYCR7Y29tbWFuZH0gZXhpdGVkIHdpdGggc3RhdHVzICR7c3RhdHVzfWApKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGtvKTtcbiAgfSk7XG59XG4iXX0=
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzbGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2xpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQix3Q0FBd0M7QUFDeEMsK0JBQStCO0FBQy9CLGdDQUEwRTtBQUUxRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFFdkIsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxJQUFJLEdBQUcsS0FBSztTQUNmLEdBQUcsQ0FBQyxTQUFTLENBQUM7U0FDZCxLQUFLLENBQUMsNkJBQTZCLENBQUM7U0FDcEMsY0FBYyxDQUFDLElBQUksQ0FBQztTQUNwQixPQUFPLENBQUMsSUFBSSxFQUFFLG1DQUFtQyxDQUFDO1NBQ2xELE9BQU8sQ0FBQyxNQUFNLEVBQUUsMEJBQTBCLENBQUM7U0FDM0MsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUNwRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSw2REFBNkQsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDbEksTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLHFHQUFxRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNoSyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSx3Q0FBd0MsRUFBRSxPQUFPLEVBQUUsS0FBSyxF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LENBQUMsQ0FBQztJQUNqRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsS0FBSyxVQUFVLEtBQUssQ0FBQyxPQUFlO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUNqQyxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2hCLE9BQU8sRUFBRSxFQUFFLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLE9BQU8sdUJBQXVCLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNqRTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgY2hpbGRfcHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBBTExfUlVMRVNfTElOVEVSLCBEaWFnbm9zdGljTGV2ZWwsIFJ1bGVGaWx0ZXJTZXQgfSBmcm9tICcuLi9saWInO1xuXG5sZXQgc3RhY2tUcmFjZSA9IGZhbHNlO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCBhcmd2ID0geWFyZ3NcbiAgICAuZW52KCdBV1NMSU5UJylcbiAgICAudXNhZ2UoJ2F3c2xpbnQgW29wdGlvbnNdIFtjb21tYW5kXScpXG4gICAgLnNob3dIZWxwT25GYWlsKHRydWUpXG4gICAgLmNvbW1hbmQoJyQwJywgJ2xpbnQgdGhlIGN1cnJlbnQgbW9kdWxlIChkZWZhdWx0KScpXG4gICAgLmNvbW1hbmQoJ2xpc3QnLCAnbGlzdCBhbGwgYXZhaWxhYmxlIHJ1bGVzJylcbiAgICAub3B0aW9uKCdpbmNsdWRlJywgeyBhbGlhczogJ2knLCB0eXBlOiAnYXJyYXknLCBkZXNjOiAnZXZhbHVhdGUgb25seSB0aGlzIHJ1bGUocyknLCBkZWZhdWx0OiBbJyonXSB9KVxuICAgIC5vcHRpb24oJ2V4Y2x1ZGUnLCB7IGFsaWFzOiAneCcsIHR5cGU6ICdhcnJheScsIGRlc2M6ICdkbyBub3QgZXZhbHVhdGUgdGhlc2UgcnVsZXMgKHRha2VzIHByaW9yaXR5IG92ZXIgLS1pbmNsdWRlKScsIGRlZmF1bHQ6IFtdIH0pXG4gICAgLm9wdGlvbignc2F2ZScsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAndXBkYXRlcyBwYWNrYWdlLmpzb24gKG9yIGF3c2xpbnQuanNvbiBpZiBpdCBleGlzdHMpIHdpdGggXCJleGNsdWRlXCIgc3RhdGVtZW50cyBmb3IgYWxsIGZhaWxpbmcgcnVsZXMnLCBkZWZhdWx0OiBmYWxzZSB9KVxuICAgIC5vcHRpb24oJ3ZlcmJvc2UnLCB7IGFsaWFzOiAndicsIHR5cGU6ICdib29sZWFuJywgZGVzYzogJ3ZlcmJvc2Ugb3V0cHV0IChwcmludHMgYWxsIGFzc2VydGlvbnMpJywgZGVmYXVsdDogZmFsc2UgfSlcbiAgICAub3B0aW9uKCdxdWlldCcsIHsgYWxpYXM6ICdxJywgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAncXVpZXQgbW9kZSAtIHNob3dzIG9ubHkgZXJyb3JzJywgZGVmYXVsdDogdHJ1ZSB9KVxuICAgIC5vcHRpb24oJ2ZvcmNlJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdzdWNjZWVkIHNpbGVudGx5IGlmIHRoaXMgaXMgbm90IGEganNpaSBtb2R1bGUnLCBkZWZhdWx0OiB0cnVlIH0pXG4gICAgLm9wdGlvbignY29uZmlnJywgeyB0eXBlOiAnYm9vbGVhbicsIGRlc2M6ICdyZWFkcyBvcHRpb25zIGZyb20gXCJhd3NsaW50Lmpzb25cIiBpZiBpdCBleGlzdHMsIGFuZCBvdGhlcndpc2UgZnJvbSB0aGUgXCJhd3NsaW50XCIgc2VjdGlvbiBpbiBwYWNrYWdlLmpzb24nLCBkZWZhdWx0OiB0cnVlIH0pXG4gICAgLm9wdGlvbignZGVidWcnLCB7IHR5cGU6ICdib29sZWFuJywgZGVzYzogJ2RlYnVnIG91dHB1dCcsIGRlZmF1bHQ6IGZhbHNlIH0pXG4gICAgLm9wdGlvbignY29tcGlsZScsIHsgYWxpYXM6ICdjJywgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjOiAnYWx3YXlzIHJ1biB0aGUganNpaSBjb21waWxlciAodXNlIFwiLS1uby1jb21waWxlXCIgdG8gbmV2ZXIgcnVuIHRoZSBjb21waWxlciwgZXZlbiBpZiAuanNpaSBkb2VzblxcJ3QgZXhpc3QpJyB9KVxuICAgIC5ncm91cCgnaW5jbHVkZScsICdGaWx0ZXJpbmcnKVxuICAgIC5ncm91cCgnZXhjbHVkZScsICdGaWx0ZXJpbmcnKVxuICAgIC5ncm91cCgnY29uZmlnJywgJ0NvbmZpZ3VyYXRpb24nKVxuICAgIC5ncm91cCgnc2F2ZScsICdDb25maWd1cmF0aW9uJylcbiAgICAuZ3JvdXAoJ3ZlcmJvc2UnLCAnT3V0cHV0JylcbiAgICAuZ3JvdXAoJ3F1aWV0JywgJ091dHB1dCcpXG4gICAgLmdyb3VwKCdkZWJ1ZycsICdPdXRwdXQnKVxuICAgIC5ncm91cCgnY29tcGlsZScsICdCdWlsZCcpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQnLCAnbGludHMgdGhlIGN1cnJlbnQgbW9kdWxlIGFnYWluc3QgYWxsIHJ1bGVzJylcbiAgICAuZXhhbXBsZSgnYXdzbGludCAtdiAtaSBcInJlc291cmNlKlwiIC1pIFwiaW1wb3J0KlwiJywgJ2xpbnRzIGFnYWluc3QgYWxsIHJ1bGVzIHRoYXQgc3RhcnQgd2l0aCBcInJlc291cmNlXCIgb3IgXCJpbXBvcnRcIiBhbmQgcHJpbnQgc3VjY2Vzc2VzJylcbiAgICAuZXhhbXBsZSgnYXdzbGludCAteCBcIio6QGF3cy1jZGsvYXdzLXMzKlwiJywgJ2V2YWx1YXRlIGFsbCBydWxlcyBpbiBhbGwgc2NvcGVzIGJlc2lkZXMgb25lcyB0aGF0IGJlZ2luIHdpdGggXCJAYXdzLWNkay9hd3MtczNcIicpXG4gICAgLmV4YW1wbGUoJ2F3c2xpbnQgLS1zYXZlJywgJ3VwZGF0ZWQgXCJhd3NsaW50Lmpzb25cIiB3aXRoIFwiZXhjbHVkZVwicyBmb3IgYWxsIGZhaWxpbmcgcnVsZXMnKTtcblxuICBpZiAoIXByb2Nlc3Muc3Rkb3V0LmlzVFRZKSB7XG4gICAgLy8gRGlzYWJsZSBjaGFsayBjb2xvciBoaWdobGlnaHRpbmdcbiAgICBwcm9jZXNzLmVudi5GT1JDRV9DT0xPUiA9ICcwJztcbiAgfVxuXG4gIGNvbnN0IGFyZ3MgPSBhcmd2LmFyZ3Y7XG5cbiAgc3RhY2tUcmFjZSA9IGFyZ3MudmVyYm9zZSB8fCBhcmdzLmRlYnVnO1xuXG4gIGlmIChhcmdzLl8ubGVuZ3RoID4gMSkge1xuICAgIGFyZ3Yuc2hvd0hlbHAoKTtcbiAgICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb21tYW5kID0gYXJncy5fWzBdIHx8ICdsaW50JztcbiAgY29uc3Qgd29ya2RpciA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgY29uc3QgcGtnQ29uZmlnID0gcGF0aC5qb2luKHdvcmtkaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgYXdzbGludENvbmZpZyA9IHBhdGguam9pbih3b3JrZGlyLCAnYXdzbGludC5qc29uJyk7XG5cbiAgaWYgKGNvbW1hbmQgPT09ICdsaXN0Jykge1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiBBTExfUlVMRVNfTElOVEVSLnJ1bGVzKSB7XG4gICAgICBjb25zb2xlLmluZm8oYCR7Y2hhbGsuY3lhbihydWxlLmNvZGUpfTogJHtydWxlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGlmIG5vIHBhY2thZ2UuanNvbiBhbmQgZm9yY2UgaXMgdHJ1ZSAoZGVmYXVsdCksIGp1c3QgZG9uJ3QgZG8gYW55dGhpbmdcbiAgaWYgKCFhd2FpdCBmcy5wYXRoRXhpc3RzKHBrZ0NvbmZpZykgJiYgYXJncy5mb3JjZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBrZyA9IGF3YWl0IGZzLnJlYWRKU09OKHBrZ0NvbmZpZyk7XG5cbiAgLy8gaWYgdGhpcyBpcyBub3QgYSBqc2lpIG1vZHVsZSB3ZSBoYXZlIG5vdGhpbmcgdG8gbG9vayBmb3JcbiAgaWYgKCFwa2cuanNpaSkge1xuICAgIGlmIChhcmdzLmZvcmNlKSB7XG4gICAgICByZXR1cm47IC8vIGp1c3Qgc2lsZW50bHkgc3VjY2VlZFxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgTW9kdWxlIGluICR7d29ya2Rpcn0gaXMgbm90IGEganNpaSBtb2R1bGUgKG5vIFwianNpaVwiIHNlY3Rpb24gaW4gcGFja2FnZS5qc29uKWApO1xuICB9XG5cbiAgLy8gaWYgcGFja2FnZS5qc29uIGNvbnRhaW5zIGEgYGpzaWlgIHNlY3Rpb24gYnV0IHRoZXJlIGlzIG5vIC5qc2lpIGZpbGVcbiAgLy8gaXQgbWVhbnMgd2UgaGF2ZW4ndCBjb21waWxlZCB0aGUgbW9kdWxlLlxuICBpZiAoYXdhaXQgc2hvdWxkQ29tcGlsZSgpKSB7XG4gICAgYXdhaXQgc2hlbGwoJ2pzaWknKTtcbiAgfVxuXG4gIC8vIGF3c2xpbnQuanNvbiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgcGFja2FnZS5qc29uIGZvciBhd3NsaW50IG9wdGlvbnMuXG4gIGNvbnN0IHN0YW5kbG9uZU9wdGlvbnMgPSBhd2FpdCByZWFkU3RhbmRhbG9uZU9wdGlvbnMoYXdzbGludENvbmZpZyk7XG5cbiAgLy8gcmVhZCBcImF3c2xpbnRcIiBmcm9tIHBhY2thZ2UuanNvblxuICBpZiAoYXJncy5jb25maWcpIHtcbiAgICBpZiAoc3RhbmRsb25lT3B0aW9ucykge1xuICAgICAgaWYgKHBrZy5hd3NsaW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignYXdzbGludCBvcHRpb25zIGluIHBhY2thZ2UuanNvbiB3aWxsIGJlIGlnbm9yZWQgc2luY2UgYXdzbGludC5qc29uIGV4aXN0cy4nKTtcbiAgICAgIH1cbiAgICAgIG1lcmdlT3B0aW9ucyhhcmdzLCBzdGFuZGxvbmVPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VPcHRpb25zKGFyZ3MsIHBrZy5hd3NsaW50KTtcbiAgICB9XG4gIH1cblxuXG4gIGlmIChhcmdzLmRlYnVnKSB7XG4gICAgY29uc29sZS5lcnJvcignY29tbWFuZDogJyArIGNvbW1hbmQpO1xuICAgIGNvbnNvbGUuZXJyb3IoJ29wdGlvbnM6ICcgKyBKU09OLnN0cmluZ2lmeShhcmdzLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIGlmIChjb21tYW5kID09PSAnbGludCcpIHtcbiAgICBjb25zdCBhc3NlbWJseSA9IGF3YWl0IGxvYWRNb2R1bGUod29ya2Rpcik7XG4gICAgaWYgKCFhc3NlbWJseSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4Y2x1ZGVzVG9TYXZlID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBsZXQgZXJyb3JzID0gMDtcblxuICAgIGNvbnN0IGluY2x1ZGVSdWxlcyA9IG5ldyBSdWxlRmlsdGVyU2V0KGFyZ3MuaW5jbHVkZSk7XG4gICAgY29uc3QgZXhjbHVkZVJ1bGVzID0gbmV3IFJ1bGVGaWx0ZXJTZXQoYXJncy5leGNsdWRlKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIHJlc3VsdHMucHVzaCguLi5BTExfUlVMRVNfTElOVEVSLmV2YWwoYXNzZW1ibHksIHtcbiAgICAgIGluY2x1ZGVSdWxlczogaW5jbHVkZVJ1bGVzLFxuICAgICAgZXhjbHVkZVJ1bGVzOiBleGNsdWRlUnVsZXMsXG4gICAgfSkpO1xuXG4gICAgLy8gU29ydCBlcnJvcnMgdG8gdGhlIHRvcCAoaGlnaGVzdCBzZXZlcml0eSBmaXJzdClcbiAgICByZXN1bHRzLnNvcnQoKGEsIGIpID0+IGIubGV2ZWwgLSBhLmxldmVsKTtcblxuICAgIC8vIHByb2Nlc3MgcmVzdWx0c1xuXG4gICAgZm9yIChjb25zdCBkaWFnIG9mIHJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IHN1cHByZXNzaW9uS2V5ID0gYCR7ZGlhZy5ydWxlLmNvZGV9OiR7ZGlhZy5zY29wZX1gO1xuXG4gICAgICBsZXQgY29sb3I7XG4gICAgICBzd2l0Y2ggKGRpYWcubGV2ZWwpIHtcbiAgICAgICAgY2FzZSBEaWFnbm9zdGljTGV2ZWwuU3VjY2VzczpcbiAgICAgICAgICBpZiAoYXJncy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLmdyYXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpYWdub3N0aWNMZXZlbC5FcnJvcjpcbiAgICAgICAgICBlcnJvcnMrKztcbiAgICAgICAgICBjb2xvciA9IGNoYWxrLnJlZDtcbiAgICAgICAgICBpZiAoYXJncy5zYXZlKSB7XG4gICAgICAgICAgICBleGNsdWRlc1RvU2F2ZS5wdXNoKHN1cHByZXNzaW9uS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLldhcm5pbmc6XG4gICAgICAgICAgaWYgKCFhcmdzLnF1aWV0KSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLnllbGxvdztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRGlhZ25vc3RpY0xldmVsLlNraXBwZWQ6XG4gICAgICAgICAgaWYgKCFhcmdzLnF1aWV0KSB7XG4gICAgICAgICAgICBjb2xvciA9IGNoYWxrLmJsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihjb2xvcihgJHtEaWFnbm9zdGljTGV2ZWxbZGlhZy5sZXZlbF0udG9Mb3dlckNhc2UoKX06IFske2NoYWxrLmJvbGQoYGF3c2xpbnQ6JHtkaWFnLnJ1bGUuY29kZX1gKX06JHtjaGFsay5ib2xkKGRpYWcuc2NvcGUpfV0gJHtkaWFnLm1lc3NhZ2V9YCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleGNsdWRlc1RvU2F2ZS5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoc3RhbmRsb25lT3B0aW9ucykge1xuICAgICAgICBpZiAoIXN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSkge1xuICAgICAgICAgIHN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXBrZy5hd3NsaW50KSB7XG4gICAgICAgICAgcGtnLmF3c2xpbnQgPSB7IH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBrZy5hd3NsaW50LmV4Y2x1ZGUpIHtcbiAgICAgICAgICBwa2cuYXdzbGludC5leGNsdWRlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhjbHVkZXM6IHN0cmluZ1tdID0gc3RhbmRsb25lT3B0aW9ucyA/IHN0YW5kbG9uZU9wdGlvbnMuZXhjbHVkZSA6IHBrZy5hd3NsaW50LmV4Y2x1ZGU7XG5cbiAgICAgIGZvciAoY29uc3QgZXhjbHVkZSBvZiBleGNsdWRlc1RvU2F2ZSkge1xuICAgICAgICBpZiAoZXhjbHVkZXMuaW5kZXhPZihleGNsdWRlKSA9PT0gLTEpIHtcbiAgICAgICAgICBleGNsdWRlcy5wdXNoKGV4Y2x1ZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChleGNsdWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChzdGFuZGxvbmVPcHRpb25zKSB7XG4gICAgICAgICAgLy8gSWYgYXdzbGludC5qc29uIGV4aXN0cywgd3JpdGUgdGhlIGV4Y2x1ZGVzIHRoZXJlIGluc3RlYWQgb2YgdGhlIG9sZCBwYWNrYWdlLmpzb24gKGxlZ2FjeSBmb3JtYXQpLlxuICAgICAgICAgIGlmIChwa2cuYXdzbGludCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeGNsdWRlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gYXdzbGludC5qc29uLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBmcy53cml0ZUpTT04oYXdzbGludENvbmZpZywgc3RhbmRsb25lT3B0aW9ucywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgZnMud3JpdGVKU09OKHBrZ0NvbmZpZywgcGtnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMgJiYgIWFyZ3Muc2F2ZSkge1xuICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXJndi5zaG93SGVscCgpO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNob3VsZENvbXBpbGUoKSB7XG5cbiAgICAvLyBpZiAtLWNvbXBpbGUgaXMgZXhwbGljaXRseSBlbmFibGVkIHRoZW4ganVzdCBjb21waWxlIGFsd2F5c1xuICAgIGlmIChhcmdzLmNvbXBpbGUgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgYSAuanNpaSBmaWxlIGFuZCB3ZSBhcmUgbm90IGZvcmNlZCB0byBjb21waWxlLCB0aGVuIGRvbid0IGNvbXBpbGVcbiAgICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya2RpciwgJy5qc2lpJykpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gd2UgZG9uJ3QgaGF2ZSBhIC5qc2lpIGZpbGUsIGFuZCAtLW5vLWNvbXBpbGUgaXMgZXhwbGljaWx5IHNldCwgdGhlbiBpdCdzIGFuIGVycm9yXG4gICAgaWYgKGFyZ3MuY29tcGlsZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gLmpzaWkgZmlsZSBhbmQgLS1uby1jb21waWxlIGlzIHNldCcpO1xuICAgIH1cblxuICAgIC8vIGNvbXBpbGUhXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGUubWVzc2FnZSkpO1xuICBpZiAoc3RhY2tUcmFjZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZS5zdGFjayk7XG4gIH1cbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZE1vZHVsZShkaXI6IHN0cmluZykge1xuICBjb25zdCB0cyA9IG5ldyByZWZsZWN0LlR5cGVTeXN0ZW0oKTtcbiAgYXdhaXQgdHMubG9hZChkaXIsIHsgdmFsaWRhdGU6IGZhbHNlIH0pOyAvLyBEb24ndCB2YWxpZGF0ZSB0byBzYXZlIDY2JSBvZiBleGVjdXRpb24gdGltZSAoMjBzIHZzIDFtaW4pLlxuICAvLyBXZSBydW4gJ2F3c2xpbnQnIGR1cmluZyBidWlsZCB0aW1lLCBhc3NlbWJsaWVzIGFyZSBndWFyYW50ZWVkIHRvIGJlIG9rLlxuXG4gIC8vIFdlIHdvbid0IGxvYWQgYW55IG1vcmUgYXNzZW1ibGllcy4gTG9jayB0aGUgdHlwZXN5c3RlbSB0byBiZW5lZml0IGZyb20gcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLlxuICB0cy5sb2NrKCk7XG5cbiAgaWYgKHRzLnJvb3RzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0aW5nIG9ubHkgYSBzaW5nbGUgcm9vdCBhc3NlbWJseScpO1xuICB9XG5cbiAgcmV0dXJuIHRzLnJvb3RzWzBdO1xufVxuXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMoZGVzdDogYW55LCBwa2c/OiBhbnkpIHtcbiAgaWYgKCFwa2cpIHsgcmV0dXJuOyB9IC8vIG5vIG9wdGlvbnMgaW4gcGFja2FnZS5qc29uXG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGtnKSkge1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhbiBhcnJheSBvcHRpb24sIHRoZW4gYWRkIHZhbHVlcyB0byBkZXN0aW5hdGlvblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uc3QgYXJyID0gZGVzdFtrZXldIHx8IFtdO1xuICAgICAgYXJyLnB1c2goLi4udmFsdWUpO1xuICAgICAgZGVzdFtrZXldID0gYXJyO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gb2JqZWN0cyBhcmUgbm90IGFsbG93ZWRcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG9wdGlvbiBcIiR7a2V5fVwiIGluIHBhY2thZ2UuanNvbjogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgfVxuXG4gICAgLy8gcHJpbWl0aXZlcyBzaW1wbHkgb3ZlcnJpZGVcbiAgICBkZXN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU3RhbmRhbG9uZU9wdGlvbnMoYXdzbGludENvbmZpZzogc3RyaW5nKSB7XG4gIGlmICghYXdhaXQgZnMucGF0aEV4aXN0cyhhd3NsaW50Q29uZmlnKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBmcy5yZWFkSlNPTihhd3NsaW50Q29uZmlnKTtcbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNoZWxsKGNvbW1hbmQ6IHN0cmluZykge1xuICBjb25zdCBjaGlsZCA9IGNoaWxkX3Byb2Nlc3Muc3Bhd24oY29tbWFuZCwgW10sIHsgc3RkaW86IFsnaW5oZXJpdCcsICdpbmhlcml0JywgJ2luaGVyaXQnXSB9KTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChvaywga28pID0+IHtcbiAgICBjaGlsZC5vbmNlKCdleGl0JywgKHN0YXR1czogYW55KSA9PiB7XG4gICAgICBpZiAoc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiBvaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtvKG5ldyBFcnJvcihgJHtjb21tYW5kfSBleGl0ZWQgd2l0aCBzdGF0dXMgJHtzdGF0dXN9YCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNoaWxkLm9uY2UoJ2Vycm9yJywga28pO1xuICB9KTtcbn1cbiJdfQ==
|
package/bin/awslint.ts
CHANGED
|
@@ -50,7 +50,8 @@ async function main() {
|
|
|
50
50
|
|
|
51
51
|
if (args._.length > 1) {
|
|
52
52
|
argv.showHelp();
|
|
53
|
-
process.
|
|
53
|
+
process.exitCode = 1;
|
|
54
|
+
return;
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
const command = args._[0] || 'lint';
|
|
@@ -204,7 +205,7 @@ async function main() {
|
|
|
204
205
|
}
|
|
205
206
|
|
|
206
207
|
if (errors && !args.save) {
|
|
207
|
-
process.
|
|
208
|
+
process.exitCode = 1;
|
|
208
209
|
}
|
|
209
210
|
|
|
210
211
|
return;
|
|
@@ -241,7 +242,7 @@ main().catch(e => {
|
|
|
241
242
|
if (stackTrace) {
|
|
242
243
|
console.error(e.stack);
|
|
243
244
|
}
|
|
244
|
-
process.
|
|
245
|
+
process.exitCode = 1;
|
|
245
246
|
});
|
|
246
247
|
|
|
247
248
|
async function loadModule(dir: string) {
|
|
@@ -249,6 +250,9 @@ async function loadModule(dir: string) {
|
|
|
249
250
|
await ts.load(dir, { validate: false }); // Don't validate to save 66% of execution time (20s vs 1min).
|
|
250
251
|
// We run 'awslint' during build time, assemblies are guaranteed to be ok.
|
|
251
252
|
|
|
253
|
+
// We won't load any more assemblies. Lock the typesystem to benefit from performance improvements.
|
|
254
|
+
ts.lock();
|
|
255
|
+
|
|
252
256
|
if (ts.roots.length !== 1) {
|
|
253
257
|
throw new Error('Expecting only a single root assembly');
|
|
254
258
|
}
|
package/lib/case.d.ts
ADDED
package/lib/case.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pascalize = exports.camelize = void 0;
|
|
4
|
+
const changeCase = require("change-case");
|
|
5
|
+
function cachedTransform(transform) {
|
|
6
|
+
const CACHE = new Map();
|
|
7
|
+
return (x) => {
|
|
8
|
+
const prev = CACHE.get(x);
|
|
9
|
+
if (prev) {
|
|
10
|
+
return prev;
|
|
11
|
+
}
|
|
12
|
+
const transformed = transform(x);
|
|
13
|
+
CACHE.set(x, transformed);
|
|
14
|
+
return transformed;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.camelize = cachedTransform((x) => changeCase.camelCase(x));
|
|
18
|
+
exports.pascalize = cachedTransform((x) => changeCase.pascalCase(x));
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMENBQTBDO0FBRTFDLFNBQVMsZUFBZSxDQUFDLFNBQWdDO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNYLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFWSxRQUFBLFFBQVEsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxRQUFBLFNBQVMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoYW5nZUNhc2UgZnJvbSAnY2hhbmdlLWNhc2UnO1xuXG5mdW5jdGlvbiBjYWNoZWRUcmFuc2Zvcm0odHJhbnNmb3JtOiAoeDogc3RyaW5nKSA9PiBzdHJpbmcpOiAoeDogc3RyaW5nKSA9PiBzdHJpbmcge1xuICBjb25zdCBDQUNIRSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIHJldHVybiAoeCkgPT4ge1xuICAgIGNvbnN0IHByZXYgPSBDQUNIRS5nZXQoeCk7XG4gICAgaWYgKHByZXYpIHtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gdHJhbnNmb3JtKHgpO1xuICAgIENBQ0hFLnNldCh4LCB0cmFuc2Zvcm1lZCk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgY2FtZWxpemUgPSBjYWNoZWRUcmFuc2Zvcm0oKHg6IHN0cmluZykgPT4gY2hhbmdlQ2FzZS5jYW1lbENhc2UoeCkpO1xuZXhwb3J0IGNvbnN0IHBhc2NhbGl6ZSA9IGNhY2hlZFRyYW5zZm9ybSgoeDogc3RyaW5nKSA9PiBjaGFuZ2VDYXNlLnBhc2NhbENhc2UoeCkpO1xuIl19
|
package/lib/case.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as changeCase from 'change-case';
|
|
2
|
+
|
|
3
|
+
function cachedTransform(transform: (x: string) => string): (x: string) => string {
|
|
4
|
+
const CACHE = new Map<string, string>();
|
|
5
|
+
return (x) => {
|
|
6
|
+
const prev = CACHE.get(x);
|
|
7
|
+
if (prev) {
|
|
8
|
+
return prev;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const transformed = transform(x);
|
|
12
|
+
CACHE.set(x, transformed);
|
|
13
|
+
return transformed;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const camelize = cachedTransform((x: string) => changeCase.camelCase(x));
|
|
18
|
+
export const pascalize = cachedTransform((x: string) => changeCase.pascalCase(x));
|
package/lib/rules/api.js
CHANGED
|
@@ -102,7 +102,7 @@ exports.apiLinter.add({
|
|
|
102
102
|
if (!core_types_1.CoreTypes.isResourceClass(type.type)) {
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
|
-
if (type.type.fqn === e.ctx.core.
|
|
105
|
+
if (type.type.fqn === e.ctx.core.baseConstructClassFqn) {
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
108
|
// allow exclusion of this rule
|
|
@@ -116,4 +116,4 @@ exports.apiLinter.add({
|
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
118
|
});
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUFrRDtBQUNsRCw2Q0FBeUM7QUFDekMsc0NBQW1DO0FBRW5DLE1BQU0sb0NBQW9DLEdBQUcscUNBQXFDLENBQUM7QUFFbkYsZ0RBQWdEO0FBQ25DLFFBQUEsU0FBUyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsK0JBQW1CO0tBQ3pELGlCQUFpQixDQUFDLENBQUMsQ0FBQztLQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdkQsaUJBQVMsQ0FBQyxHQUFHLENBQUM7SUFDWixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSw0REFBNEQ7UUFDbkUsZ0NBQWdDLG9DQUFvQyxzQkFBc0I7SUFDNUYsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVsQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakIsU0FBUyxXQUFXLENBQUMsSUFBdUI7WUFDMUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFBRSxPQUFPO2FBQUU7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEI7WUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDO1FBRUQsU0FBUyxjQUFjLENBQUMsSUFBMkI7WUFDakQsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN6QyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUI7UUFDSCxDQUFDO1FBRUQsU0FBUyxlQUFlLENBQUMsSUFBMkI7WUFDbEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFBRSxPQUFPO2FBQUU7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEI7WUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUM7UUFFRCxTQUFTLGNBQWMsQ0FBQyxRQUEwQjtZQUVoRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3RCLE9BQU87YUFDUjtZQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDM0UsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELFNBQVMsWUFBWSxDQUFDLE1BQXdCO1lBRTVDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDcEIsT0FBTzthQUNSO1lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNyRSxNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTNDLElBQUksV0FBVyxHQUFpQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDMUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuRCxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRWQsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDaEIsV0FBVyxHQUFHLE1BQU0sQ0FBQzthQUN0QjtZQUVELEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRTtnQkFDMUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUM5RDtZQUVELHVFQUF1RTtRQUN6RSxDQUFDO1FBRUQsU0FBUyxVQUFVLENBQUMsSUFBMkIsRUFBRSxJQUFrQixFQUFFLEtBQWE7WUFDaEYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixPQUFPO2FBQ1I7WUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsT0FBTzthQUNSO1lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNsRDtZQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDakMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzVCO2dCQUNELE9BQU87YUFDUjtZQUVELHNCQUFzQjtZQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDNUMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBRUQsaUJBQWlCO1lBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUN2QyxPQUFPO2FBQ1I7WUFFRCwrREFBK0Q7WUFDL0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxzQkFBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3pDLE9BQU87aUJBQ1I7Z0JBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFO29CQUNuRCxPQUFPO2lCQUNSO2dCQUVELCtCQUErQjtnQkFDL0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLEVBQUU7b0JBQzlILE9BQU87aUJBQ1I7Z0JBRUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLE9BQU87YUFDUjtZQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RSZWZsZWN0aW9uIH0gZnJvbSAnLi9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgQ29yZVR5cGVzIH0gZnJvbSAnLi9jb3JlLXR5cGVzJztcbmltcG9ydCB7IExpbnRlciB9IGZyb20gJy4uL2xpbnRlcic7XG5cbmNvbnN0IEVYQ0xVREVfQU5OT1RBVElPTl9SRUZfVklBX0lOVEVSRkFDRSA9ICdbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXSc7XG5cbi8vIGxpbnQgYWxsIGNvbnN0cnVjdHMgdGhhdCBhcmUgbm90IEwxIHJlc291cmNlc1xuZXhwb3J0IGNvbnN0IGFwaUxpbnRlciA9IG5ldyBMaW50ZXIoYSA9PiBDb25zdHJ1Y3RSZWZsZWN0aW9uXG4gIC5maW5kQWxsQ29uc3RydWN0cyhhKVxuICAuZmlsdGVyKGMgPT4gIUNvcmVUeXBlcy5pc0NmblJlc291cmNlKGMuY2xhc3NUeXBlKSkpO1xuXG5hcGlMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3JlZi12aWEtaW50ZXJmYWNlJyxcbiAgbWVzc2FnZTogJ0FQSSBzaG91bGQgdXNlIGludGVyZmFjZSBhbmQgbm90IHRoZSBjb25jcmV0ZSBjbGFzcyAoJXMpLiAnICtcbiAgICBgSWYgdGhpcyBpcyBpbnRlbnRpb25hbCwgYWRkIFwiJHtFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0V9XCIgdG8gZWxlbWVudCdzIGpzZG9jYCxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgY2xzID0gZS5jdHguY2xhc3NUeXBlO1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGFzc2VydENsYXNzKGNscyk7XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRDbGFzcyh0eXBlOiByZWZsZWN0LkNsYXNzVHlwZSk6IHZvaWQge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKHR5cGUuZnFuKSkgeyByZXR1cm47IH1cbiAgICAgIHZpc2l0ZWQuYWRkKHR5cGUuZnFuKTtcblxuICAgICAgZm9yIChjb25zdCBtZXRob2Qgb2YgdHlwZS5hbGxNZXRob2RzKSB7XG4gICAgICAgIGFzc2VydE1ldGhvZChtZXRob2QpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5pbml0aWFsaXplcikge1xuICAgICAgICBhc3NlcnRNZXRob2QodHlwZS5pbml0aWFsaXplcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0RGF0YVR5cGUodHlwZTogcmVmbGVjdC5JbnRlcmZhY2VUeXBlKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHR5cGUuYWxsUHJvcGVydGllcykge1xuICAgICAgICBhc3NlcnRQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0SW50ZXJmYWNlKHR5cGU6IHJlZmxlY3QuSW50ZXJmYWNlVHlwZSk6IHZvaWQge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKHR5cGUuZnFuKSkgeyByZXR1cm47IH1cbiAgICAgIHZpc2l0ZWQuYWRkKHR5cGUuZnFuKTtcblxuICAgICAgaWYgKHR5cGUuZGF0YXR5cGUpIHtcbiAgICAgICAgYXNzZXJ0RGF0YVR5cGUodHlwZSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgbWV0aG9kIG9mIHR5cGUuYWxsTWV0aG9kcykge1xuICAgICAgICBhc3NlcnRNZXRob2QobWV0aG9kKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRQcm9wZXJ0eShwcm9wZXJ0eTogcmVmbGVjdC5Qcm9wZXJ0eSkge1xuXG4gICAgICBpZiAocHJvcGVydHkucHJvdGVjdGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2l0ZSA9IHByb3BlcnR5Lm92ZXJyaWRlcyA/IHByb3BlcnR5Lm92ZXJyaWRlcyA6IHByb3BlcnR5LnBhcmVudFR5cGU7XG4gICAgICBhc3NlcnRUeXBlKHByb3BlcnR5LnR5cGUsIHByb3BlcnR5LmRvY3MsIGAke3NpdGUuZnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0TWV0aG9kKG1ldGhvZDogcmVmbGVjdC5DYWxsYWJsZSkge1xuXG4gICAgICBpZiAobWV0aG9kLnByb3RlY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNpdGUgPSBtZXRob2Qub3ZlcnJpZGVzID8gbWV0aG9kLm92ZXJyaWRlcyA6IG1ldGhvZC5wYXJlbnRUeXBlO1xuICAgICAgY29uc3Qgc2NvcGUgPSBgJHtzaXRlLmZxbn0uJHttZXRob2QubmFtZX1gO1xuXG4gICAgICBsZXQgZmlyc3RNZXRob2Q6IHJlZmxlY3QuQ2FsbGFibGUgfCB1bmRlZmluZWQgPSBzaXRlLmlzQ2xhc3NUeXBlKCkgfHwgc2l0ZS5pc0ludGVyZmFjZVR5cGUoKVxuICAgICAgICA/IHNpdGUuYWxsTWV0aG9kcy5maW5kKG0gPT4gbS5uYW1lID09PSBtZXRob2QubmFtZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghZmlyc3RNZXRob2QpIHtcbiAgICAgICAgZmlyc3RNZXRob2QgPSBtZXRob2Q7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgZmlyc3RNZXRob2QucGFyYW1ldGVycykge1xuICAgICAgICBhc3NlcnRUeXBlKHBhcmFtLnR5cGUsIHBhcmFtLmRvY3MsIGAke3Njb3BlfS4ke3BhcmFtLm5hbWV9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdGUgdGhhdCB3ZSBkbyBub3QgcmVxdWlyZSB0aGF0IHJldHVybiB2YWx1ZXMgd2lsbCB1c2UgYW4gaW50ZXJmYWNlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0VHlwZSh0eXBlOiByZWZsZWN0LlR5cGVSZWZlcmVuY2UsIGRvY3M6IHJlZmxlY3QuRG9jcywgc2NvcGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgaWYgKHR5cGUucHJpbWl0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUudm9pZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLmFycmF5T2ZUeXBlKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRUeXBlKHR5cGUuYXJyYXlPZlR5cGUsIGRvY3MsIHNjb3BlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUubWFwT2ZUeXBlKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRUeXBlKHR5cGUubWFwT2ZUeXBlLCBkb2NzLCBzY29wZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLnVuaW9uT2ZUeXBlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdHlwZS51bmlvbk9mVHlwZXMpIHtcbiAgICAgICAgICBhc3NlcnRUeXBlKHQsIGRvY3MsIHNjb3BlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGludGVyZmFjZXMgYXJlIG9rYXlcbiAgICAgIGlmICh0eXBlLnR5cGUgJiYgdHlwZS50eXBlLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICAgIHJldHVybiBhc3NlcnRJbnRlcmZhY2UodHlwZS50eXBlKTtcbiAgICAgIH1cblxuICAgICAgLy8gZW51bXMgYXJlIG9rYXlcbiAgICAgIGlmICh0eXBlLnR5cGUgJiYgdHlwZS50eXBlLmlzRW51bVR5cGUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGNsYXNzZXMgYXJlIG9rYXkgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgcmVzb3VyY2UgY29uc3RydWN0c1xuICAgICAgaWYgKHR5cGUudHlwZSAmJiB0eXBlLnR5cGUuaXNDbGFzc1R5cGUoKSkge1xuICAgICAgICBpZiAoIUNvcmVUeXBlcy5pc1Jlc291cmNlQ2xhc3ModHlwZS50eXBlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlLnR5cGUuZnFuID09PSBlLmN0eC5jb3JlLmNvbnN0cnVjdENsYXNzLmZxbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsbG93IGV4Y2x1c2lvbiBvZiB0aGlzIHJ1bGVcbiAgICAgICAgaWYgKGRvY3Muc3VtbWFyeS5pbmNsdWRlcyhFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0UpIHx8IGRvY3MucmVtYXJrcy5pbmNsdWRlcyhFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0UpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZS5hc3NlcnQoZmFsc2UsIHNjb3BlLCB0eXBlLnR5cGUuZnFuKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdHlwZSByZWZlcmVuY2U6ICR7dHlwZS50b1N0cmluZygpfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUFrRDtBQUNsRCw2Q0FBeUM7QUFDekMsc0NBQW1DO0FBRW5DLE1BQU0sb0NBQW9DLEdBQUcscUNBQXFDLENBQUM7QUFFbkYsZ0RBQWdEO0FBQ25DLFFBQUEsU0FBUyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsK0JBQW1CO0tBQ3pELGlCQUFpQixDQUFDLENBQUMsQ0FBQztLQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdkQsaUJBQVMsQ0FBQyxHQUFHLENBQUM7SUFDWixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSw0REFBNEQ7UUFDbkUsZ0NBQWdDLG9DQUFvQyxzQkFBc0I7SUFDNUYsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVsQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakIsU0FBUyxXQUFXLENBQUMsSUFBdUI7WUFDMUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFBRSxPQUFPO2FBQUU7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEI7WUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLFlBQVksQ0FBQyxJ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QUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcmVmbGVjdCBmcm9tICdqc2lpLXJlZmxlY3QnO1xuaW1wb3J0IHsgQ29uc3RydWN0UmVmbGVjdGlvbiB9IGZyb20gJy4vY29uc3RydWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBMaW50ZXIgfSBmcm9tICcuLi9saW50ZXInO1xuXG5jb25zdCBFWENMVURFX0FOTk9UQVRJT05fUkVGX1ZJQV9JTlRFUkZBQ0UgPSAnW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV0nO1xuXG4vLyBsaW50IGFsbCBjb25zdHJ1Y3RzIHRoYXQgYXJlIG5vdCBMMSByZXNvdXJjZXNcbmV4cG9ydCBjb25zdCBhcGlMaW50ZXIgPSBuZXcgTGludGVyKGEgPT4gQ29uc3RydWN0UmVmbGVjdGlvblxuICAuZmluZEFsbENvbnN0cnVjdHMoYSlcbiAgLmZpbHRlcihjID0+ICFDb3JlVHlwZXMuaXNDZm5SZXNvdXJjZShjLmNsYXNzVHlwZSkpKTtcblxuYXBpTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZWYtdmlhLWludGVyZmFjZScsXG4gIG1lc3NhZ2U6ICdBUEkgc2hvdWxkIHVzZSBpbnRlcmZhY2UgYW5kIG5vdCB0aGUgY29uY3JldGUgY2xhc3MgKCVzKS4gJyArXG4gICAgYElmIHRoaXMgaXMgaW50ZW50aW9uYWwsIGFkZCBcIiR7RVhDTFVERV9BTk5PVEFUSU9OX1JFRl9WSUFfSU5URVJGQUNFfVwiIHRvIGVsZW1lbnQncyBqc2RvY2AsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IGNscyA9IGUuY3R4LmNsYXNzVHlwZTtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBhc3NlcnRDbGFzcyhjbHMpO1xuXG4gICAgZnVuY3Rpb24gYXNzZXJ0Q2xhc3ModHlwZTogcmVmbGVjdC5DbGFzc1R5cGUpOiB2b2lkIHtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyh0eXBlLmZxbikpIHsgcmV0dXJuOyB9XG4gICAgICB2aXNpdGVkLmFkZCh0eXBlLmZxbik7XG5cbiAgICAgIGZvciAoY29uc3QgbWV0aG9kIG9mIHR5cGUuYWxsTWV0aG9kcykge1xuICAgICAgICBhc3NlcnRNZXRob2QobWV0aG9kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUuaW5pdGlhbGl6ZXIpIHtcbiAgICAgICAgYXNzZXJ0TWV0aG9kKHR5cGUuaW5pdGlhbGl6ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzc2VydERhdGFUeXBlKHR5cGU6IHJlZmxlY3QuSW50ZXJmYWNlVHlwZSk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB0eXBlLmFsbFByb3BlcnRpZXMpIHtcbiAgICAgICAgYXNzZXJ0UHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzc2VydEludGVyZmFjZSh0eXBlOiByZWZsZWN0LkludGVyZmFjZVR5cGUpOiB2b2lkIHtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyh0eXBlLmZxbikpIHsgcmV0dXJuOyB9XG4gICAgICB2aXNpdGVkLmFkZCh0eXBlLmZxbik7XG5cbiAgICAgIGlmICh0eXBlLmRhdGF0eXBlKSB7XG4gICAgICAgIGFzc2VydERhdGFUeXBlKHR5cGUpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiB0eXBlLmFsbE1ldGhvZHMpIHtcbiAgICAgICAgYXNzZXJ0TWV0aG9kKG1ldGhvZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0UHJvcGVydHkocHJvcGVydHk6IHJlZmxlY3QuUHJvcGVydHkpIHtcblxuICAgICAgaWYgKHByb3BlcnR5LnByb3RlY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNpdGUgPSBwcm9wZXJ0eS5vdmVycmlkZXMgPyBwcm9wZXJ0eS5vdmVycmlkZXMgOiBwcm9wZXJ0eS5wYXJlbnRUeXBlO1xuICAgICAgYXNzZXJ0VHlwZShwcm9wZXJ0eS50eXBlLCBwcm9wZXJ0eS5kb2NzLCBgJHtzaXRlLmZxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzc2VydE1ldGhvZChtZXRob2Q6IHJlZmxlY3QuQ2FsbGFibGUpIHtcblxuICAgICAgaWYgKG1ldGhvZC5wcm90ZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzaXRlID0gbWV0aG9kLm92ZXJyaWRlcyA/IG1ldGhvZC5vdmVycmlkZXMgOiBtZXRob2QucGFyZW50VHlwZTtcbiAgICAgIGNvbnN0IHNjb3BlID0gYCR7c2l0ZS5mcW59LiR7bWV0aG9kLm5hbWV9YDtcblxuICAgICAgbGV0IGZpcnN0TWV0aG9kOiByZWZsZWN0LkNhbGxhYmxlIHwgdW5kZWZpbmVkID0gc2l0ZS5pc0NsYXNzVHlwZSgpIHx8IHNpdGUuaXNJbnRlcmZhY2VUeXBlKClcbiAgICAgICAgPyBzaXRlLmFsbE1ldGhvZHMuZmluZChtID0+IG0ubmFtZSA9PT0gbWV0aG9kLm5hbWUpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoIWZpcnN0TWV0aG9kKSB7XG4gICAgICAgIGZpcnN0TWV0aG9kID0gbWV0aG9kO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIGZpcnN0TWV0aG9kLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgYXNzZXJ0VHlwZShwYXJhbS50eXBlLCBwYXJhbS5kb2NzLCBgJHtzY29wZX0uJHtwYXJhbS5uYW1lfWApO1xuICAgICAgfVxuXG4gICAgICAvLyBub3RlIHRoYXQgd2UgZG8gbm90IHJlcXVpcmUgdGhhdCByZXR1cm4gdmFsdWVzIHdpbGwgdXNlIGFuIGludGVyZmFjZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzc2VydFR5cGUodHlwZTogcmVmbGVjdC5UeXBlUmVmZXJlbmNlLCBkb2NzOiByZWZsZWN0LkRvY3MsIHNjb3BlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIGlmICh0eXBlLnByaW1pdGl2ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLnZvaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5hcnJheU9mVHlwZSkge1xuICAgICAgICByZXR1cm4gYXNzZXJ0VHlwZSh0eXBlLmFycmF5T2ZUeXBlLCBkb2NzLCBzY29wZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLm1hcE9mVHlwZSkge1xuICAgICAgICByZXR1cm4gYXNzZXJ0VHlwZSh0eXBlLm1hcE9mVHlwZSwgZG9jcywgc2NvcGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS51bmlvbk9mVHlwZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCB0IG9mIHR5cGUudW5pb25PZlR5cGVzKSB7XG4gICAgICAgICAgYXNzZXJ0VHlwZSh0LCBkb2NzLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBpbnRlcmZhY2VzIGFyZSBva2F5XG4gICAgICBpZiAodHlwZS50eXBlICYmIHR5cGUudHlwZS5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgICByZXR1cm4gYXNzZXJ0SW50ZXJmYWNlKHR5cGUudHlwZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVudW1zIGFyZSBva2F5XG4gICAgICBpZiAodHlwZS50eXBlICYmIHR5cGUudHlwZS5pc0VudW1UeXBlKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBjbGFzc2VzIGFyZSBva2F5IGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IHJlc291cmNlIGNvbnN0cnVjdHNcbiAgICAgIGlmICh0eXBlLnR5cGUgJiYgdHlwZS50eXBlLmlzQ2xhc3NUeXBlKCkpIHtcbiAgICAgICAgaWYgKCFDb3JlVHlwZXMuaXNSZXNvdXJjZUNsYXNzKHR5cGUudHlwZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZS50eXBlLmZxbiA9PT0gZS5jdHguY29yZS5iYXNlQ29uc3RydWN0Q2xhc3NGcW4pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhbGxvdyBleGNsdXNpb24gb2YgdGhpcyBydWxlXG4gICAgICAgIGlmIChkb2NzLnN1bW1hcnkuaW5jbHVkZXMoRVhDTFVERV9BTk5PVEFUSU9OX1JFRl9WSUFfSU5URVJGQUNFKSB8fCBkb2NzLnJlbWFya3MuaW5jbHVkZXMoRVhDTFVERV9BTk5PVEFUSU9OX1JFRl9WSUFfSU5URVJGQUNFKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGUuYXNzZXJ0KGZhbHNlLCBzY29wZSwgdHlwZS50eXBlLmZxbik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHR5cGUgcmVmZXJlbmNlOiAke3R5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG4gIH0sXG59KTtcbiJdfQ==
|
package/lib/rules/api.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CfnResourceReflection = exports.cfnResourceLinter = void 0;
|
|
4
|
-
const camelcase = require("camelcase");
|
|
5
4
|
const core_types_1 = require("./core-types");
|
|
6
5
|
const resource_1 = require("./resource");
|
|
6
|
+
const case_1 = require("../case");
|
|
7
7
|
const linter_1 = require("../linter");
|
|
8
8
|
const cfnResourceTagName = 'cloudformationResource';
|
|
9
9
|
// this linter verifies that we have L2 coverage. it finds all "Cfn" classes and verifies
|
|
@@ -74,8 +74,8 @@ class CfnResourceReflection {
|
|
|
74
74
|
if (this.basename === 'SecurityGroup' && name === 'GroupId') {
|
|
75
75
|
return 'Id';
|
|
76
76
|
}
|
|
77
|
-
return
|
|
77
|
+
return (0, case_1.pascalize)(name);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
exports.CfnResourceReflection = CfnResourceReflection;
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2ZuLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUN6Qyx5Q0FBZ0Q7QUFDaEQsa0NBQW9DO0FBQ3BDLHNDQUFtQztBQUVuQyxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDO0FBRXBELHlGQUF5RjtBQUN6RixnRkFBZ0Y7QUFDbkUsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLGVBQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRW5GLHVDQUF1QztBQUN2QyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFzRCxDQUFDO0FBRXZGLFNBQVMsOEJBQThCLENBQUMsR0FBdUI7SUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksR0FBRyxFQUE2QixDQUFDLENBQUM7UUFFaEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQzdCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFOUQsSUFBSSxjQUFjLEVBQUU7Z0JBQ2xCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDM0U7U0FDRjtLQUNGO0FBQ0gsQ0FBQztBQUVELHlCQUFpQixDQUFDLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLE9BQU8sRUFBRSx1RkFBdUY7SUFDaEcsT0FBTyxFQUFFLElBQUk7SUFDYixJQUFJLEVBQUUsQ0FBQyxDQUFD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QUFDLFFBQVEsS0FBSyxlQUFlLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUMzRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFBLGdCQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBakVELHNEQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZVJlZmxlY3Rpb24gfSBmcm9tICcuL3Jlc291cmNlJztcbmltcG9ydCB7IHBhc2NhbGl6ZSB9IGZyb20gJy4uL2Nhc2UnO1xuaW1wb3J0IHsgTGludGVyIH0gZnJvbSAnLi4vbGludGVyJztcblxuY29uc3QgY2ZuUmVzb3VyY2VUYWdOYW1lID0gJ2Nsb3VkZm9ybWF0aW9uUmVzb3VyY2UnO1xuXG4vLyB0aGlzIGxpbnRlciB2ZXJpZmllcyB0aGF0IHdlIGhhdmUgTDIgY292ZXJhZ2UuIGl0IGZpbmRzIGFsbCBcIkNmblwiIGNsYXNzZXMgYW5kIHZlcmlmaWVzXG4vLyB0aGF0IHdlIGhhdmUgYSBjb3JyZXNwb25kaW5nIEwxIGNsYXNzIGZvciBpdCB0aGF0J3MgaWRlbnRpZmllZCBhcyBhIHJlc291cmNlLlxuZXhwb3J0IGNvbnN0IGNmblJlc291cmNlTGludGVyID0gbmV3IExpbnRlcihhID0+IENmblJlc291cmNlUmVmbGVjdGlvbi5maW5kQWxsKGEpKTtcblxuLy8gQ2FjaGUgTDEgY29uc3RydWN0cyBwZXIgdHlwZSBzeXN0ZW0uXG5jb25zdCBsMUNvbnN0cnVjdENhY2hlID0gbmV3IE1hcDxyZWZsZWN0LlR5cGVTeXN0ZW0sIE1hcDxzdHJpbmcsIHJlZmxlY3QuQ2xhc3NUeXBlPj4oKTtcblxuZnVuY3Rpb24gY2FjaGVMMUNvbnN0cnVjdHNGb3JUeXBlU3lzdGVtKHN5czogcmVmbGVjdC5UeXBlU3lzdGVtKSB7XG4gIGlmICghbDFDb25zdHJ1Y3RDYWNoZS5oYXMoc3lzKSkge1xuICAgIGwxQ29uc3RydWN0Q2FjaGUuc2V0KHN5cywgbmV3IE1hcDxzdHJpbmcsIHJlZmxlY3QuQ2xhc3NUeXBlPigpKTtcblxuICAgIGZvciAoY29uc3QgY2xzIG9mIHN5cy5jbGFzc2VzKSB7XG4gICAgICBjb25zdCBjZm5SZXNvdXJjZVRhZyA9IGNscy5kb2NzLmN1c3RvbVRhZyhjZm5SZXNvdXJjZVRhZ05hbWUpO1xuXG4gICAgICBpZiAoY2ZuUmVzb3VyY2VUYWcpIHtcbiAgICAgICAgbDFDb25zdHJ1Y3RDYWNoZS5nZXQoc3lzKT8uc2V0KGNmblJlc291cmNlVGFnPy50b0xvY2FsZUxvd2VyQ2FzZSgpISwgY2xzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY2ZuUmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWNsYXNzJyxcbiAgbWVzc2FnZTogJ2V2ZXJ5IHJlc291cmNlIG11c3QgaGF2ZSBhIHJlc291cmNlIGNsYXNzIChMMiksIGFkZCBcXCdAcmVzb3VyY2UgJXNcXCcgdG8gaXRzIGRvY3N0cmluZycsXG4gIHdhcm5pbmc6IHRydWUsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IGwyID0gUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRBbGwoZS5jdHguY2xhc3NUeXBlLmFzc2VtYmx5KS5maW5kKHIgPT4gci5jZm4uZnVsbG5hbWUgPT09IGUuY3R4LmZ1bGxuYW1lKTtcbiAgICBlLmFzc2VydChsMiwgZS5jdHguZnVsbG5hbWUsIGUuY3R4LmZ1bGxuYW1lKTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY2xhc3MgQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uIHtcbiAgLyoqXG4gICAqIEZpbmRzIGEgQ2ZuIHJlc291cmNlIGNsYXNzIGJ5IGZ1bGwgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSAoZS5nLiBgQVdTOjpTMzo6QnVja2V0YClcbiAgICogQHBhcmFtIGZ1bGxOYW1lIGZpcnN0IHR3byBjb21wb25lbnRzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIChlLmcuIGBhd3M6OnMzOjpCdWNrZXRgIGlzIGVxdWl2YWxlbnQgdG8gYEF3czo6UzM6OkJ1Y2tldGApXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbmRCeU5hbWUoc3lzOiByZWZsZWN0LlR5cGVTeXN0ZW0sIGZ1bGxOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIWwxQ29uc3RydWN0Q2FjaGUuaGFzKHN5cykpIHtcbiAgICAgIGNhY2hlTDFDb25zdHJ1Y3RzRm9yVHlwZVN5c3RlbShzeXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGNscyA9IGwxQ29uc3RydWN0Q2FjaGUuZ2V0KHN5cyk/LmdldChmdWxsTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICBpZiAoY2xzKSB7XG4gICAgICByZXR1cm4gbmV3IENmblJlc291cmNlUmVmbGVjdGlvbihjbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbGwgQ0ZOIHJlc291cmNlIGNsYXNzZXMgd2l0aGluIGFuIGFzc2VtYmx5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmaW5kQWxsKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5KSB7XG4gICAgcmV0dXJuIGFzc2VtYmx5LmFsbENsYXNzZXNcbiAgICAgIC5maWx0ZXIoYyA9PiBDb3JlVHlwZXMuaXNDZm5SZXNvdXJjZShjKSlcbiAgICAgIC5tYXAoYyA9PiBuZXcgQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uKGMpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjbGFzc1R5cGU6IHJlZmxlY3QuQ2xhc3NUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgZnVsbG5hbWU6IHN0cmluZzsgLy8gQVdTOjpTMzo6QnVja2V0XG4gIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2U6IHN0cmluZzsgLy8gQVdTOjpTM1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZW5hbWU6IHN0cmluZzsgLy8gQnVja2V0XG4gIHB1YmxpYyByZWFkb25seSBhdHRyaWJ1dGVOYW1lczogc3RyaW5nW107IC8vIChub3JtYWxpemVkKSBidWNrZXRBcm4sIGJ1Y2tldE5hbWUsIHF1ZXVlVXJsXG4gIHB1YmxpYyByZWFkb25seSBkb2M6IHN0cmluZzsgLy8gbGluayB0byBDbG91ZEZvcm1hdGlvbiBkb2NzXG5cbiAgY29uc3RydWN0b3IoY2xzOiByZWZsZWN0LkNsYXNzVHlwZSkge1xuICAgIHRoaXMuY2xhc3NUeXBlID0gY2xzO1xuXG4gICAgdGhpcy5iYXNlbmFtZSA9IGNscy5uYW1lLnNsaWNlKCdDZm4nLmxlbmd0aCk7XG5cbiAgICBjb25zdCBmdWxsbmFtZSA9IGNscy5kb2NzLmN1c3RvbVRhZygnY2xvdWRmb3JtYXRpb25SZXNvdXJjZScpO1xuICAgIGlmICghZnVsbG5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGV4dHJhY3QgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSBmcm9tIGluaXRpYWxpemVyIGRvY3VtZW50YXRpb24gb2YgJHtjbHN9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5mdWxsbmFtZSA9IGZ1bGxuYW1lO1xuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBmdWxsbmFtZS5zcGxpdCgnOjonKS5zbGljZSgwLCAyKS5qb2luKCc6OicpO1xuXG4gICAgdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IGNscy5vd25Qcm9wZXJ0aWVzXG4gICAgICAuZmlsdGVyKHAgPT4gKHAuZG9jcy5kb2NzLmN1c3RvbSB8fCB7fSkuY2xvdWRmb3JtYXRpb25BdHRyaWJ1dGUpXG4gICAgICAubWFwKHAgPT4gcC5kb2NzLmN1c3RvbVRhZygnY2xvdWRmb3JtYXRpb25BdHRyaWJ1dGUnKSB8fCAnPGVycm9yPicpXG4gICAgICAubWFwKHAgPT4gdGhpcy5hdHRyaWJ1dGVQcm9wZXJ0eU5hbWVGcm9tQ2ZuTmFtZShwKSk7XG5cbiAgICB0aGlzLmRvYyA9IGNscy5kb2NzLmRvY3Muc2VlIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRyaWJ1dGVQcm9wZXJ0eU5hbWVGcm9tQ2ZuTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgLy8gc3BlY2lhbCBjYXNlIChzb21lb25lIHdhcyBzbWFydCksIHNwZWNpYWwgY2FzZSBjb3BpZWQgZnJvbSBzcGVjMmNka1xuICAgIGlmICh0aGlzLmJhc2VuYW1lID09PSAnU2VjdXJpdHlHcm91cCcgJiYgbmFtZSA9PT0gJ0dyb3VwSWQnKSB7XG4gICAgICByZXR1cm4gJ0lkJztcbiAgICB9XG5cbiAgICByZXR1cm4gcGFzY2FsaXplKG5hbWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as camelcase from 'camelcase';
|
|
2
1
|
import * as reflect from 'jsii-reflect';
|
|
3
2
|
import { CoreTypes } from './core-types';
|
|
4
3
|
import { ResourceReflection } from './resource';
|
|
4
|
+
import { pascalize } from '../case';
|
|
5
5
|
import { Linter } from '../linter';
|
|
6
6
|
|
|
7
7
|
const cfnResourceTagName = 'cloudformationResource';
|
|
@@ -100,6 +100,6 @@ export class CfnResourceReflection {
|
|
|
100
100
|
return 'Id';
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
return
|
|
103
|
+
return pascalize(name);
|
|
104
104
|
}
|
|
105
105
|
}
|
package/lib/rules/construct.d.ts
CHANGED
|
@@ -6,10 +6,6 @@ export declare class ConstructReflection {
|
|
|
6
6
|
readonly classType: reflect.ClassType;
|
|
7
7
|
static findAllConstructs(assembly: reflect.Assembly): ConstructReflection[];
|
|
8
8
|
static getFqnFromTypeRef(typeRef: reflect.TypeReference): string | undefined;
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated - use `CoreTypes.constructClass()` or `CoreTypes.baseConstructClass()` as appropriate
|
|
11
|
-
*/
|
|
12
|
-
readonly ROOT_CLASS: reflect.ClassType;
|
|
13
9
|
readonly fqn: string;
|
|
14
10
|
readonly interfaceFqn: string;
|
|
15
11
|
readonly propsFqn: string;
|
package/lib/rules/construct.js
CHANGED
|
@@ -26,7 +26,6 @@ class ConstructReflection {
|
|
|
26
26
|
this.fqn = classType.fqn;
|
|
27
27
|
this.sys = classType.system;
|
|
28
28
|
this.core = new core_types_1.CoreTypes(this.sys);
|
|
29
|
-
this.ROOT_CLASS = this.sys.findClass(this.core.constructClass.fqn);
|
|
30
29
|
this.interfaceFqn = `${this.typePrefix(classType)}.I${classType.name}`;
|
|
31
30
|
this.propsFqn = `${this.typePrefix(classType)}.${classType.name}Props`;
|
|
32
31
|
this.interfaceType = this.tryFindInterface();
|
|
@@ -73,16 +72,9 @@ exports.constructLinter.add({
|
|
|
73
72
|
return;
|
|
74
73
|
}
|
|
75
74
|
const expectedParams = new Array();
|
|
76
|
-
let baseType;
|
|
77
|
-
if (process.env.AWSLINT_BASE_CONSTRUCT && !core_types_1.CoreTypes.isCfnResource(e.ctx.classType)) {
|
|
78
|
-
baseType = e.ctx.core.baseConstructClass;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
baseType = e.ctx.core.constructClass;
|
|
82
|
-
}
|
|
83
75
|
expectedParams.push({
|
|
84
76
|
name: 'scope',
|
|
85
|
-
type:
|
|
77
|
+
type: e.ctx.core.baseConstructClassFqn,
|
|
86
78
|
});
|
|
87
79
|
expectedParams.push({
|
|
88
80
|
name: 'id',
|
|
@@ -155,7 +147,7 @@ exports.constructLinter.add({
|
|
|
155
147
|
if (!e.ctx.interfaceType) {
|
|
156
148
|
return;
|
|
157
149
|
}
|
|
158
|
-
const interfaceBase = e.ctx.sys.findInterface(e.ctx.core.
|
|
150
|
+
const interfaceBase = e.ctx.sys.findInterface(e.ctx.core.baseConstructInterfaceFqn);
|
|
159
151
|
e.assert(e.ctx.interfaceType.extends(interfaceBase), e.ctx.interfaceType.fqn);
|
|
160
152
|
},
|
|
161
153
|
});
|
|
@@ -227,7 +219,7 @@ exports.constructLinter.add({
|
|
|
227
219
|
const fqn = ConstructReflection.getFqnFromTypeRef(property.type);
|
|
228
220
|
const found = (fqn && e.ctx.sys.tryFindFqn(fqn));
|
|
229
221
|
if (found) {
|
|
230
|
-
e.assert(!(fqn === e.ctx.core.
|
|
222
|
+
e.assert(!(fqn === e.ctx.core.tokenInterfaceFqn), `${e.ctx.propsFqn}.${property.name}`);
|
|
231
223
|
}
|
|
232
224
|
}
|
|
233
225
|
},
|
|
@@ -280,4 +272,4 @@ function baseConstructAddendum() {
|
|
|
280
272
|
}
|
|
281
273
|
return '';
|
|
282
274
|
}
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUN6QyxzQ0FBd0U7QUFFM0QsUUFBQSxlQUFlLEdBQUcsSUFBSSxlQUFNLENBQXNCLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVU7S0FDM0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFhLG1CQUFtQjtJQUV2QixNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBMEI7UUFDeEQsT0FBTyxRQUFRLENBQUMsVUFBVTthQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzQkFBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQThCO1FBQzVELElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN2QixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzVCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7U0FDOUI7UUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQWlCRCxZQUE0QixTQUE0QjtRQUE1QixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUN0RCxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxH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ZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBMaW50ZXIsIE1ldGhvZFNpZ25hdHVyZVBhcmFtZXRlckV4cGVjdGF0aW9uIH0gZnJvbSAnLi4vbGludGVyJztcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdExpbnRlciA9IG5ldyBMaW50ZXI8Q29uc3RydWN0UmVmbGVjdGlvbj4oYXNzZW1ibHkgPT4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAuZmlsdGVyKHQgPT4gQ29yZVR5cGVzLmlzQ29uc3RydWN0Q2xhc3ModCkpXG4gIC5tYXAoY29uc3RydWN0ID0+IG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGNvbnN0cnVjdCkpKTtcblxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdFJlZmxlY3Rpb24ge1xuXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbENvbnN0cnVjdHMoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHkpIHtcbiAgICByZXR1cm4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAgICAgLmZpbHRlcihjID0+IENvcmVUeXBlcy5pc0NvbnN0cnVjdENsYXNzKGMpKVxuICAgICAgLm1hcChjID0+IG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RnFuRnJvbVR5cGVSZWYodHlwZVJlZjogcmVmbGVjdC5UeXBlUmVmZXJlbmNlKSB7XG4gICAgaWYgKHR5cGVSZWYuYXJyYXlPZlR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlUmVmLmFycmF5T2ZUeXBlLmZxbjtcbiAgICB9IGVsc2UgaWYgKHR5cGVSZWYubWFwT2ZUeXBlKSB7XG4gICAgICByZXR1cm4gdHlwZVJlZi5tYXBPZlR5cGUuZnFuO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlUmVmLmZxbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIHVzZSBgQ29yZVR5cGVzLmNvbnN0cnVjdENsYXNzKClgIG9yIGBDb3JlVHlwZXMuYmFzZUNvbnN0cnVjdENsYXNzKClgIGFzIGFwcHJvcHJpYXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgUk9PVF9DTEFTUzogcmVmbGVjdC5DbGFzc1R5cGU7IC8vIGNvbnN0cnVjdHMuQ29uc3RydWN0XG5cbiAgcHVibGljIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJmYWNlRnFuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwcm9wc0Zxbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJmYWNlVHlwZT86IHJlZmxlY3QuSW50ZXJmYWNlVHlwZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb3BzVHlwZT86IHJlZmxlY3QuSW50ZXJmYWNlVHlwZTtcbiAgcHVibGljIHJlYWRvbmx5IGluaXRpYWxpemVyPzogcmVmbGVjdC5Jbml0aWFsaXplcjtcbiAgcHVibGljIHJlYWRvbmx5IGhhc1Byb3BzQXJndW1lbnQ6IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBzeXM6IHJlZmxlY3QuVHlwZVN5c3RlbTtcbiAgcHVibGljIHJlYWRvbmx5IGNvcmU6IENvcmVUeXBlcztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY2xhc3NUeXBlOiByZWZsZWN0LkNsYXNzVHlwZSkge1xuICAgIHRoaXMuZnFuID0gY2xhc3NUeXBlLmZxbjtcbiAgICB0aGlzLnN5cyA9IGNsYXNzVHlwZS5zeXN0ZW07XG4gICAgdGhpcy5jb3JlID0gbmV3IENvcmVUeXBlcyh0aGlzLnN5cyk7XG4gICAgdGhpcy5ST09UX0NMQVNTID0gdGhpcy5zeXMuZmluZENsYXNzKHRoaXMuY29yZS5jb25zdHJ1Y3RDbGFzcy5mcW4pO1xuICAgIHRoaXMuaW50ZXJmYWNlRnFuID0gYCR7dGhpcy50eXBlUHJlZml4KGNsYXNzVHlwZSl9Lkkke2NsYXNzVHlwZS5uYW1lfWA7XG4gICAgdGhpcy5wcm9wc0ZxbiA9IGAke3RoaXMudHlwZVByZWZpeChjbGFzc1R5cGUpfS4ke2NsYXNzVHlwZS5uYW1lfVByb3BzYDtcbiAgICB0aGlzLmludGVyZmFjZVR5cGUgPSB0aGlzLnRyeUZpbmRJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnByb3BzVHlwZSA9IHRoaXMudHJ5RmluZFByb3BzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplciA9IGNsYXNzVHlwZS5pbml0aWFsaXplcjtcbiAgICB0aGlzLmhhc1Byb3BzQXJndW1lbnQgPSB0aGlzLmluaXRpYWxpemVyICE9IG51bGwgJiYgdGhpcy5pbml0aWFsaXplci5wYXJhbWV0ZXJzLmxlbmd0aCA+PSAzO1xuICB9XG5cbiAgcHJpdmF0ZSB0eXBlUHJlZml4KGNsYXNzVHlwZTogcmVmbGVjdC5DbGFzc1R5cGUpIHtcbiAgICByZXR1cm4gY2xhc3NUeXBlLmFzc2VtYmx5Lm5hbWUgKyAoY2xhc3NUeXBlLm5hbWVzcGFjZSA/IGAuJHtjbGFzc1R5cGUubmFtZXNwYWNlfWAgOiAnJyk7XG4gIH1cblxuICBwcml2YXRlIHRyeUZpbmRJbnRlcmZhY2UoKSB7XG4gICAgY29uc3Qgc3lzID0gdGhpcy5jbGFzc1R5cGUuc3lzdGVtO1xuICAgIGNvbnN0IGZvdW5kID0gc3lzLnRyeUZpbmRGcW4odGhpcy5pbnRlcmZhY2VGcW4pO1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCFmb3VuZC5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RpbmcgdHlwZSAke3RoaXMuaW50ZXJmYWNlRnFufSB0byBiZSBhbiBpbnRlcmZhY2VgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICBwcml2YXRlIHRyeUZpbmRQcm9wcygpIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuc3lzLnRyeUZpbmRGcW4odGhpcy5wcm9wc0Zxbik7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWZvdW5kLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGluZyBwcm9wcyBzdHJ1Y3QgJHt0aGlzLnByb3BzRnFufSB0byBiZSBhbiBpbnRlcmZhY2VgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn1cblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtY3RvcicsXG4gIG1lc3NhZ2U6ICdzaWduYXR1cmUgb2YgYWxsIGNvbnN0cnVjdCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIFwic2NvcGUsIGlkLCBwcm9wc1wiLiAnICsgYmFzZUNvbnN0cnVjdEFkZGVuZHVtKCksXG4gIGV2YWw6IGUgPT4ge1xuICAgIC8vIG9ubHkgYXBwbGllcyB0byBub24gYWJzdHJhY3QgY2xhc3Nlc1xuICAgIGlmIChlLmN0eC5jbGFzc1R5cGUuYWJzdHJhY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWFsaXplciA9IGUuY3R4LmluaXRpYWxpemVyO1xuICAgIGlmICghZS5hc3NlcnQoaW5pdGlhbGl6ZXIsIGUuY3R4LmZxbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHBlY3RlZFBhcmFtcyA9IG5ldyBBcnJheTxNZXRob2RTaWduYXR1cmVQYXJhbWV0ZXJFeHBlY3RhdGlvbj4oKTtcblxuICAgIGxldCBiYXNlVHlwZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuQVdTTElOVF9CQVNFX0NPTlNUUlVDVCAmJiAhQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkge1xuICAgICAgYmFzZVR5cGUgPSBlLmN0eC5jb3JlLmJhc2VDb25zdHJ1Y3RDbGFzcztcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZVR5cGUgPSBlLmN0eC5jb3JlLmNvbnN0cnVjdENsYXNzO1xuICAgIH1cbiAgICBleHBlY3RlZFBhcmFtcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdzY29wZScsXG4gICAgICB0eXBlOiBiYXNlVHlwZS5mcW4sXG4gICAgfSk7XG5cbiAgICBleHBlY3RlZFBhcmFtcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdpZCcsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9KTtcblxuICAgIC8vIGl0J3Mgb2theSBmb3IgYSBjb25zdHJ1Y3Qgbm90IHRvIGhhdmUgYSBcInByb3BzXCIgYXJndW1lbnQgc28gd2Ugb25seVxuICAgIC8vIGFzc2VydCB0aGUgXCJwcm9wc1wiIGFyZ3VtZW50IGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gdHdvIHBhcmFtZXRlcnNcbiAgICBpZiAoaW5pdGlhbGl6ZXIucGFyYW1ldGVycy5sZW5ndGggPiAyKSB7XG4gICAgICBleHBlY3RlZFBhcmFtcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ3Byb3BzJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0U2lnbmF0dXJlKGluaXRpYWxpemVyLCB7XG4gICAgICBwYXJhbWV0ZXJzOiBleHBlY3RlZFBhcmFtcyxcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXN0cnVjdC1uYW1lJyxcbiAgbWVzc2FnZTogJ2FsbCBjb25zdHJ1Y3RzIG11c3QgaGF2ZSBhIHByb3BzIHN0cnVjdCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGFic3RyYWN0IGNsYXNzZXMgYXJlIGV4ZW1wdFxuICAgIGlmIChlLmN0eC5jbGFzc1R5cGUuYWJzdHJhY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLmFzc2VydChlLmN0eC5wcm9wc1R5cGUsIGUuY3R4LmludGVyZmFjZUZxbik7XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtY3Rvci1wcm9wcy10eXBlJyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBcInByb3BzXCIgdHlwZSBzaG91bGQgdXNlIHRoZSBwcm9wcyBzdHJ1Y3QgJXMnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LmluaXRpYWxpemVyKSB7IHJldHVybjsgfVxuICAgIGlmIChlLmN0eC5pbml0aWFsaXplci5wYXJhbWV0ZXJzLmxlbmd0aCA8IDMpIHsgcmV0dXJuOyB9XG5cbiAgICBlLmFzc2VydChcbiAgICAgIGUuY3R4LmluaXRpYWxpemVyLnBhcmFtZXRlcnNbMl0udHlwZS50eXBlID09PSBlLmN0eC5wcm9wc1R5cGUsXG4gICAgICBlLmN0eC5mcW4sXG4gICAgICBlLmN0eC5wcm9wc0Zxbik7XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtY3Rvci1wcm9wcy1vcHRpb25hbCcsXG4gIG1lc3NhZ2U6ICdjb25zdHJ1Y3QgXCJwcm9wc1wiIG11c3QgYmUgb3B0aW9uYWwgc2luY2UgYWxsIHByb3BzIGFyZSBvcHRpb25hbCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaW5pdGlhbGl6ZXIpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGFwcGxpZXMgb25seSBpZiBhbGwgcHJvcGVydGllcyBhcmUgb3B0aW9uYWxcbiAgICBjb25zdCBhbGxPcHRpb25hbCA9IGUuY3R4LnByb3BzVHlwZS5hbGxQcm9wZXJ0aWVzLmV2ZXJ5KHAgPT4gcC5vcHRpb25hbCk7XG4gICAgaWYgKCFhbGxPcHRpb25hbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0KGUuY3R4LmluaXRpYWxpemVyLnBhcmFtZXRlcnNbMl0ub3B0aW9uYWwsIGUuY3R4LmZxbik7XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtaW50ZXJmYWNlLWV4dGVuZHMtaWNvbnN0cnVjdCcsXG4gIG1lc3NhZ2U6ICdjb25zdHJ1Y3QgaW50ZXJmYWNlIG11c3QgZXh0ZW5kIGNvcmUuSUNvbnN0cnVjdCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaW50ZXJmYWNlVHlwZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCBpbnRlcmZhY2VCYXNlID0gZS5jdHguc3lzLmZpbmRJbnRlcmZhY2UoZS5jdHguY29yZS5jb25zdHJ1Y3RJbnRlcmZhY2UuZnFuKTtcbiAgICBlLmFzc2VydChlLmN0eC5pbnRlcmZhY2VUeXBlLmV4dGVuZHMoaW50ZXJmYWNlQmFzZSksIGUuY3R4LmludGVyZmFjZVR5cGUuZnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1iYXNlLWlzLXByaXZhdGUnLFxuICBtZXNzYWdlOiAncHJlZmVyIHRoYXQgdGhlIGNvbnN0cnVjdCBiYXNlIGNsYXNzIGlzIHByaXZhdGUnLFxuICB3YXJuaW5nOiB0cnVlLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LmludGVyZmFjZVR5cGUpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgYmFzZUZxbiA9IGAke2UuY3R4LmNsYXNzVHlwZS5mcW59QmFzZWA7XG4gICAgZS5hc3NlcnQoIWUuY3R4LnN5cy50cnlGaW5kRnFuKGJhc2VGcW4pLCBiYXNlRnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLXVuaW9ucycsXG4gIG1lc3NhZ2U6ICdwcm9wcyBtdXN0IG5vdCB1c2UgVHlwZVNjcmlwdCB1bmlvbnMnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LnByb3BzVHlwZSkgeyByZXR1cm47IH1cbiAgICBpZiAoIWUuY3R4Lmhhc1Byb3BzQXJndW1lbnQpIHsgcmV0dXJuOyB9XG5cbiAgICAvLyB0aGlzIHJ1bGUgZG9lcyBub3QgYXBwbHkgdG8gTDEgY29uc3RydWN0c1xuICAgIGlmIChDb3JlVHlwZXMuaXNDZm5SZXNvdXJjZShlLmN0eC5jbGFzc1R5cGUpKSB7IHJldHVybjsgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBlLmN0eC5wcm9wc1R5cGUub3duUHJvcGVydGllcykge1xuICAgICAgZS5hc3NlcnQoIXByb3BlcnR5LnR5cGUudW5pb25PZlR5cGVzLCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLWFybi1yZWZzJyxcbiAgbWVzc2FnZTogJ3Byb3BzIG11c3QgdXNlIHN0cm9uZyB0eXBlcyBpbnN0ZWFkIG9mIGF0dHJpYnV0ZXMuIHByb3BzIHNob3VsZCBub3QgaGF2ZSBcImFyblwiIHN1ZmZpeCcsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBlLmFzc2VydCghcHJvcGVydHkubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdhcm4nKSwgYCR7ZS5jdHgucHJvcHNGcW59LiR7cHJvcGVydHkubmFtZX1gKTtcbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1uby10b2tlbnMnLFxuICBtZXNzYWdlOiAncHJvcHMgbXVzdCBub3QgdXNlIHRoZSBcIlRva2VuXCIgdHlwZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5hbGxQcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBmcW4gPSBDb25zdHJ1Y3RSZWZsZWN0aW9uLmdldEZxbkZyb21UeXBlUmVmKHByb3BlcnR5LnR5cGUpO1xuXG4gICAgICBjb25zdCBmb3VuZCA9IChmcW4gJiYgZS5jdHguc3lzLnRyeUZpbmRGcW4oZnFuKSk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgZS5hc3NlcnQoIShmcW4gPT09IGUuY3R4LmNvcmUudG9rZW5JbnRlcmZhY2UuZnFuKSwgYCR7ZS5jdHgucHJvcHNGcW59LiR7cHJvcGVydHkubmFtZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1uby1jZm4tdHlwZXMnLFxuICBtZXNzYWdlOiAncHJvcHMgbXVzdCBub3QgZXhwb3NlIEwxIHR5cGVzICh0eXBlcyB3aGljaCBzdGFydCB3aXRoIFwiQ2ZuXCIpJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIEwxIGNvbnN0cnVjdHNcbiAgICBpZiAoQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkgeyByZXR1cm47IH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgZS5jdHgucHJvcHNUeXBlLm93blByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnN0IGZxbiA9IENvbnN0cnVjdFJlZmxlY3Rpb24uZ2V0RnFuRnJvbVR5cGVSZWYocHJvcGVydHkudHlwZSk7XG5cbiAgICAgIGNvbnN0IGZvdW5kID0gKGZxbiAmJiBlLmN0eC5zeXMudHJ5RmluZEZxbihmcW4pKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBlLmFzc2VydCghZm91bmQubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2NmbicpLCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLWFueScsXG4gIG1lc3NhZ2U6ICdwcm9wcyBtdXN0IG5vdCB1c2UgVHlwZXNjcmlwdCBcImFueVwiIHR5cGUnLFxuICBldmFsOiBlID0+IHtcbiAgICBpZiAoIWUuY3R4LnByb3BzVHlwZSkgeyByZXR1cm47IH1cbiAgICBpZiAoIWUuY3R4Lmhhc1Byb3BzQXJndW1lbnQpIHsgcmV0dXJuOyB9XG5cbiAgICAvLyB0aGlzIHJ1bGUgZG9lcyBub3QgYXBwbHkgdG8gTDEgY29uc3RydWN0c1xuICAgIGlmIChDb3JlVHlwZXMuaXNDZm5SZXNvdXJjZShlLmN0eC5jbGFzc1R5cGUpKSB7IHJldHVybjsgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBlLmN0eC5wcm9wc1R5cGUub3duUHJvcGVydGllcykge1xuICAgICAgZS5hc3NlcnQoIXByb3BlcnR5LnR5cGUuaXNBbnksIGAke2UuY3R4LnByb3BzRnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgfVxuICB9LFxufSk7XG5cbmZ1bmN0aW9uIGJhc2VDb25zdHJ1Y3RBZGRlbmR1bSgpOiBzdHJpbmcge1xuICBpZiAoIXByb2Nlc3MuZW52LkFXU0xJTlRfQkFTRV9DT05TVFJVQ1QpIHtcbiAgICByZXR1cm4gJ0lmIHRoZSBjb25zdHJ1Y3QgaXMgdXNpbmcgdGhlIFwiY29uc3RydWN0c1wiIG1vZHVsZSwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBcIkFXU0xJTlRfQkFTRV9DT05TVFJVQ1RcIiBhbmQgcmUtcnVuJztcbiAgfVxuICByZXR1cm4gJyc7XG59Il19
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUN6QyxzQ0FBd0U7QUFFM0QsUUFBQSxlQUFlLEdBQUcsSUFBSSxlQUFNLENBQXNCLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVU7S0FDM0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFhLG1CQUFtQjtJQUV2QixNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBMEI7UUFDeEQsT0FBTyxRQUFRLENBQUMsVUFBVTthQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzQkFBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQThCO1FBQzVELElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN2QixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzVCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7U0FDOUI7UUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQVlELFlBQTRCLFNBQTRCO1FBQTVCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQ3RELElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdB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QyxHQUFHLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFO1lBQUUsT0FBTztTQUFFO1FBRXhDLDRDQUE0QztRQUM1QyxJQUFJLHNCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFekQsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUU7WUFDcEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsU0FBUyxxQkFBcUI7SUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUU7UUFDdkMsT0FBTyxxSEFBcUgsQ0FBQztLQUM5SDtJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBMaW50ZXIsIE1ldGhvZFNpZ25hdHVyZVBhcmFtZXRlckV4cGVjdGF0aW9uIH0gZnJvbSAnLi4vbGludGVyJztcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdExpbnRlciA9IG5ldyBMaW50ZXI8Q29uc3RydWN0UmVmbGVjdGlvbj4oYXNzZW1ibHkgPT4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAuZmlsdGVyKHQgPT4gQ29yZVR5cGVzLmlzQ29uc3RydWN0Q2xhc3ModCkpXG4gIC5tYXAoY29uc3RydWN0ID0+IG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGNvbnN0cnVjdCkpKTtcblxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdFJlZmxlY3Rpb24ge1xuXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbENvbnN0cnVjdHMoYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHkpIHtcbiAgICByZXR1cm4gYXNzZW1ibHkuYWxsQ2xhc3Nlc1xuICAgICAgLmZpbHRlcihjID0+IENvcmVUeXBlcy5pc0NvbnN0cnVjdENsYXNzKGMpKVxuICAgICAgLm1hcChjID0+IG5ldyBDb25zdHJ1Y3RSZWZsZWN0aW9uKGMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RnFuRnJvbVR5cGVSZWYodHlwZVJlZjogcmVmbGVjdC5UeXBlUmVmZXJlbmNlKSB7XG4gICAgaWYgKHR5cGVSZWYuYXJyYXlPZlR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlUmVmLmFycmF5T2ZUeXBlLmZxbjtcbiAgICB9IGVsc2UgaWYgKHR5cGVSZWYubWFwT2ZUeXBlKSB7XG4gICAgICByZXR1cm4gdHlwZVJlZi5tYXBPZlR5cGUuZnFuO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlUmVmLmZxbjtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBmcW46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGludGVyZmFjZUZxbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHNGcW46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGludGVyZmFjZVR5cGU/OiByZWZsZWN0LkludGVyZmFjZVR5cGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9wc1R5cGU/OiByZWZsZWN0LkludGVyZmFjZVR5cGU7XG4gIHB1YmxpYyByZWFkb25seSBpbml0aWFsaXplcj86IHJlZmxlY3QuSW5pdGlhbGl6ZXI7XG4gIHB1YmxpYyByZWFkb25seSBoYXNQcm9wc0FyZ3VtZW50OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgc3lzOiByZWZsZWN0LlR5cGVTeXN0ZW07XG4gIHB1YmxpYyByZWFkb25seSBjb3JlOiBDb3JlVHlwZXM7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNsYXNzVHlwZTogcmVmbGVjdC5DbGFzc1R5cGUpIHtcbiAgICB0aGlzLmZxbiA9IGNsYXNzVHlwZS5mcW47XG4gICAgdGhpcy5zeXMgPSBjbGFzc1R5cGUuc3lzdGVtO1xuICAgIHRoaXMuY29yZSA9IG5ldyBDb3JlVHlwZXModGhpcy5zeXMpO1xuICAgIHRoaXMuaW50ZXJmYWNlRnFuID0gYCR7dGhpcy50eXBlUHJlZml4KGNsYXNzVHlwZSl9Lkkke2NsYXNzVHlwZS5uYW1lfWA7XG4gICAgdGhpcy5wcm9wc0ZxbiA9IGAke3RoaXMudHlwZVByZWZpeChjbGFzc1R5cGUpfS4ke2NsYXNzVHlwZS5uYW1lfVByb3BzYDtcbiAgICB0aGlzLmludGVyZmFjZVR5cGUgPSB0aGlzLnRyeUZpbmRJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnByb3BzVHlwZSA9IHRoaXMudHJ5RmluZFByb3BzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplciA9IGNsYXNzVHlwZS5pbml0aWFsaXplcjtcbiAgICB0aGlzLmhhc1Byb3BzQXJndW1lbnQgPSB0aGlzLmluaXRpYWxpemVyICE9IG51bGwgJiYgdGhpcy5pbml0aWFsaXplci5wYXJhbWV0ZXJzLmxlbmd0aCA+PSAzO1xuICB9XG5cbiAgcHJpdmF0ZSB0eXBlUHJlZml4KGNsYXNzVHlwZTogcmVmbGVjdC5DbGFzc1R5cGUpIHtcbiAgICByZXR1cm4gY2xhc3NUeXBlLmFzc2VtYmx5Lm5hbWUgKyAoY2xhc3NUeXBlLm5hbWVzcGFjZSA/IGAuJHtjbGFzc1R5cGUubmFtZXNwYWNlfWAgOiAnJyk7XG4gIH1cblxuICBwcml2YXRlIHRyeUZpbmRJbnRlcmZhY2UoKSB7XG4gICAgY29uc3Qgc3lzID0gdGhpcy5jbGFzc1R5cGUuc3lzdGVtO1xuICAgIGNvbnN0IGZvdW5kID0gc3lzLnRyeUZpbmRGcW4odGhpcy5pbnRlcmZhY2VGcW4pO1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCFmb3VuZC5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RpbmcgdHlwZSAke3RoaXMuaW50ZXJmYWNlRnFufSB0byBiZSBhbiBpbnRlcmZhY2VgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICBwcml2YXRlIHRyeUZpbmRQcm9wcygpIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuc3lzLnRyeUZpbmRGcW4odGhpcy5wcm9wc0Zxbik7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWZvdW5kLmlzSW50ZXJmYWNlVHlwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGluZyBwcm9wcyBzdHJ1Y3QgJHt0aGlzLnByb3BzRnFufSB0byBiZSBhbiBpbnRlcmZhY2VgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn1cblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdjb25zdHJ1Y3QtY3RvcicsXG4gIG1lc3NhZ2U6ICdzaWduYXR1cmUgb2YgYWxsIGNvbnN0cnVjdCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIFwic2NvcGUsIGlkLCBwcm9wc1wiLiAnICsgYmFzZUNvbnN0cnVjdEFkZGVuZHVtKCksXG4gIGV2YWw6IGUgPT4ge1xuICAgIC8vIG9ubHkgYXBwbGllcyB0byBub24gYWJzdHJhY3QgY2xhc3Nlc1xuICAgIGlmIChlLmN0eC5jbGFzc1R5cGUuYWJzdHJhY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWFsaXplciA9IGUuY3R4LmluaXRpYWxpemVyO1xuICAgIGlmICghZS5hc3NlcnQoaW5pdGlhbGl6ZXIsIGUuY3R4LmZxbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHBlY3RlZFBhcmFtcyA9IG5ldyBBcnJheTxNZXRob2RTaWduYXR1cmVQYXJhbWV0ZXJFeHBlY3RhdGlvbj4oKTtcbiAgICBleHBlY3RlZFBhcmFtcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdzY29wZScsXG4gICAgICB0eXBlOiBlLmN0eC5jb3JlLmJhc2VDb25zdHJ1Y3RDbGFzc0ZxbixcbiAgICB9KTtcblxuICAgIGV4cGVjdGVkUGFyYW1zLnB1c2goe1xuICAgICAgbmFtZTogJ2lkJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIH0pO1xuXG4gICAgLy8gaXQncyBva2F5IGZvciBhIGNvbnN0cnVjdCBub3QgdG8gaGF2ZSBhIFwicHJvcHNcIiBhcmd1bWVudCBzbyB3ZSBvbmx5XG4gICAgLy8gYXNzZXJ0IHRoZSBcInByb3BzXCIgYXJndW1lbnQgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB0d28gcGFyYW1ldGVyc1xuICAgIGlmIChpbml0aWFsaXplci5wYXJhbWV0ZXJzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGV4cGVjdGVkUGFyYW1zLnB1c2goe1xuICAgICAgICBuYW1lOiAncHJvcHMnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZS5hc3NlcnRTaWduYXR1cmUoaW5pdGlhbGl6ZXIsIHtcbiAgICAgIHBhcmFtZXRlcnM6IGV4cGVjdGVkUGFyYW1zLFxuICAgIH0pO1xuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtc3RydWN0LW5hbWUnLFxuICBtZXNzYWdlOiAnYWxsIGNvbnN0cnVjdHMgbXVzdCBoYXZlIGEgcHJvcHMgc3RydWN0JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYWJzdHJhY3QgY2xhc3NlcyBhcmUgZXhlbXB0XG4gICAgaWYgKGUuY3R4LmNsYXNzVHlwZS5hYnN0cmFjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUuYXNzZXJ0KGUuY3R4LnByb3BzVHlwZSwgZS5jdHguaW50ZXJmYWNlRnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1jdG9yLXByb3BzLXR5cGUnLFxuICBtZXNzYWdlOiAnY29uc3RydWN0IFwicHJvcHNcIiB0eXBlIHNob3VsZCB1c2UgdGhlIHByb3BzIHN0cnVjdCAlcycsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaW5pdGlhbGl6ZXIpIHsgcmV0dXJuOyB9XG4gICAgaWYgKGUuY3R4LmluaXRpYWxpemVyLnBhcmFtZXRlcnMubGVuZ3RoIDwgMykgeyByZXR1cm47IH1cblxuICAgIGUuYXNzZXJ0KFxuICAgICAgZS5jdHguaW5pdGlhbGl6ZXIucGFyYW1ldGVyc1syXS50eXBlLnR5cGUgPT09IGUuY3R4LnByb3BzVHlwZSxcbiAgICAgIGUuY3R4LmZxbixcbiAgICAgIGUuY3R4LnByb3BzRnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1jdG9yLXByb3BzLW9wdGlvbmFsJyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBcInByb3BzXCIgbXVzdCBiZSBvcHRpb25hbCBzaW5jZSBhbGwgcHJvcHMgYXJlIG9wdGlvbmFsJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5pbml0aWFsaXplcikgeyByZXR1cm47IH1cbiAgICBpZiAoIWUuY3R4Lmhhc1Byb3BzQXJndW1lbnQpIHsgcmV0dXJuOyB9XG5cbiAgICAvLyB0aGlzIHJ1bGUgYXBwbGllcyBvbmx5IGlmIGFsbCBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbFxuICAgIGNvbnN0IGFsbE9wdGlvbmFsID0gZS5jdHgucHJvcHNUeXBlLmFsbFByb3BlcnRpZXMuZXZlcnkocCA9PiBwLm9wdGlvbmFsKTtcbiAgICBpZiAoIWFsbE9wdGlvbmFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5hc3NlcnQoZS5jdHguaW5pdGlhbGl6ZXIucGFyYW1ldGVyc1syXS5vcHRpb25hbCwgZS5jdHguZnFuKTtcbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ2NvbnN0cnVjdC1pbnRlcmZhY2UtZXh0ZW5kcy1pY29uc3RydWN0JyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBpbnRlcmZhY2UgbXVzdCBleHRlbmQgY29yZS5JQ29uc3RydWN0JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5pbnRlcmZhY2VUeXBlKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IGludGVyZmFjZUJhc2UgPSBlLmN0eC5zeXMuZmluZEludGVyZmFjZShlLmN0eC5jb3JlLmJhc2VDb25zdHJ1Y3RJbnRlcmZhY2VGcW4pO1xuICAgIGUuYXNzZXJ0KGUuY3R4LmludGVyZmFjZVR5cGUuZXh0ZW5kcyhpbnRlcmZhY2VCYXNlKSwgZS5jdHguaW50ZXJmYWNlVHlwZS5mcW4pO1xuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAnY29uc3RydWN0LWJhc2UtaXMtcHJpdmF0ZScsXG4gIG1lc3NhZ2U6ICdwcmVmZXIgdGhhdCB0aGUgY29uc3RydWN0IGJhc2UgY2xhc3MgaXMgcHJpdmF0ZScsXG4gIHdhcm5pbmc6IHRydWUsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguaW50ZXJmYWNlVHlwZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCBiYXNlRnFuID0gYCR7ZS5jdHguY2xhc3NUeXBlLmZxbn1CYXNlYDtcbiAgICBlLmFzc2VydCghZS5jdHguc3lzLnRyeUZpbmRGcW4oYmFzZUZxbiksIGJhc2VGcW4pO1xuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtbm8tdW5pb25zJyxcbiAgbWVzc2FnZTogJ3Byb3BzIG11c3Qgbm90IHVzZSBUeXBlU2NyaXB0IHVuaW9ucycsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBlLmFzc2VydCghcHJvcGVydHkudHlwZS51bmlvbk9mVHlwZXMsIGAke2UuY3R4LnByb3BzRnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgfVxuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtbm8tYXJuLXJlZnMnLFxuICBtZXNzYWdlOiAncHJvcHMgbXVzdCB1c2Ugc3Ryb25nIHR5cGVzIGluc3RlYWQgb2YgYXR0cmlidXRlcy4gcHJvcHMgc2hvdWxkIG5vdCBoYXZlIFwiYXJuXCIgc3VmZml4JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIEwxIGNvbnN0cnVjdHNcbiAgICBpZiAoQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkgeyByZXR1cm47IH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgZS5jdHgucHJvcHNUeXBlLm93blByb3BlcnRpZXMpIHtcbiAgICAgIGUuYXNzZXJ0KCFwcm9wZXJ0eS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ2FybicpLCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5jb25zdHJ1Y3RMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLW5vLXRva2VucycsXG4gIG1lc3NhZ2U6ICdwcm9wcyBtdXN0IG5vdCB1c2UgdGhlIFwiVG9rZW5cIiB0eXBlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIEwxIGNvbnN0cnVjdHNcbiAgICBpZiAoQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkgeyByZXR1cm47IH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgZS5jdHgucHJvcHNUeXBlLmFsbFByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnN0IGZxbiA9IENvbnN0cnVjdFJlZmxlY3Rpb24uZ2V0RnFuRnJvbVR5cGVSZWYocHJvcGVydHkudHlwZSk7XG5cbiAgICAgIGNvbnN0IGZvdW5kID0gKGZxbiAmJiBlLmN0eC5zeXMudHJ5RmluZEZxbihmcW4pKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBlLmFzc2VydCghKGZxbiA9PT0gZS5jdHguY29yZS50b2tlbkludGVyZmFjZUZxbiksIGAke2UuY3R4LnByb3BzRnFufS4ke3Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxufSk7XG5cbmNvbnN0cnVjdExpbnRlci5hZGQoe1xuICBjb2RlOiAncHJvcHMtbm8tY2ZuLXR5cGVzJyxcbiAgbWVzc2FnZTogJ3Byb3BzIG11c3Qgbm90IGV4cG9zZSBMMSB0eXBlcyAodHlwZXMgd2hpY2ggc3RhcnQgd2l0aCBcIkNmblwiKScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGlmICghZS5jdHguaGFzUHJvcHNBcmd1bWVudCkgeyByZXR1cm47IH1cblxuICAgIC8vIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSB0byBMMSBjb25zdHJ1Y3RzXG4gICAgaWYgKENvcmVUeXBlcy5pc0NmblJlc291cmNlKGUuY3R4LmNsYXNzVHlwZSkpIHsgcmV0dXJuOyB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGUuY3R4LnByb3BzVHlwZS5vd25Qcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBmcW4gPSBDb25zdHJ1Y3RSZWZsZWN0aW9uLmdldEZxbkZyb21UeXBlUmVmKHByb3BlcnR5LnR5cGUpO1xuXG4gICAgICBjb25zdCBmb3VuZCA9IChmcW4gJiYgZS5jdHguc3lzLnRyeUZpbmRGcW4oZnFuKSk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgZS5hc3NlcnQoIWZvdW5kLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdjZm4nKSwgYCR7ZS5jdHgucHJvcHNGcW59LiR7cHJvcGVydHkubmFtZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59KTtcblxuY29uc3RydWN0TGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1uby1hbnknLFxuICBtZXNzYWdlOiAncHJvcHMgbXVzdCBub3QgdXNlIFR5cGVzY3JpcHQgXCJhbnlcIiB0eXBlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5wcm9wc1R5cGUpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFlLmN0eC5oYXNQcm9wc0FyZ3VtZW50KSB7IHJldHVybjsgfVxuXG4gICAgLy8gdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIEwxIGNvbnN0cnVjdHNcbiAgICBpZiAoQ29yZVR5cGVzLmlzQ2ZuUmVzb3VyY2UoZS5jdHguY2xhc3NUeXBlKSkgeyByZXR1cm47IH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgZS5jdHgucHJvcHNUeXBlLm93blByb3BlcnRpZXMpIHtcbiAgICAgIGUuYXNzZXJ0KCFwcm9wZXJ0eS50eXBlLmlzQW55LCBgJHtlLmN0eC5wcm9wc0Zxbn0uJHtwcm9wZXJ0eS5uYW1lfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiBiYXNlQ29uc3RydWN0QWRkZW5kdW0oKTogc3RyaW5nIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5BV1NMSU5UX0JBU0VfQ09OU1RSVUNUKSB7XG4gICAgcmV0dXJuICdJZiB0aGUgY29uc3RydWN0IGlzIHVzaW5nIHRoZSBcImNvbnN0cnVjdHNcIiBtb2R1bGUsIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgXCJBV1NMSU5UX0JBU0VfQ09OU1RSVUNUXCIgYW5kIHJlLXJ1bic7XG4gIH1cbiAgcmV0dXJuICcnO1xufSJdfQ==
|
package/lib/rules/construct.ts
CHANGED
|
@@ -24,11 +24,6 @@ export class ConstructReflection {
|
|
|
24
24
|
return typeRef.fqn;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
/**
|
|
28
|
-
* @deprecated - use `CoreTypes.constructClass()` or `CoreTypes.baseConstructClass()` as appropriate
|
|
29
|
-
*/
|
|
30
|
-
public readonly ROOT_CLASS: reflect.ClassType; // constructs.Construct
|
|
31
|
-
|
|
32
27
|
public readonly fqn: string;
|
|
33
28
|
public readonly interfaceFqn: string;
|
|
34
29
|
public readonly propsFqn: string;
|
|
@@ -43,7 +38,6 @@ export class ConstructReflection {
|
|
|
43
38
|
this.fqn = classType.fqn;
|
|
44
39
|
this.sys = classType.system;
|
|
45
40
|
this.core = new CoreTypes(this.sys);
|
|
46
|
-
this.ROOT_CLASS = this.sys.findClass(this.core.constructClass.fqn);
|
|
47
41
|
this.interfaceFqn = `${this.typePrefix(classType)}.I${classType.name}`;
|
|
48
42
|
this.propsFqn = `${this.typePrefix(classType)}.${classType.name}Props`;
|
|
49
43
|
this.interfaceType = this.tryFindInterface();
|
|
@@ -99,16 +93,9 @@ constructLinter.add({
|
|
|
99
93
|
}
|
|
100
94
|
|
|
101
95
|
const expectedParams = new Array<MethodSignatureParameterExpectation>();
|
|
102
|
-
|
|
103
|
-
let baseType;
|
|
104
|
-
if (process.env.AWSLINT_BASE_CONSTRUCT && !CoreTypes.isCfnResource(e.ctx.classType)) {
|
|
105
|
-
baseType = e.ctx.core.baseConstructClass;
|
|
106
|
-
} else {
|
|
107
|
-
baseType = e.ctx.core.constructClass;
|
|
108
|
-
}
|
|
109
96
|
expectedParams.push({
|
|
110
97
|
name: 'scope',
|
|
111
|
-
type:
|
|
98
|
+
type: e.ctx.core.baseConstructClassFqn,
|
|
112
99
|
});
|
|
113
100
|
|
|
114
101
|
expectedParams.push({
|
|
@@ -184,7 +171,7 @@ constructLinter.add({
|
|
|
184
171
|
message: 'construct interface must extend core.IConstruct',
|
|
185
172
|
eval: e => {
|
|
186
173
|
if (!e.ctx.interfaceType) { return; }
|
|
187
|
-
const interfaceBase = e.ctx.sys.findInterface(e.ctx.core.
|
|
174
|
+
const interfaceBase = e.ctx.sys.findInterface(e.ctx.core.baseConstructInterfaceFqn);
|
|
188
175
|
e.assert(e.ctx.interfaceType.extends(interfaceBase), e.ctx.interfaceType.fqn);
|
|
189
176
|
},
|
|
190
177
|
});
|
|
@@ -247,7 +234,7 @@ constructLinter.add({
|
|
|
247
234
|
|
|
248
235
|
const found = (fqn && e.ctx.sys.tryFindFqn(fqn));
|
|
249
236
|
if (found) {
|
|
250
|
-
e.assert(!(fqn === e.ctx.core.
|
|
237
|
+
e.assert(!(fqn === e.ctx.core.tokenInterfaceFqn), `${e.ctx.propsFqn}.${property.name}`);
|
|
251
238
|
}
|
|
252
239
|
}
|
|
253
240
|
},
|