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