MCPcopy Create free account
hub / github.com/solidjs/solid-start / handleSingleFlight

Function handleSingleFlight

packages/start/src/fns/handler.ts:235–287  ·  view source on GitHub ↗
(sourceEvent: FetchEvent, result: any)

Source from the content-addressed store, hash-verified

233 return headers;
234}
235async function handleSingleFlight(sourceEvent: FetchEvent, result: any): Promise<Response> {
236 let revalidate: string[];
237 let url = new URL(sourceEvent.request.headers.get("referer")!).toString();
238 if (result instanceof Response) {
239 if (result.headers.has("X-Revalidate"))
240 revalidate = result.headers.get("X-Revalidate")!.split(",");
241 if (result.headers.has("Location"))
242 url = new URL(
243 result.headers.get("Location")!,
244 new URL(sourceEvent.request.url).origin + import.meta.env.BASE_URL,
245 ).toString();
246 }
247 const event = { ...sourceEvent } as PageEvent;
248 event.request = new Request(url, {
249 headers: createSingleFlightHeaders(sourceEvent),
250 });
251 return await provideRequestEvent(event, async () => {
252 await createPageEvent(event);
253 App || (App = (await import("solid-start:app")).default);
254 /* @ts-expect-error */
255 event.router.dataOnly = revalidate || true;
256 /* @ts-expect-error */
257 event.router.previousUrl = sourceEvent.request.headers.get("referer");
258 try {
259 renderToString(() => {
260 /* @ts-expect-error */
261 sharedConfig.context.event = event;
262 App();
263 });
264 } catch (e) {
265 console.log(e);
266 }
267
268 /* @ts-expect-error */
269 const body = event.router.data;
270 if (!body) return result;
271 let containsKey = false;
272 for (const key in body) {
273 if (body[key] === undefined) delete body[key];
274 else containsKey = true;
275 }
276 if (!containsKey) return result;
277 if (!(result instanceof Response)) {
278 body["_$value"] = result;
279 result = new Response(null, { status: 200 });
280 } else if ((result as any).customBody) {
281 body["_$value"] = (result as any).customBody();
282 }
283 result.customBody = () => body;
284 result.headers.set("X-Single-Flight", "true");
285 return result;
286 });
287}

Callers 1

handleServerFunctionFunction · 0.85

Calls 3

createPageEventFunction · 0.90
AppFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…