UNPKG

vite-plugin-react-server

Version:
167 lines (164 loc) 14.9 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { sendMessage } from '../sendMessage.js'; import { serializeError } from '../../error/serializeError.js'; import { serializeErrorInfo } from '../../error/serializeErrorInfo.js'; import { MessagePortWritable } from '../../stream/MessagePortWritable.js'; function createHandlers(fromWorker, toWorker) { const messagePortWritable = fromWorker ? new MessagePortWritable(fromWorker, toWorker) : null; return { onRscRender: (id) => { if (toWorker) { toWorker.postMessage({ type: "RSC_RENDER_START", id }); } else { sendMessage({ type: "RSC_RENDER_START", id }); } }, onError: (id, error, errorInfo) => { if (toWorker) { toWorker.postMessage({ type: "ERROR", id, errorInfo: serializeErrorInfo(errorInfo), error: serializeError(error) }); } else { sendMessage({ type: "ERROR", id, errorInfo: serializeErrorInfo(errorInfo), error: serializeError(error) }); } }, onShellError: (id, error) => { if (toWorker) { toWorker.postMessage({ type: "SHELL_ERROR", id, error: serializeError(error) }); } else { sendMessage({ type: "SHELL_ERROR", id, error: serializeError(error) }); } }, onData: (id, data) => { if (messagePortWritable) ; else { sendMessage({ type: "RSC_CHUNK", id, chunk: data }); } }, onEnd: (id) => { if (fromWorker) { try { fromWorker.postMessage(null); } catch (error) { } } if (toWorker) { toWorker.postMessage({ type: "RSC_END", id }); } else { sendMessage({ type: "RSC_END", id }); } }, onMetrics: (id, metrics) => { if (metrics.type === "html" || metrics.type === "worker-startup" || metrics.type === "module-resolution") { return; } if (toWorker) { toWorker.postMessage({ type: "RSC_METRICS", id, metrics }); } else { sendMessage({ type: "RSC_METRICS", id, metrics }); } }, // Expose the writable stream for direct piping in two-port mode ...messagePortWritable && { getWritable: () => messagePortWritable }, onHmrAccept: (id, routes) => { sendMessage({ type: "HMR_ACCEPT", id, routes }); }, onHmrUpdate: (id, routes) => { sendMessage({ type: "HMR_UPDATE", id, routes }); }, onShutdown: (id) => { sendMessage({ type: "HMR_CLEANUP", id }); }, onCssFile: (id, code) => { sendMessage({ type: "CSS_FILE", id, content: code }); }, onCleanup: (id) => { sendMessage({ type: "HMR_CLEANUP", id }); }, onShellReady: (id) => { sendMessage({ type: "SHELL_READY", id }); }, onAllReady: (id) => { sendMessage({ type: "RSC_END", id }); }, onServerActionResponse: (id, result, error) => { sendMessage({ type: "SERVER_ACTION_RESPONSE", id, result, // Only include error if it's truthy - prevents serializeError(undefined) ...error ? { error } : {} }); } }; } createHandlers(); export { createHandlers }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbi93b3JrZXIvcnNjL2hhbmRsZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VydmVyU3RyZWFtSGFuZGxlcnMgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IHNlbmRNZXNzYWdlIH0gZnJvbSBcIi4uL3NlbmRNZXNzYWdlLmpzXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9zZXJpYWxpemVFcnJvci5qc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplRXJyb3JJbmZvIH0gZnJvbSBcIi4uLy4uL2Vycm9yL3NlcmlhbGl6ZUVycm9ySW5mby5qc1wiO1xuaW1wb3J0IHsgTWVzc2FnZVBvcnRXcml0YWJsZSB9IGZyb20gXCIuLi8uLi9zdHJlYW0vTWVzc2FnZVBvcnRXcml0YWJsZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlUG9ydCB9IGZyb20gXCJub2RlOndvcmtlcl90aHJlYWRzXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBoYW5kbGVycyBmb3IgdHdvLXBvcnQgY29tbXVuaWNhdGlvbjogZnJvbVdvcmtlciBmb3Igc3RyZWFtaW5nIGRhdGEgb3V0LCB0b1dvcmtlciBmb3IgY29udHJvbCBtZXNzYWdlcyBpblxuICogRm9sbG93aW5nIHplcm8tY29weSBzdHJlYW1pbmcgcGF0dGVybjogZnJvbVdvcmtlciAod29ya2VyIOKGkiBtYWluKSwgdG9Xb3JrZXIgKG1haW4g4oaSIHdvcmtlcilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUhhbmRsZXJzKGZyb21Xb3JrZXI/OiBNZXNzYWdlUG9ydCwgdG9Xb3JrZXI/OiBNZXNzYWdlUG9ydCk6IFNlcnZlclN0cmVhbUhhbmRsZXJzIHtcbiAgLy8gQ3JlYXRlIHdyaXRhYmxlIHN0cmVhbSBmb3IgZnJvbVdvcmtlciBpZiBhdmFpbGFibGVcbiAgY29uc3QgbWVzc2FnZVBvcnRXcml0YWJsZSA9IGZyb21Xb3JrZXIgPyBuZXcgTWVzc2FnZVBvcnRXcml0YWJsZShmcm9tV29ya2VyLCB0b1dvcmtlcikgOiBudWxsO1xuICByZXR1cm4ge1xuICAgIG9uUnNjUmVuZGVyOiAoaWQpID0+IHtcbiAgICAgIGlmICh0b1dvcmtlcikge1xuICAgICAgICB0b1dvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgdHlwZTogXCJSU0NfUkVOREVSX1NUQVJUXCIsXG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbmRNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiBcIlJTQ19SRU5ERVJfU1RBUlRcIixcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25FcnJvcjogKGlkLCBlcnJvciwgZXJyb3JJbmZvKSA9PiB7XG4gICAgICBpZiAodG9Xb3JrZXIpIHtcbiAgICAgICAgdG9Xb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6IFwiRVJST1JcIixcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgZXJyb3JJbmZvOiBzZXJpYWxpemVFcnJvckluZm8oZXJyb3JJbmZvKSxcbiAgICAgICAgICBlcnJvcjogc2VyaWFsaXplRXJyb3IoZXJyb3IpLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbmRNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiBcIkVSUk9SXCIsXG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgIGVycm9ySW5mbzogc2VyaWFsaXplRXJyb3JJbmZvKGVycm9ySW5mbyksXG4gICAgICAgICAgZXJyb3I6IHNlcmlhbGl6ZUVycm9yKGVycm9yKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvblNoZWxsRXJyb3I6IChpZCwgZXJyb3IpID0+IHtcbiAgICAgIGlmICh0b1dvcmtlcikge1xuICAgICAgICB0b1dvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgdHlwZTogXCJTSEVMTF9FUlJPUlwiLFxuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBlcnJvcjogc2VyaWFsaXplRXJyb3IoZXJyb3IpLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbmRNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiBcIlNIRUxMX0VSUk9SXCIsXG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgIGVycm9yOiBzZXJpYWxpemVFcnJvcihlcnJvciksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25EYXRhOiAoaWQsIGRhdGEpID0+IHtcbiAgICAgIC8vIEluIHR3by1wb3J0IG1vZGUsIGRhdGEgZ29lcyB0aHJvdWdoIHRoZSB3cml0YWJsZSBzdHJlYW1cbiAgICAgIC8vIEluIHNpbmdsZS1wb3J0IG1vZGUsIHVzZSB0aGUgb2xkIG1lc3NhZ2UgYXBwcm9hY2hcbiAgICAgIGlmIChtZXNzYWdlUG9ydFdyaXRhYmxlKSB7XG4gICAgICAgIC8vIERhdGEgaXMgaGFuZGxlZCBieSBwaXBpbmcgdG8gbWVzc2FnZVBvcnRXcml0YWJsZVxuICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnV0IHRoZSBhY3R1YWwgZGF0YSBmbG93IGlzIHRocm91Z2ggdGhlIHN0cmVhbVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VuZE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6IFwiUlNDX0NIVU5LXCIsXG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgIGNodW5rOiBkYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRW5kOiAoaWQpID0+IHtcbiAgICAgIC8vIE1pcnJvciBIVE1MIHdvcmtlciBwYXR0ZXJuOiBzZW5kIG51bGwgdGhyb3VnaCBmcm9tV29ya2VyLCB0aGVuIEVORCB0aHJvdWdoIHRvV29ya2VyXG4gICAgICBpZiAoZnJvbVdvcmtlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZyb21Xb3JrZXIucG9zdE1lc3NhZ2UobnVsbCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gUG9ydCBtYXkgYmUgY2xvc2VkLCBpZ25vcmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAodG9Xb3JrZXIpIHtcbiAgICAgICAgdG9Xb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6IFwiUlNDX0VORFwiLFxuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZW5kTWVzc2FnZSh7XG4gICAgICAgICAgdHlwZTogXCJSU0NfRU5EXCIsXG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uTWV0cmljczogKGlkLCBtZXRyaWNzKSA9PiB7XG4gICAgICBpZiAobWV0cmljcy50eXBlID09PSBcImh0bWxcIiB8fCBtZXRyaWNzLnR5cGUgPT09IFwid29ya2VyLXN0YXJ0dXBcIiB8fCBtZXRyaWNzLnR5cGUgPT09IFwibW9kdWxlLXJlc29sdXRpb25cIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodG9Xb3JrZXIpIHtcbiAgICAgICAgdG9Xb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6IFwiUlNDX01FVFJJQ1NcIixcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgbWV0cmljczogbWV0cmljcyBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VuZE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6IFwiUlNDX01FVFJJQ1NcIixcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgbWV0cmljczogbWV0cmljcyBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gRXhwb3NlIHRoZSB3cml0YWJsZSBzdHJlYW0gZm9yIGRpcmVjdCBwaXBpbmcgaW4gdHdvLXBvcnQgbW9kZVxuICAgIC4uLihtZXNzYWdlUG9ydFdyaXRhYmxlICYmIHsgZ2V0V3JpdGFibGU6ICgpID0+IG1lc3NhZ2VQb3J0V3JpdGFibGUgfSksXG4gICAgb25IbXJBY2NlcHQ6IChpZCwgcm91dGVzKSA9PiB7XG4gICAgICBzZW5kTWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IFwiSE1SX0FDQ0VQVFwiLFxuICAgICAgICBpZDogaWQsXG4gICAgICAgIHJvdXRlczogcm91dGVzLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbkhtclVwZGF0ZTogKGlkLCByb3V0ZXMpID0+IHtcbiAgICAgIHNlbmRNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogXCJITVJfVVBEQVRFXCIsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgcm91dGVzOiByb3V0ZXMsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU2h1dGRvd246IChpZCkgPT4ge1xuICAgICAgc2VuZE1lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiBcIkhNUl9DTEVBTlVQXCIsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25Dc3NGaWxlOiAoaWQsIGNvZGUpID0+IHtcbiAgICAgIHNlbmRNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogXCJDU1NfRklMRVwiLFxuICAgICAgICBpZDogaWQsXG4gICAgICAgIGNvbnRlbnQ6IGNvZGUsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uQ2xlYW51cDogKGlkKSA9PiB7XG4gICAgICBzZW5kTWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IFwiSE1SX0NMRUFOVVBcIixcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvblNoZWxsUmVhZHk6IChpZCkgPT4ge1xuICAgICAgc2VuZE1lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiBcIlNIRUxMX1JFQURZXCIsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25BbGxSZWFkeTogKGlkKSA9PiB7XG4gICAgICBzZW5kTWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IFwiUlNDX0VORFwiLFxuICAgICAgICBpZDogaWQsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU2VydmVyQWN0aW9uUmVzcG9uc2U6IChpZCwgcmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgc2VuZE1lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiBcIlNFUlZFUl9BQ1RJT05fUkVTUE9OU0VcIixcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdCxcbiAgICAgICAgLy8gT25seSBpbmNsdWRlIGVycm9yIGlmIGl0J3MgdHJ1dGh5IC0gcHJldmVudHMgc2VyaWFsaXplRXJyb3IodW5kZWZpbmVkKVxuICAgICAgICAuLi4oZXJyb3IgPyB7IGVycm9yIH0gOiB7fSksXG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG4vLyBEZWZhdWx0IGhhbmRsZXJzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgY29uc3QgaGFuZGxlcnMgPSBjcmVhdGVIYW5kbGVycygpOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBV08sU0FBUyxjQUFBLENBQWUsWUFBMEIsUUFBOEMsRUFBQTtBQUVyRyxFQUFBLE1BQU0sc0JBQXNCLFVBQWEsR0FBQSxJQUFJLG1CQUFvQixDQUFBLFVBQUEsRUFBWSxRQUFRLENBQUksR0FBQSxJQUFBO0FBQ3pGLEVBQU8sT0FBQTtBQUFBLElBQ0wsV0FBQSxFQUFhLENBQUMsRUFBTyxLQUFBO0FBQ25CLE1BQUEsSUFBSSxRQUFVLEVBQUE7QUFDWixRQUFBLFFBQUEsQ0FBUyxXQUFZLENBQUE7QUFBQSxVQUNuQixJQUFNLEVBQUEsa0JBQUE7QUFBQSxVQUNOO0FBQUEsU0FDRCxDQUFBO0FBQUEsT0FDSSxNQUFBO0FBQ0wsUUFBWSxXQUFBLENBQUE7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