vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
31 lines (26 loc) • 769 B
text/typescript
import {
createFromFetch,
encodeReply,
} from "react-server-dom-esm/client.browser";
export const createCallServer = (moduleBaseURL: string) => {
const callServer = async (id: string, args: unknown[]) => {
const response = await createFromFetch(
fetch(moduleBaseURL, {
method: "POST",
body: await encodeReply(args),
headers: {
Accept: "text/x-component",
"x-rsc-action": id,
},
}),
{ callServer, moduleBaseURL }
);
// Check if this is a server action response
if (response && typeof response === "object" && "returnValue" in response) {
const serverResponse = response;
return serverResponse.returnValue;
}
return response;
};
return callServer;
};