rollup-plugin-atomic
Version:
Rollup plugin used in atom-ide-community
116 lines • 23.2 kB
JavaScript
;
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