diff --git a/.projen/tasks.json b/.projen/tasks.json index 39bcec0..f897ba7 100644 --- a/.projen/tasks.json +++ b/.projen/tasks.json @@ -156,7 +156,7 @@ "description": "Creates the distribution package", "steps": [ { - "exec": "cp node_modules/@aws-cdk/aws-service-spec/db.json.gz ./ && ncc build --external fsevents --source-map --license licenses.txt" + "exec": "rm -rf dist && cp node_modules/@aws-cdk/aws-service-spec/db.json.gz ./ && ncc build --external fsevents --source-map --license licenses.txt" } ] }, diff --git a/.projenrc.ts b/.projenrc.ts index 925e691..ba77d6a 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -297,7 +297,7 @@ workflow?.on({ projenProject.packageTask.reset(); projenProject.packageTask.exec( - 'cp node_modules/@aws-cdk/aws-service-spec/db.json.gz ./ && ncc build --external fsevents --source-map --license licenses.txt', + 'rm -rf dist && cp node_modules/@aws-cdk/aws-service-spec/db.json.gz ./ && ncc build --external fsevents --source-map --license licenses.txt', ); workflow?.addJobs({ enableAutoMerge: autoMergeJob }); project.synth(); diff --git a/dist/bin/cdk-assets b/dist/bin/cdk-assets deleted file mode 100755 index 09c08dd..0000000 --- a/dist/bin/cdk-assets +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -require('./cdk-assets.js'); \ No newline at end of file diff --git a/dist/bin/cdk-assets.d.ts b/dist/bin/cdk-assets.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/bin/cdk-assets.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/bin/cdk-assets.js b/dist/bin/cdk-assets.js deleted file mode 100644 index 9e3d9ea..0000000 --- a/dist/bin/cdk-assets.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const yargs = require("yargs"); -const list_1 = require("./list"); -const logging_1 = require("./logging"); -const publish_1 = require("./publish"); -const lib_1 = require("../lib"); -async function main() { - const argv = yargs - .usage('$0 [args]') - .option('verbose', { - alias: 'v', - type: 'boolean', - desc: 'Increase logging verbosity', - count: true, - default: 0, - }) - .option('path', { - alias: 'p', - type: 'string', - desc: 'The path (file or directory) to load the assets from. If a directory, ' + - `the file '${lib_1.AssetManifest.DEFAULT_FILENAME}' will be loaded from it.`, - default: '.', - requiresArg: true, - }) - .command('ls', 'List assets from the given manifest', (command) => command, wrapHandler(async (args) => { - await (0, list_1.list)(args); - })) - .command('publish [ASSET..]', 'Publish assets in the given manifest', (command) => command - .option('profile', { - type: 'string', - describe: 'Profile to use from AWS Credentials file', - }) - .positional('ASSET', { - type: 'string', - array: true, - describe: 'Assets to publish (format: "ASSET[:DEST]"), default all', - }), wrapHandler(async (args) => { - await (0, publish_1.publish)({ - path: args.path, - assets: args.ASSET, - profile: args.profile, - }); - })) - .demandCommand() - .help() - .strict() // Error on wrong command - .version(logging_1.VERSION) - .showHelpOnFail(false).argv; - // Evaluating .argv triggers the parsing but the command gets implicitly executed, - // so we don't need the output. - Array.isArray(argv); -} -/** - * Wrap a command's handler with standard pre- and post-work - */ -function wrapHandler(handler) { - return async (argv) => { - if (argv.verbose) { - (0, logging_1.setLogThreshold)('verbose'); - } - await handler(argv); - }; -} -main().catch((e) => { - // eslint-disable-next-line no-console - console.error(e.stack); - process.exitCode = 1; -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBK0I7QUFDL0IsaUNBQThCO0FBQzlCLHVDQUFxRDtBQUNyRCx1Q0FBb0M7QUFDcEMsZ0NBQXVDO0FBRXZDLEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sSUFBSSxHQUFHLEtBQUs7U0FDZixLQUFLLENBQUMsaUJBQWlCLENBQUM7U0FDeEIsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxLQUFLLEVBQUUsSUFBSTtRQUNYLE9BQU8sRUFBRSxDQUFDO0tBQ1gsQ0FBQztTQUNELE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDZCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUNGLHdFQUF3RTtZQUN4RSxhQUFhLG1CQUFhLENBQUMsZ0JBQWdCLDJCQUEyQjtRQUN4RSxPQUFPLEVBQUUsR0FBRztRQUNaLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxPQUFPLENBQ04sSUFBSSxFQUNKLHFDQUFxQyxFQUNyQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUNwQixXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3pCLE1BQU0sSUFBQSxXQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQ0g7U0FDQSxPQUFPLENBQ04sbUJBQW1CLEVBQ25CLHNDQUFzQyxFQUN0QyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTztTQUNKLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsSUFBSSxFQUFFLFFBQVE7UUFDZCxRQUFRLEVBQUUsMENBQTBDO0tBQ3JELENBQUM7U0FDRCxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ25CLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLElBQUk7UUFDWCxRQUFRLEVBQUUseURBQXlEO0tBQ3BFLENBQUMsRUFDTixXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3pCLE1BQU0sSUFBQSxpQkFBTyxFQUFDO1lBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2xCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDSDtTQUNBLGFBQWEsRUFBRTtTQUNmLElBQUksRUFBRTtTQUNOLE1BQU0sRUFBRSxDQUFDLHlCQUF5QjtTQUNsQyxPQUFPLENBQUMsaUJBQU8sQ0FBQztTQUNoQixjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRTlCLGtGQUFrRjtJQUNsRiwrQkFBK0I7SUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBb0MsT0FBNkI7SUFDbkYsT0FBTyxLQUFLLEVBQUUsSUFBTyxFQUFFLEVBQUU7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBQSx5QkFBZSxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDakIsc0NBQXNDO0lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgbGlzdCB9IGZyb20gJy4vbGlzdCc7XG5pbXBvcnQgeyBzZXRMb2dUaHJlc2hvbGQsIFZFUlNJT04gfSBmcm9tICcuL2xvZ2dpbmcnO1xuaW1wb3J0IHsgcHVibGlzaCB9IGZyb20gJy4vcHVibGlzaCc7XG5pbXBvcnQgeyBBc3NldE1hbmlmZXN0IH0gZnJvbSAnLi4vbGliJztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJndiA9IHlhcmdzXG4gICAgLnVzYWdlKCckMCA8Y21kPiBbYXJnc10nKVxuICAgIC5vcHRpb24oJ3ZlcmJvc2UnLCB7XG4gICAgICBhbGlhczogJ3YnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ0luY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5JyxcbiAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3BhdGgnLCB7XG4gICAgICBhbGlhczogJ3AnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBkZXNjOlxuICAgICAgICAnVGhlIHBhdGggKGZpbGUgb3IgZGlyZWN0b3J5KSB0byBsb2FkIHRoZSBhc3NldHMgZnJvbS4gSWYgYSBkaXJlY3RvcnksICcgK1xuICAgICAgICBgdGhlIGZpbGUgJyR7QXNzZXRNYW5pZmVzdC5ERUZBVUxUX0ZJTEVOQU1FfScgd2lsbCBiZSBsb2FkZWQgZnJvbSBpdC5gLFxuICAgICAgZGVmYXVsdDogJy4nLFxuICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgfSlcbiAgICAuY29tbWFuZChcbiAgICAgICdscycsXG4gICAgICAnTGlzdCBhc3NldHMgZnJvbSB0aGUgZ2l2ZW4gbWFuaWZlc3QnLFxuICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQsXG4gICAgICB3cmFwSGFuZGxlcihhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBhd2FpdCBsaXN0KGFyZ3MpO1xuICAgICAgfSlcbiAgICApXG4gICAgLmNvbW1hbmQoXG4gICAgICAncHVibGlzaCBbQVNTRVQuLl0nLFxuICAgICAgJ1B1Ymxpc2ggYXNzZXRzIGluIHRoZSBnaXZlbiBtYW5pZmVzdCcsXG4gICAgICAoY29tbWFuZCkgPT5cbiAgICAgICAgY29tbWFuZFxuICAgICAgICAgIC5vcHRpb24oJ3Byb2ZpbGUnLCB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaWJlOiAnUHJvZmlsZSB0byB1c2UgZnJvbSBBV1MgQ3JlZGVudGlhbHMgZmlsZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucG9zaXRpb25hbCgnQVNTRVQnLCB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGFycmF5OiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpYmU6ICdBc3NldHMgdG8gcHVibGlzaCAoZm9ybWF0OiBcIkFTU0VUWzpERVNUXVwiKSwgZGVmYXVsdCBhbGwnLFxuICAgICAgICAgIH0pLFxuICAgICAgd3JhcEhhbmRsZXIoYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgYXdhaXQgcHVibGlzaCh7XG4gICAgICAgICAgcGF0aDogYXJncy5wYXRoLFxuICAgICAgICAgIGFzc2V0czogYXJncy5BU1NFVCxcbiAgICAgICAgICBwcm9maWxlOiBhcmdzLnByb2ZpbGUsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApXG4gICAgLmRlbWFuZENvbW1hbmQoKVxuICAgIC5oZWxwKClcbiAgICAuc3RyaWN0KCkgLy8gRXJyb3Igb24gd3JvbmcgY29tbWFuZFxuICAgIC52ZXJzaW9uKFZFUlNJT04pXG4gICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKS5hcmd2O1xuXG4gIC8vIEV2YWx1YXRpbmcgLmFyZ3YgdHJpZ2dlcnMgdGhlIHBhcnNpbmcgYnV0IHRoZSBjb21tYW5kIGdldHMgaW1wbGljaXRseSBleGVjdXRlZCxcbiAgLy8gc28gd2UgZG9uJ3QgbmVlZCB0aGUgb3V0cHV0LlxuICBBcnJheS5pc0FycmF5KGFyZ3YpO1xufVxuXG4vKipcbiAqIFdyYXAgYSBjb21tYW5kJ3MgaGFuZGxlciB3aXRoIHN0YW5kYXJkIHByZS0gYW5kIHBvc3Qtd29ya1xuICovXG5mdW5jdGlvbiB3cmFwSGFuZGxlcjxBIGV4dGVuZHMgeyB2ZXJib3NlPzogbnVtYmVyIH0sIFI+KGhhbmRsZXI6ICh4OiBBKSA9PiBQcm9taXNlPFI+KSB7XG4gIHJldHVybiBhc3luYyAoYXJndjogQSkgPT4ge1xuICAgIGlmIChhcmd2LnZlcmJvc2UpIHtcbiAgICAgIHNldExvZ1RocmVzaG9sZCgndmVyYm9zZScpO1xuICAgIH1cbiAgICBhd2FpdCBoYW5kbGVyKGFyZ3YpO1xuICB9O1xufVxuXG5tYWluKCkuY2F0Y2goKGUpID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlLnN0YWNrKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcbiJdfQ== \ No newline at end of file diff --git a/dist/bin/docker-credential-cdk-assets b/dist/bin/docker-credential-cdk-assets deleted file mode 100755 index 3829057..0000000 --- a/dist/bin/docker-credential-cdk-assets +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -require('./docker-credential-cdk-assets.js'); diff --git a/dist/bin/docker-credential-cdk-assets.d.ts b/dist/bin/docker-credential-cdk-assets.d.ts deleted file mode 100644 index 3a37c8e..0000000 --- a/dist/bin/docker-credential-cdk-assets.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Docker Credential Helper to retrieve credentials based on an external configuration file. - * Supports loading credentials from ECR repositories and from Secrets Manager, - * optionally via an assumed role. - * - * The only operation currently supported by this credential helper at this time is the `get` - * command, which receives a domain name as input on stdin and returns a Username/Secret in - * JSON format on stdout. - * - * IMPORTANT - The credential helper must not output anything else besides the final credentials - * in any success case; doing so breaks docker's parsing of the output and causes the login to fail. - */ -export {}; diff --git a/dist/bin/docker-credential-cdk-assets.js b/dist/bin/docker-credential-cdk-assets.js deleted file mode 100644 index 1ca0486..0000000 --- a/dist/bin/docker-credential-cdk-assets.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -/** - * Docker Credential Helper to retrieve credentials based on an external configuration file. - * Supports loading credentials from ECR repositories and from Secrets Manager, - * optionally via an assumed role. - * - * The only operation currently supported by this credential helper at this time is the `get` - * command, which receives a domain name as input on stdin and returns a Username/Secret in - * JSON format on stdout. - * - * IMPORTANT - The credential helper must not output anything else besides the final credentials - * in any success case; doing so breaks docker's parsing of the output and causes the login to fail. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = require("fs"); -const lib_1 = require("../lib"); -const docker_credentials_1 = require("../lib/private/docker-credentials"); -async function main() { - // Expected invocation is [node, docker-credential-cdk-assets, get] with input fed via STDIN - // For other valid docker commands (store, list, erase), we no-op. - if (process.argv.length !== 3 || process.argv[2] !== 'get') { - process.exit(0); - } - const config = (0, docker_credentials_1.cdkCredentialsConfig)(); - if (!config) { - throw new Error(`unable to find CDK Docker credentials at: ${(0, docker_credentials_1.cdkCredentialsConfigFile)()}`); - } - // Read the domain to fetch from stdin - let endpoint = fs.readFileSync(0, { encoding: 'utf-8' }).trim(); - const credentials = await (0, docker_credentials_1.fetchDockerLoginCredentials)(new lib_1.DefaultAwsClient(), config, endpoint); - // Write the credentials back to stdout - fs.writeFileSync(1, JSON.stringify(credentials)); -} -main().catch((e) => { - // eslint-disable-next-line no-console - console.error(e.stack); - process.exitCode = 1; -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILHlCQUF5QjtBQUN6QixnQ0FBMEM7QUFFMUMsMEVBSTJDO0FBRTNDLEtBQUssVUFBVSxJQUFJO0lBQ2pCLDRGQUE0RjtJQUM1RixrRUFBa0U7SUFDbEUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHlDQUFvQixHQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsSUFBQSw2Q0FBd0IsR0FBRSxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEUsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFBLGdEQUEyQixFQUFDLElBQUksc0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEcsdUNBQXVDO0lBQ3ZDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDakIsc0NBQXNDO0lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEb2NrZXIgQ3JlZGVudGlhbCBIZWxwZXIgdG8gcmV0cmlldmUgY3JlZGVudGlhbHMgYmFzZWQgb24gYW4gZXh0ZXJuYWwgY29uZmlndXJhdGlvbiBmaWxlLlxuICogU3VwcG9ydHMgbG9hZGluZyBjcmVkZW50aWFscyBmcm9tIEVDUiByZXBvc2l0b3JpZXMgYW5kIGZyb20gU2VjcmV0cyBNYW5hZ2VyLFxuICogb3B0aW9uYWxseSB2aWEgYW4gYXNzdW1lZCByb2xlLlxuICpcbiAqIFRoZSBvbmx5IG9wZXJhdGlvbiBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IHRoaXMgY3JlZGVudGlhbCBoZWxwZXIgYXQgdGhpcyB0aW1lIGlzIHRoZSBgZ2V0YFxuICogY29tbWFuZCwgd2hpY2ggcmVjZWl2ZXMgYSBkb21haW4gbmFtZSBhcyBpbnB1dCBvbiBzdGRpbiBhbmQgcmV0dXJucyBhIFVzZXJuYW1lL1NlY3JldCBpblxuICogSlNPTiBmb3JtYXQgb24gc3Rkb3V0LlxuICpcbiAqIElNUE9SVEFOVCAtIFRoZSBjcmVkZW50aWFsIGhlbHBlciBtdXN0IG5vdCBvdXRwdXQgYW55dGhpbmcgZWxzZSBiZXNpZGVzIHRoZSBmaW5hbCBjcmVkZW50aWFsc1xuICogaW4gYW55IHN1Y2Nlc3MgY2FzZTsgZG9pbmcgc28gYnJlYWtzIGRvY2tlcidzIHBhcnNpbmcgb2YgdGhlIG91dHB1dCBhbmQgY2F1c2VzIHRoZSBsb2dpbiB0byBmYWlsLlxuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IERlZmF1bHRBd3NDbGllbnQgfSBmcm9tICcuLi9saWInO1xuXG5pbXBvcnQge1xuICBjZGtDcmVkZW50aWFsc0NvbmZpZyxcbiAgY2RrQ3JlZGVudGlhbHNDb25maWdGaWxlLFxuICBmZXRjaERvY2tlckxvZ2luQ3JlZGVudGlhbHMsXG59IGZyb20gJy4uL2xpYi9wcml2YXRlL2RvY2tlci1jcmVkZW50aWFscyc7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIC8vIEV4cGVjdGVkIGludm9jYXRpb24gaXMgW25vZGUsIGRvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHMsIGdldF0gd2l0aCBpbnB1dCBmZWQgdmlhIFNURElOXG4gIC8vIEZvciBvdGhlciB2YWxpZCBkb2NrZXIgY29tbWFuZHMgKHN0b3JlLCBsaXN0LCBlcmFzZSksIHdlIG5vLW9wLlxuICBpZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCAhPT0gMyB8fCBwcm9jZXNzLmFyZ3ZbMl0gIT09ICdnZXQnKSB7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gY2RrQ3JlZGVudGlhbHNDb25maWcoKTtcbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuYWJsZSB0byBmaW5kIENESyBEb2NrZXIgY3JlZGVudGlhbHMgYXQ6ICR7Y2RrQ3JlZGVudGlhbHNDb25maWdGaWxlKCl9YCk7XG4gIH1cblxuICAvLyBSZWFkIHRoZSBkb21haW4gdG8gZmV0Y2ggZnJvbSBzdGRpblxuICBsZXQgZW5kcG9pbnQgPSBmcy5yZWFkRmlsZVN5bmMoMCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KS50cmltKCk7XG4gIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgZmV0Y2hEb2NrZXJMb2dpbkNyZWRlbnRpYWxzKG5ldyBEZWZhdWx0QXdzQ2xpZW50KCksIGNvbmZpZywgZW5kcG9pbnQpO1xuICAvLyBXcml0ZSB0aGUgY3JlZGVudGlhbHMgYmFjayB0byBzdGRvdXRcbiAgZnMud3JpdGVGaWxlU3luYygxLCBKU09OLnN0cmluZ2lmeShjcmVkZW50aWFscykpO1xufVxuXG5tYWluKCkuY2F0Y2goKGUpID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlLnN0YWNrKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcbiJdfQ== \ No newline at end of file diff --git a/dist/bin/list.d.ts b/dist/bin/list.d.ts deleted file mode 100644 index 0ddafa7..0000000 --- a/dist/bin/list.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare function list(args: { - path: string; -}): Promise; diff --git a/dist/bin/list.js b/dist/bin/list.js deleted file mode 100644 index a6b029a..0000000 --- a/dist/bin/list.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.list = list; -const lib_1 = require("../lib"); -async function list(args) { - const manifest = lib_1.AssetManifest.fromPath(args.path); - // eslint-disable-next-line no-console - console.log(manifest.list().join('\n')); -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxvQkFJQztBQU5ELGdDQUF1QztBQUVoQyxLQUFLLFVBQVUsSUFBSSxDQUFDLElBQXNCO0lBQy9DLE1BQU0sUUFBUSxHQUFHLG1CQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc2V0TWFuaWZlc3QgfSBmcm9tICcuLi9saWInO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdChhcmdzOiB7IHBhdGg6IHN0cmluZyB9KSB7XG4gIGNvbnN0IG1hbmlmZXN0ID0gQXNzZXRNYW5pZmVzdC5mcm9tUGF0aChhcmdzLnBhdGgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhtYW5pZmVzdC5saXN0KCkuam9pbignXFxuJykpO1xufVxuIl19 \ No newline at end of file diff --git a/dist/bin/logging.d.ts b/dist/bin/logging.d.ts deleted file mode 100644 index 4848550..0000000 --- a/dist/bin/logging.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export type LogLevel = 'verbose' | 'info' | 'error'; -export declare const VERSION: any; -export declare function setLogThreshold(threshold: LogLevel): void; -export declare function log(level: LogLevel, message: string, stream?: 'stdout' | 'stderr'): void; diff --git a/dist/bin/logging.js b/dist/bin/logging.js deleted file mode 100644 index d802ee1..0000000 --- a/dist/bin/logging.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.VERSION = void 0; -exports.setLogThreshold = setLogThreshold; -exports.log = log; -const fs = require("fs"); -const path = require("path"); -let logThreshold = 'info'; -exports.VERSION = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), { encoding: 'utf-8' })).version; -const LOG_LEVELS = { - verbose: 1, - info: 2, - error: 3, -}; -function setLogThreshold(threshold) { - logThreshold = threshold; -} -function log(level, message, stream) { - if (LOG_LEVELS[level] >= LOG_LEVELS[logThreshold]) { - if (stream === 'stdout') { - console.log(`${level.padEnd(7, ' ')}: ${message}`); - } - else { - console.error(`${level.padEnd(7, ' ')}: ${message}`); - } - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0JBLDBDQUVDO0FBRUQsa0JBUUM7QUE1QkQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUc3QixJQUFJLFlBQVksR0FBYSxNQUFNLENBQUM7QUFFdkIsUUFBQSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDL0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FDbkYsQ0FBQyxPQUFPLENBQUM7QUFFVixNQUFNLFVBQVUsR0FBNkI7SUFDM0MsT0FBTyxFQUFFLENBQUM7SUFDVixJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0NBQ1QsQ0FBQztBQUVGLFNBQWdCLGVBQWUsQ0FBQyxTQUFtQjtJQUNqRCxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBQzNCLENBQUM7QUFFRCxTQUFnQixHQUFHLENBQUMsS0FBZSxFQUFFLE9BQWUsRUFBRSxNQUE0QjtJQUNoRixJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gJ3ZlcmJvc2UnIHwgJ2luZm8nIHwgJ2Vycm9yJztcbmxldCBsb2dUaHJlc2hvbGQ6IExvZ0xldmVsID0gJ2luZm8nO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IEpTT04ucGFyc2UoXG4gIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAncGFja2FnZS5qc29uJyksIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSlcbikudmVyc2lvbjtcblxuY29uc3QgTE9HX0xFVkVMUzogUmVjb3JkPExvZ0xldmVsLCBudW1iZXI+ID0ge1xuICB2ZXJib3NlOiAxLFxuICBpbmZvOiAyLFxuICBlcnJvcjogMyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2dUaHJlc2hvbGQodGhyZXNob2xkOiBMb2dMZXZlbCkge1xuICBsb2dUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2cobGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIHN0cmVhbT86ICdzdGRvdXQnIHwgJ3N0ZGVycicpIHtcbiAgaWYgKExPR19MRVZFTFNbbGV2ZWxdID49IExPR19MRVZFTFNbbG9nVGhyZXNob2xkXSkge1xuICAgIGlmIChzdHJlYW0gPT09ICdzdGRvdXQnKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtsZXZlbC5wYWRFbmQoNywgJyAnKX06ICR7bWVzc2FnZX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtsZXZlbC5wYWRFbmQoNywgJyAnKX06ICR7bWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/dist/bin/publish.d.ts b/dist/bin/publish.d.ts deleted file mode 100644 index 367fdce..0000000 --- a/dist/bin/publish.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function publish(args: { - path: string; - assets?: string[]; - profile?: string; -}): Promise; diff --git a/dist/bin/publish.js b/dist/bin/publish.js deleted file mode 100644 index 716c69f..0000000 --- a/dist/bin/publish.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.publish = publish; -const logging_1 = require("./logging"); -const lib_1 = require("../lib"); -async function publish(args) { - let manifest = lib_1.AssetManifest.fromPath(args.path); - (0, logging_1.log)('verbose', `Loaded manifest from ${args.path}: ${manifest.entries.length} assets found`); - if (args.assets && args.assets.length > 0) { - const selection = args.assets.map((a) => lib_1.DestinationPattern.parse(a)); - manifest = manifest.select(selection); - (0, logging_1.log)('verbose', `Applied selection: ${manifest.entries.length} assets selected.`); - } - const pub = new lib_1.AssetPublishing(manifest, { - aws: new lib_1.DefaultAwsClient(args.profile), - progressListener: new ConsoleProgress(), - throwOnError: false, - }); - await pub.publish(); - if (pub.hasFailures) { - for (const failure of pub.failures) { - // eslint-disable-next-line no-console - console.error('Failure:', failure.error.stack); - } - process.exitCode = 1; - } -} -const EVENT_TO_LEVEL = { - build: 'verbose', - cached: 'verbose', - check: 'verbose', - debug: 'verbose', - fail: 'error', - found: 'verbose', - start: 'info', - success: 'info', - upload: 'verbose', - shell_open: 'verbose', - shell_stdout: 'verbose', - shell_stderr: 'verbose', - shell_close: 'verbose', -}; -class ConsoleProgress { - onPublishEvent(type, event) { - const stream = ['open', 'data_stdout', 'close'].includes(type) ? 'stdout' : 'stderr'; - (0, logging_1.log)(EVENT_TO_LEVEL[type], `[${event.percentComplete}%] ${type}: ${event.message}`, stream); - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSwwQkEwQkM7QUFyQ0QsdUNBQTBDO0FBQzFDLGdDQVFnQjtBQUVULEtBQUssVUFBVSxPQUFPLENBQUMsSUFBMkQ7SUFDdkYsSUFBSSxRQUFRLEdBQUcsbUJBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELElBQUEsYUFBRyxFQUFDLFNBQVMsRUFBRSx3QkFBd0IsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sZUFBZSxDQUFDLENBQUM7SUFFN0YsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx3QkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFBLGFBQUcsRUFBQyxTQUFTLEVBQUUsc0JBQXNCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLHFCQUFlLENBQUMsUUFBUSxFQUFFO1FBQ3hDLEdBQUcsRUFBRSxJQUFJLHNCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdkMsZ0JBQWdCLEVBQUUsSUFBSSxlQUFlLEVBQUU7UUFDdkMsWUFBWSxFQUFFLEtBQUs7S0FDcEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFcEIsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLE9BQU8sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxjQUFjLEdBQWdDO0lBQ2xELEtBQUssRUFBRSxTQUFTO0lBQ2hCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLElBQUksRUFBRSxPQUFPO0lBQ2IsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLE1BQU07SUFDYixPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLFdBQVcsRUFBRSxTQUFTO0NBQ3ZCLENBQUM7QUFFRixNQUFNLGVBQWU7SUFDWixjQUFjLENBQUMsSUFBZSxFQUFFLEtBQXVCO1FBQzVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3JGLElBQUEsYUFBRyxFQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxlQUFlLE1BQU0sSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2csIExvZ0xldmVsIH0gZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7XG4gIEFzc2V0TWFuaWZlc3QsXG4gIEFzc2V0UHVibGlzaGluZyxcbiAgRGVmYXVsdEF3c0NsaWVudCxcbiAgRGVzdGluYXRpb25QYXR0ZXJuLFxuICBFdmVudFR5cGUsXG4gIElQdWJsaXNoUHJvZ3Jlc3MsXG4gIElQdWJsaXNoUHJvZ3Jlc3NMaXN0ZW5lcixcbn0gZnJvbSAnLi4vbGliJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1Ymxpc2goYXJnczogeyBwYXRoOiBzdHJpbmc7IGFzc2V0cz86IHN0cmluZ1tdOyBwcm9maWxlPzogc3RyaW5nIH0pIHtcbiAgbGV0IG1hbmlmZXN0ID0gQXNzZXRNYW5pZmVzdC5mcm9tUGF0aChhcmdzLnBhdGgpO1xuICBsb2coJ3ZlcmJvc2UnLCBgTG9hZGVkIG1hbmlmZXN0IGZyb20gJHthcmdzLnBhdGh9OiAke21hbmlmZXN0LmVudHJpZXMubGVuZ3RofSBhc3NldHMgZm91bmRgKTtcblxuICBpZiAoYXJncy5hc3NldHMgJiYgYXJncy5hc3NldHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGFyZ3MuYXNzZXRzLm1hcCgoYSkgPT4gRGVzdGluYXRpb25QYXR0ZXJuLnBhcnNlKGEpKTtcbiAgICBtYW5pZmVzdCA9IG1hbmlmZXN0LnNlbGVjdChzZWxlY3Rpb24pO1xuICAgIGxvZygndmVyYm9zZScsIGBBcHBsaWVkIHNlbGVjdGlvbjogJHttYW5pZmVzdC5lbnRyaWVzLmxlbmd0aH0gYXNzZXRzIHNlbGVjdGVkLmApO1xuICB9XG5cbiAgY29uc3QgcHViID0gbmV3IEFzc2V0UHVibGlzaGluZyhtYW5pZmVzdCwge1xuICAgIGF3czogbmV3IERlZmF1bHRBd3NDbGllbnQoYXJncy5wcm9maWxlKSxcbiAgICBwcm9ncmVzc0xpc3RlbmVyOiBuZXcgQ29uc29sZVByb2dyZXNzKCksXG4gICAgdGhyb3dPbkVycm9yOiBmYWxzZSxcbiAgfSk7XG5cbiAgYXdhaXQgcHViLnB1Ymxpc2goKTtcblxuICBpZiAocHViLmhhc0ZhaWx1cmVzKSB7XG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHB1Yi5mYWlsdXJlcykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWx1cmU6JywgZmFpbHVyZS5lcnJvci5zdGFjayk7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gIH1cbn1cblxuY29uc3QgRVZFTlRfVE9fTEVWRUw6IFJlY29yZDxFdmVudFR5cGUsIExvZ0xldmVsPiA9IHtcbiAgYnVpbGQ6ICd2ZXJib3NlJyxcbiAgY2FjaGVkOiAndmVyYm9zZScsXG4gIGNoZWNrOiAndmVyYm9zZScsXG4gIGRlYnVnOiAndmVyYm9zZScsXG4gIGZhaWw6ICdlcnJvcicsXG4gIGZvdW5kOiAndmVyYm9zZScsXG4gIHN0YXJ0OiAnaW5mbycsXG4gIHN1Y2Nlc3M6ICdpbmZvJyxcbiAgdXBsb2FkOiAndmVyYm9zZScsXG4gIHNoZWxsX29wZW46ICd2ZXJib3NlJyxcbiAgc2hlbGxfc3Rkb3V0OiAndmVyYm9zZScsXG4gIHNoZWxsX3N0ZGVycjogJ3ZlcmJvc2UnLFxuICBzaGVsbF9jbG9zZTogJ3ZlcmJvc2UnLFxufTtcblxuY2xhc3MgQ29uc29sZVByb2dyZXNzIGltcGxlbWVudHMgSVB1Ymxpc2hQcm9ncmVzc0xpc3RlbmVyIHtcbiAgcHVibGljIG9uUHVibGlzaEV2ZW50KHR5cGU6IEV2ZW50VHlwZSwgZXZlbnQ6IElQdWJsaXNoUHJvZ3Jlc3MpOiB2b2lkIHtcbiAgICBjb25zdCBzdHJlYW0gPSBbJ29wZW4nLCAnZGF0YV9zdGRvdXQnLCAnY2xvc2UnXS5pbmNsdWRlcyh0eXBlKSA/ICdzdGRvdXQnIDogJ3N0ZGVycic7XG4gICAgbG9nKEVWRU5UX1RPX0xFVkVMW3R5cGVdLCBgWyR7ZXZlbnQucGVyY2VudENvbXBsZXRlfSVdICR7dHlwZX06ICR7ZXZlbnQubWVzc2FnZX1gLCBzdHJlYW0pO1xuICB9XG59XG4iXX0= \ No newline at end of file