vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
58 lines (55 loc) • 1.64 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { stashedPages } from './config/resolvePages.js';
async function resolvePage({
pageModule,
path,
url,
exportName
}) {
if (stashedPages.length > 0 && stashedPages.includes(path)) {
return {
type: "success",
key: path,
Page: pageModule
};
}
if (!pageModule) {
return {
type: "error",
error: new Error(`pageModule is ${typeof pageModule}`)
};
}
const keys = typeof pageModule === "object" && pageModule != null ? Object.keys(pageModule) : [];
const found = keys.find((v) => v === exportName || v === url || v === path);
if (found) {
if (typeof pageModule[found] === "function") {
return {
type: "success",
key: found,
Page: pageModule[found]
};
} else {
if (typeof pageModule === "object" && pageModule != null && Object.keys(pageModule).includes("type"))
return pageModule;
return {
type: "error",
[exportName]: () => found,
error: pageModule[found]["error"]
};
}
}
if (keys.includes("type")) return pageModule;
return {
type: "error",
error: new Error(
`Could not find Page export "${exportName}" in "${path}". ${typeof pageModule === "object" && pageModule != null ? keys.length ? "Available exports: " + keys.join(", ") : 'The object was defined but has no properties. "' + JSON.stringify(pageModule) + '"' : "typeof pageModule =" + typeof pageModule}`,
{ cause: pageModule }
)
};
}
export { resolvePage };
//# sourceMappingURL=resolvePage.js.map