UNPKG

vite-plugin-react-server

Version:
91 lines (88 loc) 11.3 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { resolveOptions } from '../config/resolveOptions.js'; import { getBundleManifest } from '../helpers/getBundleManifest.js'; import { addServerManifest, updateSharedManifest, signalServerManifestReady } from '../bundle/manifests.js'; import { handleError } from '../error/handleError.js'; function createBuildEventPlugin(options) { return { name: "vite:plugin-react-server:build-events", enforce: "post", apply: "build", writeBundle(outputOptions, bundle) { const resolvedOptionsResult = resolveOptions(options); if (resolvedOptionsResult.type === "error") { return; } const userOptions = resolvedOptionsResult.userOptions; const environmentName = this.environment?.name; let eventType; if (environmentName?.startsWith("client")) { eventType = "build.writeBundle.client"; } else if (environmentName?.startsWith("ssr")) { eventType = "build.writeBundle.static"; } else if (environmentName?.startsWith("server")) { eventType = "build.writeBundle.server"; } if (environmentName?.startsWith("server")) { try { const bundleManifest = getBundleManifest({ bundle, normalizer: userOptions.normalizer }); addServerManifest(bundleManifest); updateSharedManifest(this, "server", bundleManifest); signalServerManifestReady(bundleManifest); } catch (error) { const eventPanicError = handleError({ error, panicThreshold: userOptions.panicThreshold}); if (eventPanicError != null) { this.error(eventPanicError); } else { this.warn(error); } } } if (eventType && userOptions.onEvent) { try { const result = userOptions.onEvent({ type: eventType, data: { pages: [], options: outputOptions, bundle } }); if (result != null && typeof result === "object" && "then" in result) { result.catch((error) => { const eventPanicError = handleError({ error, panicThreshold: userOptions.panicThreshold, context: `onEvent(${eventType})` }); if (eventPanicError != null) { throw eventPanicError; } }); } } catch (error) { const eventPanicError = handleError({ error, panicThreshold: userOptions.panicThreshold}); if (eventPanicError != null) { this.error(eventPanicError); throw eventPanicError; } else { this.warn(error); } } } } }; } export { createBuildEventPlugin }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQnVpbGRFdmVudFBsdWdpbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL2Vudmlyb25tZW50cy9jcmVhdGVCdWlsZEV2ZW50UGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB0eXBlIHsgU3RyZWFtUGx1Z2luT3B0aW9ucywgUGx1Z2luRXZlbnRUeXBlIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlT3B0aW9ucyB9IGZyb20gXCIuLi9jb25maWcvcmVzb2x2ZU9wdGlvbnMuanNcIjtcbmltcG9ydCB7IGdldEJ1bmRsZU1hbmlmZXN0IH0gZnJvbSBcIi4uL2hlbHBlcnMvZ2V0QnVuZGxlTWFuaWZlc3QuanNcIjtcbmltcG9ydCB7XG4gIGFkZFNlcnZlck1hbmlmZXN0LFxuICB1cGRhdGVTaGFyZWRNYW5pZmVzdCxcbiAgc2lnbmFsU2VydmVyTWFuaWZlc3RSZWFkeSxcbn0gZnJvbSBcIi4uL2J1bmRsZS9tYW5pZmVzdHMuanNcIjtcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL2hhbmRsZUVycm9yLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCdWlsZEV2ZW50UGx1Z2luKG9wdGlvbnM6IFN0cmVhbVBsdWdpbk9wdGlvbnMpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwidml0ZTpwbHVnaW4tcmVhY3Qtc2VydmVyOmJ1aWxkLWV2ZW50c1wiLFxuICAgIGVuZm9yY2U6IFwicG9zdFwiLFxuICAgIGFwcGx5OiBcImJ1aWxkXCIsXG5cbiAgICB3cml0ZUJ1bmRsZShvdXRwdXRPcHRpb25zLCBidW5kbGUpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkT3B0aW9uc1Jlc3VsdCA9IHJlc29sdmVPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc29sdmVkT3B0aW9uc1Jlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVzZXJPcHRpb25zID0gcmVzb2x2ZWRPcHRpb25zUmVzdWx0LnVzZXJPcHRpb25zO1xuXG4gICAgICBjb25zdCBlbnZpcm9ubWVudE5hbWUgPSB0aGlzLmVudmlyb25tZW50Py5uYW1lO1xuXG5cbiAgICAgIC8vIERldGVybWluZSBldmVudCB0eXBlIGJhc2VkIG9uIGVudmlyb25tZW50IG5hbWVcbiAgICAgIGxldCBldmVudFR5cGU6IFBsdWdpbkV2ZW50VHlwZSB8IHVuZGVmaW5lZDtcblxuXG4gICAgICBpZiAoZW52aXJvbm1lbnROYW1lPy5zdGFydHNXaXRoKFwiY2xpZW50XCIpKSB7XG4gICAgICAgIGV2ZW50VHlwZSA9IFwiYnVpbGQud3JpdGVCdW5kbGUuY2xpZW50XCI7XG5cbiAgICAgIH0gZWxzZSBpZiAoZW52aXJvbm1lbnROYW1lPy5zdGFydHNXaXRoKFwic3NyXCIpKSB7XG4gICAgICAgIGV2ZW50VHlwZSA9IFwiYnVpbGQud3JpdGVCdW5kbGUuc3RhdGljXCI7XG4gICAgICB9IGVsc2UgaWYgKGVudmlyb25tZW50TmFtZT8uc3RhcnRzV2l0aChcInNlcnZlclwiKSkge1xuICAgICAgICBldmVudFR5cGUgPSBcImJ1aWxkLndyaXRlQnVuZGxlLnNlcnZlclwiO1xuICAgICAgfVxuXG4gICAgICAvLyBTdG9yZSBzZXJ2ZXIgbWFuaWZlc3QgaW4gZ2xvYmFsIHN0b3JlIGZvciBTU0cgcGx1Z2luIGFjY2Vzc1xuICAgICAgaWYgKGVudmlyb25tZW50TmFtZT8uc3RhcnRzV2l0aChcInNlcnZlclwiKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGJ1bmRsZU1hbmlmZXN0ID0gZ2V0QnVuZGxlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgYnVuZGxlLFxuICAgICAgICAgICAgbm9ybWFsaXplcjogdXNlck9wdGlvbnMubm9ybWFsaXplcixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBUeXBlIGFzc2VydGlvbiBzaW5jZSBnZXRCdW5kbGVNYW5pZmVzdCByZXR1cm5zIHRoZSBjb3JyZWN0IHN0cnVjdHVyZVxuICAgICAgICAgIGFkZFNlcnZlck1hbmlmZXN0KGJ1bmRsZU1hbmlmZXN0IGFzIGFueSk7XG5cbiAgICAgICAgICAvLyBBbHNvIHVwZGF0ZSB0aGUgc2hhcmVkIHN0YXRlIGJldHdlZW4gZW52aXJvbm1lbnRzXG4gICAgICAgICAgdXBkYXRlU2hhcmVkTWFuaWZlc3QodGhpcywgXCJzZXJ2ZXJcIiwgYnVuZGxlTWFuaWZlc3QgYXMgYW55KTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBTaWduYWwgdGhhdCBzZXJ2ZXIgbWFuaWZlc3QgaXMgcmVhZHkgZm9yIHdhaXRpbmcgY29uc3VtZXJzXG4gICAgICAgICAgc2lnbmFsU2VydmVyTWFuaWZlc3RSZWFkeShidW5kbGVNYW5pZmVzdCBhcyBhbnkpO1xuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc3QgZXZlbnRQYW5pY0Vycm9yID0gaGFuZGxlRXJyb3Ioe1xuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBwYW5pY1RocmVzaG9sZDogdXNlck9wdGlvbnMucGFuaWNUaHJlc2hvbGQsXG4gICAgICAgICAgICBjb250ZXh0OiBgd3JpdGVCdW5kbGUoc2VydmVyIG1hbmlmZXN0KWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGV2ZW50UGFuaWNFcnJvciAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yKGV2ZW50UGFuaWNFcnJvcik7IC8vIFJlLXRocm93IHRvIGFib3J0IHRoZSBidWlsZFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndhcm4oZXJyb3IgYXMgYW55KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50VHlwZSAmJiB1c2VyT3B0aW9ucy5vbkV2ZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdXNlck9wdGlvbnMub25FdmVudCh7XG4gICAgICAgICAgICB0eXBlOiBldmVudFR5cGUsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIHBhZ2VzOiBbXSxcbiAgICAgICAgICAgICAgb3B0aW9uczogb3V0cHV0T3B0aW9ucyxcbiAgICAgICAgICAgICAgYnVuZGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9IGFzIGFueSk7IC8vIFR5cGUgYXNzZXJ0aW9uIHRvIGF2b2lkIGNvbXBsZXggdHlwZSBjaGVja2luZ1xuXG4gICAgICAgICAgLy8gSGFuZGxlIGFzeW5jIGV2ZW50IGNhbGxiYWNrc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlc3VsdCAhPSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcmVzdWx0ID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBcInRoZW5cIiBpbiByZXN1bHRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIChyZXN1bHQgYXMgUHJvbWlzZTxhbnk+KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZXZlbnRQYW5pY0Vycm9yID0gaGFuZGxlRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgIHBhbmljVGhyZXNob2xkOiB1c2VyT3B0aW9ucy5wYW5pY1RocmVzaG9sZCxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBgb25FdmVudCgke2V2ZW50VHlwZX0pYCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChldmVudFBhbmljRXJyb3IgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IGV2ZW50UGFuaWNFcnJvcjsgLy8gUmUtdGhyb3cgdG8gYWJvcnQgdGhlIGJ1aWxkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBldmVudFBhbmljRXJyb3IgPSBoYW5kbGVFcnJvcih7XG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIHBhbmljVGhyZXNob2xkOiB1c2VyT3B0aW9ucy5wYW5pY1RocmVzaG9sZCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGBvbkV2ZW50KCR7ZXZlbnRUeXBlfSlgLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChldmVudFBhbmljRXJyb3IgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5lcnJvcihldmVudFBhbmljRXJyb3IpOyAvLyBMb2cgdGhlIGVycm9yXG4gICAgICAgICAgICB0aHJvdyBldmVudFBhbmljRXJyb3I7IC8vIFJlLXRocm93IHRvIGFib3J0IHRoZSBidWlsZFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndhcm4oZXJyb3IgYXMgYW55KTtcbiAgICAgICAgICAgIC8vIEZvciBub24tcGFuaWMgZXJyb3JzLCBkb24ndCB0aHJvdyAtIGp1c3Qgd2FyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQVdPLFNBQVMsdUJBQXVCLE9BQXNDLEVBQUE7QUFDM0UsRUFBTyxPQUFBO0FBQUEsSUFDTCxJQUFNLEVBQUEsdUNBQUE7QUFBQSxJQUNOLE9BQVMsRUFBQSxNQUFBO0FBQUEsSUFDVCxLQUFPLEVBQUEsT0FBQTtBQUFBLElBRVAsV0FBQSxDQUFZLGVBQWUsTUFBUSxFQUFBO0FBQ2pDLE1BQU0sTUFBQSxxQkFBQSxHQUF3QixlQUFlLE9BQU8sQ0FBQTtBQUNwRCxNQUFJLElBQUEscUJBQUEsQ0FBc0IsU0FBUyxPQUFTLEVBQUE7QUFFMUMsUUFBQTtBQUFBO0FBRUYsTUFBQSxNQUFNLGNBQWMscUJBQXNCLENBQUEsV0FBQTtB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