From 3a8eae486ef298bca95e96f399e404a9467dcb17 Mon Sep 17 00:00:00 2001 From: Brenley Dueck Date: Fri, 22 Aug 2025 21:42:32 -0500 Subject: [PATCH] add server function meta back --- examples/experiments/src/routes/index.tsx | 2 +- examples/with-trpc/src/lib/api.ts | 18 +++++++----------- packages/start/src/index.ts | 13 ++++++++++++- packages/start/src/server/index.tsx | 1 + packages/start/src/shared/GET.ts | 8 ++++++++ packages/start/src/shared/serverFunction.ts | 10 ++++++++++ 6 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 packages/start/src/shared/GET.ts create mode 100644 packages/start/src/shared/serverFunction.ts diff --git a/examples/experiments/src/routes/index.tsx b/examples/experiments/src/routes/index.tsx index 7306c7161..cd95f8321 100644 --- a/examples/experiments/src/routes/index.tsx +++ b/examples/experiments/src/routes/index.tsx @@ -22,7 +22,7 @@ export default function Home() { console.log(v); console.log(await v.hello); }); - fetch(`http://localhost:3000/${import.meta.env.SERVER_BASE_URL}/unknown`, { + fetch(`http://localhost:5173/${import.meta.env.SERVER_BASE_URL}/unknown`, { headers: { Accept: "application/json" } }).then(async res => console.log(await res.json())); return ( diff --git a/examples/with-trpc/src/lib/api.ts b/examples/with-trpc/src/lib/api.ts index 47860d6d6..e81160721 100644 --- a/examples/with-trpc/src/lib/api.ts +++ b/examples/with-trpc/src/lib/api.ts @@ -1,23 +1,19 @@ -import { - createTRPCProxyClient, - httpBatchLink, - loggerLink, -} from '@trpc/client'; +import { createTRPCProxyClient, httpBatchLink, loggerLink } from "@trpc/client"; import { AppRouter } from "~/server/api/root"; const getBaseUrl = () => { if (typeof window !== "undefined") return ""; // replace example.com with your actual production url if (process.env.NODE_ENV === "production") return "https://example.com"; - return `http://localhost:${process.env.PORT ?? 3000}`; + return `http://localhost:${process.env.PORT ?? 5173}`; }; // create the client, export it export const api = createTRPCProxyClient({ links: [ - // will print out helpful logs when using client - loggerLink(), - // identifies what url will handle trpc requests - httpBatchLink({ url: `${getBaseUrl()}/api/trpc` }) - ], + // will print out helpful logs when using client + loggerLink(), + // identifies what url will handle trpc requests + httpBatchLink({ url: `${getBaseUrl()}/api/trpc` }) + ] }); diff --git a/packages/start/src/index.ts b/packages/start/src/index.ts index 45a52c25b..191df41d8 100644 --- a/packages/start/src/index.ts +++ b/packages/start/src/index.ts @@ -2,7 +2,18 @@ export type { APIEvent, - APIHandler, Asset, ContextMatches, DocumentComponentProps, FetchEvent, HandlerOptions, PageEvent, ResponseStub, ServerFunctionMeta + APIHandler, + Asset, + ContextMatches, + DocumentComponentProps, + FetchEvent, + HandlerOptions, + PageEvent, + ResponseStub, + ServerFunctionMeta } from "./server/types.js"; export { default as clientOnly } from "./shared/clientOnly.js"; export { HttpStatusCode } from "./shared/HttpStatusCode.js"; + +export { GET } from "./shared/GET.js"; +export { getServerFunctionMeta } from "./shared/serverFunction"; diff --git a/packages/start/src/server/index.tsx b/packages/start/src/server/index.tsx index 73905f113..2ec6d4984 100644 --- a/packages/start/src/server/index.tsx +++ b/packages/start/src/server/index.tsx @@ -13,6 +13,7 @@ import { matchAPIRoute } from "./routes.js"; import type { APIEvent, FetchEvent, HandlerOptions, PageEvent } from "./types.js"; // import { createProdManifest } from "./prodManifest.js"; +export { getServerFunctionMeta } from "../shared/serverFunction"; export { StartServer } from "./StartServer.jsx"; import { createRoutes } from "../router.jsx"; diff --git a/packages/start/src/shared/GET.ts b/packages/start/src/shared/GET.ts new file mode 100644 index 000000000..8e01ffafe --- /dev/null +++ b/packages/start/src/shared/GET.ts @@ -0,0 +1,8 @@ +// @refresh skip +/** + * + * Read more: https://docs.solidjs.com/solid-start/reference/server/get + */ +export function GET any>(fn: T) { + return (fn as any).GET as (...args: Parameters) => ReturnType; +} diff --git a/packages/start/src/shared/serverFunction.ts b/packages/start/src/shared/serverFunction.ts new file mode 100644 index 000000000..430b70a84 --- /dev/null +++ b/packages/start/src/shared/serverFunction.ts @@ -0,0 +1,10 @@ +import { getRequestEvent } from "solid-js/web"; +import type { ServerFunctionMeta } from "../server/types"; + +/** + * + * Read more: https://docs.solidjs.com/solid-start/reference/server/get-server-function-meta + */ +export function getServerFunctionMeta(): ServerFunctionMeta | undefined { + return getRequestEvent()?.locals.serverFunctionMeta; +}