vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
48 lines (45 loc) • 5.32 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { cleanObject } from '../helpers/cleanObject.js';
import { parentPort } from 'node:worker_threads';
import { serializeError } from '../error/serializeError.js';
import { serializeErrorInfo } from '../error/serializeErrorInfo.js';
const sendMessage = function _sendMessage(msg, port = parentPort) {
if (!port) {
throw new Error("No port available to send message");
}
try {
if ("error" in msg) {
const error = msg.error;
const hasErrorInfo = "errorInfo" in msg && msg.errorInfo != null && typeof msg.errorInfo === "object";
const serializedError = serializeError(error);
const errorInfo = hasErrorInfo ? serializeErrorInfo(msg.errorInfo) : void 0;
port.postMessage({
...cleanObject(msg),
error: serializedError,
errorInfo
});
} else {
port.postMessage(cleanObject(msg));
}
} catch (err) {
const sendError = new Error(
err instanceof Error ? err.message : String(err)
);
sendError.name = err instanceof Error ? err.name : "MessageSendError";
Error.captureStackTrace(sendError, sendMessage);
port.postMessage({
type: "ERROR",
error: {
message: sendError.message,
name: sendError.name,
stack: sendError.stack
}
});
}
};
export { sendMessage };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZE1lc3NhZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi93b3JrZXIvc2VuZE1lc3NhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xlYW5PYmplY3QgfSBmcm9tIFwiLi4vaGVscGVycy9jbGVhbk9iamVjdC5qc1wiO1xuaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gXCJub2RlOndvcmtlcl90aHJlYWRzXCI7XG5pbXBvcnQgdHlwZSB7IFNlbmRNZXNzYWdlRm4gfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3Ivc2VyaWFsaXplRXJyb3IuanNcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZUVycm9ySW5mbyB9IGZyb20gXCIuLi9lcnJvci9zZXJpYWxpemVFcnJvckluZm8uanNcIjtcblxuZXhwb3J0IGNvbnN0IHNlbmRNZXNzYWdlOiBTZW5kTWVzc2FnZUZuID0gZnVuY3Rpb24gX3NlbmRNZXNzYWdlKFxuICBtc2csXG4gIHBvcnQgPSBwYXJlbnRQb3J0XG4pIHtcbiAgaWYgKCFwb3J0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcG9ydCBhdmFpbGFibGUgdG8gc2VuZCBtZXNzYWdlXCIpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBIYW5kbGUgZXJyb3IgbWVzc2FnZXNcbiAgICBpZiAoXCJlcnJvclwiIGluIG1zZykge1xuICAgICAgY29uc3QgZXJyb3IgPSBtc2cuZXJyb3I7XG4gICAgICBjb25zdCBoYXNFcnJvckluZm8gPVxuICAgICAgICBcImVycm9ySW5mb1wiIGluIG1zZyAmJlxuICAgICAgICBtc2cuZXJyb3JJbmZvICE9IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIG1zZy5lcnJvckluZm8gPT09IFwib2JqZWN0XCI7XG4gICAgICBjb25zdCBzZXJpYWxpemVkRXJyb3IgPSBzZXJpYWxpemVFcnJvcihlcnJvcik7XG5cbiAgICAgIGNvbnN0IGVycm9ySW5mbyA9IGhhc0Vycm9ySW5mb1xuICAgICAgICA/IHNlcmlhbGl6ZUVycm9ySW5mbyhtc2cuZXJyb3JJbmZvKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAuLi5jbGVhbk9iamVjdChtc2cpLFxuICAgICAgICBlcnJvcjogc2VyaWFsaXplZEVycm9yLFxuICAgICAgICBlcnJvckluZm8sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIG5vbi1lcnJvciBtZXNzYWdlc1xuICAgICAgcG9ydC5wb3N0TWVzc2FnZShjbGVhbk9iamVjdChtc2cpKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIENyZWF0ZSBhIHByb3BlciBlcnJvciB3aXRoIGNhcHR1cmVkIHN0YWNrIHRyYWNlIGZvciBiZXR0ZXIgZGVidWdnaW5nXG4gICAgY29uc3Qgc2VuZEVycm9yID0gbmV3IEVycm9yKFxuICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpXG4gICAgKTtcbiAgICBzZW5kRXJyb3IubmFtZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm5hbWUgOiBcIk1lc3NhZ2VTZW5kRXJyb3JcIjtcblxuICAgIC8vIENhcHR1cmUgc3RhY2sgdHJhY2UgZXhjbHVkaW5nIHRoaXMgZnVuY3Rpb25cbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShzZW5kRXJyb3IsIHNlbmRNZXNzYWdlKTtcblxuICAgIHBvcnQucG9zdE1lc3NhZ2Uoe1xuICAgICAgdHlwZTogXCJFUlJPUlwiLFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgbWVzc2FnZTogc2VuZEVycm9yLm1lc3NhZ2UsXG4gICAgICAgIG5hbWU6IHNlbmRFcnJvci5uYW1lLFxuICAgICAgICBzdGFjazogc2VuZEVycm9yLnN0YWNrLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBTU8sTUFBTSxXQUE2QixHQUFBLFNBQVMsWUFDakQsQ0FBQSxHQUFBLEVBQ0EsT0FBTyxVQUNQLEVBQUE7QUFDQSxFQUFBLElBQUksQ0FBQyxJQUFNLEVBQUE7QUFDVCxJQUFNLE1BQUEsSUFBSSxNQUFNLG1DQUFtQyxDQUFBO0FBQUE7QUFHckQsRUFBSSxJQUFBO0FBRUYsSUFBQSxJQUFJLFdBQVcsR0FBSyxFQUFBO0FBQ2xCLE1BQUEsTUFBTSxRQUFRLEdBQUksQ0FBQSxLQUFBO0FBQ2xCLE1BQU0sTUFBQSxZQUFBLEdBQ0osZUFBZSxHQUNmLElBQUEsR0FBQSxDQUFJLGFBQWEsSUFDakIsSUFBQSxPQUFPLElBQUksU0FBYyxLQUFBLFFBQUE7QUFDM0IsTUFBTSxNQUFBLGVBQUEsR0FBa0IsZUFBZSxLQUFLLENBQUE7QUFFNUMsTUFBQSxNQUFNLFNBQVksR0FBQSxZQUFBLEdBQ2Qsa0JBQW1CLENBQUEsR0FBQSxDQUFJLFNBQVMsQ0FDaEMsR0FBQSxLQUFBLENBQUE7QUFDSixNQUFBLElBQUEsQ0FBSyxXQUFZLENBQUE7QUFBQSxRQUNmLEdBQUcsWUFBWSxHQUFHLENBQUE7QUFBQSxRQUNsQixLQUFPLEVBQUEsZUFBQTtBQUFBLFFBQ1A7QUFBQSxPQUNELENBQUE7QUFBQSxLQUNJLE1BQUE7QUFFTCxNQUFLLElBQUEsQ0FBQSxXQUFBLENBQVksV0FBWSxDQUFBLEdBQUcsQ0FBQyxDQUFBO0FBQUE7QUFDbkMsV0FDTyxHQUFLLEVBQUE7QUFFWixJQUFBLE1BQU0sWUFBWSxJQUFJLEtBQUE7QUFBQSxNQUNwQixHQUFlLFlBQUEsS0FBQSxHQUFRLEdBQUksQ0FBQSxPQUFBLEdBQVUsT0FBTyxHQUFHO0FBQUEsS0FDakQ7QUFDQSxJQUFBLFNBQUEsQ0FBVSxJQUFPLEdBQUEsR0FBQSxZQUFlLEtBQVEsR0FBQSxHQUFBLENBQUksSUFBTyxHQUFBLGtCQUFBO0FBR25ELElBQU0sS0FBQSxDQUFBLGlCQUFBLENBQWtCLFdBQVcsV0FBVyxDQUFBO0FBRTlDLElBQUEsSUFBQSxDQUFLLFdBQVksQ0FBQTtBQUFBLE1BQ2YsSUFBTSxFQUFBLE9BQUE7QUFBQSxNQUNOLEtBQU8sRUFBQTtBQUFBLFFBQ0wsU0FBUyxTQUFVLENBQUEsT0FBQTtBQUFBLFFBQ25CLE1BQU0sU0FBVSxDQUFBLElBQUE7QUFBQSxRQUNoQixPQUFPLFNBQVUsQ0FBQTtBQUFBO0FBQ25CLEtBQ0QsQ0FBQTtBQUFBO0FBRUw7Ozs7In0=