UNPKG

rollup-plugin-atomic

Version:
116 lines 23.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createPlugins = void 0; const utils_1 = require("./utils"); function createPlugins(inputPluginsNames = ["ts", "js", "json", "coffee"], extraPlugins) { var _a, _b; const configDir = (_b = (_a = require.main) === null || _a === void 0 ? void 0 : _a.filename) === null || _b === void 0 ? void 0 : _b.replace(/node_modules.*/, ""); let plugins = []; pushPlugin(["ts", ".ts", "typescript", "TypeScript"], ["@rollup/plugin-typescript"], { noEmitOnError: false, module: "ESNext", }); pushPlugin(["coffee", ".coffee", "coffeescript", "coffee-script", "CoffeeScript", "cs"], ["rollup-plugin-coffee-script"]); pushPlugin(["json", ".json", "JSON"], ["@rollup/plugin-json"], { compact: true }); const cssIndex = (0, utils_1.includesAny)(inputPluginsNames, ["css", ".css"]); if (cssIndex !== null) { const cssOnly = require("rollup-plugin-css-only"); console.log(` css only was chosen to bundle css files into a single file. This plugin requires you to import css files in a dummy js file and pass it as an input to rollup. This should be done in a separate step from src code bundling `); if (typeof inputPluginsNames[cssIndex] === "string") { plugins.push(cssOnly({ output: "dist/bundle.css" })); } else { plugins.push(cssOnly(inputPluginsNames[cssIndex][1])); } if (process.env.NODE_ENV === "production") { const execute = require("rollup-plugin-execute"); plugins.push(execute(["csso dist/bundle.css --output dist/bundle.css"])); } } pushPlugin(["babel"], ["@rollup/plugin-babel", "babel"], { extensions: [".js", ".jsx", ".mjs", ".coffee"], babelHelpers: "bundled", }); pushPlugin(["wasm", "WebAssembly"], ["@rollup/plugin-wasm", "wasm"]); pushPlugin(["as", "asc", "assemblyscript", "AssemblyScript"], ["rollup-plugin-assemblyscript", "asc"]); pushPlugin(["visualizer", "plot"], ["rollup-plugin-visualizer"], { sourcemap: true, open: true, }); if (extraPlugins !== undefined && typeof extraPlugins === "object") { console.warn("Passing extra plugins to `createPlugins` is deprecated. Instead concatenate the output of `createPlugins` with your extra plugins."); try { plugins.push(...extraPlugins); } catch (e) { console.error("You should pass extraPlugins as an array"); } } pushPlugin(["sourcemaps"], ["rollup-plugin-sourcemaps"], {}, true); pushPlugin(["autoExternal"], ["rollup-plugin-auto-external"], { builtins: true, dependencies: false, peerDependencies: false, }, true); pushPlugin(["resolve"], ["@rollup/plugin-node-resolve"], { mainFields: ["module", "exports", "es", "es6", "esm", "main"], extensions: [".ts", ".js", ".coffee", ".tsx", ".jsx", ".mjs", ".node", ".json"], preferBuiltins: true, dedupe: [], }, true); pushPlugin(["commonjs"], ["@rollup/plugin-commonjs"], { transformMixedEsModules: true, }, true); pushPlugin(["replace"], ["@rollup/plugin-replace"], { "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV), preventAssignment: true, }, true); let terserOptions = (process.env.NODE_ENV === "production" ? { ecma: 2018, warnings: true, compress: { drop_console: false, }, format: { comments: false, }, } : {}); if (typeof configDir === "string") { const maybeConfig = (0, utils_1.loadConfigFile)(configDir, [".terserrc.js", ".terserrc"]); if (maybeConfig !== null) { terserOptions = maybeConfig; } } pushPlugin(["terser"], ["rollup-plugin-terser", "terser"], terserOptions, process.env.NODE_ENV === "production"); function pushPlugin(nameTriggers, [moduleName, prop], pluginDefaultOptions = {}, includeByDefault = false) { const index = (0, utils_1.includesAny)(inputPluginsNames, [...nameTriggers, moduleName]); if (index !== null) { const pluginFunction = (0, utils_1.getPluginFunction)(require(moduleName), prop); if (typeof inputPluginsNames[index] === "string") { plugins.push(pluginFunction(pluginDefaultOptions)); } else if (inputPluginsNames[index].length == 3 && inputPluginsNames[index][2] === false) { plugins.push(pluginFunction(inputPluginsNames[index][1])); } else { const pluginOptions = inputPluginsNames[index][1]; plugins.push(pluginFunction(typeof pluginOptions === "object" ? { ...pluginDefaultOptions, ...pluginOptions } : { ...pluginDefaultOptions, pluginOptions })); } } else if (includeByDefault) { const pluginFunction = (0, utils_1.getPluginFunction)(require(moduleName), prop); plugins.push(pluginFunction(pluginDefaultOptions)); } } return plugins; } exports.createPlugins = createPlugins; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUF3RTtBQWtFeEUsU0FBZ0IsYUFBYSxDQUMzQixvQkFBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFDakUsWUFBeUI7O0lBRXpCLE1BQU0sU0FBUyxHQUFHLE1BQUEsTUFBQSxPQUFPLENBQUMsSUFBSSwwQ0FBRSxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUV2RSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUE7SUFLaEIsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFO1FBQ25GLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxRQUFRO0tBQ1UsQ0FBQyxDQUFBO0lBRzdCLFVBQVUsQ0FDUixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQzVFLENBQUMsNkJBQTZCLENBQUMsQ0FDaEMsQ0FBQTtJQUdELFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBdUIsQ0FBQyxDQUFBO0lBR3RHLE1BQU0sUUFBUSxHQUFHLElBQUEsbUJBQVcsRUFBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQ2hFLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtRQUNyQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDOzs7O0tB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5jbHVkZXNBbnksIGdldFBsdWdpbkZ1bmN0aW9uLCBsb2FkQ29uZmlnRmlsZSB9IGZyb20gXCIuL3V0aWxzXCJcblxuaW1wb3J0IHR5cGUgcmVzb2x2ZSBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tbm9kZS1yZXNvbHZlXCJcbnR5cGUgUm9sbHVwUmVzb2x2ZU9wdGlvbnMgPSBQYXJhbWV0ZXJzPHR5cGVvZiByZXNvbHZlPlswXVxuaW1wb3J0IHR5cGUgY29tbW9uanMgZnJvbSBcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCJcbnR5cGUgUm9sbHVwQ29tbW9uanNPcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2YgY29tbW9uanM+WzBdXG5pbXBvcnQgdHlwZSB7IHRlcnNlciB9IGZyb20gXCJyb2xsdXAtcGx1Z2luLXRlcnNlclwiXG50eXBlIFJvbGx1cFRlcnNlck9wdGlvbnMgPSBQYXJhbWV0ZXJzPHR5cGVvZiB0ZXJzZXI+WzBdXG5pbXBvcnQgdHlwZSBzb3VyY2VtYXBzIGZyb20gXCJyb2xsdXAtcGx1Z2luLXNvdXJjZW1hcHNcIlxudHlwZSBSb2xsdXBTb3VyY2VtYXBzT3B0aW9ucyA9IFBhcmFtZXRlcnM8dHlwZW9mIHNvdXJjZW1hcHM+WzBdXG5pbXBvcnQgdHlwZSByZXBsYWNlIGZyb20gXCJAcm9sbHVwL3BsdWdpbi1yZXBsYWNlXCJcbnR5cGUgUm9sbHVwUmVwbGFjZU9wdGlvbnMgPSBQYXJhbWV0ZXJzPHR5cGVvZiByZXBsYWNlPlswXVxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHR5cGUgYXV0b0V4dGVybmFsIGZyb20gXCJyb2xsdXAtcGx1Z2luLWF1dG8tZXh0ZXJuYWxcIlxudHlwZSBSb2xsdXBBdXRvZXh0ZXJuYWxPcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2YgYXV0b0V4dGVybmFsPlswXSAmIFJlY29yZDxzdHJpbmcsIGFueT5cbmltcG9ydCB0eXBlIHR5cGVzY3JpcHQgZnJvbSBcIkByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRcIlxudHlwZSBSb2xsdXBUeXBlU2NyaXB0T3B0aW9ucyA9IFBhcmFtZXRlcnM8dHlwZW9mIHR5cGVzY3JpcHQ+WzBdXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgdHlwZSBjb2ZmZWVzY3JpcHQgZnJvbSBcInJvbGx1cC1wbHVnaW4tY29mZmVlLXNjcmlwdFwiXG50eXBlIFJvbGx1cENvZmZlZU9wdGlvbnMgPSBQYXJhbWV0ZXJzPHR5cGVvZiBjb2ZmZWVzY3JpcHQ+WzBdICYgUmVjb3JkPHN0cmluZywgYW55PlxuaW1wb3J0IHR5cGUganNvbiBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tanNvblwiXG50eXBlIFJvbGx1cEpzb25PcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2YganNvbj5bMF1cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0eXBlIGNzc09ubHkgZnJvbSBcInJvbGx1cC1wbHVnaW4tY3NzLW9ubHlcIlxudHlwZSBSb2xsdXBDc3Nvbmx5T3B0aW9ucyA9IFBhcmFtZXRlcnM8dHlwZW9mIGNzc09ubHk+WzBdICYgUmVjb3JkPHN0cmluZywgYW55PlxuaW1wb3J0IHR5cGUgYmFiZWwgZnJvbSBcIkByb2xsdXAvcGx1Z2luLWJhYmVsXCJcbnR5cGUgUm9sbHVwQmFiZWxPcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2YgYmFiZWw+WzBdXG5pbXBvcnQgdHlwZSB7IHdhc20gfSBmcm9tIFwiQHJvbGx1cC9wbHVnaW4td2FzbVwiXG50eXBlIFJvbGx1cFdhc21PcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2Ygd2FzbT5bMF1cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0eXBlIHsgYXNjIH0gZnJvbSBcInJvbGx1cC1wbHVnaW4tYXNzZW1ibHlzY3JpcHRcIlxudHlwZSBSb2xsdXBBc2NPcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2YgYXNjPlswXSAmIFJlY29yZDxzdHJpbmcsIGFueT5cbmltcG9ydCB0eXBlIHZpc3VhbGl6ZXIgZnJvbSBcInJvbGx1cC1wbHVnaW4tdmlzdWFsaXplclwiXG50eXBlIFJvbGx1cFZpc3VhbGl6ZXJPcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2YgdmlzdWFsaXplcj5bMF1cblxuZXhwb3J0IHR5cGUgUGx1Z2luID1cbiAgfCBcImpzXCJcbiAgfCBcInRzXCJcbiAgfCBcImNvZmZlZVwiXG4gIHwgXCJqc29uXCJcbiAgfCBcImNzc1wiXG4gIHwgXCJiYWJlbFwiXG4gIHwgXCJ3YXNtXCJcbiAgfCBcImFzXCJcbiAgfCBcInRlcnNlclwiXG4gIHwgXCJyZXBsYWNlXCJcbiAgfCBcInNvdXJjZW1hcHNcIlxuICB8IFwiY29tbW9uanNcIlxuICB8IFwicmVzb2x2ZVwiXG4gIHwgXCJhdXRvRXh0ZXJuYWxcIlxuICB8IFwidmlzdWFsaXplclwiXG4gIHwgW1widHNcIiwgUm9sbHVwVHlwZVNjcmlwdE9wdGlvbnMsIGJvb2xlYW4/XVxuICB8IFtcImJhYmVsXCIsIFJvbGx1cEJhYmVsT3B0aW9ucywgYm9vbGVhbj9dXG4gIHwgW1wiY29mZmVlXCIsIFJvbGx1cENvZmZlZU9wdGlvbnMsIGJvb2xlYW4/XVxuICB8IFtcImpzb25cIiwgUm9sbHVwSnNvbk9wdGlvbnMsIGJvb2xlYW4/XVxuICB8IFtcImNzc1wiLCBSb2xsdXBDc3Nvbmx5T3B0aW9ucywgYm9vbGVhbj9dXG4gIHwgW1wid2FzbVwiLCBSb2xsdXBXYXNtT3B0aW9ucywgYm9vbGVhbj9dXG4gIHwgW1wiYXNcIiwgUm9sbHVwQXNjT3B0aW9ucywgYm9vbGVhbj9dXG4gIHwgW1widGVyc2VyXCIsIFJvbGx1cFRlcnNlck9wdGlvbnMsIGJvb2xlYW4/XVxuICB8IFtcInJlcGxhY2VcIiwgUm9sbHVwUmVwbGFjZU9wdGlvbnMsIGJvb2xlYW4/XVxuICB8IFtcInNvdXJjZW1hcHNcIiwgUm9sbHVwU291cmNlbWFwc09wdGlvbnMsIGJvb2xlYW4/XVxuICB8IFtcImNvbW1vbmpzXCIsIFJvbGx1cENvbW1vbmpzT3B0aW9ucywgYm9vbGVhbj9dXG4gIHwgW1wicmVzb2x2ZVwiLCBSb2xsdXBSZXNvbHZlT3B0aW9ucywgYm9vbGVhbj9dXG4gIHwgW1wiYXV0b0V4dGVybmFsXCIsIFJvbGx1cEF1dG9leHRlcm5hbE9wdGlvbnMsIGJvb2xlYW4/XVxuICB8IFtcInZpc3VhbGl6ZXJcIiwgUm9sbHVwVmlzdWFsaXplck9wdGlvbnMsIGJvb2xlYW4/XVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGx1Z2lucyhcbiAgaW5wdXRQbHVnaW5zTmFtZXM6IEFycmF5PFBsdWdpbj4gPSBbXCJ0c1wiLCBcImpzXCIsIFwianNvblwiLCBcImNvZmZlZVwiXSxcbiAgZXh0cmFQbHVnaW5zPzogQXJyYXk8YW55PlxuKSB7XG4gIGNvbnN0IGNvbmZpZ0RpciA9IHJlcXVpcmUubWFpbj8uZmlsZW5hbWU/LnJlcGxhY2UoL25vZGVfbW9kdWxlcy4qLywgXCJcIilcblxuICBsZXQgcGx1Z2lucyA9IFtdXG5cbiAgLy8gbGFuZ3VhZ2Ugc3BlY2lmaWNcblxuICAvLyB0eXBlc2NyaXB0XG4gIHB1c2hQbHVnaW4oW1widHNcIiwgXCIudHNcIiwgXCJ0eXBlc2NyaXB0XCIsIFwiVHlwZVNjcmlwdFwiXSwgW1wiQHJvbGx1cC9wbHVnaW4tdHlwZXNjcmlwdFwiXSwge1xuICAgIG5vRW1pdE9uRXJyb3I6IGZhbHNlLFxuICAgIG1vZHVsZTogXCJFU05leHRcIiwgLy8gZG8gbm90IG1vZGlmeSB0aGUgaW1wb3J0c1xuICB9IGFzIFJvbGx1cFR5cGVTY3JpcHRPcHRpb25zKVxuXG4gIC8vIGNvZmZlZXNjcmlwdFxuICBwdXNoUGx1Z2luKFxuICAgIFtcImNvZmZlZVwiLCBcIi5jb2ZmZWVcIiwgXCJjb2ZmZWVzY3JpcHRcIiwgXCJjb2ZmZWUtc2NyaXB0XCIsIFwiQ29mZmVlU2NyaXB0XCIsIFwiY3NcIl0sXG4gICAgW1wicm9sbHVwLXBsdWdpbi1jb2ZmZWUtc2NyaXB0XCJdXG4gIClcblxuICAvLyBqc29uXG4gIHB1c2hQbHVnaW4oW1wianNvblwiLCBcIi5qc29uXCIsIFwiSlNPTlwiXSwgW1wiQHJvbGx1cC9wbHVnaW4tanNvblwiXSwgeyBjb21wYWN0OiB0cnVlIH0gYXMgUm9sbHVwSnNvbk9wdGlvbnMpXG5cbiAgLy8gY3NzIG9ubHlcbiAgY29uc3QgY3NzSW5kZXggPSBpbmNsdWRlc0FueShpbnB1dFBsdWdpbnNOYW1lcywgW1wiY3NzXCIsIFwiLmNzc1wiXSlcbiAgaWYgKGNzc0luZGV4ICE9PSBudWxsKSB7XG4gICAgY29uc3QgY3NzT25seSA9IHJlcXVpcmUoXCJyb2xsdXAtcGx1Z2luLWNzcy1vbmx5XCIpXG4gICAgY29uc29sZS5sb2coYFxuICAgICAgY3NzIG9ubHkgd2FzIGNob3NlbiB0byBidW5kbGUgY3NzIGZpbGVzIGludG8gYSBzaW5nbGUgZmlsZS5cbiAgICAgIFRoaXMgcGx1Z2luIHJlcXVpcmVzIHlvdSB0byBpbXBvcnQgY3NzIGZpbGVzIGluIGEgZHVtbXkganMgZmlsZSBhbmQgcGFzcyBpdCBhcyBhbiBpbnB1dCB0byByb2xsdXAuXG4gICAgICBUaGlzIHNob3VsZCBiZSBkb25lIGluIGEgc2VwYXJhdGUgc3RlcCBmcm9tIHNyYyBjb2RlIGJ1bmRsaW5nXG4gICAgYClcbiAgICBpZiAodHlwZW9mIGlucHV0UGx1Z2luc05hbWVzW2Nzc0luZGV4XSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8gcGx1Z2luIG5hbWUgb25seVxuICAgICAgcGx1Z2lucy5wdXNoKGNzc09ubHkoeyBvdXRwdXQ6IFwiZGlzdC9idW5kbGUuY3NzXCIgfSBhcyBSb2xsdXBDc3Nvbmx5T3B0aW9ucykpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHBsdWdpbiB3aXRoIG9wdGlvbnNcbiAgICAgIHBsdWdpbnMucHVzaChjc3NPbmx5KGlucHV0UGx1Z2luc05hbWVzW2Nzc0luZGV4XVsxXSkpXG4gICAgfVxuICAgIC8vIG1pbmlmeSBjc3NcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAvLyBUT0RPIGdldCB0aGUgb3V0cHV0IGZyb20gdGhlIHBsdWdpbiB3aGVuIHRoZSB1c2VyIHVzZXMgb3B0aW9uc1xuICAgICAgY29uc3QgZXhlY3V0ZSA9IHJlcXVpcmUoXCJyb2xsdXAtcGx1Z2luLWV4ZWN1dGVcIilcbiAgICAgIHBsdWdpbnMucHVzaChleGVjdXRlKFtcImNzc28gZGlzdC9idW5kbGUuY3NzIC0tb3V0cHV0IGRpc3QvYnVuZGxlLmNzc1wiXSkpXG4gICAgfVxuICB9XG5cbiAgcHVzaFBsdWdpbihbXCJiYWJlbFwiXSwgW1wiQHJvbGx1cC9wbHVnaW4tYmFiZWxcIiwgXCJiYWJlbFwiXSwge1xuICAgIGV4dGVuc2lvbnM6IFtcIi5qc1wiLCBcIi5qc3hcIiwgXCIubWpzXCIsIFwiLmNvZmZlZVwiXSxcbiAgICBiYWJlbEhlbHBlcnM6IFwiYnVuZGxlZFwiLFxuICB9IGFzIFJvbGx1cEJhYmVsT3B0aW9ucylcblxuICAvLyB3YXNtXG4gIHB1c2hQbHVnaW4oW1wid2FzbVwiLCBcIldlYkFzc2VtYmx5XCJdLCBbXCJAcm9sbHVwL3BsdWdpbi13YXNtXCIsIFwid2FzbVwiXSlcblxuICAvLyBhc1xuICBwdXNoUGx1Z2luKFtcImFzXCIsIFwiYXNjXCIsIFwiYXNzZW1ibHlzY3JpcHRcIiwgXCJBc3NlbWJseVNjcmlwdFwiXSwgW1wicm9sbHVwLXBsdWdpbi1hc3NlbWJseXNjcmlwdFwiLCBcImFzY1wiXSlcblxuICAvLyB2aXN1YWxpemVyXG4gIHB1c2hQbHVnaW4oW1widmlzdWFsaXplclwiLCBcInBsb3RcIl0sIFtcInJvbGx1cC1wbHVnaW4tdmlzdWFsaXplclwiXSwge1xuICAgIHNvdXJjZW1hcDogdHJ1ZSxcbiAgICBvcGVuOiB0cnVlLFxuICB9IGFzIFJvbGx1cFZpc3VhbGl6ZXJPcHRpb25zKVxuXG4gIC8vIGV4dHJhIHBsdWdpbnNcbiAgaWYgKGV4dHJhUGx1Z2lucyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBleHRyYVBsdWdpbnMgPT09IFwib2JqZWN0XCIgLyphcnJheSovKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJQYXNzaW5nIGV4dHJhIHBsdWdpbnMgdG8gYGNyZWF0ZVBsdWdpbnNgIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQgY29uY2F0ZW5hdGUgdGhlIG91dHB1dCBvZiBgY3JlYXRlUGx1Z2luc2Agd2l0aCB5b3VyIGV4dHJhIHBsdWdpbnMuXCJcbiAgICApXG4gICAgdHJ5IHtcbiAgICAgIHBsdWdpbnMucHVzaCguLi5leHRyYVBsdWdpbnMpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIllvdSBzaG91bGQgcGFzcyBleHRyYVBsdWdpbnMgYXMgYW4gYXJyYXlcIilcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0IHBsdWdpbnNcblxuICAvLyBsb2FkaW5nIGZpbGVzIHdpdGggZXhpc3Rpbmcgc291cmNlIG1hcHNcbiAgcHVzaFBsdWdpbihbXCJzb3VyY2VtYXBzXCJdLCBbXCJyb2xsdXAtcGx1Z2luLXNvdXJjZW1hcHNcIl0sIHt9IGFzIFJvbGx1cFNvdXJjZW1hcHNPcHRpb25zLCB0cnVlKVxuXG4gIHB1c2hQbHVnaW4oXG4gICAgW1wiYXV0b0V4dGVybmFsXCJdLFxuICAgIFtcInJvbGx1cC1wbHVnaW4tYXV0by1leHRlcm5hbFwiXSxcbiAgICB7XG4gICAgICBidWlsdGluczogdHJ1ZSxcbiAgICAgIGRlcGVuZGVuY2llczogZmFsc2UsXG4gICAgICBwZWVyRGVwZW5kZW5jaWVzOiBmYWxzZSxcbiAgICB9IGFzIFJvbGx1cEF1dG9leHRlcm5hbE9wdGlvbnMsXG4gICAgdHJ1ZVxuICApXG5cbiAgLy8gc28gUm9sbHVwIGNhbiBmaW5kIGV4dGVybmFsc1xuICBwdXNoUGx1Z2luKFxuICAgIFtcInJlc29sdmVcIl0sXG4gICAgW1wiQHJvbGx1cC9wbHVnaW4tbm9kZS1yZXNvbHZlXCJdLFxuICAgIHtcbiAgICAgIG1haW5GaWVsZHM6IFtcIm1vZHVsZVwiLCBcImV4cG9ydHNcIiwgXCJlc1wiLCBcImVzNlwiLCBcImVzbVwiLCBcIm1haW5cIl0sXG4gICAgICBleHRlbnNpb25zOiBbXCIudHNcIiwgXCIuanNcIiwgXCIuY29mZmVlXCIsIFwiLnRzeFwiLCBcIi5qc3hcIiwgXCIubWpzXCIsIFwiLm5vZGVcIiwgXCIuanNvblwiXSxcbiAgICAgIHByZWZlckJ1aWx0aW5zOiB0cnVlLFxuICAgICAgZGVkdXBlOiBbXSxcbiAgICB9LFxuICAgIHRydWVcbiAgKVxuXG4gIC8vIHNvIFJvbGx1cCBjYW4gY29udmVydCBleHRlcm5hbHMgdG8gYW4gRVMgbW9kdWxlXG4gIHB1c2hQbHVnaW4oXG4gICAgW1wiY29tbW9uanNcIl0sXG4gICAgW1wiQHJvbGx1cC9wbHVnaW4tY29tbW9uanNcIl0sXG4gICAge1xuICAgICAgdHJhbnNmb3JtTWl4ZWRFc01vZHVsZXM6IHRydWUsXG4gICAgfSxcbiAgICB0cnVlXG4gIClcblxuICAvLyByZXBsYWNlXG4gIHB1c2hQbHVnaW4oXG4gICAgW1wicmVwbGFjZVwiXSxcbiAgICBbXCJAcm9sbHVwL3BsdWdpbi1yZXBsYWNlXCJdLFxuICAgIHtcbiAgICAgIFwicHJvY2Vzcy5lbnYuTk9ERV9FTlZcIjogSlNPTi5zdHJpbmdpZnkocHJvY2Vzcy5lbnYuTk9ERV9FTlYpLFxuICAgICAgcHJldmVudEFzc2lnbm1lbnQ6IHRydWUsXG4gICAgfSxcbiAgICB0cnVlXG4gIClcblxuICAvLyB0ZXJzZXJcbiAgbGV0IHRlcnNlck9wdGlvbnMgPSAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiXG4gICAgICA/IHtcbiAgICAgICAgICBlY21hOiAyMDE4LFxuICAgICAgICAgIHdhcm5pbmdzOiB0cnVlLFxuICAgICAgICAgIGNvbXByZXNzOiB7XG4gICAgICAgICAgICBkcm9wX2NvbnNvbGU6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZm9ybWF0OiB7XG4gICAgICAgICAgICBjb21tZW50czogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgOiB7fVxuICApIGFzIFJvbGx1cFRlcnNlck9wdGlvbnNcbiAgaWYgKHR5cGVvZiBjb25maWdEaXIgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBtYXliZUNvbmZpZyA9IGxvYWRDb25maWdGaWxlKGNvbmZpZ0RpciwgW1wiLnRlcnNlcnJjLmpzXCIsIFwiLnRlcnNlcnJjXCJdKVxuICAgIGlmIChtYXliZUNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgdGVyc2VyT3B0aW9ucyA9IG1heWJlQ29uZmlnIGFzIFJvbGx1cFRlcnNlck9wdGlvbnNcbiAgICB9XG4gIH1cbiAgcHVzaFBsdWdpbihbXCJ0ZXJzZXJcIl0sIFtcInJvbGx1cC1wbHVnaW4tdGVyc2VyXCIsIFwidGVyc2VyXCJdLCB0ZXJzZXJPcHRpb25zLCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpXG5cbiAgLy8gdXRpbGl0eSBmdW5jdGlvbiB0aGF0IHB1c2hlcyBhIHBsdWdpblxuICBmdW5jdGlvbiBwdXNoUGx1Z2luKFxuICAgIG5hbWVUcmlnZ2Vyczogc3RyaW5nW10sXG4gICAgW21vZHVsZU5hbWUsIHByb3BdOiBbbW9kdWxlc25hbWU6IHN0cmluZywgcHJvcD86IHN0cmluZ10sXG4gICAgcGx1Z2luRGVmYXVsdE9wdGlvbnM6IG9iamVjdCA9IHt9LFxuICAgIGluY2x1ZGVCeURlZmF1bHQ6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBpbmRleCA9IGluY2x1ZGVzQW55KGlucHV0UGx1Z2luc05hbWVzLCBbLi4ubmFtZVRyaWdnZXJzLCBtb2R1bGVOYW1lXSlcbiAgICBpZiAoaW5kZXggIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHBsdWdpbkZ1bmN0aW9uID0gZ2V0UGx1Z2luRnVuY3Rpb24ocmVxdWlyZShtb2R1bGVOYW1lKSwgcHJvcClcbiAgICAgIGlmICh0eXBlb2YgaW5wdXRQbHVnaW5zTmFtZXNbaW5kZXhdID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIC8vIHBsdWdpbiBuYW1lIG9ubHlcbiAgICAgICAgcGx1Z2lucy5wdXNoKHBsdWdpbkZ1bmN0aW9uKHBsdWdpbkRlZmF1bHRPcHRpb25zKSlcbiAgICAgIH0gZWxzZSBpZiAoaW5wdXRQbHVnaW5zTmFtZXNbaW5kZXhdLmxlbmd0aCA9PSAzICYmIGlucHV0UGx1Z2luc05hbWVzW2luZGV4XVsyXSA9PT0gZmFsc2UpIHtcbiAgICAgICAgLy8gcGx1Z2luIHdpdGggb3B0aW9ucyBmcm9tIHNjcmF0Y2hcbiAgICAgICAgcGx1Z2lucy5wdXNoKHBsdWdpbkZ1bmN0aW9uKGlucHV0UGx1Z2luc05hbWVzW2luZGV4XVsxXSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwbHVnaW4gd2l0aCBvcHRpb25zIHRoYXQgb3ZlcnJpZGUgcGx1Z2luRGVmYXVsdE9wdGlvbnNcbiAgICAgICAgY29uc3QgcGx1Z2luT3B0aW9ucyA9IGlucHV0UGx1Z2luc05hbWVzW2luZGV4XVsxXVxuICAgICAgICBwbHVnaW5zLnB1c2goXG4gICAgICAgICAgcGx1Z2luRnVuY3Rpb24oXG4gICAgICAgICAgICB0eXBlb2YgcGx1Z2luT3B0aW9ucyA9PT0gXCJvYmplY3RcIlxuICAgICAgICAgICAgICA/IHsgLi4ucGx1Z2luRGVmYXVsdE9wdGlvbnMsIC4uLnBsdWdpbk9wdGlvbnMgfVxuICAgICAgICAgICAgICA6IHsgLi4ucGx1Z2luRGVmYXVsdE9wdGlvbnMsIHBsdWdpbk9wdGlvbnMgfVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW5jbHVkZUJ5RGVmYXVsdCkge1xuICAgICAgY29uc3QgcGx1Z2luRnVuY3Rpb24gPSBnZXRQbHVnaW5GdW5jdGlvbihyZXF1aXJlKG1vZHVsZU5hbWUpLCBwcm9wKVxuICAgICAgcGx1Z2lucy5wdXNoKHBsdWdpbkZ1bmN0aW9uKHBsdWdpbkRlZmF1bHRPcHRpb25zKSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGx1Z2luc1xufVxuIl19