UNPKG

@naiable/rollup-config

Version:

Use rollup like tsup, but opinionated my way.

150 lines (145 loc) 24.7 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var node_path = require('node:path'); var fs = require('node:fs'); var process = require('node:process'); var defu = require('defu'); var alias = require('@rollup/plugin-alias'); var commonjs = require('@rollup/plugin-commonjs'); var resolve = require('@rollup/plugin-node-resolve'); var swc = require('@rollup/plugin-swc'); var dts = require('rollup-plugin-dts'); var typescript = require('@rollup/plugin-typescript'); var vue = require('unplugin-vue/rollup'); var esbuild = require('rollup-plugin-esbuild'); var babel = require('@rollup/plugin-babel'); var terser = require('@rollup/plugin-terser'); var presetApp = require('./preset-app.cjs'); var presetLib = require('./preset-lib.cjs'); function writeFile(path, content) { // 创建文件夹 const dir = node_path.dirname(path); if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true }); // 删除已存在的文件 if (fs.existsSync(path)) fs.unlinkSync(path); // 写入文件 fs.writeFileSync(path, content); } function naiup(config = {}) { const defaults = { input: "src/index.ts", output: ["cjs", "esm"], strict: true, sourcemap: "inline", dir: "dist", alias: { entries: [{ find: "@", replacement: node_path.join(process.cwd(), "src") }], }, commonjs: {}, resolve: { extensions: [".mjs", ".js", ".json", ".node", /* 附加 */ ".ts", ".tsx", ".cjs", ".jsx", ".mts", ".cts"], }, compile: { type: "@rollup/plugin-typescript", typescript: {}, }, vue: { include: /\.vue$/, sourceMap: true, }, babel: false, terser: false, overrides: { buildOptions: {}, dtsOptions: {}, }, snapshot: { enable: false, path: `rollup.config.snapshot-${new Date().toISOString()}.json`, }, preserveModules: true, external: [/node_modules/], }; const finalConfig = defu.defu(config, defaults); if (config && config.output && Array.isArray(config.output)) finalConfig.output = config.output; const finalPlugins = []; const finalOutputPlugins = []; if (finalConfig.alias !== false) finalPlugins.push(alias(finalConfig.alias)); if (finalConfig.commonjs !== false) finalPlugins.push(commonjs(finalConfig.commonjs)); if (finalConfig.resolve !== false) finalPlugins.push(resolve(finalConfig.resolve)); if (finalConfig.vue !== false) finalPlugins.push(vue(finalConfig.vue)); if (finalConfig.babel !== false) { if (finalConfig.babel.inputOptions !== false) finalPlugins.push(babel(finalConfig.babel.inputOptions)); if (finalConfig.babel.outputOptions !== false) finalOutputPlugins.push(babel.getBabelOutputPlugin(finalConfig.babel.outputOptions)); } if (finalConfig.compile !== false) { const complieOptions = finalConfig.compile; if (complieOptions.type === "@rollup/plugin-swc") finalPlugins.push(swc(complieOptions.swc)); else if (complieOptions.type === "@rollup/plugin-typescript") finalPlugins.push(typescript(complieOptions.typescript)); else if (complieOptions.type === "rollup-plugin-esbuild") finalPlugins.push(esbuild(complieOptions.esbuild)); } if (finalConfig.terser !== false) finalOutputPlugins.push(terser(finalConfig.terser)); const defaultComputedBuildOptions = { input: finalConfig.input, external: finalConfig.external, plugins: [...finalPlugins], output: [...new Set(finalConfig.output)].map((format) => ({ format, dir: node_path.join(finalConfig.dir, format), entryFileNames: `[name].${format === "cjs" ? "cjs" : "mjs"}`, strict: finalConfig.strict, sourcemap: finalConfig.sourcemap, preserveModules: finalConfig.preserveModules, plugins: [...finalOutputPlugins], })), }; let defaultComputedDtsOptions; if (finalConfig.dts !== false) { defaultComputedDtsOptions = { input: finalConfig.input, external: finalConfig.external, plugins: [...finalPlugins, dts(finalConfig.dts)], output: [ ...[...new Set(finalConfig.output)].map((format) => ({ format, dir: node_path.join(finalConfig.dir, format), entryFileNames: `[name].d.${format === "cjs" ? "cts" : "mts"}`, strict: finalConfig.strict, sourcemap: finalConfig.sourcemap, preserveModules: finalConfig.preserveModules, })), { dir: node_path.join(finalConfig.dir, "types"), entryFileNames: "[name].d.ts", strict: finalConfig.strict, sourcemap: finalConfig.sourcemap, preserveModules: finalConfig.preserveModules, }, ], }; } const finalBuildOptions = defu.defu(finalConfig.overrides.buildOptions, defaultComputedBuildOptions); const finalDtsOptions = defaultComputedDtsOptions ? defu.defu(finalConfig.overrides.dtsOptions, defaultComputedDtsOptions) : undefined; const returns = finalDtsOptions ? [finalBuildOptions, finalDtsOptions] : [finalBuildOptions]; if (finalConfig.snapshot.enable && finalConfig.snapshot.path) writeFile(finalConfig.snapshot.path, JSON.stringify(returns)); return returns; } exports.presetApp = presetApp.presetApp; exports.presetLib = presetLib.presetLib; exports.default = naiup; exports.writeFile = writeFile; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSBcIm5vZGU6cHJvY2Vzc1wiO1xuaW1wb3J0IHsgZGVmdSB9IGZyb20gXCJkZWZ1XCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsT3B0aW9uLCBJbnB1dE9wdGlvbiwgSW5wdXRQbHVnaW5PcHRpb24sIE91dHB1dE9wdGlvbnMsIFJvbGx1cE9wdGlvbnMgfSBmcm9tIFwicm9sbHVwXCI7XG5pbXBvcnQgdHlwZSB7IFJvbGx1cEFsaWFzT3B0aW9ucyB9IGZyb20gXCJAcm9sbHVwL3BsdWdpbi1hbGlhc1wiO1xuaW1wb3J0IGFsaWFzIGZyb20gXCJAcm9sbHVwL3BsdWdpbi1hbGlhc1wiO1xuaW1wb3J0IHR5cGUgeyBSb2xsdXBDb21tb25KU09wdGlvbnMgfSBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tY29tbW9uanNcIjtcbmltcG9ydCBjb21tb25qcyBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tY29tbW9uanNcIjtcbmltcG9ydCB0eXBlIHsgUm9sbHVwTm9kZVJlc29sdmVPcHRpb25zIH0gZnJvbSBcIkByb2xsdXAvcGx1Z2luLW5vZGUtcmVzb2x2ZVwiO1xuaW1wb3J0IHJlc29sdmUgZnJvbSBcIkByb2xsdXAvcGx1Z2luLW5vZGUtcmVzb2x2ZVwiO1xuaW1wb3J0IHN3YyBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tc3djXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUm9sbHVwRFRTT3B0aW9ucyB9IGZyb20gXCJyb2xsdXAtcGx1Z2luLWR0c1wiO1xuaW1wb3J0IGR0cyBmcm9tIFwicm9sbHVwLXBsdWdpbi1kdHNcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyUGF0dGVybiB9IGZyb20gXCJAcm9sbHVwL3BsdWdpbnV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IFJvbGx1cFR5cGVzY3JpcHRPcHRpb25zIH0gZnJvbSBcIkByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRcIjtcbmltcG9ydCB0eXBlc2NyaXB0IGZyb20gXCJAcm9sbHVwL3BsdWdpbi10eXBlc2NyaXB0XCI7XG5pbXBvcnQgdnVlIGZyb20gXCJ1bnBsdWdpbi12dWUvcm9sbHVwXCI7XG5pbXBvcnQgZXNidWlsZCBmcm9tIFwicm9sbHVwLXBsdWdpbi1lc2J1aWxkXCI7XG5pbXBvcnQgdHlwZSB7IFJvbGx1cEJhYmVsSW5wdXRQbHVnaW5PcHRpb25zLCBSb2xsdXBCYWJlbE91dHB1dFBsdWdpbk9wdGlvbnMgfSBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tYmFiZWxcIjtcbmltcG9ydCBiYWJlbCwgeyBnZXRCYWJlbE91dHB1dFBsdWdpbiB9IGZyb20gXCJAcm9sbHVwL3BsdWdpbi1iYWJlbFwiO1xuaW1wb3J0IHRlcnNlciBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tdGVyc2VyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUZpbGUocGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgLy8g5Yib5bu65paH5Lu25aS5XG4gIGNvbnN0IGRpciA9IGRpcm5hbWUocGF0aCk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSBmcy5ta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAvLyDliKDpmaTlt7LlrZjlnKjnmoTmlofku7ZcbiAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aCkpIGZzLnVubGlua1N5bmMocGF0aCk7XG5cbiAgLy8g5YaZ5YWl5paH5Lu2XG4gIGZzLndyaXRlRmlsZVN5bmMocGF0aCwgY29udGVudCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5haWFibGVSb2xsdXBDb21waWxlVHlwZVNjcmlwdENvbmZpZyB7XG4gIC8qKiBVc2UgYEByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRgISAqL1xuICB0eXBlOiBcIkByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRcIjtcbiAgLyoqIFR5cGVTY3JpcHQgT3B0aW9ucy4gKi9cbiAgdHlwZXNjcmlwdD86IFJvbGx1cFR5cGVzY3JpcHRPcHRpb25zO1xufVxuZXhwb3J0IGludGVyZmFjZSBJTmFpYWJsZVJvbGx1cENvbXBpbGVTV0NDb25maWcge1xuICAvKiogVXNlIGBAcm9sbHVwL3BsdWdpbi1zd2NgISAqL1xuICB0eXBlOiBcIkByb2xsdXAvcGx1Z2luLXN3Y1wiO1xuICAvKiogU1dDIE9wdGlvbnMgKi9cbiAgc3djPzogUGFyYW1ldGVyczx0eXBlb2Ygc3djPlswXTtcbiAgLyoqIEluY2x1ZGUgYW5kIGV4Y2x1ZGUgZmlsZXMuICovXG4gIGluY2x1ZGU/OiBGaWx0ZXJQYXR0ZXJuO1xuICAvKiogSW5jbHVkZSBhbmQgZXhjbHVkZSBmaWxlcy4gKi9cbiAgZXhjbHVkZT86IEZpbHRlclBhdHRlcm47XG59XG5leHBvcnQgaW50ZXJmYWNlIElOYWlhYmxlUm9sbHVwQ29tcGxpZUVzYnVpbGRDb25maWcge1xuICAvKiogVXNlIGByb2xsdXAtcGx1Z2luLWVzYnVpbGRgISAqL1xuICB0eXBlOiBcInJvbGx1cC1wbHVnaW4tZXNidWlsZFwiO1xuICAvKiogRXNidWlsZCBPcHRpb25zLiAqL1xuICBlc2J1aWxkPzogUGFyYW1ldGVyczx0eXBlb2YgZXNidWlsZD5bMF07XG59XG5leHBvcnQgdHlwZSBJTmFpYWJsZVJvbGx1cENvbXBpbGVDb25maWcgPSBJTmFpYWJsZVJvbGx1cENvbXBpbGVUeXBlU2NyaXB0Q29uZmlnIHwgSU5haWFibGVSb2xsdXBDb21waWxlU1dDQ29uZmlnIHwgSU5haWFibGVSb2xsdXBDb21wbGllRXNidWlsZENvbmZpZztcblxuZXhwb3J0IGludGVyZmFjZSBJTmFpYWJsZUJhYmVsT3B0aW9ucyB7XG4gIGlucHV0T3B0aW9ucz86IFJvbGx1cEJhYmVsSW5wdXRQbHVnaW5PcHRpb25zIHwgZmFsc2U7XG4gIG91dHB1dE9wdGlvbnM/OiBSb2xsdXBCYWJlbE91dHB1dFBsdWdpbk9wdGlvbnMgfCBmYWxzZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSU5haWFibGVSb2xsdXBDb25maWcge1xuICAvKiogVGhlIGlucHV0IGZpbGUuIEBkZWZhdWx0ICdzcmMvaW5kZXgudHMnICovXG4gIGlucHV0PzogSW5wdXRPcHRpb247XG4gIC8qKiBUaGUgb3V0cHV0IGZvcm1hdC4gQGRlZmF1bHQgWydjanMnLCAnZXNtJ10gKi9cbiAgb3V0cHV0PzogKFwiY2pzXCIgfCBcImVzbVwiKVtdO1xuICAvKiogVGhlIG91dHB1dCBkaXJlY3RvcnkuIEBkZWZhdWx0ICdkaXN0JyAqL1xuICBkaXI/OiBzdHJpbmc7XG4gIC8qKiBUaGUgYEByb2xsdXAvcGx1Z2luLWFsaWFzYCBvcHRpb25zLiBEZWZhdWx0IGFsaWFzIGBAYCB0byBgc3JjYC4gKi9cbiAgYWxpYXM/OiBSb2xsdXBBbGlhc09wdGlvbnMgfCBmYWxzZTtcbiAgLyoqIFRoZSBgQHJvbGx1cC9wbHVnaW4tY29tbW9uanNgIG9wdGlvbnMuICovXG4gIGNvbW1vbmpzPzogUm9sbHVwQ29tbW9uSlNPcHRpb25zIHwgZmFsc2U7XG4gIC8qKiBUaGUgYEByb2xsdXAvcGx1Z2luLW5vZGUtcmVzb2x2ZWAgb3B0aW9ucy4gRGVmYXVsdCBleHRlbnNpb25zIGluY2x1ZGUgYC50c2AsIGAudHN4YCwgYC5janNgLCBgLmpzeGAsIGAubXRzYCwgYC5jdHNgLiAqL1xuICByZXNvbHZlPzogUm9sbHVwTm9kZVJlc29sdmVPcHRpb25zIHwgZmFsc2U7XG4gIC8qKiBVc2UgYEByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRgIG9yIGBAcm9sbHVwL3BsdWdpbi1zd2NgIG9yIGByb2xsdXAtcGx1Z2luLWVzYnVpbGRgID8gKi9cbiAgY29tcGlsZT86IElOYWlhYmxlUm9sbHVwQ29tcGlsZUNvbmZpZyB8IGZhbHNlO1xuICAvKiogVGhlIGBkLnRzYCBidWlsZCBvcHRpb25zLiAqL1xuICBkdHM/OiBSb2xsdXBEVFNPcHRpb25zIHwgZmFsc2U7XG4gIC8qKiBUaGUgYHVucGx1Z2luLXZ1ZWAgb3B0aW9ucy4gKi9cbiAgdnVlPzogUGFyYW1ldGVyczx0eXBlb2YgdnVlPlswXSB8IGZhbHNlO1xuICAvKiogVGhlIGBAcm9sbHVwL3BsdWdpbi1iYWJlbGAgb3B0aW9ucy4gKi9cbiAgYmFiZWw/OiBJTmFpYWJsZUJhYmVsT3B0aW9ucyB8IGZhbHNlO1xuICAvKiogVGhlIGBAcm9sbHVwL3BsdWdpbi10ZXJzZXJgIG9wdGlvbnMuICovXG4gIHRlcnNlcj86IFBhcmFtZXRlcnM8dHlwZW9mIHRlcnNlcj5bMF0gfCBmYWxzZTtcbiAgLyoqIFVzZSBzdHJpY3QuIEBkZWZhdWx0IHRydWUgKi9cbiAgc3RyaWN0PzogYm9vbGVhbjtcbiAgLyoqIFNvdXJjZSBtYXAuIEBkZWZhdWx0IGlubGluZSAqL1xuICBzb3VyY2VtYXA/OiBib29sZWFuIHwgXCJpbmxpbmVcIiB8IFwiaGlkZGVuXCI7XG4gIC8qKiBGcmVlIG92ZXJyaWRlIHJvbGx1cCBjb25maWcgKi9cbiAgb3ZlcnJpZGVzPzoge1xuICAgIC8qKiBUaGUgYEJ1aWxkYCBvcHRpb25zLiAqL1xuICAgIGJ1aWxkT3B0aW9ucz86IFJvbGx1cE9wdGlvbnM7XG4gICAgLyoqIFRoZSBgZC50c2AgYnVpbGQgb3B0aW9ucy4gKi9cbiAgICBkdHNPcHRpb25zPzogUm9sbHVwT3B0aW9ucztcbiAgfTtcbiAgLyoqIEdlbmVyYXRlIGEgc25hcHNob3QganNvbiBmaWxlIHdoZW4gYnVpbGRlZC4gKi9cbiAgc25hcHNob3Q/OiB7XG4gICAgLyoqIEVuYWJsZSBzbmFwc2hvdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBzbmFwc2hvdCBmaWxlIHBhdGguIEBkZWZhdWx0IGByb2xsdXAuY29uZmlnLnNuYXBzaG90LSR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfS5qc29uYCAqL1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gIH07XG4gIC8qKiBQcmVzZXJ2ZSBtb2R1bGVzLiBAZGVmYXVsdCB0cnVlICovXG4gIHByZXNlcnZlTW9kdWxlcz86IGJvb2xlYW47XG4gIC8qKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXMuIEBkZWZhdWx0IFsvbm9kZV9tb2R1bGVzL10gKi9cbiAgZXh0ZXJuYWw/OiBFeHRlcm5hbE9wdGlvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmFpdXAoY29uZmlnOiBJTmFpYWJsZVJvbGx1cENvbmZpZyA9IHt9KTogUm9sbHVwT3B0aW9uc1tdIHtcbiAgY29uc3QgZGVmYXVsdHM6IElOYWlhYmxlUm9sbHVwQ29uZmlnID0ge1xuICAgIGlucHV0OiBcInNyYy9pbmRleC50c1wiLFxuICAgIG91dHB1dDogW1wiY2pzXCIsIFwiZXNtXCJdLFxuICAgIHN0cmljdDogdHJ1ZSxcbiAgICBzb3VyY2VtYXA6IFwiaW5saW5lXCIsXG4gICAgZGlyOiBcImRpc3RcIixcbiAgICBhbGlhczoge1xuICAgICAgZW50cmllczogW3sgZmluZDogXCJAXCIsIHJlcGxhY2VtZW50OiBqb2luKGN3ZCgpLCBcInNyY1wiKSB9XSxcbiAgICB9LFxuICAgIGNvbW1vbmpzOiB7fSxcbiAgICByZXNvbHZlOiB7XG4gICAgICBleHRlbnNpb25zOiBbXCIubWpzXCIsIFwiLmpzXCIsIFwiLmpzb25cIiwgXCIubm9kZVwiLCAvKiDpmYTliqAgKi8gXCIudHNcIiwgXCIudHN4XCIsIFwiLmNqc1wiLCBcIi5qc3hcIiwgXCIubXRzXCIsIFwiLmN0c1wiXSxcbiAgICB9LFxuICAgIGNvbXBpbGU6IHtcbiAgICAgIHR5cGU6IFwiQHJvbGx1cC9wbHVnaW4tdHlwZXNjcmlwdFwiLFxuICAgICAgdHlwZXNjcmlwdDoge30sXG4gICAgfSxcbiAgICB2dWU6IHtcbiAgICAgIGluY2x1ZGU6IC9cXC52dWUkLyxcbiAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICB9LFxuICAgIGJhYmVsOiBmYWxzZSxcbiAgICB0ZXJzZXI6IGZhbHNlLFxuICAgIG92ZXJyaWRlczoge1xuICAgICAgYnVpbGRPcHRpb25zOiB7fSxcbiAgICAgIGR0c09wdGlvbnM6IHt9LFxuICAgIH0sXG4gICAgc25hcHNob3Q6IHtcbiAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICBwYXRoOiBgcm9sbHVwLmNvbmZpZy5zbmFwc2hvdC0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uanNvbmAsXG4gICAgfSxcbiAgICBwcmVzZXJ2ZU1vZHVsZXM6IHRydWUsXG4gICAgZXh0ZXJuYWw6IFsvbm9kZV9tb2R1bGVzL10sXG4gIH07XG5cbiAgY29uc3QgZmluYWxDb25maWcgPSBkZWZ1KGNvbmZpZywgZGVmYXVsdHMpO1xuICBpZiAoY29uZmlnICYmIGNvbmZpZy5vdXRwdXQgJiYgQXJyYXkuaXNBcnJheShjb25maWcub3V0cHV0KSkgZmluYWxDb25maWcub3V0cHV0ID0gY29uZmlnLm91dHB1dDtcblxuICBjb25zdCBmaW5hbFBsdWdpbnM6IElucHV0UGx1Z2luT3B0aW9uW10gPSBbXTtcbiAgY29uc3QgZmluYWxPdXRwdXRQbHVnaW5zID0gW107XG5cbiAgaWYgKGZpbmFsQ29uZmlnLmFsaWFzICE9PSBmYWxzZSkgZmluYWxQbHVnaW5zLnB1c2goYWxpYXMoZmluYWxDb25maWcuYWxpYXMpKTtcbiAgaWYgKGZpbmFsQ29uZmlnLmNvbW1vbmpzICE9PSBmYWxzZSkgZmluYWxQbHVnaW5zLnB1c2goY29tbW9uanMoZmluYWxDb25maWcuY29tbW9uanMpKTtcbiAgaWYgKGZpbmFsQ29uZmlnLnJlc29sdmUgIT09IGZhbHNlKSBmaW5hbFBsdWdpbnMucHVzaChyZXNvbHZlKGZpbmFsQ29uZmlnLnJlc29sdmUpKTtcbiAgaWYgKGZpbmFsQ29uZmlnLnZ1ZSAhPT0gZmFsc2UpIGZpbmFsUGx1Z2lucy5wdXNoKHZ1ZShmaW5hbENvbmZpZy52dWUpKTtcbiAgaWYgKGZpbmFsQ29uZmlnLmJhYmVsICE9PSBmYWxzZSkge1xuICAgIGlmIChmaW5hbENvbmZpZy5iYWJlbC5pbnB1dE9wdGlvbnMgIT09IGZhbHNlKSBmaW5hbFBsdWdpbnMucHVzaChiYWJlbChmaW5hbENvbmZpZy5iYWJlbC5pbnB1dE9wdGlvbnMpKTtcbiAgICBpZiAoZmluYWxDb25maWcuYmFiZWwub3V0cHV0T3B0aW9ucyAhPT0gZmFsc2UpIGZpbmFsT3V0cHV0UGx1Z2lucy5wdXNoKGdldEJhYmVsT3V0cHV0UGx1Z2luKGZpbmFsQ29uZmlnLmJhYmVsLm91dHB1dE9wdGlvbnMpKTtcbiAgfVxuXG4gIGlmIChmaW5hbENvbmZpZy5jb21waWxlICE9PSBmYWxzZSkge1xuICAgIGNvbnN0IGNvbXBsaWVPcHRpb25zID0gZmluYWxDb25maWcuY29tcGlsZSBhcyBJTmFpYWJsZVJvbGx1cENvbXBpbGVDb25maWc7XG4gICAgaWYgKGNvbXBsaWVPcHRpb25zLnR5cGUgPT09IFwiQHJvbGx1cC9wbHVnaW4tc3djXCIpIGZpbmFsUGx1Z2lucy5wdXNoKHN3Yyhjb21wbGllT3B0aW9ucy5zd2MpKTtcbiAgICBlbHNlIGlmIChjb21wbGllT3B0aW9ucy50eXBlID09PSBcIkByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRcIikgZmluYWxQbHVnaW5zLnB1c2godHlwZXNjcmlwdChjb21wbGllT3B0aW9ucy50eXBlc2NyaXB0KSk7XG4gICAgZWxzZSBpZiAoY29tcGxpZU9wdGlvbnMudHlwZSA9PT0gXCJyb2xsdXAtcGx1Z2luLWVzYnVpbGRcIikgZmluYWxQbHVnaW5zLnB1c2goZXNidWlsZChjb21wbGllT3B0aW9ucy5lc2J1aWxkKSk7XG4gIH1cblxuICBpZiAoZmluYWxDb25maWcudGVyc2VyICE9PSBmYWxzZSkgZmluYWxPdXRwdXRQbHVnaW5zLnB1c2godGVyc2VyKGZpbmFsQ29uZmlnLnRlcnNlcikpO1xuXG4gIGNvbnN0IGRlZmF1bHRDb21wdXRlZEJ1aWxkT3B0aW9uczogUm9sbHVwT3B0aW9ucyA9IHtcbiAgICBpbnB1dDogZmluYWxDb25maWcuaW5wdXQsXG4gICAgZXh0ZXJuYWw6IGZpbmFsQ29uZmlnLmV4dGVybmFsLFxuICAgIHBsdWdpbnM6IFsuLi5maW5hbFBsdWdpbnNdLFxuICAgIG91dHB1dDogWy4uLm5ldyBTZXQoZmluYWxDb25maWcub3V0cHV0KV0ubWFwKChmb3JtYXQpID0+ICh7XG4gICAgICBmb3JtYXQsXG4gICAgICBkaXI6IGpvaW4oZmluYWxDb25maWcuZGlyLCBmb3JtYXQpLFxuICAgICAgZW50cnlGaWxlTmFtZXM6IGBbbmFtZV0uJHtmb3JtYXQgPT09IFwiY2pzXCIgPyBcImNqc1wiIDogXCJtanNcIn1gLFxuICAgICAgc3RyaWN0OiBmaW5hbENvbmZpZy5zdHJpY3QsXG4gICAgICBzb3VyY2VtYXA6IGZpbmFsQ29uZmlnLnNvdXJjZW1hcCxcbiAgICAgIHByZXNlcnZlTW9kdWxlczogZmluYWxDb25maWcucHJlc2VydmVNb2R1bGVzLFxuICAgICAgcGx1Z2luczogWy4uLmZpbmFsT3V0cHV0UGx1Z2luc10sXG4gICAgfSkpLFxuICB9O1xuXG4gIGxldCBkZWZhdWx0Q29tcHV0ZWREdHNPcHRpb25zOiBSb2xsdXBPcHRpb25zIHwgdW5kZWZpbmVkO1xuICBpZiAoZmluYWxDb25maWcuZHRzICE9PSBmYWxzZSkge1xuICAgIGRlZmF1bHRDb21wdXRlZER0c09wdGlvbnMgPSB7XG4gICAgICBpbnB1dDogZmluYWxDb25maWcuaW5wdXQsXG4gICAgICBleHRlcm5hbDogZmluYWxDb25maWcuZXh0ZXJuYWwsXG4gICAgICBwbHVnaW5zOiBbLi4uZmluYWxQbHVnaW5zLCBkdHMoZmluYWxDb25maWcuZHRzKV0sXG4gICAgICBvdXRwdXQ6IFtcbiAgICAgICAgLi4uWy4uLm5ldyBTZXQoZmluYWxDb25maWcub3V0cHV0KV0ubWFwKFxuICAgICAgICAgIChmb3JtYXQpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgICAgIGRpcjogam9pbihmaW5hbENvbmZpZy5kaXIsIGZvcm1hdCksXG4gICAgICAgICAgICAgIGVudHJ5RmlsZU5hbWVzOiBgW25hbWVdLmQuJHtmb3JtYXQgPT09IFwiY2pzXCIgPyBcImN0c1wiIDogXCJtdHNcIn1gLFxuICAgICAgICAgICAgICBzdHJpY3Q6IGZpbmFsQ29uZmlnLnN0cmljdCxcbiAgICAgICAgICAgICAgc291cmNlbWFwOiBmaW5hbENvbmZpZy5zb3VyY2VtYXAsXG4gICAgICAgICAgICAgIHByZXNlcnZlTW9kdWxlczogZmluYWxDb25maWcucHJlc2VydmVNb2R1bGVzLFxuICAgICAgICAgICAgfSBhcyBPdXRwdXRPcHRpb25zKVxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyOiBqb2luKGZpbmFsQ29uZmlnLmRpciwgXCJ0eXBlc1wiKSxcbiAgICAgICAgICBlbnRyeUZpbGVOYW1lczogXCJbbmFtZV0uZC50c1wiLFxuICAgICAgICAgIHN0cmljdDogZmluYWxDb25maWcuc3RyaWN0LFxuICAgICAgICAgIHNvdXJjZW1hcDogZmluYWxDb25maWcuc291cmNlbWFwLFxuICAgICAgICAgIHByZXNlcnZlTW9kdWxlczogZmluYWxDb25maWcucHJlc2VydmVNb2R1bGVzLFxuICAgICAgICB9IGFzIE91dHB1dE9wdGlvbnMsXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBmaW5hbEJ1aWxkT3B0aW9ucyA9IGRlZnUoZmluYWxDb25maWcub3ZlcnJpZGVzLmJ1aWxkT3B0aW9ucywgZGVmYXVsdENvbXB1dGVkQnVpbGRPcHRpb25zKTtcbiAgY29uc3QgZmluYWxEdHNPcHRpb25zID0gZGVmYXVsdENvbXB1dGVkRHRzT3B0aW9ucyA/IGRlZnUoZmluYWxDb25maWcub3ZlcnJpZGVzLmR0c09wdGlvbnMsIGRlZmF1bHRDb21wdXRlZER0c09wdGlvbnMpIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHJldHVybnMgPSBmaW5hbER0c09wdGlvbnMgPyBbZmluYWxCdWlsZE9wdGlvbnMsIGZpbmFsRHRzT3B0aW9uc10gOiBbZmluYWxCdWlsZE9wdGlvbnNdO1xuXG4gIGlmIChmaW5hbENvbmZpZy5zbmFwc2hvdC5lbmFibGUgJiYgZmluYWxDb25maWcuc25hcHNob3QucGF0aCkgd3JpdGVGaWxlKGZpbmFsQ29uZmlnLnNuYXBzaG90LnBhdGgsIEpTT04uc3RyaW5naWZ5KHJldHVybnMpKTtcblxuICByZXR1cm4gcmV0dXJucztcbn1cblxuZXhwb3J0ICogZnJvbSBcIi4vcHJlc2V0LWFwcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJlc2V0LWxpYlwiO1xuIl0sIm5hbWVzIjpbImRpcm5hbWUiLCJqb2luIiwiY3dkIiwiZGVmdSIsImdldEJhYmVsT3V0cHV0UGx1Z2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QmdCLFNBQUEsU0FBUyxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUE7O0FBRXJELElBQUEsTUFBTSxHQUFHLEdBQUdBLGlCQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsSUFBQSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDOztBQUdoRSxJQUFBLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFBRSxRQUFBLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRzdDLElBQUEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQTZFYSxTQUFVLEtBQUssQ0FBQyxTQUErQixFQUFFLEVBQUE7QUFDN0QsSUFBQSxNQUFNLFFBQVEsR0FBeUI7QUFDckMsUUFBQSxLQUFLLEVBQUUsY0FBYztBQUNyQixRQUFBLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDdEIsUUFBQSxNQUFNLEVBQUUsSUFBSTtBQUNaLFFBQUEsU0FBUyxFQUFFLFFBQVE7QUFDbkIsUUFBQSxHQUFHLEVBQUUsTUFBTTtBQUNYLFFBQUEsS0FBSyxFQUFFO0FB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