@tanstack/solid-start
Version:
Modern and scalable routing for Solid applications
33 lines (32 loc) • 1.22 kB
JavaScript
import { decodeSolidStartPayload } from "./solid-rpc-payload.js";
import { TSS_SERVER_FUNCTION } from "@tanstack/start-client-core";
import { GET, createServerReference, registerServerReference } from "@solidjs/web/server-functions/server";
//#region src/server-rpc.ts
var SOLID_SERVER_REFERENCE = Symbol.for("tanstack.solid-start.server-reference");
var createServerRpc = (serverFnMeta, splitImportFn) => {
const url = process.env.TSS_SERVER_FN_BASE + serverFnMeta.id;
const solidServerFn = (...args) => {
return splitImportFn(decodeSolidStartPayload(args));
};
const reference = registerServerReference(serverFnMeta.id, solidServerFn, serverFnMeta.name);
const solidReference = createServerReference(reference);
let method = splitImportFn.method;
Object.defineProperty(splitImportFn, "method", {
configurable: true,
enumerable: true,
get: () => method,
set: (nextMethod) => {
method = nextMethod;
if (nextMethod === "GET") GET(solidReference);
}
});
return Object.assign(splitImportFn, {
url,
serverFnMeta,
[SOLID_SERVER_REFERENCE]: reference,
[TSS_SERVER_FUNCTION]: true
});
};
//#endregion
export { SOLID_SERVER_REFERENCE, createServerRpc };
//# sourceMappingURL=server-rpc.js.map