UNPKG

vite-plugin-react-server

Version:
67 lines (64 loc) 7.7 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { createFromFetch } from 'react-server-dom-esm/client.browser'; import { createCallServer } from './createCallServer.js'; import { env } from './env.js'; import { createPageURL } from './urls.js'; function createReactFetcher({ moduleBaseURL = env.BASE_URL, publicOrigin = env.PUBLIC_ORIGIN, url = window.location.pathname, indexRSC = "index.rsc", headers = { Accept: "text/x-component" } } = {}) { const parsedURL = createPageURL( moduleBaseURL, publicOrigin, env.DEV )(url, indexRSC); return createFromFetch( fetch(parsedURL.indexRSC, { headers }), { callServer: createCallServer(parsedURL.moduleBaseURL), moduleBaseURL: parsedURL.moduleBaseURL } ); } const RSC_HMR_EVENT = "vite-plugin-react-server:server-component-update"; function setupRscHmr(options = {}) { const { onUpdate, verbose = env.DEV } = options; if (typeof import.meta.hot === "undefined") { return; } import.meta.hot.on(RSC_HMR_EVENT, async (data) => { if (verbose) { console.log("[RSC HMR] Server component updated:", data.file); } if (onUpdate === "reload") { window.location.reload(); return; } if (onUpdate) { try { await onUpdate(data); } catch (error) { console.error("[RSC HMR] Error in onUpdate handler:", error); window.location.reload(); } } else { window.location.reload(); } }); if (verbose) { console.log("[RSC HMR] Listening for server component updates"); } } export { RSC_HMR_EVENT, createReactFetcher, setupRscHmr }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUmVhY3RGZXRjaGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vdXRpbHMvY3JlYXRlUmVhY3RGZXRjaGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlRnJvbUZldGNoIH0gZnJvbSBcInJlYWN0LXNlcnZlci1kb20tZXNtL2NsaWVudC5icm93c2VyXCI7XG5pbXBvcnQgeyBjcmVhdGVDYWxsU2VydmVyIH0gZnJvbSBcIi4vY3JlYXRlQ2FsbFNlcnZlci5qc1wiO1xuaW1wb3J0IHsgZW52IH0gZnJvbSBcIi4vZW52LmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVQYWdlVVJMIH0gZnJvbSBcIi4vdXJscy5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhY3RGZXRjaGVyKHtcbiAgbW9kdWxlQmFzZVVSTCA9IGVudi5CQVNFX1VSTCxcbiAgcHVibGljT3JpZ2luID0gZW52LlBVQkxJQ19PUklHSU4sXG4gIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgaW5kZXhSU0MgPSBcImluZGV4LnJzY1wiLFxuICBoZWFkZXJzID0ge1xuICAgIEFjY2VwdDogXCJ0ZXh0L3gtY29tcG9uZW50XCIsXG4gIH0sXG59OiB7XG4gIHVybD86IHN0cmluZztcbiAgbW9kdWxlQmFzZVVSTD86IHN0cmluZztcbiAgcHVibGljT3JpZ2luPzogc3RyaW5nO1xuICBpbmRleFJTQz86IHN0cmluZztcbiAgaGVhZGVycz86IEhlYWRlcnNJbml0O1xufSA9IHt9KTogUHJvbWlzZUxpa2U8UmVhY3QuUmVhY3ROb2RlPiB7XG4gIGNvbnN0IHBhcnNlZFVSTCA9IGNyZWF0ZVBhZ2VVUkwoXG4gICAgbW9kdWxlQmFzZVVSTCxcbiAgICBwdWJsaWNPcmlnaW4sXG4gICAgZW52LkRFVlxuICApKHVybCwgaW5kZXhSU0MpO1xuICByZXR1cm4gY3JlYXRlRnJvbUZldGNoKFxuICAgIGZldGNoKHBhcnNlZFVSTC5pbmRleFJTQywge1xuICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICB9KSxcbiAgICB7XG4gICAgICBjYWxsU2VydmVyOiBjcmVhdGVDYWxsU2VydmVyKHBhcnNlZFVSTC5tb2R1bGVCYXNlVVJMKSxcbiAgICAgIG1vZHVsZUJhc2VVUkw6IHBhcnNlZFVSTC5tb2R1bGVCYXNlVVJMLFxuICAgIH1cbiAgKTtcbn1cblxuLyoqIEhNUiBldmVudCBuYW1lIHVzZWQgYnkgdGhlIHBsdWdpbiAqL1xuZXhwb3J0IGNvbnN0IFJTQ19ITVJfRVZFTlQgPSAndml0ZS1wbHVnaW4tcmVhY3Qtc2VydmVyOnNlcnZlci1jb21wb25lbnQtdXBkYXRlJztcblxuLyoqIERhdGEgc2VudCB3aXRoIFJTQyBITVIgZXZlbnRzICovXG5leHBvcnQgaW50ZXJmYWNlIFJzY0htckRhdGEge1xuICBmaWxlOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXQgdXAgSE1SIGZvciBSZWFjdCBTZXJ2ZXIgQ29tcG9uZW50cyAobm9uLVJlYWN0IEFQSSkuXG4gKiBcbiAqIEZvciBSZWFjdCBjb21wb25lbnRzLCB1c2UgYHVzZVJzY0htcigpYCBob29rIGluc3RlYWQuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHNldHVwUnNjSG1yIH0gZnJvbSAndml0ZS1wbHVnaW4tcmVhY3Qtc2VydmVyL3V0aWxzJztcbiAqIFxuICogLy8gRGVmYXVsdDogcmVmZXRjaCBjdXJyZW50IHBhZ2UncyBSU0Mgc3RyZWFtIChzbWFydCByZWZyZXNoKVxuICogc2V0dXBSc2NIbXIoKTtcbiAqIFxuICogLy8gQ3VzdG9tIGhhbmRsZXJcbiAqIHNldHVwUnNjSG1yKHtcbiAqICAgb25VcGRhdGU6IGFzeW5jIChkYXRhKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ0NoYW5nZWQ6JywgZGF0YS5maWxlKTtcbiAqICAgICBteUN1c3RvbVJlZmV0Y2goKTtcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUnNjSG1yKG9wdGlvbnM6IHtcbiAgLyoqXG4gICAqIEN1c3RvbSBoYW5kbGVyIGZvciBzZXJ2ZXIgY29tcG9uZW50IHVwZGF0ZXMuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gcmVmZXRjaGluZyB0aGUgUlNDIHN0cmVhbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICogU2V0IHRvIGAncmVsb2FkJ2AgZm9yIGZ1bGwgcGFnZSByZWxvYWQgYmVoYXZpb3IuXG4gICAqL1xuICBvblVwZGF0ZT86ICgoZGF0YTogUnNjSG1yRGF0YSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgJ3JlbG9hZCc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxvZyBITVIgZXZlbnRzIHRvIGNvbnNvbGUuXG4gICAqIEBkZWZhdWx0IHRydWUgaW4gZGV2ZWxvcG1lbnRcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xufSA9IHt9KSB7XG4gIGNvbnN0IHsgb25VcGRhdGUsIHZlcmJvc2UgPSBlbnYuREVWIH0gPSBvcHRpb25zO1xuICBcbiAgaWYgKHR5cGVvZiBpbXBvcnQubWV0YS5ob3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIFxuICBpbXBvcnQubWV0YS5ob3Qub24oUlNDX0hNUl9FVkVOVCwgYXN5bmMgKGRhdGE6IFJzY0htckRhdGEpID0+IHtcbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coJ1tSU0MgSE1SXSBTZXJ2ZXIgY29tcG9uZW50IHVwZGF0ZWQ6JywgZGF0YS5maWxlKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKG9uVXBkYXRlID09PSAncmVsb2FkJykge1xuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG9uVXBkYXRlKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW1JTQyBITVJdIEVycm9yIGluIG9uVXBkYXRlIGhhbmRsZXI6JywgZXJyb3IpO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZmF1bHQ6IGZ1bGwgcGFnZSByZWxvYWRcbiAgICAgIC8vIEZvciBzbWFydCBSU0MgcmVmZXRjaCwgdXNlIHVzZVJzY0htcigpIGhvb2sgaW4geW91ciBSZWFjdCB0cmVlXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfVxuICB9KTtcbiAgXG4gIGlmICh2ZXJib3NlKSB7XG4gICAgY29uc29sZS5sb2coJ1tSU0MgSE1SXSBMaXN0ZW5pbmcgZm9yIHNlcnZlciBjb21wb25lbnQgdXBkYXRlcycpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQU1PLFNBQVMsa0JBQW1CLENBQUE7QUFBQSxFQUNqQyxnQkFBZ0IsR0FBSSxDQUFBLFFBQUE7QUFBQSxFQUNwQixlQUFlLEdBQUksQ0FBQSxhQUFBO0FBQUEsRUFDbkIsR0FBQSxHQUFNLE9BQU8sUUFBUyxDQUFBLFFBQUE7QUFBQSxFQUN0QixRQUFXLEdBQUEsV0FBQTtBQUFBLEVBQ1gsT0FBVSxHQUFBO0FBQUEsSUFDUixNQUFRLEVBQUE7QUFBQTtBQUVaLENBQUEsR0FNSSxFQUFrQyxFQUFBO0FBQ3BDLEVBQUEsTUFBTSxTQUFZLEdBQUEsYUFBQTtBQUFBLElBQ2hCLGFBQUE7QUFBQSxJQUNBLFlBQUE7QUFBQSxJQUNBLEdBQUksQ0FBQTtBQUFBLEdBQ04sQ0FBRSxLQUFLLFFBQVEsQ0FBQTtBQUNSLEVBQUEsT0FBQSxlQUFBO0FBQUEsSUFDTCxLQUFBLENBQU0sVUFBVSxRQUFVLEVBQUE7QUFBQSxNQUN4QjtBQUFBLEtBQ0QsQ0FBQTtBQUFBLElBQ0Q7QUFBQSxNQUNFLFVBQUEsRUFBWSxnQkFBaUIsQ0FBQSxTQUFBLENBQVUsYUFBYSxDQUFBO0FBQUEsTUFDcEQsZUFBZSxTQUFVLENBQUE7QUFBQTtBQUMzQixHQUNGO0FBQ0Y7QUFHTyxNQUFNLGFBQWdCLEdBQUE7QUE2QnRCLFNBQVMsV0FBQSxDQUFZLE9BWXhCLEdBQUEsRUFBSSxFQUFBO0FBQ04sRUFBQSxNQUFNLEVBQUUsUUFBQSxFQUFVLE9BQVUsR0FBQSxHQUFBLENBQUksS0FBUSxHQUFBLE9BQUE7QUFFcEMsRUFBQSxJQUFBLE9BQU8sb0JBQW9CLFdBQWEsRUFBQTtBQUMxQyxJQUFBO0FBQUE7QUFHRixFQUFnQixNQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxFQUFBLENBQUcsYUFBZSxFQUFBLE9BQU8sSUFBcUIsS0FBQTtBQUM1RCxJQUFBLElBQUksT0FBUyxFQUFBO0FBQ0gsTUFBQSxPQUFBLENBQUEsR0FBQSxDQUFJLHFDQUF1QyxFQUFBLElBQUEsQ0FBSyxJQUFJLENBQUE7QUFBQTtBQUc5RCxJQUFBLElBQUksYUFBYSxRQUFVLEVBQUE7QUFDekIsTUFBQSxNQUFBLENBQU8sU0FBUyxNQUFPLEVBQUE7QUFDdkIsTUFBQTtBQUFBO0FBR0YsSUFBQSxJQUFJLFFBQVUsRUFBQTtBQUNSLE1BQUEsSUFBQTtBQUNGLFFBQUEsTUFBTSxTQUFTLElBQUksQ0FBQTtBQUFBLGVBQ1osS0FBTyxFQUFBO0FBQ04sUUFBQSxPQUFBLENBQUEsS0FBQSxDQUFNLHdDQUF3QyxLQUFLLENBQUE7QUFDM0QsUUFBQSxNQUFBLENBQU8sU0FBUyxNQUFPLEVBQUE7QUFBQTtBQUN6QixLQUNLLE1BQUE7QUFHTCxNQUFBLE1BQUEsQ0FBTyxTQUFTLE1BQU8sRUFBQTtBQUFBO0FBQ3pCLEdBQ0QsQ0FBQTtBQUVELEVBQUEsSUFBSSxPQUFTLEVBQUE7QUFDWCxJQUFBLE9BQUEsQ0FBUSxJQUFJLGtEQUFrRCxDQUFBO0FBQUE7QUFFbEU7Ozs7In0=