vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
41 lines (39 loc) • 4.15 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
async function resolvePages(pages) {
if (!pages) {
return { type: "success", pages: [] };
}
try {
if (typeof pages === "function") {
const result = pages();
if (result instanceof Promise) {
return resolvePages(await result);
}
return resolvePages(result);
}
if (pages instanceof Promise) {
return resolvePages(await pages);
}
if (typeof pages === "string") {
return { type: "success", pages: [pages] };
}
if (Array.isArray(pages)) {
if (pages.every((page) => typeof page === "string")) {
return { type: "success", pages };
}
throw new Error("All pages must be strings");
}
throw new Error("Invalid pages format");
} catch (error) {
return {
type: "error",
error: error instanceof Error ? error : new Error("Failed to resolve pages")
};
}
}
export { resolvePages };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZVBhZ2VzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vY29uZmlnL3Jlc29sdmVQYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc29sdmVkVXNlck9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlUGFnZXMoXG4gIHBhZ2VzOiBSZXNvbHZlZFVzZXJPcHRpb25zW1wiYnVpbGRcIl1bXCJwYWdlc1wiXVxuKTogUHJvbWlzZTx7IHR5cGU6IFwic3VjY2Vzc1wiOyBlcnJvcj86bmV2ZXI7IHBhZ2VzOiBzdHJpbmdbXSB9IHwgeyB0eXBlOiBcImVycm9yXCI7IGVycm9yOiB1bmtub3duOyBwYWdlcz86bmV2ZXIgfT4ge1xuICBpZiAoIXBhZ2VzKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJzdWNjZXNzXCIsIHBhZ2VzOiBbXSB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBIYW5kbGUgZnVuY3Rpb25cbiAgICBpZiAodHlwZW9mIHBhZ2VzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhZ2VzKCk7XG4gICAgICBpZihyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlUGFnZXMoYXdhaXQgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlUGFnZXMocmVzdWx0KTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgUHJvbWlzZVxuICAgIGlmIChwYWdlcyBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJldHVybiByZXNvbHZlUGFnZXMoYXdhaXQgcGFnZXMpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzdHJpbmdcbiAgICBpZiAodHlwZW9mIHBhZ2VzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInN1Y2Nlc3NcIiwgcGFnZXM6IFtwYWdlc10gfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYWdlcykpIHtcbiAgICAgIGlmIChwYWdlcy5ldmVyeShwYWdlID0+IHR5cGVvZiBwYWdlID09PSBcInN0cmluZ1wiKSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInN1Y2Nlc3NcIiwgcGFnZXMgfTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcignQWxsIHBhZ2VzIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYWdlcyBmb3JtYXQnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgcGFnZXMnKVxuICAgIH07XG4gIH1cbn0gIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsZUFBc0IsYUFDcEIsS0FDK0csRUFBQTtBQUMvRyxFQUFBLElBQUksQ0FBQyxLQUFPLEVBQUE7QUFDVixJQUFBLE9BQU8sRUFBRSxJQUFBLEVBQU0sU0FBVyxFQUFBLEtBQUEsRUFBTyxFQUFHLEVBQUE7QUFBQTtBQUd0QyxFQUFJLElBQUE7QUFFRixJQUFJLElBQUEsT0FBTyxVQUFVLFVBQVksRUFBQTtBQUMvQixNQUFBLE1BQU0sU0FBUyxLQUFNLEVBQUE7QUFDckIsTUFBQSxJQUFHLGtCQUFrQixPQUFTLEVBQUE7QUFDNUIsUUFBTyxPQUFBLFlBQUEsQ0FBYSxNQUFNLE1BQU0sQ0FBQTtBQUFBO0FBRWxDLE1BQUEsT0FBTyxhQUFhLE1BQU0sQ0FBQTtBQUFBO0FBSTVCLElBQUEsSUFBSSxpQkFBaUIsT0FBUyxFQUFBO0FBQzVCLE1BQU8sT0FBQSxZQUFBLENBQWEsTUFBTSxLQUFLLENBQUE7QUFBQTtBQUlqQyxJQUFJLElBQUEsT0FBTyxVQUFVLFFBQVUsRUFBQTtBQUM3QixNQUFBLE9BQU8sRUFBRSxJQUFNLEVBQUEsU0FBQSxFQUFXLEtBQU8sRUFBQSxDQUFDLEtBQUssQ0FBRSxFQUFBO0FBQUE7QUFJM0MsSUFBSSxJQUFBLEtBQUEsQ0FBTSxPQUFRLENBQUEsS0FBSyxDQUFHLEVBQUE7QUFDeEIsTUFBQSxJQUFJLE1BQU0sS0FBTSxDQUFBLENBQUEsSUFBQSxLQUFRLE9BQU8sSUFBQSxLQUFTLFFBQVEsQ0FBRyxFQUFBO0FBQ2pELFFBQU8sT0FBQSxFQUFFLElBQU0sRUFBQSxTQUFBLEVBQVcsS0FBTSxFQUFBO0FBQUE7QUFFbEMsTUFBTSxNQUFBLElBQUksTUFBTSwyQkFBMkIsQ0FBQTtBQUFBO0FBRzdDLElBQU0sTUFBQSxJQUFJLE1BQU0sc0JBQXNCLENBQUE7QUFBQSxXQUMvQixLQUFPLEVBQUE7QUFDZCxJQUFPLE9BQUE7QUFBQSxNQUNMLElBQU0sRUFBQSxPQUFBO0FBQUEsTUFDTixPQUFPLEtBQWlCLFlBQUEsS0FBQSxHQUFRLEtBQVEsR0FBQSxJQUFJLE1BQU0seUJBQXlCO0FBQUEsS0FDN0U7QUFBQTtBQUVKOzs7OyJ9