UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

147 lines 22.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/order */ const settings_1 = require("../lib/settings"); test('can delete values from Context object', () => { // GIVEN const settings1 = new settings_1.Settings({ foo: 'bar' }); const settings2 = new settings_1.Settings({ boo: 'baz' }); const context = new settings_1.Context(settings1, settings2); // WHEN context.unset('foo'); // THEN expect(context.all).toEqual({ boo: 'baz' }); expect(settings1.all).toEqual({}); expect(settings2.all).toEqual({ boo: 'baz' }); }); test('can set values in Context object', () => { // GIVEN const settings1 = new settings_1.Settings(); const settings2 = new settings_1.Settings(); const context = new settings_1.Context(settings1, settings2); // WHEN context.set('foo', 'bar'); // THEN expect(context.all).toEqual({ foo: 'bar' }); expect(settings1.all).toEqual({ foo: 'bar' }); expect(settings2.all).toEqual({}); }); test('can set values in Context object if first is immutable', () => { // GIVEN const settings1 = new settings_1.Settings(); const settings2 = new settings_1.Settings(); const context = new settings_1.Context(settings1.makeReadOnly(), settings2); // WHEN context.set('foo', 'bar'); // THEN expect(context.all).toEqual({ foo: 'bar' }); expect(settings1.all).toEqual({}); expect(settings2.all).toEqual({ foo: 'bar' }); }); test('can clear all values in all objects', () => { // GIVEN const settings1 = new settings_1.Settings({ foo: 'bar' }); const settings2 = new settings_1.Settings({ foo: 'snar', boo: 'gar' }); const context = new settings_1.Context(settings1, settings2); // WHEN context.clear(); // THEN expect(context.all).toEqual({}); expect(settings1.all).toEqual({}); expect(settings2.all).toEqual({}); }); test('can parse string context from command line arguments', () => { // GIVEN const settings1 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=bar'], _: [settings_1.Command.DEPLOY] }); const settings2 = settings_1.Settings.fromCommandLineArguments({ context: ['foo='], _: [settings_1.Command.DEPLOY] }); // THEN expect(settings1.get(['context']).foo).toEqual('bar'); expect(settings2.get(['context']).foo).toEqual(''); }); test('can parse string context from command line arguments with equals sign in value', () => { // GIVEN const settings1 = settings_1.Settings.fromCommandLineArguments({ context: ['foo==bar='], _: [settings_1.Command.DEPLOY] }); const settings2 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=bar='], _: [settings_1.Command.DEPLOY] }); // THEN expect(settings1.get(['context']).foo).toEqual('=bar='); expect(settings2.get(['context']).foo).toEqual('bar='); }); test('can parse tag values from command line arguments', () => { // GIVEN const settings1 = settings_1.Settings.fromCommandLineArguments({ tags: ['foo=bar'], _: [settings_1.Command.DEPLOY] }); const settings2 = settings_1.Settings.fromCommandLineArguments({ tags: ['foo='], _: [settings_1.Command.DEPLOY] }); // THEN expect(settings1.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual('bar'); expect(settings2.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual(''); }); test('can parse tag values from command line arguments with equals sign in value', () => { // GIVEN const settings1 = settings_1.Settings.fromCommandLineArguments({ tags: ['foo==bar='], _: [settings_1.Command.DEPLOY] }); const settings2 = settings_1.Settings.fromCommandLineArguments({ tags: ['foo=bar='], _: [settings_1.Command.DEPLOY] }); // THEN expect(settings1.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual('=bar='); expect(settings2.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual('bar='); }); test('bundling stacks defaults to an empty list', () => { // GIVEN const settings = settings_1.Settings.fromCommandLineArguments({ _: [settings_1.Command.LIST], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual([]); }); test('bundling stacks defaults to ** for deploy', () => { // GIVEN const settings = settings_1.Settings.fromCommandLineArguments({ _: [settings_1.Command.DEPLOY], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['**']); }); test('bundling stacks defaults to ** for watch', () => { // GIVEN const settings = settings_1.Settings.fromCommandLineArguments({ _: [settings_1.Command.WATCH], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['**']); }); test('bundling stacks with deploy exclusively', () => { // GIVEN const settings = settings_1.Settings.fromCommandLineArguments({ _: [settings_1.Command.DEPLOY], exclusively: true, STACKS: ['cool-stack'], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['cool-stack']); }); test('bundling stacks with watch exclusively', () => { // GIVEN const settings = settings_1.Settings.fromCommandLineArguments({ _: [settings_1.Command.WATCH], exclusively: true, STACKS: ['cool-stack'], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['cool-stack']); }); test('should include outputs-file in settings', () => { // GIVEN const settings = settings_1.Settings.fromCommandLineArguments({ _: [settings_1.Command.DEPLOY], outputsFile: 'my-outputs-file.json', }); // THEN expect(settings.get(['outputsFile'])).toEqual('my-outputs-file.json'); }); test('providing a build arg', () => { // GIVEN const settings = settings_1.Settings.fromCommandLineArguments({ _: [settings_1.Command.SYNTH], build: 'mvn package', }); // THEN expect(settings.get(['build'])).toEqual('mvn package'); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNldHRpbmdzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMsOENBQTZEO0FBRzdELElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7SUFDakQsUUFBUTtJQUNSLE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFbEQsT0FBTztJQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckIsT0FBTztJQUNQLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7SUFDNUMsUUFBUTtJQUNSLE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVEsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVEsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENB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LFFBQVE7SUFDUixNQUFNLFFBQVEsR0FBRyxtQkFBUSxDQUFDLHdCQUF3QixDQUFDO1FBQ2pELENBQUMsRUFBRSxDQUFDLGtCQUFPLENBQUMsTUFBTSxDQUFDO1FBQ25CLFdBQVcsRUFBRSxzQkFBc0I7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNqQyxRQUFRO0lBQ1IsTUFBTSxRQUFRLEdBQUcsbUJBQVEsQ0FBQyx3QkFBd0IsQ0FBQztRQUNqRCxDQUFDLEVBQUUsQ0FBQyxrQkFBTyxDQUFDLEtBQUssQ0FBQztRQUNsQixLQUFLLEVBQUUsYUFBYTtLQUNyQixDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L29yZGVyICovXG5pbXBvcnQgeyBDb21tYW5kLCBDb250ZXh0LCBTZXR0aW5ncyB9IGZyb20gJy4uL2xpYi9zZXR0aW5ncyc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi9saWIvY2RrLXRvb2xraXQnO1xuXG50ZXN0KCdjYW4gZGVsZXRlIHZhbHVlcyBmcm9tIENvbnRleHQgb2JqZWN0JywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBuZXcgU2V0dGluZ3MoeyBmb286ICdiYXInIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBuZXcgU2V0dGluZ3MoeyBib286ICdiYXonIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoc2V0dGluZ3MxLCBzZXR0aW5nczIpO1xuXG4gIC8vIFdIRU5cbiAgY29udGV4dC51bnNldCgnZm9vJyk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY29udGV4dC5hbGwpLnRvRXF1YWwoeyBib286ICdiYXonIH0pO1xuICBleHBlY3Qoc2V0dGluZ3MxLmFsbCkudG9FcXVhbCh7fSk7XG4gIGV4cGVjdChzZXR0aW5nczIuYWxsKS50b0VxdWFsKHsgYm9vOiAnYmF6JyB9KTtcbn0pO1xuXG50ZXN0KCdjYW4gc2V0IHZhbHVlcyBpbiBDb250ZXh0IG9iamVjdCcsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MxID0gbmV3IFNldHRpbmdzKCk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IG5ldyBTZXR0aW5ncygpO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoc2V0dGluZ3MxLCBzZXR0aW5nczIpO1xuXG4gIC8vIFdIRU5cbiAgY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjb250ZXh0LmFsbCkudG9FcXVhbCh7IGZvbzogJ2JhcicgfSk7XG4gIGV4cGVjdChzZXR0aW5nczEuYWxsKS50b0VxdWFsKHsgZm9vOiAnYmFyJyB9KTtcbiAgZXhwZWN0KHNldHRpbmdzMi5hbGwpLnRvRXF1YWwoe30pO1xufSk7XG5cbnRlc3QoJ2NhbiBzZXQgdmFsdWVzIGluIENvbnRleHQgb2JqZWN0IGlmIGZpcnN0IGlzIGltbXV0YWJsZScsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MxID0gbmV3IFNldHRpbmdzKCk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IG5ldyBTZXR0aW5ncygpO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoc2V0dGluZ3MxLm1ha2VSZWFkT25seSgpLCBzZXR0aW5nczIpO1xuXG4gIC8vIFdIRU5cbiAgY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjb250ZXh0LmFsbCkudG9FcXVhbCh7IGZvbzogJ2JhcicgfSk7XG4gIGV4cGVjdChzZXR0aW5nczEuYWxsKS50b0VxdWFsKHsgfSk7XG4gIGV4cGVjdChzZXR0aW5nczIuYWxsKS50b0VxdWFsKHsgZm9vOiAnYmFyJyB9KTtcbn0pO1xuXG50ZXN0KCdjYW4gY2xlYXIgYWxsIHZhbHVlcyBpbiBhbGwgb2JqZWN0cycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MxID0gbmV3IFNldHRpbmdzKHsgZm9vOiAnYmFyJyB9KTtcbiAgY29uc3Qgc2V0dGluZ3MyID0gbmV3IFNldHRpbmdzKHsgZm9vOiAnc25hcicsIGJvbzogJ2dhcicgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dChzZXR0aW5nczEsIHNldHRpbmdzMik7XG5cbiAgLy8gV0hFTlxuICBjb250ZXh0LmNsZWFyKCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY29udGV4dC5hbGwpLnRvRXF1YWwoe30pO1xuICBleHBlY3Qoc2V0dGluZ3MxLmFsbCkudG9FcXVhbCh7IH0pO1xuICBleHBlY3Qoc2V0dGluZ3MyLmFsbCkudG9FcXVhbCh7fSk7XG59KTtcblxudGVzdCgnY2FuIHBhcnNlIHN0cmluZyBjb250ZXh0IGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MxID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHsgY29udGV4dDogWydmb289YmFyJ10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7IGNvbnRleHQ6IFsnZm9vPSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzMS5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCggJ2JhcicpO1xuICBleHBlY3Qoc2V0dGluZ3MyLmdldChbJ2NvbnRleHQnXSkuZm9vKS50b0VxdWFsKCAnJyk7XG59KTtcblxudGVzdCgnY2FuIHBhcnNlIHN0cmluZyBjb250ZXh0IGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB3aXRoIGVxdWFscyBzaWduIGluIHZhbHVlJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz09YmFyPSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz1iYXI9J10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MxLmdldChbJ2NvbnRleHQnXSkuZm9vKS50b0VxdWFsKCAnPWJhcj0nKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCggJ2Jhcj0nKTtcbn0pO1xuXG50ZXN0KCdjYW4gcGFyc2UgdGFnIHZhbHVlcyBmcm9tIGNvbW1hbmQgbGluZSBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7IHRhZ3M6IFsnZm9vPWJhciddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyB0YWdzOiBbJ2Zvbz0nXSwgXzogW0NvbW1hbmQuREVQTE9ZXSB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5nczEuZ2V0KFsndGFncyddKS5maW5kKCh0YWc6IFRhZykgPT4gdGFnLktleSA9PT0gJ2ZvbycpLlZhbHVlKS50b0VxdWFsKCdiYXInKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWyd0YWdzJ10pLmZpbmQoKHRhZzogVGFnKSA9PiB0YWcuS2V5ID09PSAnZm9vJykuVmFsdWUpLnRvRXF1YWwoJycpO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSB0YWcgdmFsdWVzIGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB3aXRoIGVxdWFscyBzaWduIGluIHZhbHVlJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyB0YWdzOiBbJ2Zvbz09YmFyPSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyB0YWdzOiBbJ2Zvbz1iYXI9J10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MxLmdldChbJ3RhZ3MnXSkuZmluZCgodGFnOiBUYWcpID0+IHRhZy5LZXkgPT09ICdmb28nKS5WYWx1ZSkudG9FcXVhbCgnPWJhcj0nKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWyd0YWdzJ10pLmZpbmQoKHRhZzogVGFnKSA9PiB0YWcuS2V5ID09PSAnZm9vJykuVmFsdWUpLnRvRXF1YWwoJ2Jhcj0nKTtcbn0pO1xuXG50ZXN0KCdidW5kbGluZyBzdGFja3MgZGVmYXVsdHMgdG8gYW4gZW1wdHkgbGlzdCcsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLkxJU1RdLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIGRlZmF1bHRzIHRvICoqIGZvciBkZXBsb3knLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5ERVBMT1ldLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJyoqJ10pO1xufSk7XG5cbnRlc3QoJ2J1bmRsaW5nIHN0YWNrcyBkZWZhdWx0cyB0byAqKiBmb3Igd2F0Y2gnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5XQVRDSF0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ2J1bmRsaW5nU3RhY2tzJ10pKS50b0VxdWFsKFsnKionXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIHdpdGggZGVwbG95IGV4Y2x1c2l2ZWx5JywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5ncyA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7XG4gICAgXzogW0NvbW1hbmQuREVQTE9ZXSxcbiAgICBleGNsdXNpdmVseTogdHJ1ZSxcbiAgICBTVEFDS1M6IFsnY29vbC1zdGFjayddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJ2Nvb2wtc3RhY2snXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIHdpdGggd2F0Y2ggZXhjbHVzaXZlbHknLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5XQVRDSF0sXG4gICAgZXhjbHVzaXZlbHk6IHRydWUsXG4gICAgU1RBQ0tTOiBbJ2Nvb2wtc3RhY2snXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnYnVuZGxpbmdTdGFja3MnXSkpLnRvRXF1YWwoWydjb29sLXN0YWNrJ10pO1xufSk7XG5cbnRlc3QoJ3Nob3VsZCBpbmNsdWRlIG91dHB1dHMtZmlsZSBpbiBzZXR0aW5ncycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLkRFUExPWV0sXG4gICAgb3V0cHV0c0ZpbGU6ICdteS1vdXRwdXRzLWZpbGUuanNvbicsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ291dHB1dHNGaWxlJ10pKS50b0VxdWFsKCdteS1vdXRwdXRzLWZpbGUuanNvbicpO1xufSk7XG5cbnRlc3QoJ3Byb3ZpZGluZyBhIGJ1aWxkIGFyZycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLlNZTlRIXSxcbiAgICBidWlsZDogJ212biBwYWNrYWdlJyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSkpLnRvRXF1YWwoJ212biBwYWNrYWdlJyk7XG59KTtcbiJdfQ==