vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
79 lines (76 loc) • 7.93 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { toError } from '../error/toError.js';
const resolvePage = async function _resolvePage({
id,
exportName,
loader
}) {
const pageLoadResult = await (async () => {
try {
return {
type: "success",
key: id,
module: await loader(`${id}#${exportName}`)
};
} catch (error) {
return {
type: "error",
error: error instanceof Error ? error : new Error(String(error))
};
}
})();
if (pageLoadResult.type !== "success") {
return pageLoadResult;
}
const { module } = pageLoadResult;
if (module == null) {
return {
type: "error",
error: new Error(`Module ${id} not found`)
};
}
const Page = module[exportName];
if (module instanceof Error) {
return {
type: "error",
error: {
name: module.name,
message: module.message,
stack: module.stack
}
};
} else if (!(exportName in module)) {
if ("error" in module) {
return {
type: "error",
error: toError(module["error"])
};
}
return {
type: "error",
error: new Error(`Export "${exportName}" not found in module ${id}.`)
};
} else if (!Page) {
return {
type: "error",
error: new Error(
`Export "${exportName}" is null or undefined in module ${id}.`
)
};
} else if (Page instanceof Error) {
return {
type: "error",
error: Page
};
}
return {
type: "success",
module
};
};
export { resolvePage };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZVBhZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9oZWxwZXJzL3Jlc29sdmVQYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvdG9FcnJvci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBHZW5lcmljTW9kdWxlTG9hZGVyIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5cbnR5cGUgUmVzb2x2ZVBhZ2VSZXN1bHQgPVxuICB8IHtcbiAgICAgIHR5cGU6IFwic3VjY2Vzc1wiO1xuICAgICAgbW9kdWxlOiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBlcnJvcj86IG5ldmVyO1xuICAgIH1cbiAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgZXJyb3I6IEVycm9yOyBQYWdlPzogbmV2ZXI7IG1vZHVsZT86IG5ldmVyIH1cbiAgfCB7IHR5cGU6IFwic2tpcFwiOyBlcnJvcj86IG5ldmVyOyBQYWdlPzogbmV2ZXI7IG1vZHVsZT86IG5ldmVyIH07XG5cbnR5cGUgUmVzb2x2ZVBhZ2VGbiA9IChvcHRpb25zOiB7XG4gIGlkOiBzdHJpbmc7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgbG9hZGVyOiBHZW5lcmljTW9kdWxlTG9hZGVyXG59KSA9PiBQcm9taXNlPFJlc29sdmVQYWdlUmVzdWx0PjtcblxuLyoqXG4gKiBSZXNvbHZlcyBhIHBhZ2UgY29tcG9uZW50IGZyb20gYSBtb2R1bGUuXG4gKlxuICogRHVyaW5nIGRldmVsb3BtZW50IChzc3JMb2FkTW9kdWxlKTpcbiAqIC0gUmVhbCBtb2R1bGVzIGhhdmUgZXhwb3J0cyBhdmFpbGFibGUgZGlyZWN0bHkgb24gdGhlIG1vZHVsZSBvYmplY3RcbiAqIC0gVmlydHVhbCBtb2R1bGVzIGhhdmUgZXhwb3J0cyBzdG9yZWQgaW4gdGVtcG9yYXJ5UmVmZXJlbmNlc1xuICpcbiAqIEBwYXJhbSBvcHRpb25zLmlkIC0gVGhlIG1vZHVsZSBJRCB0byByZXNvbHZlXG4gKiBAcGFyYW0gb3B0aW9ucy5leHBvcnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV4cG9ydCB0byByZXNvbHZlIChlLmcuICdQYWdlJylcbiAqIEBwYXJhbSBvcHRpb25zLmxvYWRlciAtIFRoZSBsb2FkZXIgZnVuY3Rpb24gdG8gdXNlIGZvciBsb2FkaW5nIHRoZSBtb2R1bGVcbiAqXG4gKiBAcmV0dXJucyBBIHJlc3VsdCBvYmplY3QgY29udGFpbmluZzpcbiAqICAgLSB0eXBlOiBcInN1Y2Nlc3NcIiB8IFwiZXJyb3JcIiB8IFwic2tpcFwiXG4gKiAgIC0gUGFnZTogVGhlIHJlc29sdmVkIHBhZ2UgY29tcG9uZW50IGlmIHN1Y2Nlc3NmdWxcbiAqICAgLSBlcnJvcjogRXJyb3IgbWVzc2FnZSBpZiBmYWlsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVQYWdlOiBSZXNvbHZlUGFnZUZuID0gYXN5bmMgZnVuY3Rpb24gX3Jlc29sdmVQYWdlKHtcbiAgaWQsXG4gIGV4cG9ydE5hbWUsXG4gIGxvYWRlcixcbn0pIHtcbiAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHN0YXNoZWQgcGFnZSB0aGF0IG5lZWRzIHNwZWNpYWwgaGFuZGxpbmdcbiAgY29uc3QgcGFnZUxvYWRSZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIiBhcyBjb25zdCxcbiAgICAgICAga2V5OiBpZCxcbiAgICAgICAgbW9kdWxlOiBhd2FpdCBsb2FkZXIoYCR7aWR9IyR7ZXhwb3J0TmFtZX1gKSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIiBhcyBjb25zdCxcbiAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcbiAgICAgIH07XG4gICAgfVxuICB9KSgpO1xuXG4gIGlmIChwYWdlTG9hZFJlc3VsdC50eXBlICE9PSBcInN1Y2Nlc3NcIikge1xuICAgIHJldHVybiBwYWdlTG9hZFJlc3VsdDtcbiAgfVxuICBjb25zdCB7IG1vZHVsZSB9ID0gcGFnZUxvYWRSZXN1bHQ7XG4gIGlmIChtb2R1bGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVycm9yXCIgYXMgY29uc3QsXG4gICAgICBlcnJvcjogbmV3IEVycm9yKGBNb2R1bGUgJHtpZH0gbm90IGZvdW5kYCksXG4gICAgfTtcbiAgfVxuICBjb25zdCBQYWdlID0gbW9kdWxlW2V4cG9ydE5hbWVdO1xuICBpZiAobW9kdWxlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlcnJvclwiIGFzIGNvbnN0LFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgbmFtZTogbW9kdWxlLm5hbWUsXG4gICAgICAgIG1lc3NhZ2U6IG1vZHVsZS5tZXNzYWdlLFxuICAgICAgICBzdGFjazogbW9kdWxlLnN0YWNrLFxuICAgICAgfSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKCEoZXhwb3J0TmFtZSBpbiBtb2R1bGUpKSB7XG4gICAgaWYgKFwiZXJyb3JcIiBpbiBtb2R1bGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIiBhcyBjb25zdCxcbiAgICAgICAgZXJyb3I6IHRvRXJyb3IobW9kdWxlW1wiZXJyb3JcIl0pLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIiBhcyBjb25zdCxcbiAgICAgIGVycm9yOiBuZXcgRXJyb3IoYEV4cG9ydCBcIiR7ZXhwb3J0TmFtZX1cIiBub3QgZm91bmQgaW4gbW9kdWxlICR7aWR9LmApLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoIVBhZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlcnJvclwiIGFzIGNvbnN0LFxuICAgICAgZXJyb3I6IG5ldyBFcnJvcihcbiAgICAgICAgYEV4cG9ydCBcIiR7ZXhwb3J0TmFtZX1cIiBpcyBudWxsIG9yIHVuZGVmaW5lZCBpbiBtb2R1bGUgJHtpZH0uYFxuICAgICAgKSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKFBhZ2UgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVycm9yXCIgYXMgY29uc3QsXG4gICAgICBlcnJvcjogUGFnZSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJzdWNjZXNzXCIgYXMgY29uc3QsXG4gICAgbW9kdWxlOiBtb2R1bGUsXG4gIH07XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFrQ2EsTUFBQSxXQUFBLEdBQTZCLGVBQWUsWUFBYSxDQUFBO0FBQUEsRUFDcEUsRUFBQTtBQUFBLEVBQ0EsVUFBQTtBQUFBLEVBQ0E7QUFDRixDQUFHLEVBQUE7QUFFRCxFQUFNLE1BQUEsY0FBQSxHQUFpQixPQUFPLFlBQVk7QUFDeEMsSUFBSSxJQUFBO0FBQ0YsTUFBTyxPQUFBO0FBQUEsUUFDTCxJQUFNLEVBQUEsU0FBQTtBQUFBLFFBQ04sR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLFFBQVEsTUFBTSxNQUFBLENBQU8sR0FBRyxFQUFFLENBQUEsQ0FBQSxFQUFJLFVBQVUsQ0FBRSxDQUFBO0FBQUEsT0FDNUM7QUFBQSxhQUNPLEtBQU8sRUFBQTtBQUNkLE1BQU8sT0FBQTtBQUFBLFFBQ0wsSUFBTSxFQUFBLE9BQUE7QUFBQSxRQUNOLEtBQUEsRUFBTyxpQkFBaUIsS0FBUSxHQUFBLEtBQUEsR0FBUSxJQUFJLEtBQU0sQ0FBQSxNQUFBLENBQU8sS0FBSyxDQUFDO0FBQUEsT0FDakU7QUFBQTtBQUNGLEdBQ0MsR0FBQTtBQUVILEVBQUksSUFBQSxjQUFBLENBQWUsU0FBUyxTQUFXLEVBQUE7QUFDckMsSUFBTyxPQUFBLGNBQUE7QUFBQTtBQUVULEVBQU0sTUFBQSxFQUFFLFFBQVcsR0FBQSxjQUFBO0FBQ25CLEVBQUEsSUFBSSxVQUFVLElBQU0sRUFBQTtBQUNsQixJQUFPLE9BQUE7QUFBQSxNQUNMLElBQU0sRUFBQSxPQUFBO0FBQUEsTUFDTixLQUFPLEVBQUEsSUFBSSxLQUFNLENBQUEsQ0FBQSxPQUFBLEVBQVUsRUFBRSxDQUFZLFVBQUEsQ0FBQTtBQUFBLEtBQzNDO0FBQUE7QUFFRixFQUFNLE1BQUEsSUFBQSxHQUFPLE9BQU8sVUFBVSxDQUFBO0FBQzlCLEVBQUEsSUFBSSxrQkFBa0IsS0FBTyxFQUFBO0FBQzNCLElBQU8sT0FBQTtBQUFBLE1BQ0wsSUFBTSxFQUFBLE9BQUE7QUFBQSxNQUNOLEtBQU8sRUFBQTtBQUFBLFFBQ0wsTUFBTSxNQUFPLENBQUEsSUFBQTtBQUFBLFFBQ2IsU0FBUyxNQUFPLENBQUEsT0FBQTtBQUFBLFFBQ2hCLE9BQU8sTUFBTyxDQUFBO0FBQUE7QUFDaEIsS0FDRjtBQUFBLEdBQ0YsTUFBQSxJQUFXLEVBQUUsVUFBQSxJQUFjLE1BQVMsQ0FBQSxFQUFBO0FBQ2xDLElBQUEsSUFBSSxXQUFXLE1BQVEsRUFBQTtBQUNyQixNQUFPLE9BQUE7QUFBQSxRQUNMLElBQU0sRUFBQSxPQUFBO0FBQUEsUUFDTixLQUFPLEVBQUEsT0FBQSxDQUFRLE1BQU8sQ0FBQSxPQUFPLENBQUM7QUFBQSxPQUNoQztBQUFBO0FBRUYsSUFBTyxPQUFBO0FBQUEsTUFDTCxJQUFNLEVBQUEsT0FBQTtBQUFBLE1BQ04sT0FBTyxJQUFJLEtBQUEsQ0FBTSxXQUFXLFVBQVUsQ0FBQSxzQkFBQSxFQUF5QixFQUFFLENBQUcsQ0FBQSxDQUFBO0FBQUEsS0FDdEU7QUFBQSxHQUNGLE1BQUEsSUFBVyxDQUFDLElBQU0sRUFBQTtBQUNoQixJQUFPLE9BQUE7QUFBQSxNQUNMLElBQU0sRUFBQSxPQUFBO0FBQUEsTUFDTixPQUFPLElBQUksS0FBQTtBQUFBLFFBQ1QsQ0FBQSxRQUFBLEVBQVcsVUFBVSxDQUFBLGlDQUFBLEVBQW9DLEVBQUUsQ0FBQSxDQUFBO0FBQUE7QUFDN0QsS0FDRjtBQUFBLEdBQ0YsTUFBQSxJQUFXLGdCQUFnQixLQUFPLEVBQUE7QUFDaEMsSUFBTyxPQUFBO0FBQUEsTUFDTCxJQUFNLEVBQUEsT0FBQTtBQUFBLE1BQ04sS0FBTyxFQUFBO0FBQUEsS0FDVDtBQUFBO0FBRUYsRUFBTyxPQUFBO0FBQUEsSUFDTCxJQUFNLEVBQUEsU0FBQTtBQUFBLElBQ047QUFBQSxHQUNGO0FBQ0Y7Ozs7In0=