@tanstack/solid-start
Version:
Modern and scalable routing for Solid applications
31 lines (30 loc) • 1.09 kB
JavaScript
import { SOLID_SERVER_REFERENCE } from "./server-rpc.js";
import { TSS_SERVER_FUNCTION } from "@tanstack/start-client-core";
import { getRequestEvent } from "@solidjs/web";
import { createServerReference } from "@solidjs/web/server-functions/server";
import { getServerFnById } from "#tanstack-start-server-fn-resolver";
//#region src/ssr-rpc.ts
var createSsrRpc = (functionId) => {
const url = process.env.TSS_SERVER_FN_BASE + functionId;
const serverFnMeta = { id: functionId };
let serverFnPromise;
const getServerFn = async () => {
serverFnPromise ??= getServerFnById(functionId, { origin: "server" }).then((serverFn) => {
const solidReference = serverFn[SOLID_SERVER_REFERENCE];
if (solidReference && getRequestEvent()) return createServerReference(solidReference);
return serverFn;
});
return await serverFnPromise;
};
const fn = async (...args) => {
return await (await getServerFn())(...args);
};
return Object.assign(fn, {
url,
serverFnMeta,
[TSS_SERVER_FUNCTION]: true
});
};
//#endregion
export { createSsrRpc };
//# sourceMappingURL=ssr-rpc.js.map