UNPKG

vite-plugin-react-server

Version:
95 lines (92 loc) 16.4 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { createRequire } from 'node:module'; const require2 = createRequire(import.meta.url); function resolveReactServerDomEsm() { return { name: "vite-plugin-react-server:storybook:resolve-rsd", enforce: "pre", resolveId(source) { if (source === "react-server-dom-esm/client.browser") { return require2.resolve("react-server-loader/client.browser"); } return null; } }; } const VIRTUAL_RSC_HMR = "virtual:react-server/hmr"; const RESOLVED_VIRTUAL_RSC_HMR_STUB = "\0" + VIRTUAL_RSC_HMR + "?storybook-stub"; function stubVirtualRscHmr() { return { name: "vite-plugin-react-server:storybook:stub-virtual-rsc-hmr", enforce: "pre", resolveId(source) { if (source === VIRTUAL_RSC_HMR) { return RESOLVED_VIRTUAL_RSC_HMR_STUB; } return null; }, load(id) { if (id === RESOLVED_VIRTUAL_RSC_HMR_STUB) { return [ "export const RSC_HMR_EVENT = 'vite-plugin-react-server:server-component-update';", "export function useRscHmr() {}", "export function setupRscHmr() {}" ].join("\n"); } return null; } }; } const silenceDirectiveWarnings = (prev) => { return (warning, defaultHandler) => { if (warning.code === "MODULE_LEVEL_DIRECTIVE" && typeof warning.message === "string" && /use (client|server)/.test(warning.message)) { return; } if (typeof prev === "function") { prev(warning, defaultHandler); return; } defaultHandler(warning); }; }; const viteFinal = async (config, options) => { const onwarn = silenceDirectiveWarnings(config.build?.rollupOptions?.onwarn); if (options?.rsc !== false) { return { ...config, build: { ...config.build, rollupOptions: { ...config.build?.rollupOptions, onwarn } } }; } const plugins = (config.plugins ?? []).filter((p) => { if (!p || typeof p !== "object" || Array.isArray(p)) return true; const name = p.name ?? ""; return !name.startsWith("vite-plugin-react-server"); }); const include = (config.optimizeDeps?.include ?? []).filter( (entry) => !entry.startsWith("react-server-dom-esm") ); const existingExternal = config.build?.rollupOptions?.external; const external = Array.isArray(existingExternal) ? existingExternal : []; return { ...config, plugins: [resolveReactServerDomEsm(), stubVirtualRscHmr(), ...plugins], optimizeDeps: { ...config.optimizeDeps, include }, build: { ...config.build, rollupOptions: { ...config.build?.rollupOptions, external, onwarn } } }; }; export { viteFinal }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vc3Rvcnlib29rL3ByZXNldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgVXNlckNvbmZpZyB9IGZyb20gXCJ2aXRlXCI7XG5cbi8vIFN0b3J5Ym9vayBwcmVzZXQgZm9yIHZpdGUtcGx1Z2luLXJlYWN0LXNlcnZlciBhcHBzLlxuLy9cbi8vIEFkZCB0byAuc3Rvcnlib29rL21haW4udHM6XG4vLyAgIGFkZG9uczogW1widml0ZS1wbHVnaW4tcmVhY3Qtc2VydmVyL3N0b3J5Ym9va1wiXVxuLy9cbi8vIEl0IGRvZXMgdGhlIGNvbmZpZ3VyYXRpb24gZXZlcnkgdnBycy1vbi1TdG9yeWJvb2sgcHJvamVjdCB3b3VsZCBvdGhlcndpc2Vcbi8vIGhhbmQtcm9sbDogc3RyaXAgdGhlIHZwcnMgVml0ZSBwbHVnaW4gKGl0IGFzc3VtZXMgUlNDIGVudHJ5IHBvaW50cyBhbmRcbi8vIGludGVyY2VwdHMgXCIvXCIpLCByZXNvbHZlIHRoZSBiYXJlIHJlYWN0LXNlcnZlci1kb20tZXNtL2NsaWVudC5icm93c2VyIGltcG9ydFxuLy8gdGhhdCB0aGUgUlNDLWNsaWVudCB1dGlsaXRpZXMgZW1pdCwgYW5kIHNpbGVuY2UgdGhlIHVzZS1jbGllbnQvdXNlLXNlcnZlclxuLy8gZGlyZWN0aXZlIHdhcm5pbmdzIFVJIGxpYnJhcmllcyB0cmlnZ2VyIHdoZW4gYnVuZGxlZC5cblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxuLyoqXG4gKiBSZXdyaXRlcyB0aGUgYmFyZSBgcmVhY3Qtc2VydmVyLWRvbS1lc20vY2xpZW50LmJyb3dzZXJgIGltcG9ydCB0byB0aGUgRVNNXG4gKiBidWlsZCBzaGlwcGVkIGJ5IHRoZSBgcmVhY3Qtc2VydmVyLWxvYWRlcmAgZGVwZW5kZW5jeSBhdFxuICogYHJlYWN0LXNlcnZlci1sb2FkZXIvY2xpZW50LmJyb3dzZXJgLlxuICpcbiAqIEluIGEgcmVhbCBhcHAgdGhlIHZwcnMgVml0ZSBwbHVnaW4gcmVzb2x2ZXMgdGhlIGJhcmUgc3BlY2lmaWVyOyBTdG9yeWJvb2tcbiAqIHN0cmlwcyB0aGF0IHBsdWdpbiwgc28gd2l0aG91dCB0aGlzIHRoZSBiYXJlIGltcG9ydCBpcyB1bnJlc29sdmFibGUg4oCUXG4gKiByZWFjdC1zZXJ2ZXItZG9tLWVzbSBoYXMgbm8gc3RhbmRhbG9uZSBucG0gcGFja2FnZSwgaXQncyB2ZW5kb3JlZCBpbnNpZGVcbiAqIHJlYWN0LXNlcnZlci1sb2FkZXIuIFRoYXQgcGFja2FnZSdzIGV4cG9ydHMgbWFwIGhvbm91cnMgdGhlIGRldi9wcm9kXG4gKiBjb25kaXRpb25zIGZvciB0aGUgYnJvd3NlciBjbGllbnQgYnVpbGQuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVSZWFjdFNlcnZlckRvbUVzbSgpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwidml0ZS1wbHVnaW4tcmVhY3Qtc2VydmVyOnN0b3J5Ym9vazpyZXNvbHZlLXJzZFwiLFxuICAgIGVuZm9yY2U6IFwicHJlXCIsXG4gICAgcmVzb2x2ZUlkKHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZSA9PT0gXCJyZWFjdC1zZXJ2ZXItZG9tLWVzbS9jbGllbnQuYnJvd3NlclwiKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlLnJlc29sdmUoXCJyZWFjdC1zZXJ2ZXItbG9hZGVyL2NsaWVudC5icm93c2VyXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgfTtcbn1cblxuY29uc3QgVklSVFVBTF9SU0NfSE1SID0gXCJ2aXJ0dWFsOnJlYWN0LXNlcnZlci9obXJcIjtcbmNvbnN0IFJFU09MVkVEX1ZJUlRVQUxfUlNDX0hNUl9TVFVCID0gXCJcXDBcIiArIFZJUlRVQUxfUlNDX0hNUiArIFwiP3N0b3J5Ym9vay1zdHViXCI7XG5cbi8qKlxuICogU3Vic3RpdHV0ZXMgdGhlIGB2aXJ0dWFsOnJlYWN0LXNlcnZlci9obXJgIG1vZHVsZSB3aXRoIGEgbm8tb3Agc3R1Yi5cbiAqXG4gKiBUaGUgcmVhbCBwcm92aWRlciBsaXZlcyBpbiB0aGUgdnBycyBkZXYtc2VydmVyIHBsdWdpbiAod2hpY2ggU3Rvcnlib29rXG4gKiBzdHJpcHMpLiBXaXRob3V0IGEgc3Vic3RpdHV0ZSwgYW55IGNvbnN1bWVyIGNvZGUgdGhhdCBpbXBvcnRzIHRoZSB2aXJ0dWFsIOKAlFxuICogZS5nLiBgdXNlUnNjSG1yYCBmcm9tIGB2aXRlLXBsdWdpbi1yZWFjdC1zZXJ2ZXIvdXRpbHMvcnNjLWNsaWVudGAg4oCUIGxlYXZlc1xuICogYSBkYW5nbGluZyBzcGVjaWZpZXIgaW4gdGhlIGJ1aWxkLiBgc3Rvcnlib29rIGJ1aWxkYCB0aGVuIGVtaXRzIGEgYnVuZGxlXG4gKiB0aGF0IGRvZXMgYGltcG9ydCAuLi4gZnJvbSBcInZpcnR1YWw6cmVhY3Qtc2VydmVyL2htclwiYCwgYW5kIHRoZSBicm93c2VyXG4gKiBmYWlscyB0byBmZXRjaCB0aGUgYHZpcnR1YWw6YCBVUkwgKFwiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5XG4gKiBzdXBwb3J0ZWQgZm9yIHByb3RvY29sIHNjaGVtZXPigKZcIiksIHByZXZlbnRpbmcgdGhlIG1hbmFnZXIgZnJvbSBib290aW5nLlxuICpcbiAqIFRoZSBlYXJsaWVyIGFwcHJvYWNoIGFkZGVkIHRoZSB2aXJ0dWFsIHRvIGByb2xsdXBPcHRpb25zLmV4dGVybmFsYCwgYnV0XG4gKiBgZXh0ZXJuYWxgIG1lYW5zIFwibGVhdmUgdGhlIGltcG9ydCBhbG9uZSwgdGhlIHJ1bnRpbWUgcHJvdmlkZXMgaXRcIiDigJQgdGhhdFxuICogbWFrZXMgc2Vuc2UgZm9yIGBub2RlOmZzYCBpbiBTU1IsIG5vdCBmb3IgYSBgdmlydHVhbDoqYCBVUkwgd2l0aCBub1xuICogYnJvd3Nlci1zaWRlIHByb3ZpZGVyLiBBIHJlc29sdmUrbG9hZCBzdHViIGZpeGVzIGJvdGggYnVpbGQgKGl0IHJlc29sdmVzKVxuICogYW5kIHJ1bnRpbWUgKHRoZSBsb2FkZWQgbW9kdWxlIGlzIGEgcmVhbCwgYnJvd3Nlci1zYWZlIG5vLW9wKS5cbiAqXG4gKiBTdG9yeWJvb2sgc3RvcmllcyBuZXZlciBuZWVkIFJTQyBITVIg4oCUIHRoZXkgZG9uJ3QgdGFsayB0byBhIHZwcnMgZGV2XG4gKiBzZXJ2ZXIuIE5vLW9wIGlzIHRoZSBjb3JyZWN0IHNlbWFudGljcywgbm90IGEgd29ya2Fyb3VuZC5cbiAqL1xuZnVuY3Rpb24gc3R1YlZpcnR1YWxSc2NIbXIoKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcInZpdGUtcGx1Z2luLXJlYWN0LXNlcnZlcjpzdG9yeWJvb2s6c3R1Yi12aXJ0dWFsLXJzYy1obXJcIixcbiAgICBlbmZvcmNlOiBcInByZVwiLFxuICAgIHJlc29sdmVJZChzb3VyY2UpIHtcbiAgICAgIGlmIChzb3VyY2UgPT09IFZJUlRVQUxfUlNDX0hNUikge1xuICAgICAgICByZXR1cm4gUkVTT0xWRURfVklSVFVBTF9SU0NfSE1SX1NUVUI7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGxvYWQoaWQpIHtcbiAgICAgIGlmIChpZCA9PT0gUkVTT0xWRURfVklSVFVBTF9SU0NfSE1SX1NUVUIpIHtcbiAgICAgICAgLy8gTWlycm9yIHRoZSByZWFsIHZpcnR1YWwncyBleHBvcnQgc2hhcGUgKHNlZSBwbHVnaW4vdHlwZXMvdmlydHVhbC1yc2MtaG1yLmQudHMpXG4gICAgICAgIC8vIHNvIGFueSBjb25zdW1lciBvZiBgdmlydHVhbDpyZWFjdC1zZXJ2ZXIvaG1yYCBjb250aW51ZXMgdG8gdHlwZS1jaGVja1xuICAgICAgICAvLyBhbmQgdHJlZS1zaGFrZSBjbGVhbmx5IHVuZGVyIFN0b3J5Ym9vay5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBcImV4cG9ydCBjb25zdCBSU0NfSE1SX0VWRU5UID0gJ3ZpdGUtcGx1Z2luLXJlYWN0LXNlcnZlcjpzZXJ2ZXItY29tcG9uZW50LXVwZGF0ZSc7XCIsXG4gICAgICAgICAgXCJleHBvcnQgZnVuY3Rpb24gdXNlUnNjSG1yKCkge31cIixcbiAgICAgICAgICBcImV4cG9ydCBmdW5jdGlvbiBzZXR1cFJzY0htcigpIHt9XCIsXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKiBPcHRpb25zIGZvciB0aGUgU3Rvcnlib29rIHByZXNldCwgcGFzc2VkIHZpYSB0aGUgYWRkb24gZW50cnk6XG4gKiBgYWRkb25zOiBbeyBuYW1lOiBcInZpdGUtcGx1Z2luLXJlYWN0LXNlcnZlci9zdG9yeWJvb2tcIiwgb3B0aW9uczogeyByc2M6IHRydWUgfSB9XWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Rvcnlib29rUHJlc2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB2cHJzIHBsdWdpbiBzdGF5cyBhY3RpdmUgaW4gU3Rvcnlib29rIChkZWZhdWx0IGB0cnVlYCkuXG4gICAqXG4gICAqIFdoZW4ga2VwdCwgdGhlIFJTQyBkZXYgc2VydmVyIHJ1bnMgaW5zaWRlIFN0b3J5Ym9vayBhbmQgU2VydmVyIENvbXBvbmVudHNcbiAgICogc3RyZWFtIGZvciByZWFsIOKAlCB0aGUgYC5yc2NgIC8gYF9yc2NgIHJvdXRlcyBhcmUgc2VydmVkLCBzbyBhIHN0b3J5J3NcbiAgICogYGNyZWF0ZVJlYWN0RmV0Y2hlcmAgY2FuIHJlbmRlciB0aGUgbGl2ZSBhcHAuIE5vIGxhdW5jaCBmbGFnIGlzIG5lZWRlZDogdGhlXG4gICAqIHBsdWdpbiBzZXRzIHRoZSBgcmVhY3Qtc2VydmVyYCBjb25kaXRpb24gcGVyLWVudmlyb25tZW50IGFuZCB0aGUgUlNDIHdvcmtlclxuICAgKiBzZXRzIGl0IGZvciBpdHNlbGYsIHNvIHBsYWluIGBzdG9yeWJvb2sgZGV2YCBpcyBlbm91Z2guXG4gICAqXG4gICAqIFNldCBgcnNjOiBmYWxzZWAgdG8gb3B0IE9VVCDigJQgc3RyaXAgdGhlIHBsdWdpbiBhbmQgYnVuZGxlIGNsaWVudCBjb21wb25lbnRzXG4gICAqIG9ubHkuIFRoYXQncyB0aGUgbGlnaHRlciwgbm8tUlNDLXdvcmtlciBidWlsZCBmb3IgcHJvamVjdHMgdGhhdCBvbmx5IHdhbnRcbiAgICogdG8gc3RvcnkgY2xpZW50IFVJOyB0aGUgcHJlc2V0IHRoZW4gcmUtYWRkcyB0aGUgZmV3IHJlc29sdmVyL0hNUiBzaGltcyB0aGVcbiAgICogc3RyaXBwZWQgcGx1Z2luIHdvdWxkIG90aGVyd2lzZSBoYXZlIHByb3ZpZGVkLlxuICAgKi9cbiAgcnNjPzogYm9vbGVhbjtcbn1cblxuLyoqIFNpbGVuY2VzIHRoZSBNT0RVTEVfTEVWRUxfRElSRUNUSVZFIHdhcm5pbmcgUm9sbHVwIGVtaXRzIGZvciBldmVyeVxuICogXCJ1c2UgY2xpZW50XCIvXCJ1c2Ugc2VydmVyXCIgZmlsZSB3aGVuIGJ1bmRsaW5nIFVJIGxpYnJhcmllcyAoQ2hha3JhLCBBcmssXG4gKiBNVUksIOKApikuIE1lYW5pbmdsZXNzIGluIFN0b3J5Ym9vazsgcHJlc2VydmVzIGEgY29uc3VtZXIncyBleGlzdGluZyBvbndhcm4uICovXG5jb25zdCBzaWxlbmNlRGlyZWN0aXZlV2FybmluZ3MgPSAoXG4gIHByZXY6IE5vbk51bGxhYmxlPFxuICAgIE5vbk51bGxhYmxlPFVzZXJDb25maWdbXCJidWlsZFwiXT5bXCJyb2xsdXBPcHRpb25zXCJdXG4gID5bXCJvbndhcm5cIl0sXG4pOiBOb25OdWxsYWJsZTxcbiAgTm9uTnVsbGFibGU8VXNlckNvbmZpZ1tcImJ1aWxkXCJdPltcInJvbGx1cE9wdGlvbnNcIl1cbj5bXCJvbndhcm5cIl0gPT4ge1xuICByZXR1cm4gKHdhcm5pbmcsIGRlZmF1bHRIYW5kbGVyKSA9PiB7XG4gICAgaWYgKFxuICAgICAgd2FybmluZy5jb2RlID09PSBcIk1PRFVMRV9MRVZFTF9ESVJFQ1RJVkVcIiAmJlxuICAgICAgdHlwZW9mIHdhcm5pbmcubWVzc2FnZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgL3VzZSAoY2xpZW50fHNlcnZlcikvLnRlc3Qod2FybmluZy5tZXNzYWdlKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHByZXYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcHJldih3YXJuaW5nLCBkZWZhdWx0SGFuZGxlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRlZmF1bHRIYW5kbGVyKHdhcm5pbmcpO1xuICB9O1xufTtcblxuLyoqIFN0b3J5Ym9vayBgdml0ZUZpbmFsYCBwcmVzZXQgaG9vay4gU3Rvcnlib29rIG1lcmdlcyB0aGUgYWRkb24ncyByZWdpc3RlcmVkXG4gKiBgb3B0aW9uc2AgaW50byB0aGUgb3B0aW9ucyBvYmplY3QsIHNvIGBvcHRpb25zLnJzY2AgaXMgdGhlIGZsYWcgc2V0IHZpYVxuICogYGFkZG9uczogW3sgbmFtZTogXCLigKYvc3Rvcnlib29rXCIsIG9wdGlvbnM6IHsgcnNjOiB0cnVlIH0gfV1gLiAqL1xuZXhwb3J0IGNvbnN0IHZpdGVGaW5hbCA9IGFzeW5jIChcbiAgY29uZmlnOiBVc2VyQ29uZmlnLFxuICBvcHRpb25zPzogU3Rvcnlib29rUHJlc2V0T3B0aW9ucyxcbik6IFByb21pc2U8VXNlckNvbmZpZz4gPT4ge1xuICBjb25zdCBvbndhcm4gPSBzaWxlbmNlRGlyZWN0aXZlV2FybmluZ3MoY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zPy5vbndhcm4pO1xuXG4gIC8vIERFRkFVTFQ6IGtlZXAgdGhlIHZwcnMgcGx1Z2luIHNvIHRoZSBSU0MgZGV2IHNlcnZlciBydW5zIGluc2lkZSBTdG9yeWJvb2suXG4gIC8vIFRoZSBwbHVnaW4gcmVzb2x2ZXMgYHJlYWN0LXNlcnZlci1kb20tZXNtLypgIGFuZCBwcm92aWRlc1xuICAvLyBgdmlydHVhbDpyZWFjdC1zZXJ2ZXIvaG1yYCBpdHNlbGYsIHNvIHRoZSBzdHJpcC1jb21wZW5zYXRpb24gc2hpbXMgYXJlIE5PVFxuICAvLyBhZGRlZCBoZXJlICh0aGV5IHdvdWxkIHNoYWRvdyB0aGUgcmVhbCBwcm92aWRlcnMpLiBTZXJ2ZXIgQ29tcG9uZW50cyBzdHJlYW1cbiAgLy8gZnJvbSB0aGUgYC5yc2NgIHJvdXRlIGZvciBzdG9yaWVzIHRoYXQgZmV0Y2ggdGhlbS5cbiAgaWYgKG9wdGlvbnM/LnJzYyAhPT0gZmFsc2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYnVpbGQ6IHtcbiAgICAgICAgLi4uY29uZmlnLmJ1aWxkLFxuICAgICAgICByb2xsdXBPcHRpb25zOiB7IC4uLmNvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucywgb253YXJuIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvLyBPcHQtb3V0IChgcnNjOiBmYWxzZWApIOKAlCBjbGllbnQtb25seTogc3RyaXAgdGhlIHZwcnMgcGx1Z2luIGFuZCByZS1hZGQgb25seVxuICAvLyB0aGUgaGVscGVycyBhIGNsaWVudCBzdG9yeSBuZWVkcy5cbiAgY29uc3QgcGx1Z2lucyA9IChjb25maWcucGx1Z2lucyA/PyBbXSkuZmlsdGVyKChwKSA9PiB7XG4gICAgaWYgKCFwIHx8IHR5cGVvZiBwICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkocCkpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IG5hbWUgPSAocCBhcyB7IG5hbWU/OiBzdHJpbmcgfSkubmFtZSA/PyBcIlwiO1xuICAgIHJldHVybiAhbmFtZS5zdGFydHNXaXRoKFwidml0ZS1wbHVnaW4tcmVhY3Qtc2VydmVyXCIpO1xuICB9KTtcblxuICBjb25zdCBpbmNsdWRlID0gKGNvbmZpZy5vcHRpbWl6ZURlcHM/LmluY2x1ZGUgPz8gW10pLmZpbHRlcihcbiAgICAoZW50cnkpID0+ICFlbnRyeS5zdGFydHNXaXRoKFwicmVhY3Qtc2VydmVyLWRvbS1lc21cIiksXG4gICk7XG5cbiAgY29uc3QgZXhpc3RpbmdFeHRlcm5hbCA9IGNvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucz8uZXh0ZXJuYWw7XG4gIC8vIGB2aXJ0dWFsOnJlYWN0LXNlcnZlci9obXJgIHVzZWQgdG8gbGl2ZSBoZXJlOyBzZWUgYHN0dWJWaXJ0dWFsUnNjSG1yYCBmb3JcbiAgLy8gd2h5IGV4dGVybmFsaXppbmcgYSB2aXJ0dWFsIHNwZWNpZmllciB3YXMgdGhlIHdyb25nIHNoYXBlLlxuICBjb25zdCBleHRlcm5hbCA9IEFycmF5LmlzQXJyYXkoZXhpc3RpbmdFeHRlcm5hbCkgPyBleGlzdGluZ0V4dGVybmFsIDogW107XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAgcGx1Z2luczogW3Jlc29sdmVSZWFjdFNlcnZlckRvbUVzbSgpLCBzdHViVmlydHVhbFJzY0htcigpLCAuLi5wbHVnaW5zXSxcbiAgICBvcHRpbWl6ZURlcHM6IHsgLi4uY29uZmlnLm9wdGltaXplRGVwcywgaW5jbHVkZSB9LFxuICAgIGJ1aWxkOiB7XG4gICAgICAuLi5jb25maWcuYnVpbGQsXG4gICAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICAgIC4uLmNvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucyxcbiAgICAgICAgZXh0ZXJuYWwsXG4gICAgICAgIG9ud2FybixcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsicmVxdWlyZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQWNBLE1BQU1BLFFBQUFBLEdBQVUsYUFBYyxDQUFBLE1BQUEsQ0FBQSxJQUFBLENBQVksR0FBRyxDQUFBO0FBYTdDLFNBQVMsd0JBQW1DLEdBQUE7QUFDMUMsRUFBTyxPQUFBO0FBQUEsSUFDTCxJQUFNLEVBQUEsZ0RBQUE7QUFBQSxJQUNOLE9BQVMsRUFBQSxLQUFBO0FBQUEsSUFDVCxVQUFVLE1BQVEsRUFBQTtBQUNoQixNQUFBLElBQUksV0FBVyxxQ0FBdUMsRUFBQTtBQUNwRCxRQUFPQSxPQUFB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