vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
100 lines (98 loc) • 15.6 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
function toError(error, errorInfo) {
if (typeof error === "string") {
const err = new Error(error, { cause: errorInfo });
return err;
}
if (error == null) {
const err = new Error("Unknown React Stream Error (null/undefined)", { cause: errorInfo });
return err;
}
if (error instanceof Error) {
return error;
}
if (typeof error === "object" && error !== null && Object.keys(error).length === 0) {
const err = new Error("Unknown React Stream Error (empty object)", { cause: error });
return err;
}
if (typeof error === "object" && error != null) {
if ("message" in error && "name" in error && typeof error.message === "string" && typeof error.name === "string") {
const err2 = new Error(error.message, { cause: errorInfo });
err2.name = error.name;
if ("stack" in error && typeof error.stack === "string") {
err2.stack = error.stack;
}
return err2;
}
let message = "Unknown React Stream Error";
if ("message" in error) {
if (typeof error.message === "string") {
message = error.message;
} else if (error.message !== null && error.message !== void 0) {
try {
message = `Message object: ${JSON.stringify(error.message)}`;
} catch {
message = `Message object: [object could not be stringified]`;
}
}
} else if ("reason" in error && typeof error.reason === "string") {
message = error.reason;
} else if ("error" in error && error.error !== null && error.error !== void 0 && typeof error.error === "string") {
message = error.error;
} else if ("error" in error && error.error !== null && error.error !== void 0) {
const nested = error.error;
if (nested instanceof Error) {
const err2 = new Error(nested.message, { cause: nested });
err2.name = nested.name || err2.name;
if (typeof nested.stack === "string") err2.stack = nested.stack;
return err2;
}
try {
message = `Error object: ${JSON.stringify(nested)}`;
} catch {
message = `Error object: [object could not be stringified]`;
}
} else if ("reason" in error && error.reason instanceof Error) {
message = error.reason.message;
} else if ("reason" in error && error.reason instanceof Object && "error" in error.reason) {
if (error.reason.error instanceof Error) {
message = error.reason.error.message;
} else if (error.reason.error !== null && error.reason.error !== void 0) {
try {
message = `React error object: ${JSON.stringify(error.reason.error)}`;
} catch {
message = `React error object: [object could not be stringified]`;
}
} else {
message = "React Server Components error (null/undefined error)";
}
} else {
try {
const stringified = JSON.stringify(error, null, 2);
message = stringified;
} catch {
message = `Object error: [object could not be stringified]`;
}
}
if (typeof error === "object" && error != null && "stack" in error && typeof error.stack === "string") {
const err2 = new Error(message, { cause: error });
err2.stack = error.stack;
return err2;
}
const err = new Error(message ?? "Unknown React Stream Error", { cause: errorInfo });
return err;
}
try {
const err = new Error(`Unknown React Stream Error: ${String(error)}`, { cause: errorInfo });
return err;
} catch {
const err = new Error("Unknown React Stream Error (unstringifiable)");
return err;
}
}
export { toError };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9FcnJvci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL2Vycm9yL3RvRXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVhY3QgdHlwZXMgYXJlIGltcG9ydGVkIGZyb20gdmVuZG9yIHN5c3RlbSBhdCBydW50aW1lXG50eXBlIEVycm9ySW5mbyA9IHtcbiAgY29tcG9uZW50U3RhY2s/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9FcnJvcihlcnJvcjogdW5rbm93biwgZXJyb3JJbmZvPzogRXJyb3JJbmZvKTogRXJyb3Ige1xuICBpZiAodHlwZW9mIGVycm9yID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGVycm9yLCB7IGNhdXNlOiBlcnJvckluZm8gfSk7XG4gICAgcmV0dXJuIGVycjtcbiAgfVxuICBpZiAoZXJyb3IgPT0gbnVsbCApIHtcbiAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoXCJVbmtub3duIFJlYWN0IFN0cmVhbSBFcnJvciAobnVsbC91bmRlZmluZWQpXCIsIHsgY2F1c2U6IGVycm9ySW5mbyB9KTtcbiAgICAvLyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHRvRXJyb3IpO1xuICAgIHJldHVybiBlcnI7XG4gIH1cbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgaWYodHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmIGVycm9yICE9PSBudWxsICYmIE9iamVjdC5rZXlzKGVycm9yKS5sZW5ndGggPT09IDApIHtcbiAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoXCJVbmtub3duIFJlYWN0IFN0cmVhbSBFcnJvciAoZW1wdHkgb2JqZWN0KVwiLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgICAvLyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHRvRXJyb3IpO1xuICAgIHJldHVybiBlcnI7XG4gIH1cbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvciAhPSBudWxsKSB7XG4gICAgLy8gSGFuZGxlIHNlcmlhbGl6ZWQgZXJyb3Igb2JqZWN0cyBmcm9tIHdvcmtlciB0aHJlYWRzXG4gICAgaWYgKFwibWVzc2FnZVwiIGluIGVycm9yICYmIFwibmFtZVwiIGluIGVycm9yICYmIHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBlcnJvci5uYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSwgeyBjYXVzZTogZXJyb3JJbmZvIH0pO1xuICAgICAgZXJyLm5hbWUgPSBlcnJvci5uYW1lO1xuICAgICAgaWYgKFwic3RhY2tcIiBpbiBlcnJvciAmJiB0eXBlb2YgZXJyb3Iuc3RhY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZXJyLnN0YWNrID0gZXJyb3Iuc3RhY2s7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiBubyBzdGFjayB0cmFjZSBhdmFpbGFibGUsIGNhcHR1cmUgb25lIGF0IHRoaXMgcG9pbnRcbiAgICAgICAgLy8gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB0b0Vycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuICAgIFxuICAgIC8vIFRyeSB0byBleHRyYWN0IG1lYW5pbmdmdWwgaW5mb3JtYXRpb24gZnJvbSBvdGhlciBlcnJvciBvYmplY3RzXG4gICAgbGV0IG1lc3NhZ2UgPSBcIlVua25vd24gUmVhY3QgU3RyZWFtIEVycm9yXCI7XG4gICAgXG4gICAgaWYgKFwibWVzc2FnZVwiIGluIGVycm9yKSB7XG4gICAgICBpZiAodHlwZW9mIGVycm9yLm1lc3NhZ2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICB9IGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UgIT09IG51bGwgJiYgZXJyb3IubWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFRoZSBtZXNzYWdlIHByb3BlcnR5IGV4aXN0cyBidXQgaXMgbm90IGEgc3RyaW5nIC0gdGhpcyBtaWdodCBiZSB0aGUgaXNzdWVcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtZXNzYWdlID0gYE1lc3NhZ2Ugb2JqZWN0OiAke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfWA7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIG1lc3NhZ2UgPSBgTWVzc2FnZSBvYmplY3Q6IFtvYmplY3QgY291bGQgbm90IGJlIHN0cmluZ2lmaWVkXWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFwicmVhc29uXCIgaW4gZXJyb3IgJiYgdHlwZW9mIGVycm9yLnJlYXNvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLnJlYXNvbjtcbiAgICB9IGVsc2UgaWYgKFwiZXJyb3JcIiBpbiBlcnJvciAmJiBlcnJvci5lcnJvciAhPT0gbnVsbCAmJiBlcnJvci5lcnJvciAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlcnJvci5lcnJvciA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yO1xuICAgIH0gZWxzZSBpZiAoXCJlcnJvclwiIGluIGVycm9yICYmIGVycm9yLmVycm9yICE9PSBudWxsICYmIGVycm9yLmVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEltcHJvdmUgaGFuZGxpbmcgd2hlbiBuZXN0ZWQgZXJyb3IgaXMgYW4gRXJyb3IgaW5zdGFuY2VcbiAgICAgIGNvbnN0IG5lc3RlZDogYW55ID0gKGVycm9yIGFzIGFueSkuZXJyb3I7XG4gICAgICBpZiAobmVzdGVkIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKG5lc3RlZC5tZXNzYWdlLCB7IGNhdXNlOiBuZXN0ZWQgfSk7XG4gICAgICAgIGVyci5uYW1lID0gbmVzdGVkLm5hbWUgfHwgZXJyLm5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YgbmVzdGVkLnN0YWNrID09PSBcInN0cmluZ1wiKSBlcnIuc3RhY2sgPSBuZXN0ZWQuc3RhY2s7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgICB9XG4gICAgICAvLyBGYWxsYmFjayB3aGVuIG5lc3RlZCBlcnJvciBpcyBhIG5vbi1FcnJvciBvYmplY3RcbiAgICAgIHRyeSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgRXJyb3Igb2JqZWN0OiAke0pTT04uc3RyaW5naWZ5KG5lc3RlZCl9YDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBtZXNzYWdlID0gYEVycm9yIG9iamVjdDogW29iamVjdCBjb3VsZCBub3QgYmUgc3RyaW5naWZpZWRdYDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCdyZWFzb24nIGluIGVycm9yICYmIGVycm9yLnJlYXNvbiBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBtZXNzYWdlID0gZXJyb3IucmVhc29uLm1lc3NhZ2U7XG4gICAgfSBlbHNlIGlmICgncmVhc29uJyBpbiBlcnJvciAmJiBlcnJvci5yZWFzb24gaW5zdGFuY2VvZiBPYmplY3QgJiYgJ2Vycm9yJyBpbiBlcnJvci5yZWFzb24pIHtcbiAgICAgIC8vIEhhbmRsZSBSZWFjdCBTZXJ2ZXIgQ29tcG9uZW50cyBlcnJvciBmb3JtYXQ6IHsgcmVhc29uOiB7IGVycm9yOiBFcnJvciB8IG51bGwgfSB9XG4gICAgICBpZiAoZXJyb3IucmVhc29uLmVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgbWVzc2FnZSA9IGVycm9yLnJlYXNvbi5lcnJvci5tZXNzYWdlO1xuICAgICAgfSBlbHNlIGlmIChlcnJvci5yZWFzb24uZXJyb3IgIT09IG51bGwgJiYgZXJyb3IucmVhc29uLmVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgZXJyb3IucmVhc29uLmVycm9yIGV4aXN0cyBidXQgaXMgbm90IGFuIEVycm9yIG9iamVjdFxuICAgICAgICB0cnkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBgUmVhY3QgZXJyb3Igb2JqZWN0OiAke0pTT04uc3RyaW5naWZ5KGVycm9yLnJlYXNvbi5lcnJvcil9YDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgbWVzc2FnZSA9IGBSZWFjdCBlcnJvciBvYmplY3Q6IFtvYmplY3QgY291bGQgbm90IGJlIHN0cmluZ2lmaWVkXWA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIGVycm9yLnJlYXNvbi5lcnJvciBpcyBudWxsL3VuZGVmaW5lZFxuICAgICAgICBtZXNzYWdlID0gXCJSZWFjdCBTZXJ2ZXIgQ29tcG9uZW50cyBlcnJvciAobnVsbC91bmRlZmluZWQgZXJyb3IpXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyeSB0byBzdHJpbmdpZnkgdGhlIG9iamVjdCB0byBnZXQgbW9yZSBpbmZvcm1hdGlvblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc3RyaW5naWZpZWQgPSBKU09OLnN0cmluZ2lmeShlcnJvciwgbnVsbCwgMik7XG4gICAgICAgIG1lc3NhZ2UgPSBzdHJpbmdpZmllZFxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIElmIEpTT04uc3RyaW5naWZ5IGZhaWxzLCBmYWxsYmFjayB0byBhIGdlbmVyaWMgbWVzc2FnZVxuICAgICAgICBtZXNzYWdlID0gYE9iamVjdCBlcnJvcjogW29iamVjdCBjb3VsZCBub3QgYmUgc3RyaW5naWZpZWRdYDtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gY2hlY2sgZm9yIHN0YWNrXG4gICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvciAhPSBudWxsICYmIFwic3RhY2tcIiBpbiBlcnJvciAmJiB0eXBlb2YgZXJyb3Iuc3RhY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihtZXNzYWdlLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgICAgIGVyci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZXJyID0gbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJVbmtub3duIFJlYWN0IFN0cmVhbSBFcnJvclwiLCB7IGNhdXNlOiBlcnJvckluZm8gfSk7XG4gICAgLy8gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB0b0Vycm9yKTtcbiAgICByZXR1cm4gZXJyO1xuICB9XG4gIFxuICAvLyBIYW5kbGUgcHJpbWl0aXZlIHR5cGVzXG4gIHRyeSB7XG4gICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmtub3duIFJlYWN0IFN0cmVhbSBFcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAsIHsgY2F1c2U6IGVycm9ySW5mbyB9KTtcbiAgICAvLyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHRvRXJyb3IpO1xuICAgIHJldHVybiBlcnI7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihcIlVua25vd24gUmVhY3QgU3RyZWFtIEVycm9yICh1bnN0cmluZ2lmaWFibGUpXCIpO1xuICAgIC8vIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdG9FcnJvcik7XG4gICAgcmV0dXJuIGVycjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImVyciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLTyxTQUFTLE9BQUEsQ0FBUSxPQUFnQixTQUE4QixFQUFBO0FBQ3BFLEVBQUksSUFBQSxPQUFPLFVBQVUsUUFBVSxFQUFBO0FBQzdCLElBQUEsTUFBTSxNQUFNLElBQUksS0FBQSxDQUFNLE9BQU8sRUFBRSxLQUFBLEVBQU8sV0FBVyxDQUFBO0FBQ2pELElBQU8sT0FBQSxHQUFBO0FBQUE7QUFFVCxFQUFBLElBQUksU0FBUyxJQUFPLEVB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