claude-session-dashboard 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/client/assets/_dashboard-ChSI7O-o.js +1 -0
  2. package/dist/client/assets/_sessionId-DxfkocLt.js +12 -0
  3. package/dist/client/assets/app-BAZLXX_G.css +1 -0
  4. package/dist/client/assets/createServerFn-DJjqV8Yc.js +1 -0
  5. package/dist/client/assets/index-BHwOAB5a.js +1 -0
  6. package/dist/client/assets/main-DMwMzWYr.js +69 -0
  7. package/dist/client/assets/sessions.queries-D7WObk5d.js +1 -0
  8. package/dist/client/assets/settings-BM0TBEkW.js +1 -0
  9. package/dist/client/assets/settings.types-BNSfIfFX.js +1 -0
  10. package/dist/client/assets/stats-wLUGXFpZ.js +4 -0
  11. package/dist/client/assets/useSessionCost-BPqnyONZ.js +37 -0
  12. package/dist/server/assets/{_dashboard-smfIqyQC.js → _dashboard-DZJZ9oYy.js} +13 -12
  13. package/dist/server/assets/{_sessionId-DIUMcrWR.js → _sessionId-znGcd1Dj.js} +53 -24
  14. package/dist/server/assets/_tanstack-start-manifest_v-BNorjuP4.js +4 -0
  15. package/dist/server/assets/{app-info.server-CXcS0a5s.js → app-info.api-CrHplh0q.js} +33 -18
  16. package/dist/server/assets/{createServerRpc-Bd3B-Ah9.js → createServerRpc-D_-6bKnO.js} +1 -1
  17. package/dist/server/assets/{createSsrRpc-CVg2UDl0.js → createSsrRpc-OFLSk08e.js} +2 -3
  18. package/dist/server/assets/{index-hFrIPkke.js → index-BnvjnlZM.js} +31 -14
  19. package/dist/server/assets/{project-analytics.server-Bxk8-NnT.js → project-analytics.api-6b5TIBNn.js} +12 -10
  20. package/dist/server/assets/{router-5hznwWqr.js → router-DAepjaOj.js} +80 -12
  21. package/dist/server/assets/{session-detail.server-BIoOQwSE.js → session-detail.api-BQts3iQn.js} +38 -33
  22. package/dist/server/assets/{session-parser-B0pdBvgT.js → session-parser-DKZZMuh6.js} +123 -31
  23. package/dist/server/assets/{session-scanner-CpgOq5m1.js → session-scanner-CECpfGFh.js} +4 -4
  24. package/dist/server/assets/{sessions.server-Biq8gbAJ.js → sessions.api-CQ-Lrk5S.js} +16 -14
  25. package/dist/server/assets/{sessions.queries-B5ZBiVJy.js → sessions.queries-MfPgj6cK.js} +4 -4
  26. package/dist/server/assets/{settings-D0FgLIR5.js → settings-DsLaw8yg.js} +42 -13
  27. package/dist/server/assets/{settings.server-6B2PvLgf.js → settings.api-Cq5KPUxN.js} +12 -11
  28. package/dist/server/assets/{settings.queries-DSQd324O.js → settings.queries-CMWxUDF-.js} +4 -4
  29. package/dist/server/assets/{settings.types-DntadCHo.js → settings.types-CphWe-HW.js} +10 -1
  30. package/dist/server/assets/{stats-Ae6umrPI.js → stats-DKbhSePW.js} +57 -43
  31. package/dist/server/assets/{stats.server-DhzOihwM.js → stats.api-tIZqhk4B.js} +12 -10
  32. package/dist/server/assets/{useSessionCost-CYs5UOX-.js → useSessionCost-iQEg4FRM.js} +2 -2
  33. package/dist/server/server.js +458 -808
  34. package/package.json +6 -2
  35. package/LICENSE +0 -21
  36. package/README.md +0 -194
  37. package/dist/client/assets/_dashboard-DLFGahko.js +0 -1
  38. package/dist/client/assets/_sessionId-xiPzwrlf.js +0 -12
  39. package/dist/client/assets/app-DREGBD44.css +0 -1
  40. package/dist/client/assets/createServerFn-BLR4iNR3.js +0 -1
  41. package/dist/client/assets/index-D_9sS4oJ.js +0 -1
  42. package/dist/client/assets/main-BcKPK-4E.js +0 -56
  43. package/dist/client/assets/sessions.queries-CHKiZnLm.js +0 -1
  44. package/dist/client/assets/settings-B2tG1vy0.js +0 -1
  45. package/dist/client/assets/settings.types-DHC6rkil.js +0 -1
  46. package/dist/client/assets/stats-BlA0NIHc.js +0 -4
  47. package/dist/client/assets/useSessionCost-BikgEmWy.js +0 -37
  48. package/dist/server/assets/_tanstack-start-manifest_v-Dmhlhehg.js +0 -4
@@ -1,230 +1,284 @@
1
- import { createMemoryHistory } from "@tanstack/history";
2
- import { mergeHeaders } from "@tanstack/router-core/ssr/client";
3
- import { parseRedirect, isRedirect, defaultSerovalPlugins, makeSerovalPlugin, rootRouteId, createRawStreamRPCPlugin, isNotFound, createSerializationAdapter, isResolvedRedirect, executeRewriteInput } from "@tanstack/router-core";
4
1
  import { AsyncLocalStorage } from "node:async_hooks";
5
- import { getNormalizedURL, getOrigin, attachRouterServerSsrUtils } from "@tanstack/router-core/ssr/server";
6
2
  import { H3Event, toResponse } from "h3-v2";
3
+ import { rootRouteId, parseRedirect, isRedirect, defaultSerovalPlugins, makeSerovalPlugin, createRawStreamRPCPlugin, isNotFound, createSerializationAdapter, isResolvedRedirect, executeRewriteInput } from "@tanstack/router-core";
7
4
  import invariant from "tiny-invariant";
8
5
  import { toCrossJSONStream, fromJSON, toCrossJSONAsync } from "seroval";
6
+ import { createMemoryHistory } from "@tanstack/history";
7
+ import { mergeHeaders } from "@tanstack/router-core/ssr/client";
8
+ import { getNormalizedURL, getOrigin, attachRouterServerSsrUtils } from "@tanstack/router-core/ssr/server";
9
+ import "react";
10
+ import { RouterProvider } from "@tanstack/react-router";
9
11
  import { jsx } from "react/jsx-runtime";
10
12
  import { defineHandlerCallback, renderRouterToStream } from "@tanstack/react-router/ssr/server";
11
- import { RouterProvider } from "@tanstack/react-router";
12
13
  function StartServer(props) {
13
14
  return /* @__PURE__ */ jsx(RouterProvider, { router: props.router });
14
15
  }
15
- const defaultStreamHandler = defineHandlerCallback(
16
- ({ request, router, responseHeaders }) => renderRouterToStream({
17
- request,
18
- router,
19
- responseHeaders,
20
- children: /* @__PURE__ */ jsx(StartServer, { router })
21
- })
22
- );
23
- const TSS_FORMDATA_CONTEXT = "__TSS_CONTEXT";
24
- const TSS_SERVER_FUNCTION = /* @__PURE__ */ Symbol.for("TSS_SERVER_FUNCTION");
25
- const TSS_SERVER_FUNCTION_FACTORY = /* @__PURE__ */ Symbol.for(
26
- "TSS_SERVER_FUNCTION_FACTORY"
27
- );
28
- const X_TSS_SERIALIZED = "x-tss-serialized";
29
- const X_TSS_RAW_RESPONSE = "x-tss-raw";
30
- const TSS_CONTENT_TYPE_FRAMED = "application/x-tss-framed";
31
- const FrameType = {
32
- /** Seroval JSON chunk (NDJSON line) */
33
- JSON: 0,
34
- /** Raw stream data chunk */
35
- CHUNK: 1,
36
- /** Raw stream end (EOF) */
37
- END: 2,
38
- /** Raw stream error */
39
- ERROR: 3
40
- };
41
- const FRAME_HEADER_SIZE = 9;
42
- const TSS_FRAMED_PROTOCOL_VERSION = 1;
43
- const TSS_CONTENT_TYPE_FRAMED_VERSIONED = `${TSS_CONTENT_TYPE_FRAMED}; v=${TSS_FRAMED_PROTOCOL_VERSION}`;
44
- const GLOBAL_STORAGE_KEY = /* @__PURE__ */ Symbol.for("tanstack-start:start-storage-context");
45
- const globalObj$1 = globalThis;
46
- if (!globalObj$1[GLOBAL_STORAGE_KEY]) {
47
- globalObj$1[GLOBAL_STORAGE_KEY] = new AsyncLocalStorage();
16
+ var defaultStreamHandler = defineHandlerCallback(({ request, router, responseHeaders }) => renderRouterToStream({
17
+ request,
18
+ router,
19
+ responseHeaders,
20
+ children: /* @__PURE__ */ jsx(StartServer, { router })
21
+ }));
22
+ var GLOBAL_EVENT_STORAGE_KEY = /* @__PURE__ */ Symbol.for("tanstack-start:event-storage");
23
+ var globalObj$1 = globalThis;
24
+ if (!globalObj$1[GLOBAL_EVENT_STORAGE_KEY]) globalObj$1[GLOBAL_EVENT_STORAGE_KEY] = new AsyncLocalStorage();
25
+ var eventStorage = globalObj$1[GLOBAL_EVENT_STORAGE_KEY];
26
+ function isPromiseLike(value) {
27
+ return typeof value.then === "function";
48
28
  }
49
- const startStorage = globalObj$1[GLOBAL_STORAGE_KEY];
50
- async function runWithStartContext(context, fn) {
51
- return startStorage.run(context, fn);
29
+ function getSetCookieValues(headers) {
30
+ const headersWithSetCookie = headers;
31
+ if (typeof headersWithSetCookie.getSetCookie === "function") return headersWithSetCookie.getSetCookie();
32
+ const value = headers.get("set-cookie");
33
+ return value ? [value] : [];
52
34
  }
53
- function getStartContext(opts) {
54
- const context = startStorage.getStore();
55
- if (!context && opts?.throwIfNotFound !== false) {
35
+ function mergeEventResponseHeaders(response, event) {
36
+ if (response.ok) return;
37
+ const eventSetCookies = getSetCookieValues(event.res.headers);
38
+ if (eventSetCookies.length === 0) return;
39
+ const responseSetCookies = getSetCookieValues(response.headers);
40
+ response.headers.delete("set-cookie");
41
+ for (const cookie of responseSetCookies) response.headers.append("set-cookie", cookie);
42
+ for (const cookie of eventSetCookies) response.headers.append("set-cookie", cookie);
43
+ }
44
+ function attachResponseHeaders(value, event) {
45
+ if (isPromiseLike(value)) return value.then((resolved) => {
46
+ if (resolved instanceof Response) mergeEventResponseHeaders(resolved, event);
47
+ return resolved;
48
+ });
49
+ if (value instanceof Response) mergeEventResponseHeaders(value, event);
50
+ return value;
51
+ }
52
+ function requestHandler(handler) {
53
+ return (request, requestOpts) => {
54
+ const h3Event = new H3Event(request);
55
+ return toResponse(attachResponseHeaders(eventStorage.run({ h3Event }, () => handler(request, requestOpts)), h3Event), h3Event);
56
+ };
57
+ }
58
+ function getH3Event() {
59
+ const event = eventStorage.getStore();
60
+ if (!event) throw new Error(`No StartEvent found in AsyncLocalStorage. Make sure you are using the function within the server runtime.`);
61
+ return event.h3Event;
62
+ }
63
+ function getResponse() {
64
+ return getH3Event().res;
65
+ }
66
+ var HEADERS = { TSS_SHELL: "X-TSS_SHELL" };
67
+ async function getStartManifest(matchedRoutes) {
68
+ const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-BNorjuP4.js");
69
+ const startManifest = tsrStartManifest();
70
+ const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
71
+ rootRoute.assets = rootRoute.assets || [];
72
+ let injectedHeadScripts;
73
+ return {
74
+ manifest: { routes: Object.fromEntries(Object.entries(startManifest.routes).flatMap(([k, v]) => {
75
+ const result = {};
76
+ let hasData = false;
77
+ if (v.preloads && v.preloads.length > 0) {
78
+ result["preloads"] = v.preloads;
79
+ hasData = true;
80
+ }
81
+ if (v.assets && v.assets.length > 0) {
82
+ result["assets"] = v.assets;
83
+ hasData = true;
84
+ }
85
+ if (!hasData) return [];
86
+ return [[k, result]];
87
+ })) },
88
+ clientEntry: startManifest.clientEntry,
89
+ injectedHeadScripts
90
+ };
91
+ }
92
+ const manifest = { "39e65590d2bc41f653f54a9b6a9e0a72f185da275304c0a4a595d811cf185572": {
93
+ functionName: "getProjectAnalytics_createServerFn_handler",
94
+ importer: () => import("./assets/project-analytics.api-6b5TIBNn.js")
95
+ }, "44af69d3bfcf3ec46fffb3f297d2b12cd7fe4db36c654b8a322df34d549c6493": {
96
+ functionName: "getStats_createServerFn_handler",
97
+ importer: () => import("./assets/stats.api-tIZqhk4B.js")
98
+ }, "71794080473579a94431392ab409ebd02772f6a9f6a08386cadbb8c0d3cf804a": {
99
+ functionName: "getSessionDetail_createServerFn_handler",
100
+ importer: () => import("./assets/session-detail.api-BQts3iQn.js")
101
+ }, "72f81ef9e8fa751bab60a8bdabd7e77816e2a6723a5e6e26e03712c01b3a249c": {
102
+ functionName: "getSettings_createServerFn_handler",
103
+ importer: () => import("./assets/settings.api-Cq5KPUxN.js")
104
+ }, "7fe8c2b131c4fc81aa9a2570aec79640ff84603fe0060d13c24928b7329cb236": {
105
+ functionName: "saveSettings_createServerFn_handler",
106
+ importer: () => import("./assets/settings.api-Cq5KPUxN.js")
107
+ }, "04ac41a7e3e644815167d098c2d6c3375d00a72a11e5af0d37033ba771081ba9": {
108
+ functionName: "getAppInfo_createServerFn_handler",
109
+ importer: () => import("./assets/app-info.api-CrHplh0q.js")
110
+ }, "8fd6c4e5b4d5590acf1ec73da75f249978e8aced6dd2be23de06ade8431033be": {
111
+ functionName: "getSessionList_createServerFn_handler",
112
+ importer: () => import("./assets/sessions.api-CQ-Lrk5S.js")
113
+ }, "946cc550946f64ee7985dc35913a690eb13183d7ba83cffe398e424e697b4265": {
114
+ functionName: "getActiveSessionList_createServerFn_handler",
115
+ importer: () => import("./assets/sessions.api-CQ-Lrk5S.js")
116
+ }, "e574977967ea9b3387e72d70704b6ca87230e72becaf69f0b98cbc91c9cd1339": {
117
+ functionName: "getPaginatedSessions_createServerFn_handler",
118
+ importer: () => import("./assets/sessions.api-CQ-Lrk5S.js")
119
+ } };
120
+ async function getServerFnById(id) {
121
+ const serverFnInfo = manifest[id];
122
+ if (!serverFnInfo) {
123
+ throw new Error("Server function info not found for " + id);
124
+ }
125
+ const fnModule = await serverFnInfo.importer();
126
+ if (!fnModule) {
127
+ console.info("serverFnInfo", serverFnInfo);
128
+ throw new Error("Server function module not resolved for " + id);
129
+ }
130
+ const action = fnModule[serverFnInfo.functionName];
131
+ if (!action) {
132
+ console.info("serverFnInfo", serverFnInfo);
133
+ console.info("fnModule", fnModule);
56
134
  throw new Error(
57
- `No Start context found in AsyncLocalStorage. Make sure you are using the function within the server runtime.`
135
+ `Server function module export not resolved for serverFn ID: ${id}`
58
136
  );
59
137
  }
60
- return context;
138
+ return action;
61
139
  }
62
- const getStartOptions = () => getStartContext().startOptions;
63
- const getStartContextServerOnly = getStartContext;
140
+ var TSS_FORMDATA_CONTEXT = "__TSS_CONTEXT";
141
+ var TSS_SERVER_FUNCTION = /* @__PURE__ */ Symbol.for("TSS_SERVER_FUNCTION");
142
+ var TSS_SERVER_FUNCTION_FACTORY = /* @__PURE__ */ Symbol.for("TSS_SERVER_FUNCTION_FACTORY");
143
+ var X_TSS_SERIALIZED = "x-tss-serialized";
144
+ var X_TSS_RAW_RESPONSE = "x-tss-raw";
145
+ var TSS_CONTENT_TYPE_FRAMED = "application/x-tss-framed";
146
+ var FrameType = {
147
+ JSON: 0,
148
+ CHUNK: 1,
149
+ END: 2,
150
+ ERROR: 3
151
+ };
152
+ var FRAME_HEADER_SIZE = 9;
153
+ var TSS_CONTENT_TYPE_FRAMED_VERSIONED = `${TSS_CONTENT_TYPE_FRAMED}; v=1`;
64
154
  function isSafeKey(key) {
65
155
  return key !== "__proto__" && key !== "constructor" && key !== "prototype";
66
156
  }
67
157
  function safeObjectMerge(target, source) {
68
158
  const result = /* @__PURE__ */ Object.create(null);
69
159
  if (target) {
70
- for (const key of Object.keys(target)) {
71
- if (isSafeKey(key)) result[key] = target[key];
72
- }
160
+ for (const key of Object.keys(target)) if (isSafeKey(key)) result[key] = target[key];
73
161
  }
74
162
  if (source && typeof source === "object") {
75
- for (const key of Object.keys(source)) {
76
- if (isSafeKey(key)) result[key] = source[key];
77
- }
163
+ for (const key of Object.keys(source)) if (isSafeKey(key)) result[key] = source[key];
78
164
  }
79
165
  return result;
80
166
  }
81
167
  function createNullProtoObject(source) {
82
168
  if (!source) return /* @__PURE__ */ Object.create(null);
83
169
  const obj = /* @__PURE__ */ Object.create(null);
84
- for (const key of Object.keys(source)) {
85
- if (isSafeKey(key)) obj[key] = source[key];
86
- }
170
+ for (const key of Object.keys(source)) if (isSafeKey(key)) obj[key] = source[key];
87
171
  return obj;
88
172
  }
89
- const createServerFn = (options, __opts) => {
173
+ var GLOBAL_STORAGE_KEY = /* @__PURE__ */ Symbol.for("tanstack-start:start-storage-context");
174
+ var globalObj = globalThis;
175
+ if (!globalObj[GLOBAL_STORAGE_KEY]) globalObj[GLOBAL_STORAGE_KEY] = new AsyncLocalStorage();
176
+ var startStorage = globalObj[GLOBAL_STORAGE_KEY];
177
+ async function runWithStartContext(context, fn) {
178
+ return startStorage.run(context, fn);
179
+ }
180
+ function getStartContext(opts) {
181
+ const context = startStorage.getStore();
182
+ if (!context && opts?.throwIfNotFound !== false) throw new Error(`No Start context found in AsyncLocalStorage. Make sure you are using the function within the server runtime.`);
183
+ return context;
184
+ }
185
+ var getStartOptions = () => getStartContext().startOptions;
186
+ var getStartContextServerOnly = getStartContext;
187
+ var createServerFn = (options, __opts) => {
90
188
  const resolvedOptions = __opts || options || {};
91
- if (typeof resolvedOptions.method === "undefined") {
92
- resolvedOptions.method = "GET";
93
- }
189
+ if (typeof resolvedOptions.method === "undefined") resolvedOptions.method = "GET";
94
190
  const res = {
95
191
  options: resolvedOptions,
96
192
  middleware: (middleware) => {
97
193
  const newMiddleware = [...resolvedOptions.middleware || []];
98
194
  middleware.map((m) => {
99
195
  if (TSS_SERVER_FUNCTION_FACTORY in m) {
100
- if (m.options.middleware) {
101
- newMiddleware.push(...m.options.middleware);
102
- }
103
- } else {
104
- newMiddleware.push(m);
105
- }
196
+ if (m.options.middleware) newMiddleware.push(...m.options.middleware);
197
+ } else newMiddleware.push(m);
106
198
  });
107
- const newOptions = {
199
+ const res2 = createServerFn(void 0, {
108
200
  ...resolvedOptions,
109
201
  middleware: newMiddleware
110
- };
111
- const res2 = createServerFn(void 0, newOptions);
202
+ });
112
203
  res2[TSS_SERVER_FUNCTION_FACTORY] = true;
113
204
  return res2;
114
205
  },
115
206
  inputValidator: (inputValidator) => {
116
- const newOptions = { ...resolvedOptions, inputValidator };
117
- return createServerFn(void 0, newOptions);
207
+ return createServerFn(void 0, {
208
+ ...resolvedOptions,
209
+ inputValidator
210
+ });
118
211
  },
119
212
  handler: (...args) => {
120
213
  const [extractedFn, serverFn] = args;
121
- const newOptions = { ...resolvedOptions, extractedFn, serverFn };
122
- const resolvedMiddleware = [
123
- ...newOptions.middleware || [],
124
- serverFnBaseToMiddleware(newOptions)
125
- ];
126
- return Object.assign(
127
- async (opts) => {
128
- const result = await executeMiddleware$1(resolvedMiddleware, "client", {
129
- ...extractedFn,
130
- ...newOptions,
131
- data: opts?.data,
132
- headers: opts?.headers,
133
- signal: opts?.signal,
134
- fetch: opts?.fetch,
135
- context: createNullProtoObject()
136
- });
137
- const redirect = parseRedirect(result.error);
138
- if (redirect) {
139
- throw redirect;
140
- }
141
- if (result.error) throw result.error;
142
- return result.result;
143
- },
144
- {
145
- // This copies over the URL, function ID
214
+ const newOptions = {
215
+ ...resolvedOptions,
216
+ extractedFn,
217
+ serverFn
218
+ };
219
+ const resolvedMiddleware = [...newOptions.middleware || [], serverFnBaseToMiddleware(newOptions)];
220
+ extractedFn.method = resolvedOptions.method;
221
+ return Object.assign(async (opts) => {
222
+ const result = await executeMiddleware$1(resolvedMiddleware, "client", {
146
223
  ...extractedFn,
147
- // The extracted function on the server-side calls
148
- // this function
149
- __executeServer: async (opts) => {
150
- const startContext = getStartContextServerOnly();
151
- const serverContextAfterGlobalMiddlewares = startContext.contextAfterGlobalMiddlewares;
152
- const ctx = {
153
- ...extractedFn,
154
- ...opts,
155
- // Ensure we use the full serverFnMeta from the provider file's extractedFn
156
- // (which has id, name, filename) rather than the partial one from SSR/client
157
- // callers (which only has id)
158
- serverFnMeta: extractedFn.serverFnMeta,
159
- // Use safeObjectMerge for opts.context which comes from client
160
- context: safeObjectMerge(
161
- serverContextAfterGlobalMiddlewares,
162
- opts.context
163
- ),
164
- request: startContext.request
165
- };
166
- const result = await executeMiddleware$1(
167
- resolvedMiddleware,
168
- "server",
169
- ctx
170
- ).then((d) => ({
171
- // Only send the result and sendContext back to the client
172
- result: d.result,
173
- error: d.error,
174
- context: d.sendContext
175
- }));
176
- return result;
177
- }
224
+ ...newOptions,
225
+ data: opts?.data,
226
+ headers: opts?.headers,
227
+ signal: opts?.signal,
228
+ fetch: opts?.fetch,
229
+ context: createNullProtoObject()
230
+ });
231
+ const redirect = parseRedirect(result.error);
232
+ if (redirect) throw redirect;
233
+ if (result.error) throw result.error;
234
+ return result.result;
235
+ }, {
236
+ ...extractedFn,
237
+ method: resolvedOptions.method,
238
+ __executeServer: async (opts) => {
239
+ const startContext = getStartContextServerOnly();
240
+ const serverContextAfterGlobalMiddlewares = startContext.contextAfterGlobalMiddlewares;
241
+ return await executeMiddleware$1(resolvedMiddleware, "server", {
242
+ ...extractedFn,
243
+ ...opts,
244
+ serverFnMeta: extractedFn.serverFnMeta,
245
+ context: safeObjectMerge(serverContextAfterGlobalMiddlewares, opts.context),
246
+ request: startContext.request
247
+ }).then((d) => ({
248
+ result: d.result,
249
+ error: d.error,
250
+ context: d.sendContext
251
+ }));
178
252
  }
179
- );
253
+ });
180
254
  }
181
255
  };
182
256
  const fun = (options2) => {
183
- const newOptions = {
257
+ return createServerFn(void 0, {
184
258
  ...resolvedOptions,
185
259
  ...options2
186
- };
187
- return createServerFn(void 0, newOptions);
260
+ });
188
261
  };
189
262
  return Object.assign(fun, res);
190
263
  };
191
264
  async function executeMiddleware$1(middlewares, env, opts) {
192
- const globalMiddlewares = getStartOptions()?.functionMiddleware || [];
193
- let flattenedMiddlewares = flattenMiddlewares([
194
- ...globalMiddlewares,
195
- ...middlewares
196
- ]);
265
+ let flattenedMiddlewares = flattenMiddlewares([...getStartOptions()?.functionMiddleware || [], ...middlewares]);
197
266
  if (env === "server") {
198
267
  const startContext = getStartContextServerOnly({ throwIfNotFound: false });
199
- if (startContext?.executedRequestMiddlewares) {
200
- flattenedMiddlewares = flattenedMiddlewares.filter(
201
- (m) => !startContext.executedRequestMiddlewares.has(m)
202
- );
203
- }
268
+ if (startContext?.executedRequestMiddlewares) flattenedMiddlewares = flattenedMiddlewares.filter((m) => !startContext.executedRequestMiddlewares.has(m));
204
269
  }
205
270
  const callNextMiddleware = async (ctx) => {
206
271
  const nextMiddleware = flattenedMiddlewares.shift();
207
- if (!nextMiddleware) {
208
- return ctx;
209
- }
272
+ if (!nextMiddleware) return ctx;
210
273
  try {
211
- if ("inputValidator" in nextMiddleware.options && nextMiddleware.options.inputValidator && env === "server") {
212
- ctx.data = await execValidator(
213
- nextMiddleware.options.inputValidator,
214
- ctx.data
215
- );
216
- }
274
+ if ("inputValidator" in nextMiddleware.options && nextMiddleware.options.inputValidator && env === "server") ctx.data = await execValidator(nextMiddleware.options.inputValidator, ctx.data);
217
275
  let middlewareFn = void 0;
218
276
  if (env === "client") {
219
- if ("client" in nextMiddleware.options) {
220
- middlewareFn = nextMiddleware.options.client;
221
- }
222
- } else if ("server" in nextMiddleware.options) {
223
- middlewareFn = nextMiddleware.options.server;
224
- }
277
+ if ("client" in nextMiddleware.options) middlewareFn = nextMiddleware.options.client;
278
+ } else if ("server" in nextMiddleware.options) middlewareFn = nextMiddleware.options.server;
225
279
  if (middlewareFn) {
226
280
  const userNext = async (userCtx = {}) => {
227
- const nextCtx = {
281
+ const result2 = await callNextMiddleware({
228
282
  ...ctx,
229
283
  ...userCtx,
230
284
  context: safeObjectMerge(ctx.context, userCtx.context),
@@ -234,34 +288,23 @@ async function executeMiddleware$1(middlewares, env, opts) {
234
288
  fetch: ctx._callSiteFetch ?? userCtx.fetch ?? ctx.fetch,
235
289
  result: userCtx.result !== void 0 ? userCtx.result : userCtx instanceof Response ? userCtx : ctx.result,
236
290
  error: userCtx.error ?? ctx.error
237
- };
238
- const result2 = await callNextMiddleware(nextCtx);
239
- if (result2.error) {
240
- throw result2.error;
241
- }
291
+ });
292
+ if (result2.error) throw result2.error;
242
293
  return result2;
243
294
  };
244
295
  const result = await middlewareFn({
245
296
  ...ctx,
246
297
  next: userNext
247
298
  });
248
- if (isRedirect(result)) {
249
- return {
250
- ...ctx,
251
- error: result
252
- };
253
- }
254
- if (result instanceof Response) {
255
- return {
256
- ...ctx,
257
- result
258
- };
259
- }
260
- if (!result) {
261
- throw new Error(
262
- "User middleware returned undefined. You must call next() or return a result in your middlewares."
263
- );
264
- }
299
+ if (isRedirect(result)) return {
300
+ ...ctx,
301
+ error: result
302
+ };
303
+ if (result instanceof Response) return {
304
+ ...ctx,
305
+ result
306
+ };
307
+ if (!result) throw new Error("User middleware returned undefined. You must call next() or return a result in your middlewares.");
265
308
  return result;
266
309
  }
267
310
  return callNextMiddleware(ctx);
@@ -284,15 +327,9 @@ function flattenMiddlewares(middlewares, maxDepth = 100) {
284
327
  const seen = /* @__PURE__ */ new Set();
285
328
  const flattened = [];
286
329
  const recurse = (middleware, depth) => {
287
- if (depth > maxDepth) {
288
- throw new Error(
289
- `Middleware nesting depth exceeded maximum of ${maxDepth}. Check for circular references.`
290
- );
291
- }
330
+ if (depth > maxDepth) throw new Error(`Middleware nesting depth exceeded maximum of ${maxDepth}. Check for circular references.`);
292
331
  middleware.forEach((m) => {
293
- if (m.options.middleware) {
294
- recurse(m.options.middleware, depth + 1);
295
- }
332
+ if (m.options.middleware) recurse(m.options.middleware, depth + 1);
296
333
  if (!seen.has(m)) {
297
334
  seen.add(m);
298
335
  flattened.push(m);
@@ -306,16 +343,11 @@ async function execValidator(validator, input) {
306
343
  if (validator == null) return {};
307
344
  if ("~standard" in validator) {
308
345
  const result = await validator["~standard"].validate(input);
309
- if (result.issues)
310
- throw new Error(JSON.stringify(result.issues, void 0, 2));
346
+ if (result.issues) throw new Error(JSON.stringify(result.issues, void 0, 2));
311
347
  return result.value;
312
348
  }
313
- if ("parse" in validator) {
314
- return validator.parse(input);
315
- }
316
- if (typeof validator === "function") {
317
- return validator(input);
318
- }
349
+ if ("parse" in validator) return validator.parse(input);
350
+ if (typeof validator === "function") return validator(input);
319
351
  throw new Error("Invalid validator type!");
320
352
  }
321
353
  function serverFnBaseToMiddleware(options) {
@@ -326,12 +358,10 @@ function serverFnBaseToMiddleware(options) {
326
358
  client: async ({ next, sendContext, fetch: fetch2, ...ctx }) => {
327
359
  const payload = {
328
360
  ...ctx,
329
- // switch the sendContext over to context
330
361
  context: sendContext,
331
362
  fetch: fetch2
332
363
  };
333
- const res = await options.extractedFn?.(payload);
334
- return next(res);
364
+ return next(await options.extractedFn?.(payload));
335
365
  },
336
366
  server: async ({ next, ...ctx }) => {
337
367
  const result = await options.serverFn?.(ctx);
@@ -344,118 +374,10 @@ function serverFnBaseToMiddleware(options) {
344
374
  };
345
375
  }
346
376
  function getDefaultSerovalPlugins() {
347
- const start = getStartOptions();
348
- const adapters = start?.serializationAdapters;
349
- return [
350
- ...adapters?.map(makeSerovalPlugin) ?? [],
351
- ...defaultSerovalPlugins
352
- ];
353
- }
354
- const GLOBAL_EVENT_STORAGE_KEY = /* @__PURE__ */ Symbol.for("tanstack-start:event-storage");
355
- const globalObj = globalThis;
356
- if (!globalObj[GLOBAL_EVENT_STORAGE_KEY]) {
357
- globalObj[GLOBAL_EVENT_STORAGE_KEY] = new AsyncLocalStorage();
358
- }
359
- const eventStorage = globalObj[GLOBAL_EVENT_STORAGE_KEY];
360
- function isPromiseLike(value) {
361
- return typeof value.then === "function";
362
- }
363
- function getSetCookieValues(headers) {
364
- const headersWithSetCookie = headers;
365
- if (typeof headersWithSetCookie.getSetCookie === "function") {
366
- return headersWithSetCookie.getSetCookie();
367
- }
368
- const value = headers.get("set-cookie");
369
- return value ? [value] : [];
370
- }
371
- function mergeEventResponseHeaders(response, event) {
372
- if (response.ok) {
373
- return;
374
- }
375
- const eventSetCookies = getSetCookieValues(event.res.headers);
376
- if (eventSetCookies.length === 0) {
377
- return;
378
- }
379
- const responseSetCookies = getSetCookieValues(response.headers);
380
- response.headers.delete("set-cookie");
381
- for (const cookie of responseSetCookies) {
382
- response.headers.append("set-cookie", cookie);
383
- }
384
- for (const cookie of eventSetCookies) {
385
- response.headers.append("set-cookie", cookie);
386
- }
387
- }
388
- function attachResponseHeaders(value, event) {
389
- if (isPromiseLike(value)) {
390
- return value.then((resolved) => {
391
- if (resolved instanceof Response) {
392
- mergeEventResponseHeaders(resolved, event);
393
- }
394
- return resolved;
395
- });
396
- }
397
- if (value instanceof Response) {
398
- mergeEventResponseHeaders(value, event);
399
- }
400
- return value;
401
- }
402
- function requestHandler(handler) {
403
- return (request, requestOpts) => {
404
- const h3Event = new H3Event(request);
405
- const response = eventStorage.run(
406
- { h3Event },
407
- () => handler(request, requestOpts)
408
- );
409
- return toResponse(attachResponseHeaders(response, h3Event), h3Event);
410
- };
411
- }
412
- function getH3Event() {
413
- const event = eventStorage.getStore();
414
- if (!event) {
415
- throw new Error(
416
- `No StartEvent found in AsyncLocalStorage. Make sure you are using the function within the server runtime.`
417
- );
418
- }
419
- return event.h3Event;
420
- }
421
- function getResponse() {
422
- const event = getH3Event();
423
- return event.res;
377
+ return [...getStartOptions()?.serializationAdapters?.map(makeSerovalPlugin) ?? [], ...defaultSerovalPlugins];
424
378
  }
425
- async function getStartManifest(matchedRoutes) {
426
- const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-Dmhlhehg.js");
427
- const startManifest = tsrStartManifest();
428
- const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
429
- rootRoute.assets = rootRoute.assets || [];
430
- let injectedHeadScripts;
431
- const manifest2 = {
432
- routes: Object.fromEntries(
433
- Object.entries(startManifest.routes).flatMap(([k, v]) => {
434
- const result = {};
435
- let hasData = false;
436
- if (v.preloads && v.preloads.length > 0) {
437
- result["preloads"] = v.preloads;
438
- hasData = true;
439
- }
440
- if (v.assets && v.assets.length > 0) {
441
- result["assets"] = v.assets;
442
- hasData = true;
443
- }
444
- if (!hasData) {
445
- return [];
446
- }
447
- return [[k, result]];
448
- })
449
- )
450
- };
451
- return {
452
- manifest: manifest2,
453
- clientEntry: startManifest.clientEntry,
454
- injectedHeadScripts
455
- };
456
- }
457
- const textEncoder$1 = new TextEncoder();
458
- const EMPTY_PAYLOAD = new Uint8Array(0);
379
+ var textEncoder$1 = new TextEncoder();
380
+ var EMPTY_PAYLOAD = new Uint8Array(0);
459
381
  function encodeFrame(type, streamId, payload) {
460
382
  const frame = new Uint8Array(FRAME_HEADER_SIZE + payload.length);
461
383
  frame[0] = type;
@@ -511,9 +433,7 @@ function createMultiplexedStream(jsonStream, rawStreams) {
511
433
  };
512
434
  const checkComplete = () => {
513
435
  activePumps--;
514
- if (activePumps === 0) {
515
- safeClose();
516
- }
436
+ if (activePumps === 0) safeClose();
517
437
  };
518
438
  return new ReadableStream({
519
439
  start(controller) {
@@ -563,107 +483,44 @@ function createMultiplexedStream(jsonStream, rawStreams) {
563
483
  }
564
484
  };
565
485
  pumpJSON();
566
- for (const [streamId, stream] of rawStreams) {
567
- pumpRawStream(streamId, stream);
568
- }
486
+ for (const [streamId, stream] of rawStreams) pumpRawStream(streamId, stream);
569
487
  },
570
488
  cancel() {
571
489
  cancelled = true;
572
490
  controllerRef = null;
573
- for (const cancelReader of cancelReaders) {
574
- cancelReader();
575
- }
491
+ for (const cancelReader of cancelReaders) cancelReader();
576
492
  cancelReaders.length = 0;
577
493
  }
578
494
  });
579
495
  }
580
- const manifest = { "ff8a3161afdfa175e9c519e4146a56ab5bce6e80745e99cfc2191ebbb7a859bb": {
581
- functionName: "getSessionDetail_createServerFn_handler",
582
- importer: () => import("./assets/session-detail.server-BIoOQwSE.js")
583
- }, "4b9a58c176f487b49800a372100037cdf33cf048f3592a449f115c7e3f5ea799": {
584
- functionName: "getStats_createServerFn_handler",
585
- importer: () => import("./assets/stats.server-DhzOihwM.js")
586
- }, "810657681a273df5b4e58f0d8fcc6a5451598b489431b9bcaa98eea0ad815da8": {
587
- functionName: "getSettings_createServerFn_handler",
588
- importer: () => import("./assets/settings.server-6B2PvLgf.js")
589
- }, "3050115d92ca91ab1fd8fd698e33076328aae80dc64ca27c088eee16cebccc1a": {
590
- functionName: "saveSettings_createServerFn_handler",
591
- importer: () => import("./assets/settings.server-6B2PvLgf.js")
592
- }, "bf8e4a7901f1843bdc9c46be1ad5ad59c615b8bbe611b73eb3ff28f20e43ee0d": {
593
- functionName: "getSessionList_createServerFn_handler",
594
- importer: () => import("./assets/sessions.server-Biq8gbAJ.js")
595
- }, "839d29fe93dfa2a6d506af7b48ca25197190a5ff4c796e970ddfdc6e8c98827f": {
596
- functionName: "getActiveSessionList_createServerFn_handler",
597
- importer: () => import("./assets/sessions.server-Biq8gbAJ.js")
598
- }, "a3f42f9012fd83586787da8f7cb90649da739dd947d867eb67572f68735ff495": {
599
- functionName: "getPaginatedSessions_createServerFn_handler",
600
- importer: () => import("./assets/sessions.server-Biq8gbAJ.js")
601
- }, "955327d72ca3168c4751159ca07b8fb0fe0d2381dd0b991f06b941480959fbe8": {
602
- functionName: "getAppInfo_createServerFn_handler",
603
- importer: () => import("./assets/app-info.server-CXcS0a5s.js")
604
- }, "64052f224a1d6696436e5d3deeee2b798f0742e1292ffabd038c3a7bf75e6fcb": {
605
- functionName: "getProjectAnalytics_createServerFn_handler",
606
- importer: () => import("./assets/project-analytics.server-Bxk8-NnT.js")
607
- } };
608
- async function getServerFnById(id) {
609
- const serverFnInfo = manifest[id];
610
- if (!serverFnInfo) {
611
- throw new Error("Server function info not found for " + id);
612
- }
613
- const fnModule = await serverFnInfo.importer();
614
- if (!fnModule) {
615
- console.info("serverFnInfo", serverFnInfo);
616
- throw new Error("Server function module not resolved for " + id);
617
- }
618
- const action = fnModule[serverFnInfo.functionName];
619
- if (!action) {
620
- console.info("serverFnInfo", serverFnInfo);
621
- console.info("fnModule", fnModule);
622
- throw new Error(
623
- `Server function module export not resolved for serverFn ID: ${id}`
624
- );
625
- }
626
- return action;
627
- }
628
- let serovalPlugins = void 0;
629
- const textEncoder = new TextEncoder();
630
- const FORM_DATA_CONTENT_TYPES = [
631
- "multipart/form-data",
632
- "application/x-www-form-urlencoded"
633
- ];
634
- const MAX_PAYLOAD_SIZE = 1e6;
635
- const handleServerAction = async ({
636
- request,
637
- context,
638
- serverFnId
639
- }) => {
640
- const method = request.method;
641
- const methodUpper = method.toUpperCase();
642
- const methodLower = method.toLowerCase();
496
+ var serovalPlugins = void 0;
497
+ var textEncoder = new TextEncoder();
498
+ var FORM_DATA_CONTENT_TYPES = ["multipart/form-data", "application/x-www-form-urlencoded"];
499
+ var MAX_PAYLOAD_SIZE = 1e6;
500
+ var handleServerAction = async ({ request, context, serverFnId }) => {
501
+ const methodUpper = request.method.toUpperCase();
643
502
  const url = new URL(request.url);
644
503
  const action = await getServerFnById(serverFnId);
504
+ if (action.method && methodUpper !== action.method) return new Response(`expected ${action.method} method. Got ${methodUpper}`, {
505
+ status: 405,
506
+ headers: { Allow: action.method }
507
+ });
645
508
  const isServerFn = request.headers.get("x-tsr-serverFn") === "true";
646
- if (!serovalPlugins) {
647
- serovalPlugins = getDefaultSerovalPlugins();
648
- }
509
+ if (!serovalPlugins) serovalPlugins = getDefaultSerovalPlugins();
649
510
  const contentType = request.headers.get("Content-Type");
650
511
  function parsePayload(payload) {
651
- const parsedPayload = fromJSON(payload, { plugins: serovalPlugins });
652
- return parsedPayload;
512
+ return fromJSON(payload, { plugins: serovalPlugins });
653
513
  }
654
- const response = await (async () => {
514
+ return await (async () => {
655
515
  try {
656
516
  let serializeResult = function(res2) {
657
517
  let nonStreamingBody = void 0;
658
518
  const alsResponse = getResponse();
659
519
  if (res2 !== void 0) {
660
520
  const rawStreams = /* @__PURE__ */ new Map();
661
- const rawStreamPlugin = createRawStreamRPCPlugin(
662
- (id, stream2) => {
663
- rawStreams.set(id, stream2);
664
- }
665
- );
666
- const plugins = [rawStreamPlugin, ...serovalPlugins || []];
521
+ const plugins = [createRawStreamRPCPlugin((id, stream2) => {
522
+ rawStreams.set(id, stream2);
523
+ }), ...serovalPlugins || []];
667
524
  let done = false;
668
525
  const callbacks = {
669
526
  onParse: (value) => {
@@ -689,41 +546,28 @@ const handleServerAction = async ({
689
546
  callbacks.onError(error);
690
547
  }
691
548
  });
692
- if (done && rawStreams.size === 0) {
693
- return new Response(
694
- nonStreamingBody ? JSON.stringify(nonStreamingBody) : void 0,
695
- {
696
- status: alsResponse.status,
697
- statusText: alsResponse.statusText,
698
- headers: {
699
- "Content-Type": "application/json",
700
- [X_TSS_SERIALIZED]: "true"
701
- }
702
- }
703
- );
704
- }
549
+ if (done && rawStreams.size === 0) return new Response(nonStreamingBody ? JSON.stringify(nonStreamingBody) : void 0, {
550
+ status: alsResponse.status,
551
+ statusText: alsResponse.statusText,
552
+ headers: {
553
+ "Content-Type": "application/json",
554
+ [X_TSS_SERIALIZED]: "true"
555
+ }
556
+ });
705
557
  if (rawStreams.size > 0) {
706
- const jsonStream = new ReadableStream({
707
- start(controller) {
708
- callbacks.onParse = (value) => {
709
- controller.enqueue(JSON.stringify(value) + "\n");
710
- };
711
- callbacks.onDone = () => {
712
- try {
713
- controller.close();
714
- } catch {
715
- }
716
- };
717
- callbacks.onError = (error) => controller.error(error);
718
- if (nonStreamingBody !== void 0) {
719
- callbacks.onParse(nonStreamingBody);
558
+ const multiplexedStream = createMultiplexedStream(new ReadableStream({ start(controller) {
559
+ callbacks.onParse = (value) => {
560
+ controller.enqueue(JSON.stringify(value) + "\n");
561
+ };
562
+ callbacks.onDone = () => {
563
+ try {
564
+ controller.close();
565
+ } catch {
720
566
  }
721
- }
722
- });
723
- const multiplexedStream = createMultiplexedStream(
724
- jsonStream,
725
- rawStreams
726
- );
567
+ };
568
+ callbacks.onError = (error) => controller.error(error);
569
+ if (nonStreamingBody !== void 0) callbacks.onParse(nonStreamingBody);
570
+ } }), rawStreams);
727
571
  return new Response(multiplexedStream, {
728
572
  status: alsResponse.status,
729
573
  statusText: alsResponse.statusText,
@@ -733,24 +577,18 @@ const handleServerAction = async ({
733
577
  }
734
578
  });
735
579
  }
736
- const stream = new ReadableStream({
737
- start(controller) {
738
- callbacks.onParse = (value) => controller.enqueue(
739
- textEncoder.encode(JSON.stringify(value) + "\n")
740
- );
741
- callbacks.onDone = () => {
742
- try {
743
- controller.close();
744
- } catch (error) {
745
- controller.error(error);
746
- }
747
- };
748
- callbacks.onError = (error) => controller.error(error);
749
- if (nonStreamingBody !== void 0) {
750
- callbacks.onParse(nonStreamingBody);
580
+ const stream = new ReadableStream({ start(controller) {
581
+ callbacks.onParse = (value) => controller.enqueue(textEncoder.encode(JSON.stringify(value) + "\n"));
582
+ callbacks.onDone = () => {
583
+ try {
584
+ controller.close();
585
+ } catch (error) {
586
+ controller.error(error);
751
587
  }
752
- }
753
- });
588
+ };
589
+ callbacks.onError = (error) => controller.error(error);
590
+ if (nonStreamingBody !== void 0) callbacks.onParse(nonStreamingBody);
591
+ } });
754
592
  return new Response(stream, {
755
593
  status: alsResponse.status,
756
594
  statusText: alsResponse.statusText,
@@ -766,13 +604,8 @@ const handleServerAction = async ({
766
604
  });
767
605
  };
768
606
  let res = await (async () => {
769
- if (FORM_DATA_CONTENT_TYPES.some(
770
- (type) => contentType && contentType.includes(type)
771
- )) {
772
- invariant(
773
- methodLower !== "get",
774
- "GET requests with FormData payloads are not supported"
775
- );
607
+ if (FORM_DATA_CONTENT_TYPES.some((type) => contentType && contentType.includes(type))) {
608
+ invariant(methodUpper !== "GET", "GET requests with FormData payloads are not supported");
776
609
  const formData = await request.formData();
777
610
  const serializedContext = formData.get(TSS_FORMDATA_CONTEXT);
778
611
  formData.delete(TSS_FORMDATA_CONTEXT);
@@ -781,85 +614,54 @@ const handleServerAction = async ({
781
614
  data: formData,
782
615
  method: methodUpper
783
616
  };
784
- if (typeof serializedContext === "string") {
785
- try {
786
- const parsedContext = JSON.parse(serializedContext);
787
- const deserializedContext = fromJSON(parsedContext, {
788
- plugins: serovalPlugins
789
- });
790
- if (typeof deserializedContext === "object" && deserializedContext) {
791
- params.context = safeObjectMerge(
792
- context,
793
- deserializedContext
794
- );
795
- }
796
- } catch (e) {
797
- if (false) ;
798
- }
617
+ if (typeof serializedContext === "string") try {
618
+ const deserializedContext = fromJSON(JSON.parse(serializedContext), { plugins: serovalPlugins });
619
+ if (typeof deserializedContext === "object" && deserializedContext) params.context = safeObjectMerge(context, deserializedContext);
620
+ } catch (e) {
621
+ if (false) ;
799
622
  }
800
623
  return await action(params);
801
624
  }
802
- if (methodLower === "get") {
625
+ if (methodUpper === "GET") {
803
626
  const payloadParam = url.searchParams.get("payload");
804
- if (payloadParam && payloadParam.length > MAX_PAYLOAD_SIZE) {
805
- throw new Error("Payload too large");
806
- }
627
+ if (payloadParam && payloadParam.length > MAX_PAYLOAD_SIZE) throw new Error("Payload too large");
807
628
  const payload2 = payloadParam ? parsePayload(JSON.parse(payloadParam)) : {};
808
629
  payload2.context = safeObjectMerge(context, payload2.context);
809
630
  payload2.method = methodUpper;
810
631
  return await action(payload2);
811
632
  }
812
- if (methodLower !== "post") {
813
- throw new Error("expected POST method");
814
- }
815
633
  let jsonPayload;
816
- if (contentType?.includes("application/json")) {
817
- jsonPayload = await request.json();
818
- }
634
+ if (contentType?.includes("application/json")) jsonPayload = await request.json();
819
635
  const payload = jsonPayload ? parsePayload(jsonPayload) : {};
820
636
  payload.context = safeObjectMerge(payload.context, context);
821
637
  payload.method = methodUpper;
822
638
  return await action(payload);
823
639
  })();
824
640
  const unwrapped = res.result || res.error;
825
- if (isNotFound(res)) {
826
- res = isNotFoundResponse(res);
827
- }
828
- if (!isServerFn) {
829
- return unwrapped;
830
- }
641
+ if (isNotFound(res)) res = isNotFoundResponse(res);
642
+ if (!isServerFn) return unwrapped;
831
643
  if (unwrapped instanceof Response) {
832
- if (isRedirect(unwrapped)) {
833
- return unwrapped;
834
- }
644
+ if (isRedirect(unwrapped)) return unwrapped;
835
645
  unwrapped.headers.set(X_TSS_RAW_RESPONSE, "true");
836
646
  return unwrapped;
837
647
  }
838
648
  return serializeResult(res);
839
649
  } catch (error) {
840
- if (error instanceof Response) {
841
- return error;
842
- }
843
- if (isNotFound(error)) {
844
- return isNotFoundResponse(error);
845
- }
650
+ if (error instanceof Response) return error;
651
+ if (isNotFound(error)) return isNotFoundResponse(error);
846
652
  console.info();
847
653
  console.info("Server Fn Error!");
848
654
  console.info();
849
655
  console.error(error);
850
656
  console.info();
851
- const serializedError = JSON.stringify(
852
- await Promise.resolve(
853
- toCrossJSONAsync(error, {
854
- refs: /* @__PURE__ */ new Map(),
855
- plugins: serovalPlugins
856
- })
857
- )
858
- );
859
- const response2 = getResponse();
657
+ const serializedError = JSON.stringify(await Promise.resolve(toCrossJSONAsync(error, {
658
+ refs: /* @__PURE__ */ new Map(),
659
+ plugins: serovalPlugins
660
+ })));
661
+ const response = getResponse();
860
662
  return new Response(serializedError, {
861
- status: response2.status ?? 500,
862
- statusText: response2.statusText,
663
+ status: response.status ?? 500,
664
+ statusText: response.statusText,
863
665
  headers: {
864
666
  "Content-Type": "application/json",
865
667
  [X_TSS_SERIALIZED]: "true"
@@ -867,7 +669,6 @@ const handleServerAction = async ({
867
669
  });
868
670
  }
869
671
  })();
870
- return response;
871
672
  };
872
673
  function isNotFoundResponse(error) {
873
674
  const { headers, ...rest } = error;
@@ -888,33 +689,25 @@ function resolveTransformConfig(transform) {
888
689
  cache: true
889
690
  };
890
691
  }
891
- if (typeof transform === "function") {
892
- return {
893
- type: "transform",
894
- transformFn: transform,
895
- cache: true
896
- };
897
- }
898
- if ("createTransform" in transform && transform.createTransform) {
899
- return {
900
- type: "createTransform",
901
- createTransform: transform.createTransform,
902
- cache: transform.cache !== false
903
- };
904
- }
905
- const transformFn = typeof transform.transform === "string" ? (({ url }) => `${transform.transform}${url}`) : transform.transform;
692
+ if (typeof transform === "function") return {
693
+ type: "transform",
694
+ transformFn: transform,
695
+ cache: true
696
+ };
697
+ if ("createTransform" in transform && transform.createTransform) return {
698
+ type: "createTransform",
699
+ createTransform: transform.createTransform,
700
+ cache: transform.cache !== false
701
+ };
906
702
  return {
907
703
  type: "transform",
908
- transformFn,
704
+ transformFn: typeof transform.transform === "string" ? (({ url }) => `${transform.transform}${url}`) : transform.transform,
909
705
  cache: transform.cache !== false
910
706
  };
911
707
  }
912
708
  function buildClientEntryScriptTag(clientEntry, injectedHeadScripts) {
913
- const clientEntryLiteral = JSON.stringify(clientEntry);
914
- let script = `import(${clientEntryLiteral})`;
915
- if (injectedHeadScripts) {
916
- script = `${injectedHeadScripts};${script}`;
917
- }
709
+ let script = `import(${JSON.stringify(clientEntry)})`;
710
+ if (injectedHeadScripts) script = `${injectedHeadScripts};${script}`;
918
711
  return {
919
712
  tag: "script",
920
713
  attrs: {
@@ -928,66 +721,41 @@ function transformManifestUrls(source, transformFn, opts) {
928
721
  return (async () => {
929
722
  const manifest2 = opts?.clone ? structuredClone(source.manifest) : source.manifest;
930
723
  for (const route of Object.values(manifest2.routes)) {
931
- if (route.preloads) {
932
- route.preloads = await Promise.all(
933
- route.preloads.map(
934
- (url) => Promise.resolve(transformFn({ url, type: "modulepreload" }))
935
- )
936
- );
937
- }
724
+ if (route.preloads) route.preloads = await Promise.all(route.preloads.map((url) => Promise.resolve(transformFn({
725
+ url,
726
+ type: "modulepreload"
727
+ }))));
938
728
  if (route.assets) {
939
- for (const asset of route.assets) {
940
- if (asset.tag === "link" && asset.attrs?.href) {
941
- asset.attrs.href = await Promise.resolve(
942
- transformFn({
943
- url: asset.attrs.href,
944
- type: "stylesheet"
945
- })
946
- );
947
- }
948
- }
729
+ for (const asset of route.assets) if (asset.tag === "link" && asset.attrs?.href) asset.attrs.href = await Promise.resolve(transformFn({
730
+ url: asset.attrs.href,
731
+ type: "stylesheet"
732
+ }));
949
733
  }
950
734
  }
951
- const transformedClientEntry = await Promise.resolve(
952
- transformFn({
953
- url: source.clientEntry,
954
- type: "clientEntry"
955
- })
956
- );
735
+ const transformedClientEntry = await Promise.resolve(transformFn({
736
+ url: source.clientEntry,
737
+ type: "clientEntry"
738
+ }));
957
739
  const rootRoute = manifest2.routes[rootRouteId];
958
740
  if (rootRoute) {
959
741
  rootRoute.assets = rootRoute.assets || [];
960
- rootRoute.assets.push(
961
- buildClientEntryScriptTag(
962
- transformedClientEntry,
963
- source.injectedHeadScripts
964
- )
965
- );
742
+ rootRoute.assets.push(buildClientEntryScriptTag(transformedClientEntry, source.injectedHeadScripts));
966
743
  }
967
744
  return manifest2;
968
745
  })();
969
746
  }
970
747
  function buildManifestWithClientEntry(source) {
971
- const scriptTag = buildClientEntryScriptTag(
972
- source.clientEntry,
973
- source.injectedHeadScripts
974
- );
748
+ const scriptTag = buildClientEntryScriptTag(source.clientEntry, source.injectedHeadScripts);
975
749
  const baseRootRoute = source.manifest.routes[rootRouteId];
976
- const routes = {
750
+ return { routes: {
977
751
  ...source.manifest.routes,
978
- ...baseRootRoute ? {
979
- [rootRouteId]: {
980
- ...baseRootRoute,
981
- assets: [...baseRootRoute.assets || [], scriptTag]
982
- }
983
- } : {}
984
- };
985
- return { routes };
752
+ ...baseRootRoute ? { [rootRouteId]: {
753
+ ...baseRootRoute,
754
+ assets: [...baseRootRoute.assets || [], scriptTag]
755
+ } } : {}
756
+ } };
986
757
  }
987
- const HEADERS = {
988
- TSS_SHELL: "X-TSS_SHELL"
989
- };
990
- const ServerFunctionSerializationAdapter = createSerializationAdapter({
758
+ var ServerFunctionSerializationAdapter = createSerializationAdapter({
991
759
  key: "$TSS/serverfn",
992
760
  test: (v) => {
993
761
  if (typeof v !== "function") return false;
@@ -997,42 +765,32 @@ const ServerFunctionSerializationAdapter = createSerializationAdapter({
997
765
  toSerializable: ({ serverFnMeta }) => ({ functionId: serverFnMeta.id }),
998
766
  fromSerializable: ({ functionId }) => {
999
767
  const fn = async (opts, signal) => {
1000
- const serverFn = await getServerFnById(functionId);
1001
- const result = await serverFn(opts ?? {}, signal);
1002
- return result.result;
768
+ return (await (await getServerFnById(functionId))(opts ?? {}, signal)).result;
1003
769
  };
1004
770
  return fn;
1005
771
  }
1006
772
  });
1007
773
  function getStartResponseHeaders(opts) {
1008
- const headers = mergeHeaders(
1009
- {
1010
- "Content-Type": "text/html; charset=utf-8"
1011
- },
1012
- ...opts.router.state.matches.map((match) => {
1013
- return match.headers;
1014
- })
1015
- );
1016
- return headers;
774
+ return mergeHeaders({ "Content-Type": "text/html; charset=utf-8" }, ...opts.router.state.matches.map((match) => {
775
+ return match.headers;
776
+ }));
1017
777
  }
1018
- let entriesPromise;
1019
- let baseManifestPromise;
1020
- let cachedFinalManifestPromise;
778
+ var entriesPromise;
779
+ var baseManifestPromise;
780
+ var cachedFinalManifestPromise;
1021
781
  async function loadEntries() {
1022
- const routerEntry = await import("./assets/router-5hznwWqr.js").then((n) => n.r);
1023
- const startEntry = await import("./assets/start-HYkvq4Ni.js");
1024
- return { startEntry, routerEntry };
782
+ const routerEntry = await import("./assets/router-DAepjaOj.js").then((n) => n.r);
783
+ return {
784
+ startEntry: await import("./assets/start-HYkvq4Ni.js"),
785
+ routerEntry
786
+ };
1025
787
  }
1026
788
  function getEntries() {
1027
- if (!entriesPromise) {
1028
- entriesPromise = loadEntries();
1029
- }
789
+ if (!entriesPromise) entriesPromise = loadEntries();
1030
790
  return entriesPromise;
1031
791
  }
1032
792
  function getBaseManifest(matchedRoutes) {
1033
- if (!baseManifestPromise) {
1034
- baseManifestPromise = getStartManifest();
1035
- }
793
+ if (!baseManifestPromise) baseManifestPromise = getStartManifest();
1036
794
  return baseManifestPromise;
1037
795
  }
1038
796
  async function resolveManifest(matchedRoutes, transformFn, cache) {
@@ -1041,19 +799,17 @@ async function resolveManifest(matchedRoutes, transformFn, cache) {
1041
799
  return transformFn ? await transformManifestUrls(base, transformFn, { clone: !cache }) : buildManifestWithClientEntry(base);
1042
800
  };
1043
801
  if (!transformFn || cache) {
1044
- if (!cachedFinalManifestPromise) {
1045
- cachedFinalManifestPromise = computeFinalManifest();
1046
- }
802
+ if (!cachedFinalManifestPromise) cachedFinalManifestPromise = computeFinalManifest();
1047
803
  return cachedFinalManifestPromise;
1048
804
  }
1049
805
  return computeFinalManifest();
1050
806
  }
1051
- const ROUTER_BASEPATH = "/";
1052
- const SERVER_FN_BASE = "/_serverFn/";
1053
- const IS_PRERENDERING = process.env.TSS_PRERENDERING === "true";
1054
- const IS_SHELL_ENV = process.env.TSS_SHELL === "true";
1055
- const ERR_NO_RESPONSE = "Internal Server Error";
1056
- const ERR_NO_DEFER = "Internal Server Error";
807
+ var ROUTER_BASEPATH = "/";
808
+ var SERVER_FN_BASE = "/_serverFn/";
809
+ var IS_PRERENDERING = process.env.TSS_PRERENDERING === "true";
810
+ var IS_SHELL_ENV = process.env.TSS_SHELL === "true";
811
+ var ERR_NO_RESPONSE = "Internal Server Error";
812
+ var ERR_NO_DEFER = "Internal Server Error";
1057
813
  function throwRouteHandlerError() {
1058
814
  throw new Error(ERR_NO_RESPONSE);
1059
815
  }
@@ -1064,30 +820,25 @@ function isSpecialResponse(value) {
1064
820
  return value instanceof Response || isRedirect(value);
1065
821
  }
1066
822
  function handleCtxResult(result) {
1067
- if (isSpecialResponse(result)) {
1068
- return { response: result };
1069
- }
823
+ if (isSpecialResponse(result)) return { response: result };
1070
824
  return result;
1071
825
  }
1072
826
  function executeMiddleware(middlewares, ctx) {
1073
827
  let index = -1;
1074
828
  const next = async (nextCtx) => {
1075
829
  if (nextCtx) {
1076
- if (nextCtx.context) {
1077
- ctx.context = safeObjectMerge(ctx.context, nextCtx.context);
1078
- }
1079
- for (const key of Object.keys(nextCtx)) {
1080
- if (key !== "context") {
1081
- ctx[key] = nextCtx[key];
1082
- }
1083
- }
830
+ if (nextCtx.context) ctx.context = safeObjectMerge(ctx.context, nextCtx.context);
831
+ for (const key of Object.keys(nextCtx)) if (key !== "context") ctx[key] = nextCtx[key];
1084
832
  }
1085
833
  index++;
1086
834
  const middleware = middlewares[index];
1087
835
  if (!middleware) return ctx;
1088
836
  let result;
1089
837
  try {
1090
- result = await middleware({ ...ctx, next });
838
+ result = await middleware({
839
+ ...ctx,
840
+ next
841
+ });
1091
842
  } catch (err) {
1092
843
  if (isSpecialResponse(err)) {
1093
844
  ctx.response = err;
@@ -1097,26 +848,21 @@ function executeMiddleware(middlewares, ctx) {
1097
848
  }
1098
849
  const normalized = handleCtxResult(result);
1099
850
  if (normalized) {
1100
- if (normalized.response !== void 0) {
1101
- ctx.response = normalized.response;
1102
- }
1103
- if (normalized.context) {
1104
- ctx.context = safeObjectMerge(ctx.context, normalized.context);
1105
- }
851
+ if (normalized.response !== void 0) ctx.response = normalized.response;
852
+ if (normalized.context) ctx.context = safeObjectMerge(ctx.context, normalized.context);
1106
853
  }
1107
854
  return ctx;
1108
855
  };
1109
856
  return next();
1110
857
  }
1111
858
  function handlerToMiddleware(handler, mayDefer = false) {
1112
- if (mayDefer) {
1113
- return handler;
1114
- }
859
+ if (mayDefer) return handler;
1115
860
  return async (ctx) => {
1116
- const response = await handler({ ...ctx, next: throwIfMayNotDefer });
1117
- if (!response) {
1118
- throwRouteHandlerError();
1119
- }
861
+ const response = await handler({
862
+ ...ctx,
863
+ next: throwIfMayNotDefer
864
+ });
865
+ if (!response) throwRouteHandlerError();
1120
866
  return response;
1121
867
  };
1122
868
  }
@@ -1131,11 +877,7 @@ function createStartHandler(cbOrOptions) {
1131
877
  if (!resolvedTransformConfig) return void 0;
1132
878
  if (resolvedTransformConfig.type === "createTransform") {
1133
879
  if (cache) {
1134
- if (!cachedCreateTransformPromise) {
1135
- cachedCreateTransformPromise = Promise.resolve(
1136
- resolvedTransformConfig.createTransform(opts)
1137
- );
1138
- }
880
+ if (!cachedCreateTransformPromise) cachedCreateTransformPromise = Promise.resolve(resolvedTransformConfig.createTransform(opts));
1139
881
  return cachedCreateTransformPromise;
1140
882
  }
1141
883
  return resolvedTransformConfig.createTransform(opts);
@@ -1150,9 +892,7 @@ function createStartHandler(cbOrOptions) {
1150
892
  })();
1151
893
  cachedFinalManifestPromise = warmupPromise;
1152
894
  warmupPromise.catch(() => {
1153
- if (cachedFinalManifestPromise === warmupPromise) {
1154
- cachedFinalManifestPromise = void 0;
1155
- }
895
+ if (cachedFinalManifestPromise === warmupPromise) cachedFinalManifestPromise = void 0;
1156
896
  cachedCreateTransformPromise = void 0;
1157
897
  });
1158
898
  }
@@ -1163,98 +903,62 @@ function createStartHandler(cbOrOptions) {
1163
903
  const { url, handledProtocolRelativeURL } = getNormalizedURL(request.url);
1164
904
  const href = url.pathname + url.search + url.hash;
1165
905
  const origin = getOrigin(request);
1166
- if (handledProtocolRelativeURL) {
1167
- return Response.redirect(url, 308);
1168
- }
906
+ if (handledProtocolRelativeURL) return Response.redirect(url, 308);
1169
907
  const entries = await getEntries();
1170
908
  const startOptions = await entries.startEntry.startInstance?.getOptions() || {};
1171
- const serializationAdapters = [
1172
- ...startOptions.serializationAdapters || [],
1173
- ServerFunctionSerializationAdapter
1174
- ];
909
+ const serializationAdapters = [...startOptions.serializationAdapters || [], ServerFunctionSerializationAdapter];
1175
910
  const requestStartOptions = {
1176
911
  ...startOptions,
1177
912
  serializationAdapters
1178
913
  };
1179
914
  const flattenedRequestMiddlewares = startOptions.requestMiddleware ? flattenMiddlewares(startOptions.requestMiddleware) : [];
1180
- const executedRequestMiddlewares = new Set(
1181
- flattenedRequestMiddlewares
1182
- );
915
+ const executedRequestMiddlewares = new Set(flattenedRequestMiddlewares);
1183
916
  const getRouter = async () => {
1184
917
  if (router) return router;
1185
918
  router = await entries.routerEntry.getRouter();
1186
919
  let isShell = IS_SHELL_ENV;
1187
- if (IS_PRERENDERING && !isShell) {
1188
- isShell = request.headers.get(HEADERS.TSS_SHELL) === "true";
1189
- }
1190
- const history = createMemoryHistory({
1191
- initialEntries: [href]
1192
- });
920
+ if (IS_PRERENDERING && !isShell) isShell = request.headers.get(HEADERS.TSS_SHELL) === "true";
921
+ const history = createMemoryHistory({ initialEntries: [href] });
1193
922
  router.update({
1194
923
  history,
1195
924
  isShell,
1196
925
  isPrerendering: IS_PRERENDERING,
1197
926
  origin: router.options.origin ?? origin,
1198
- ...{
1199
- defaultSsr: requestStartOptions.defaultSsr,
1200
- serializationAdapters: [
1201
- ...requestStartOptions.serializationAdapters,
1202
- ...router.options.serializationAdapters || []
1203
- ]
1204
- },
927
+ defaultSsr: requestStartOptions.defaultSsr,
928
+ serializationAdapters: [...requestStartOptions.serializationAdapters, ...router.options.serializationAdapters || []],
1205
929
  basepath: ROUTER_BASEPATH
1206
930
  });
1207
931
  return router;
1208
932
  };
1209
933
  if (SERVER_FN_BASE && url.pathname.startsWith(SERVER_FN_BASE)) {
1210
934
  const serverFnId = url.pathname.slice(SERVER_FN_BASE.length).split("/")[0];
1211
- if (!serverFnId) {
1212
- throw new Error("Invalid server action param for serverFnId");
1213
- }
935
+ if (!serverFnId) throw new Error("Invalid server action param for serverFnId");
1214
936
  const serverFnHandler = async ({ context }) => {
1215
- return runWithStartContext(
1216
- {
1217
- getRouter,
1218
- startOptions: requestStartOptions,
1219
- contextAfterGlobalMiddlewares: context,
1220
- request,
1221
- executedRequestMiddlewares
1222
- },
1223
- () => handleServerAction({
1224
- request,
1225
- context: requestOpts?.context,
1226
- serverFnId
1227
- })
1228
- );
937
+ return runWithStartContext({
938
+ getRouter,
939
+ startOptions: requestStartOptions,
940
+ contextAfterGlobalMiddlewares: context,
941
+ request,
942
+ executedRequestMiddlewares
943
+ }, () => handleServerAction({
944
+ request,
945
+ context: requestOpts?.context,
946
+ serverFnId
947
+ }));
1229
948
  };
1230
- const middlewares2 = flattenedRequestMiddlewares.map(
1231
- (d) => d.options.server
1232
- );
1233
- const ctx2 = await executeMiddleware([...middlewares2, serverFnHandler], {
949
+ return handleRedirectResponse((await executeMiddleware([...flattenedRequestMiddlewares.map((d) => d.options.server), serverFnHandler], {
1234
950
  request,
1235
951
  pathname: url.pathname,
1236
952
  context: createNullProtoObject(requestOpts?.context)
1237
- });
1238
- return handleRedirectResponse(ctx2.response, request, getRouter);
953
+ })).response, request, getRouter);
1239
954
  }
1240
955
  const executeRouter = async (serverContext, matchedRoutes) => {
1241
- const acceptHeader = request.headers.get("Accept") || "*/*";
1242
- const acceptParts = acceptHeader.split(",");
1243
- const supportedMimeTypes = ["*/*", "text/html"];
1244
- const isSupported = supportedMimeTypes.some(
1245
- (mimeType) => acceptParts.some((part) => part.trim().startsWith(mimeType))
1246
- );
1247
- if (!isSupported) {
1248
- return Response.json(
1249
- { error: "Only HTML requests are supported here" },
1250
- { status: 500 }
1251
- );
1252
- }
1253
- const manifest2 = await resolveManifest(
1254
- matchedRoutes,
1255
- await getTransformFn({ warmup: false, request }),
1256
- cache
1257
- );
956
+ const acceptParts = (request.headers.get("Accept") || "*/*").split(",");
957
+ if (!["*/*", "text/html"].some((mimeType) => acceptParts.some((part) => part.trim().startsWith(mimeType)))) return Response.json({ error: "Only HTML requests are supported here" }, { status: 500 });
958
+ const manifest2 = await resolveManifest(matchedRoutes, await getTransformFn({
959
+ warmup: false,
960
+ request
961
+ }), cache);
1258
962
  const routerInstance = await getRouter();
1259
963
  attachRouterServerSsrUtils({
1260
964
  router: routerInstance,
@@ -1262,13 +966,9 @@ function createStartHandler(cbOrOptions) {
1262
966
  });
1263
967
  routerInstance.update({ additionalContext: { serverContext } });
1264
968
  await routerInstance.load();
1265
- if (routerInstance.state.redirect) {
1266
- return routerInstance.state.redirect;
1267
- }
969
+ if (routerInstance.state.redirect) return routerInstance.state.redirect;
1268
970
  await routerInstance.serverSsr.dehydrate();
1269
- const responseHeaders = getStartResponseHeaders({
1270
- router: routerInstance
1271
- });
971
+ const responseHeaders = getStartResponseHeaders({ router: routerInstance });
1272
972
  cbWillCleanup = true;
1273
973
  return cb({
1274
974
  request,
@@ -1277,103 +977,66 @@ function createStartHandler(cbOrOptions) {
1277
977
  });
1278
978
  };
1279
979
  const requestHandlerMiddleware = async ({ context }) => {
1280
- return runWithStartContext(
1281
- {
1282
- getRouter,
1283
- startOptions: requestStartOptions,
1284
- contextAfterGlobalMiddlewares: context,
1285
- request,
1286
- executedRequestMiddlewares
1287
- },
1288
- async () => {
1289
- try {
1290
- return await handleServerRoutes({
1291
- getRouter,
1292
- request,
1293
- url,
1294
- executeRouter,
1295
- context,
1296
- executedRequestMiddlewares
1297
- });
1298
- } catch (err) {
1299
- if (err instanceof Response) {
1300
- return err;
1301
- }
1302
- throw err;
1303
- }
980
+ return runWithStartContext({
981
+ getRouter,
982
+ startOptions: requestStartOptions,
983
+ contextAfterGlobalMiddlewares: context,
984
+ request,
985
+ executedRequestMiddlewares
986
+ }, async () => {
987
+ try {
988
+ return await handleServerRoutes({
989
+ getRouter,
990
+ request,
991
+ url,
992
+ executeRouter,
993
+ context,
994
+ executedRequestMiddlewares
995
+ });
996
+ } catch (err) {
997
+ if (err instanceof Response) return err;
998
+ throw err;
1304
999
  }
1305
- );
1000
+ });
1306
1001
  };
1307
- const middlewares = flattenedRequestMiddlewares.map(
1308
- (d) => d.options.server
1309
- );
1310
- const ctx = await executeMiddleware(
1311
- [...middlewares, requestHandlerMiddleware],
1312
- {
1313
- request,
1314
- pathname: url.pathname,
1315
- context: createNullProtoObject(requestOpts?.context)
1316
- }
1317
- );
1318
- return handleRedirectResponse(ctx.response, request, getRouter);
1002
+ return handleRedirectResponse((await executeMiddleware([...flattenedRequestMiddlewares.map((d) => d.options.server), requestHandlerMiddleware], {
1003
+ request,
1004
+ pathname: url.pathname,
1005
+ context: createNullProtoObject(requestOpts?.context)
1006
+ })).response, request, getRouter);
1319
1007
  } finally {
1320
- if (router && !cbWillCleanup) {
1321
- router.serverSsr?.cleanup();
1322
- }
1008
+ if (router && !cbWillCleanup) router.serverSsr?.cleanup();
1323
1009
  router = null;
1324
1010
  }
1325
1011
  };
1326
1012
  return requestHandler(startRequestResolver);
1327
1013
  }
1328
1014
  async function handleRedirectResponse(response, request, getRouter) {
1329
- if (!isRedirect(response)) {
1330
- return response;
1331
- }
1015
+ if (!isRedirect(response)) return response;
1332
1016
  if (isResolvedRedirect(response)) {
1333
- if (request.headers.get("x-tsr-serverFn") === "true") {
1334
- return Response.json(
1335
- { ...response.options, isSerializedRedirect: true },
1336
- { headers: response.headers }
1337
- );
1338
- }
1017
+ if (request.headers.get("x-tsr-serverFn") === "true") return Response.json({
1018
+ ...response.options,
1019
+ isSerializedRedirect: true
1020
+ }, { headers: response.headers });
1339
1021
  return response;
1340
1022
  }
1341
1023
  const opts = response.options;
1342
- if (opts.to && typeof opts.to === "string" && !opts.to.startsWith("/")) {
1343
- throw new Error(
1344
- `Server side redirects must use absolute paths via the 'href' or 'to' options. The redirect() method's "to" property accepts an internal path only. Use the "href" property to provide an external URL. Received: ${JSON.stringify(opts)}`
1345
- );
1346
- }
1347
- if (["params", "search", "hash"].some(
1348
- (d) => typeof opts[d] === "function"
1349
- )) {
1350
- throw new Error(
1351
- `Server side redirects must use static search, params, and hash values and do not support functional values. Received functional values for: ${Object.keys(
1352
- opts
1353
- ).filter((d) => typeof opts[d] === "function").map((d) => `"${d}"`).join(", ")}`
1354
- );
1355
- }
1356
- const router = await getRouter();
1357
- const redirect = router.resolveRedirect(response);
1358
- if (request.headers.get("x-tsr-serverFn") === "true") {
1359
- return Response.json(
1360
- { ...response.options, isSerializedRedirect: true },
1361
- { headers: response.headers }
1362
- );
1363
- }
1024
+ if (opts.to && typeof opts.to === "string" && !opts.to.startsWith("/")) throw new Error(`Server side redirects must use absolute paths via the 'href' or 'to' options. The redirect() method's "to" property accepts an internal path only. Use the "href" property to provide an external URL. Received: ${JSON.stringify(opts)}`);
1025
+ if ([
1026
+ "params",
1027
+ "search",
1028
+ "hash"
1029
+ ].some((d) => typeof opts[d] === "function")) throw new Error(`Server side redirects must use static search, params, and hash values and do not support functional values. Received functional values for: ${Object.keys(opts).filter((d) => typeof opts[d] === "function").map((d) => `"${d}"`).join(", ")}`);
1030
+ const redirect = (await getRouter()).resolveRedirect(response);
1031
+ if (request.headers.get("x-tsr-serverFn") === "true") return Response.json({
1032
+ ...response.options,
1033
+ isSerializedRedirect: true
1034
+ }, { headers: response.headers });
1364
1035
  return redirect;
1365
1036
  }
1366
- async function handleServerRoutes({
1367
- getRouter,
1368
- request,
1369
- url,
1370
- executeRouter,
1371
- context,
1372
- executedRequestMiddlewares
1373
- }) {
1037
+ async function handleServerRoutes({ getRouter, request, url, executeRouter, context, executedRequestMiddlewares }) {
1374
1038
  const router = await getRouter();
1375
- const rewrittenUrl = executeRewriteInput(router.rewrite, url);
1376
- const pathname = rewrittenUrl.pathname;
1039
+ const pathname = executeRewriteInput(router.rewrite, url).pathname;
1377
1040
  const { matchedRoutes, foundRoute, routeParams } = router.getMatchedRoutes(pathname);
1378
1041
  const isExactMatch = foundRoute && routeParams["**"] === void 0;
1379
1042
  const routeMiddlewares = [];
@@ -1381,45 +1044,32 @@ async function handleServerRoutes({
1381
1044
  const serverMiddleware = route.options.server?.middleware;
1382
1045
  if (serverMiddleware) {
1383
1046
  const flattened = flattenMiddlewares(serverMiddleware);
1384
- for (const m of flattened) {
1385
- if (!executedRequestMiddlewares.has(m)) {
1386
- routeMiddlewares.push(m.options.server);
1387
- }
1388
- }
1047
+ for (const m of flattened) if (!executedRequestMiddlewares.has(m)) routeMiddlewares.push(m.options.server);
1389
1048
  }
1390
1049
  }
1391
1050
  const server2 = foundRoute?.options.server;
1392
1051
  if (server2?.handlers && isExactMatch) {
1393
1052
  const handlers = typeof server2.handlers === "function" ? server2.handlers({ createHandlers: (d) => d }) : server2.handlers;
1394
- const requestMethod = request.method.toUpperCase();
1395
- const handler = handlers[requestMethod] ?? handlers["ANY"];
1053
+ const handler = handlers[request.method.toUpperCase()] ?? handlers["ANY"];
1396
1054
  if (handler) {
1397
1055
  const mayDefer = !!foundRoute.options.component;
1398
- if (typeof handler === "function") {
1399
- routeMiddlewares.push(handlerToMiddleware(handler, mayDefer));
1400
- } else {
1056
+ if (typeof handler === "function") routeMiddlewares.push(handlerToMiddleware(handler, mayDefer));
1057
+ else {
1401
1058
  if (handler.middleware?.length) {
1402
1059
  const handlerMiddlewares = flattenMiddlewares(handler.middleware);
1403
- for (const m of handlerMiddlewares) {
1404
- routeMiddlewares.push(m.options.server);
1405
- }
1406
- }
1407
- if (handler.handler) {
1408
- routeMiddlewares.push(handlerToMiddleware(handler.handler, mayDefer));
1060
+ for (const m of handlerMiddlewares) routeMiddlewares.push(m.options.server);
1409
1061
  }
1062
+ if (handler.handler) routeMiddlewares.push(handlerToMiddleware(handler.handler, mayDefer));
1410
1063
  }
1411
1064
  }
1412
1065
  }
1413
- routeMiddlewares.push(
1414
- (ctx2) => executeRouter(ctx2.context, matchedRoutes)
1415
- );
1416
- const ctx = await executeMiddleware(routeMiddlewares, {
1066
+ routeMiddlewares.push((ctx) => executeRouter(ctx.context, matchedRoutes));
1067
+ return (await executeMiddleware(routeMiddlewares, {
1417
1068
  request,
1418
1069
  context,
1419
1070
  params: routeParams,
1420
1071
  pathname
1421
- });
1422
- return ctx.response;
1072
+ })).response;
1423
1073
  }
1424
1074
  const fetch = createStartHandler(defaultStreamHandler);
1425
1075
  function createServerEntry(entry) {