@tanstack/start-server-core 1.114.5

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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -0
  3. package/dist/cjs/createRequestHandler.cjs +52 -0
  4. package/dist/cjs/createRequestHandler.cjs.map +1 -0
  5. package/dist/cjs/createRequestHandler.d.cts +8 -0
  6. package/dist/cjs/createStartHandler.cjs +56 -0
  7. package/dist/cjs/createStartHandler.cjs.map +1 -0
  8. package/dist/cjs/createStartHandler.d.cts +8 -0
  9. package/dist/cjs/h3.cjs +398 -0
  10. package/dist/cjs/h3.cjs.map +1 -0
  11. package/dist/cjs/h3.d.cts +105 -0
  12. package/dist/cjs/handlerCallback.cjs +7 -0
  13. package/dist/cjs/handlerCallback.cjs.map +1 -0
  14. package/dist/cjs/handlerCallback.d.cts +10 -0
  15. package/dist/cjs/index.cjs +239 -0
  16. package/dist/cjs/index.cjs.map +1 -0
  17. package/dist/cjs/index.d.cts +6 -0
  18. package/dist/cjs/ssr-server.cjs +246 -0
  19. package/dist/cjs/ssr-server.cjs.map +1 -0
  20. package/dist/cjs/ssr-server.d.cts +29 -0
  21. package/dist/cjs/transformStreamWithRouter.cjs +183 -0
  22. package/dist/cjs/transformStreamWithRouter.cjs.map +1 -0
  23. package/dist/cjs/transformStreamWithRouter.d.cts +6 -0
  24. package/dist/cjs/tsrScript.cjs +4 -0
  25. package/dist/cjs/tsrScript.cjs.map +1 -0
  26. package/dist/cjs/tsrScript.d.cts +1 -0
  27. package/dist/esm/createRequestHandler.d.ts +8 -0
  28. package/dist/esm/createRequestHandler.js +52 -0
  29. package/dist/esm/createRequestHandler.js.map +1 -0
  30. package/dist/esm/createStartHandler.d.ts +8 -0
  31. package/dist/esm/createStartHandler.js +56 -0
  32. package/dist/esm/createStartHandler.js.map +1 -0
  33. package/dist/esm/h3.d.ts +105 -0
  34. package/dist/esm/h3.js +285 -0
  35. package/dist/esm/h3.js.map +1 -0
  36. package/dist/esm/handlerCallback.d.ts +10 -0
  37. package/dist/esm/handlerCallback.js +7 -0
  38. package/dist/esm/handlerCallback.js.map +1 -0
  39. package/dist/esm/index.d.ts +6 -0
  40. package/dist/esm/index.js +125 -0
  41. package/dist/esm/index.js.map +1 -0
  42. package/dist/esm/ssr-server.d.ts +29 -0
  43. package/dist/esm/ssr-server.js +246 -0
  44. package/dist/esm/ssr-server.js.map +1 -0
  45. package/dist/esm/transformStreamWithRouter.d.ts +6 -0
  46. package/dist/esm/transformStreamWithRouter.js +183 -0
  47. package/dist/esm/transformStreamWithRouter.js.map +1 -0
  48. package/dist/esm/tsrScript.d.ts +1 -0
  49. package/dist/esm/tsrScript.js +5 -0
  50. package/dist/esm/tsrScript.js.map +1 -0
  51. package/package.json +65 -0
  52. package/src/createRequestHandler.ts +75 -0
  53. package/src/createStartHandler.ts +82 -0
  54. package/src/h3.ts +499 -0
  55. package/src/handlerCallback.ts +22 -0
  56. package/src/index.tsx +12 -0
  57. package/src/ssr-server.ts +350 -0
  58. package/src/transformStreamWithRouter.ts +258 -0
  59. package/src/tsrScript.ts +91 -0
  60. package/src/vite-env.d.ts +4 -0
@@ -0,0 +1,105 @@
1
+ import { H3Event, appendCorsHeaders as _appendCorsHeaders, appendCorsPreflightHeaders as _appendCorsPreflightHeaders, appendHeader as _appendHeader, appendResponseHeader as _appendResponseHeader, appendResponseHeaders as _appendResponseHeaders, assertMethod as _assertMethod, clearResponseHeaders as _clearResponseHeaders, clearSession as _clearSession, defaultContentType as _defaultContentType, deleteCookie as _deleteCookie, fetchWithEvent as _fetchWithEvent, getCookie as _getCookie, getProxyRequestHeaders as _getProxyRequestHeaders, getQuery as _getQuery, getRequestFingerprint as _getRequestFingerprint, getRequestHeader as _getRequestHeader, getRequestHeaders as _getRequestHeaders, getRequestHost as _getRequestHost, getRequestIP as _getRequestIP, getRequestProtocol as _getRequestProtocol, getRequestURL as _getRequestURL, getRequestWebStream as _getRequestWebStream, getResponseHeader as _getResponseHeader, getResponseHeaders as _getResponseHeaders, getResponseStatus as _getResponseStatus, getResponseStatusText as _getResponseStatusText, getRouterParam as _getRouterParam, getRouterParams as _getRouterParams, getSession as _getSession, getValidatedQuery as _getValidatedQuery, getValidatedRouterParams as _getValidatedRouterParams, handleCacheHeaders as _handleCacheHeaders, handleCors as _handleCors, isMethod as _isMethod, isPreflightRequest as _isPreflightRequest, parseCookies as _parseCookies, proxyRequest as _proxyRequest, readBody as _readBody, readFormData as _readFormData, readMultipartFormData as _readMultipartFormData, readRawBody as _readRawBody, readValidatedBody as _readValidatedBody, removeResponseHeader as _removeResponseHeader, sealSession as _sealSession, send as _send, sendError as _sendError, sendNoContent as _sendNoContent, sendProxy as _sendProxy, sendRedirect as _sendRedirect, sendStream as _sendStream, sendWebResponse as _sendWebResponse, setCookie as _setCookie, setHeader as _setHeader, setResponseHeader as _setResponseHeader, setResponseHeaders as _setResponseHeaders, setResponseStatus as _setResponseStatus, unsealSession as _unsealSession, updateSession as _updateSession, useSession as _useSession, writeEarlyHints as _writeEarlyHints, Encoding, HTTPHeaderName, InferEventInput, _RequestMiddleware, _ResponseMiddleware } from 'h3';
2
+ declare function _setContext(event: H3Event, key: string, value: any): void;
3
+ declare function _getContext(event: H3Event, key: string): any;
4
+ export declare function defineMiddleware(options: {
5
+ onRequest?: _RequestMiddleware | Array<_RequestMiddleware>;
6
+ onBeforeResponse?: _ResponseMiddleware | Array<_ResponseMiddleware>;
7
+ }): {
8
+ onRequest?: _RequestMiddleware | Array<_RequestMiddleware>;
9
+ onBeforeResponse?: _ResponseMiddleware | Array<_ResponseMiddleware>;
10
+ };
11
+ export declare function toWebRequest(event: H3Event): Request | undefined;
12
+ export { H3Error, H3Event, MIMES, callNodeListener, createApp, createAppEventHandler, createEvent, createRouter, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, dynamicEventHandler, defineWebSocket, eventHandler, splitCookiesString, fromNodeMiddleware, fromPlainHandler, fromWebHandler, isError, isEventHandler, isWebResponse, lazyEventHandler, promisifyNodeListener, serveStatic, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, isCorsOriginAllowed, isStream, createError, sanitizeStatusCode, sanitizeStatusMessage, useBase, type AddRouteShortcuts, type App, type AppOptions, type AppUse, type CacheConditions, type CreateRouterOptions, type Duplex, type DynamicEventHandler, type Encoding, type EventHandler, type EventHandlerObject, type EventHandlerRequest, type EventHandlerResponse, type H3CorsOptions, type H3EventContext, type HTTPHeaderName, type HTTPMethod, type InferEventInput, type InputLayer, type InputStack, type Layer, type LazyEventHandler, type Matcher, type MultiPartData, type NodeEventContext, type NodeListener, type NodeMiddleware, type NodePromisifiedHandler, type PlainHandler, type PlainRequest, type PlainResponse, type ProxyOptions, type RequestFingerprintOptions, type RequestHeaders, type RouteNode, type Router, type RouterMethod, type RouterUse, type ServeStaticOptions, type Session, type SessionConfig, type SessionData, type Stack, type StaticAssetMeta, type ValidateFunction, type ValidateResult, type WebEventContext, type WebHandler, type _RequestMiddleware, type _ResponseMiddleware, } from 'h3';
13
+ export declare const HTTPEventSymbol: unique symbol;
14
+ export declare function isEvent(obj: any): obj is H3Event | {
15
+ [HTTPEventSymbol]: H3Event;
16
+ };
17
+ type Tail<T> = T extends [any, ...infer U] ? U : never;
18
+ type PrependOverload<TOriginal extends (...args: Array<any>) => any, TOverload extends (...args: Array<any>) => any> = TOverload & TOriginal;
19
+ type WrapFunction<TFn extends (...args: Array<any>) => any> = PrependOverload<TFn, (...args: Parameters<TFn> extends [H3Event, ...infer TArgs] ? TArgs : Parameters<TFn>) => ReturnType<TFn>>;
20
+ type WrappedReadRawBody = <TEncoding extends Encoding = 'utf8'>(...args: Tail<Parameters<typeof _readRawBody<TEncoding>>>) => ReturnType<typeof _readRawBody<TEncoding>>;
21
+ export declare const readRawBody: PrependOverload<typeof _readRawBody, WrappedReadRawBody>;
22
+ type WrappedReadBody = <T, TEventInput = InferEventInput<'body', H3Event, T>>(...args: Tail<Parameters<typeof _readBody<T, H3Event, TEventInput>>>) => ReturnType<typeof _readBody<T, H3Event, TEventInput>>;
23
+ export declare const readBody: PrependOverload<typeof _readBody, WrappedReadBody>;
24
+ type WrappedGetQuery = <T, TEventInput = Exclude<InferEventInput<'query', H3Event, T>, undefined>>(...args: Tail<Parameters<typeof _getQuery<T, H3Event, TEventInput>>>) => ReturnType<typeof _getQuery<T, H3Event, TEventInput>>;
25
+ export declare const getQuery: PrependOverload<typeof _getQuery, WrappedGetQuery>;
26
+ export declare const isMethod: WrapFunction<typeof _isMethod>;
27
+ export declare const isPreflightRequest: WrapFunction<typeof _isPreflightRequest>;
28
+ type WrappedGetValidatedQuery = <T, TEventInput = InferEventInput<'query', H3Event, T>>(...args: Tail<Parameters<typeof _getValidatedQuery<T, H3Event, TEventInput>>>) => ReturnType<typeof _getValidatedQuery<T, H3Event, TEventInput>>;
29
+ export declare const getValidatedQuery: PrependOverload<typeof _getValidatedQuery, WrappedGetValidatedQuery>;
30
+ export declare const getRouterParams: WrapFunction<typeof _getRouterParams>;
31
+ export declare const getRouterParam: WrapFunction<typeof _getRouterParam>;
32
+ type WrappedGetValidatedRouterParams = <T, TEventInput = InferEventInput<'routerParams', H3Event, T>>(...args: Tail<Parameters<typeof _getValidatedRouterParams<T, H3Event, TEventInput>>>) => ReturnType<typeof _getValidatedRouterParams<T, H3Event, TEventInput>>;
33
+ export declare const getValidatedRouterParams: PrependOverload<typeof _getValidatedRouterParams, WrappedGetValidatedRouterParams>;
34
+ export declare const assertMethod: WrapFunction<typeof _assertMethod>;
35
+ export declare const getRequestHeaders: WrapFunction<typeof _getRequestHeaders>;
36
+ export declare const getRequestHeader: WrapFunction<typeof _getRequestHeader>;
37
+ export declare const getRequestURL: WrapFunction<typeof _getRequestURL>;
38
+ export declare const getRequestHost: WrapFunction<typeof _getRequestHost>;
39
+ export declare const getRequestProtocol: WrapFunction<typeof _getRequestProtocol>;
40
+ export declare const getRequestIP: WrapFunction<typeof _getRequestIP>;
41
+ export declare const send: WrapFunction<typeof _send>;
42
+ export declare const sendNoContent: WrapFunction<typeof _sendNoContent>;
43
+ export declare const setResponseStatus: WrapFunction<typeof _setResponseStatus>;
44
+ export declare const getResponseStatus: WrapFunction<typeof _getResponseStatus>;
45
+ export declare const getResponseStatusText: WrapFunction<typeof _getResponseStatusText>;
46
+ export declare const getResponseHeaders: WrapFunction<typeof _getResponseHeaders>;
47
+ export declare const getResponseHeader: WrapFunction<typeof _getResponseHeader>;
48
+ export declare const setResponseHeaders: WrapFunction<typeof _setResponseHeaders>;
49
+ type WrappedSetResponseHeader = <T extends HTTPHeaderName>(...args: Tail<Parameters<typeof _setResponseHeader<T>>>) => ReturnType<typeof _setResponseHeader<T>>;
50
+ export declare const setResponseHeader: PrependOverload<typeof _setResponseHeader, WrappedSetResponseHeader>;
51
+ export declare const appendResponseHeaders: WrapFunction<typeof _appendResponseHeaders>;
52
+ type WrappedAppendResponseHeader = <T extends HTTPHeaderName>(...args: Tail<Parameters<typeof _appendResponseHeader<T>>>) => ReturnType<typeof _appendResponseHeader<T>>;
53
+ export declare const appendResponseHeader: PrependOverload<typeof _appendResponseHeader, WrappedAppendResponseHeader>;
54
+ export declare const defaultContentType: WrapFunction<typeof _defaultContentType>;
55
+ export declare const sendRedirect: WrapFunction<typeof _sendRedirect>;
56
+ export declare const sendStream: WrapFunction<typeof _sendStream>;
57
+ export declare const writeEarlyHints: WrapFunction<typeof _writeEarlyHints>;
58
+ export declare const sendError: WrapFunction<typeof _sendError>;
59
+ export declare const sendProxy: WrapFunction<typeof _sendProxy>;
60
+ export declare const proxyRequest: WrapFunction<typeof _proxyRequest>;
61
+ type WrappedFetchWithEvent = <T = unknown, TResponse = any, TFetch extends (req: RequestInfo | URL, opts?: any) => any = typeof fetch>(...args: Tail<Parameters<typeof _fetchWithEvent<T, TResponse, TFetch>>>) => ReturnType<typeof _fetchWithEvent<T, TResponse, TFetch>>;
62
+ export declare const fetchWithEvent: PrependOverload<typeof _fetchWithEvent, WrappedFetchWithEvent>;
63
+ export declare const getProxyRequestHeaders: WrapFunction<typeof _getProxyRequestHeaders>;
64
+ export declare const parseCookies: WrapFunction<typeof _parseCookies>;
65
+ export declare const getCookie: WrapFunction<typeof _getCookie>;
66
+ export declare const setCookie: WrapFunction<typeof _setCookie>;
67
+ export declare const deleteCookie: WrapFunction<typeof _deleteCookie>;
68
+ type SessionDataT = Record<string, any>;
69
+ type WrappedUseSession = <T extends SessionDataT>(...args: Tail<Parameters<typeof _useSession<T>>>) => ReturnType<typeof _useSession<T>>;
70
+ export declare const useSession: PrependOverload<typeof _useSession, WrappedUseSession>;
71
+ type WrappedGetSession = <T extends SessionDataT>(...args: Tail<Parameters<typeof _getSession<T>>>) => ReturnType<typeof _getSession<T>>;
72
+ export declare const getSession: PrependOverload<typeof _getSession, WrappedGetSession>;
73
+ type WrappedUpdateSession = <T extends SessionDataT>(...args: Tail<Parameters<typeof _updateSession<T>>>) => ReturnType<typeof _updateSession<T>>;
74
+ export declare const updateSession: PrependOverload<typeof _updateSession, WrappedUpdateSession>;
75
+ type WrappedSealSession = <T extends SessionDataT>(...args: Tail<Parameters<typeof _sealSession<T>>>) => ReturnType<typeof _sealSession<T>>;
76
+ export declare const sealSession: PrependOverload<typeof _sealSession, WrappedSealSession>;
77
+ export declare const unsealSession: WrapFunction<typeof _unsealSession>;
78
+ export declare const clearSession: WrapFunction<typeof _clearSession>;
79
+ export declare const handleCacheHeaders: WrapFunction<typeof _handleCacheHeaders>;
80
+ export declare const handleCors: WrapFunction<typeof _handleCors>;
81
+ export declare const appendCorsHeaders: WrapFunction<typeof _appendCorsHeaders>;
82
+ export declare const appendCorsPreflightHeaders: WrapFunction<typeof _appendCorsPreflightHeaders>;
83
+ export declare const sendWebResponse: WrapFunction<typeof _sendWebResponse>;
84
+ type WrappedAppendHeader = <T extends HTTPHeaderName>(...args: Tail<Parameters<typeof _appendHeader<T>>>) => ReturnType<typeof _appendHeader<T>>;
85
+ export declare const appendHeader: PrependOverload<typeof _appendHeader, WrappedAppendHeader>;
86
+ export declare const appendHeaders: WrapFunction<typeof _appendResponseHeaders>;
87
+ type WrappedSetHeader = <T extends HTTPHeaderName>(...args: Tail<Parameters<typeof _setHeader<T>>>) => ReturnType<typeof _setHeader<T>>;
88
+ export declare const setHeader: PrependOverload<typeof _setHeader, WrappedSetHeader>;
89
+ export declare const setHeaders: WrapFunction<typeof _setResponseHeaders>;
90
+ export declare const getHeader: WrapFunction<typeof _getRequestHeader>;
91
+ export declare const getHeaders: WrapFunction<typeof _getRequestHeaders>;
92
+ export declare const getRequestFingerprint: WrapFunction<typeof _getRequestFingerprint>;
93
+ export declare const getRequestWebStream: WrapFunction<typeof _getRequestWebStream>;
94
+ export declare const readFormData: WrapFunction<typeof _readFormData>;
95
+ export declare const readMultipartFormData: WrapFunction<typeof _readMultipartFormData>;
96
+ type WrappedReadValidatedBody = <T, TEventInput = InferEventInput<'body', H3Event, T>>(...args: Tail<Parameters<typeof _readValidatedBody<T, H3Event, TEventInput>>>) => ReturnType<typeof _readValidatedBody<T, H3Event, TEventInput>>;
97
+ export declare const readValidatedBody: PrependOverload<typeof _readValidatedBody, WrappedReadValidatedBody>;
98
+ export declare const removeResponseHeader: WrapFunction<typeof _removeResponseHeader>;
99
+ export declare const getContext: WrapFunction<typeof _getContext>;
100
+ export declare const setContext: WrapFunction<typeof _setContext>;
101
+ export declare const clearResponseHeaders: WrapFunction<typeof _clearResponseHeaders>;
102
+ export declare const getWebRequest: WrapFunction<typeof toWebRequest>;
103
+ export { createApp as createServer } from 'h3';
104
+ export declare function getEvent(): H3Event<import('h3').EventHandlerRequest>;
105
+ export declare function handleHTTPEvent(event: H3Event): Promise<any>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function defineHandlerCallback(handler) {
4
+ return handler;
5
+ }
6
+ exports.defineHandlerCallback = defineHandlerCallback;
7
+ //# sourceMappingURL=handlerCallback.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlerCallback.cjs","sources":["../../src/handlerCallback.ts"],"sourcesContent":["import type { EventHandlerResponse } from 'h3'\nimport type { AnyRouter } from '@tanstack/router-core'\n\nexport interface HandlerCallback<\n TRouter extends AnyRouter,\n TResponse extends EventHandlerResponse = EventHandlerResponse,\n> {\n (ctx: {\n request: Request\n router: TRouter\n responseHeaders: Headers\n }): TResponse\n}\n\nexport function defineHandlerCallback<\n TRouter extends AnyRouter,\n TResponse = EventHandlerResponse,\n>(\n handler: HandlerCallback<TRouter, TResponse>,\n): HandlerCallback<TRouter, TResponse> {\n return handler\n}\n"],"names":[],"mappings":";;AAcO,SAAS,sBAId,SACqC;AAC9B,SAAA;AACT;;"}
@@ -0,0 +1,10 @@
1
+ import { EventHandlerResponse } from 'h3';
2
+ import { AnyRouter } from '@tanstack/router-core';
3
+ export interface HandlerCallback<TRouter extends AnyRouter, TResponse extends EventHandlerResponse = EventHandlerResponse> {
4
+ (ctx: {
5
+ request: Request;
6
+ router: TRouter;
7
+ responseHeaders: Headers;
8
+ }): TResponse;
9
+ }
10
+ export declare function defineHandlerCallback<TRouter extends AnyRouter, TResponse = EventHandlerResponse>(handler: HandlerCallback<TRouter, TResponse>): HandlerCallback<TRouter, TResponse>;
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const transformStreamWithRouter = require("./transformStreamWithRouter.cjs");
4
+ const createStartHandler = require("./createStartHandler.cjs");
5
+ const createRequestHandler = require("./createRequestHandler.cjs");
6
+ const handlerCallback = require("./handlerCallback.cjs");
7
+ const h3 = require("./h3.cjs");
8
+ const h3$1 = require("h3");
9
+ exports.transformPipeableStreamWithRouter = transformStreamWithRouter.transformPipeableStreamWithRouter;
10
+ exports.transformReadableStreamWithRouter = transformStreamWithRouter.transformReadableStreamWithRouter;
11
+ exports.createStartHandler = createStartHandler.createStartHandler;
12
+ exports.createRequestHandler = createRequestHandler.createRequestHandler;
13
+ exports.defineHandlerCallback = handlerCallback.defineHandlerCallback;
14
+ exports.HTTPEventSymbol = h3.HTTPEventSymbol;
15
+ exports.appendCorsHeaders = h3.appendCorsHeaders;
16
+ exports.appendCorsPreflightHeaders = h3.appendCorsPreflightHeaders;
17
+ exports.appendHeader = h3.appendHeader;
18
+ exports.appendHeaders = h3.appendHeaders;
19
+ exports.appendResponseHeader = h3.appendResponseHeader;
20
+ exports.appendResponseHeaders = h3.appendResponseHeaders;
21
+ exports.assertMethod = h3.assertMethod;
22
+ exports.clearResponseHeaders = h3.clearResponseHeaders;
23
+ exports.clearSession = h3.clearSession;
24
+ exports.defaultContentType = h3.defaultContentType;
25
+ exports.defineMiddleware = h3.defineMiddleware;
26
+ exports.deleteCookie = h3.deleteCookie;
27
+ exports.fetchWithEvent = h3.fetchWithEvent;
28
+ exports.getContext = h3.getContext;
29
+ exports.getCookie = h3.getCookie;
30
+ exports.getEvent = h3.getEvent;
31
+ exports.getHeader = h3.getHeader;
32
+ exports.getHeaders = h3.getHeaders;
33
+ exports.getProxyRequestHeaders = h3.getProxyRequestHeaders;
34
+ exports.getQuery = h3.getQuery;
35
+ exports.getRequestFingerprint = h3.getRequestFingerprint;
36
+ exports.getRequestHeader = h3.getRequestHeader;
37
+ exports.getRequestHeaders = h3.getRequestHeaders;
38
+ exports.getRequestHost = h3.getRequestHost;
39
+ exports.getRequestIP = h3.getRequestIP;
40
+ exports.getRequestProtocol = h3.getRequestProtocol;
41
+ exports.getRequestURL = h3.getRequestURL;
42
+ exports.getRequestWebStream = h3.getRequestWebStream;
43
+ exports.getResponseHeader = h3.getResponseHeader;
44
+ exports.getResponseHeaders = h3.getResponseHeaders;
45
+ exports.getResponseStatus = h3.getResponseStatus;
46
+ exports.getResponseStatusText = h3.getResponseStatusText;
47
+ exports.getRouterParam = h3.getRouterParam;
48
+ exports.getRouterParams = h3.getRouterParams;
49
+ exports.getSession = h3.getSession;
50
+ exports.getValidatedQuery = h3.getValidatedQuery;
51
+ exports.getValidatedRouterParams = h3.getValidatedRouterParams;
52
+ exports.getWebRequest = h3.getWebRequest;
53
+ exports.handleCacheHeaders = h3.handleCacheHeaders;
54
+ exports.handleCors = h3.handleCors;
55
+ exports.handleHTTPEvent = h3.handleHTTPEvent;
56
+ exports.isEvent = h3.isEvent;
57
+ exports.isMethod = h3.isMethod;
58
+ exports.isPreflightRequest = h3.isPreflightRequest;
59
+ exports.parseCookies = h3.parseCookies;
60
+ exports.proxyRequest = h3.proxyRequest;
61
+ exports.readBody = h3.readBody;
62
+ exports.readFormData = h3.readFormData;
63
+ exports.readMultipartFormData = h3.readMultipartFormData;
64
+ exports.readRawBody = h3.readRawBody;
65
+ exports.readValidatedBody = h3.readValidatedBody;
66
+ exports.removeResponseHeader = h3.removeResponseHeader;
67
+ exports.sealSession = h3.sealSession;
68
+ exports.send = h3.send;
69
+ exports.sendError = h3.sendError;
70
+ exports.sendNoContent = h3.sendNoContent;
71
+ exports.sendProxy = h3.sendProxy;
72
+ exports.sendRedirect = h3.sendRedirect;
73
+ exports.sendStream = h3.sendStream;
74
+ exports.sendWebResponse = h3.sendWebResponse;
75
+ exports.setContext = h3.setContext;
76
+ exports.setCookie = h3.setCookie;
77
+ exports.setHeader = h3.setHeader;
78
+ exports.setHeaders = h3.setHeaders;
79
+ exports.setResponseHeader = h3.setResponseHeader;
80
+ exports.setResponseHeaders = h3.setResponseHeaders;
81
+ exports.setResponseStatus = h3.setResponseStatus;
82
+ exports.toWebRequest = h3.toWebRequest;
83
+ exports.unsealSession = h3.unsealSession;
84
+ exports.updateSession = h3.updateSession;
85
+ exports.useSession = h3.useSession;
86
+ exports.writeEarlyHints = h3.writeEarlyHints;
87
+ Object.defineProperty(exports, "H3Error", {
88
+ enumerable: true,
89
+ get: () => h3$1.H3Error
90
+ });
91
+ Object.defineProperty(exports, "H3Event", {
92
+ enumerable: true,
93
+ get: () => h3$1.H3Event
94
+ });
95
+ Object.defineProperty(exports, "MIMES", {
96
+ enumerable: true,
97
+ get: () => h3$1.MIMES
98
+ });
99
+ Object.defineProperty(exports, "callNodeListener", {
100
+ enumerable: true,
101
+ get: () => h3$1.callNodeListener
102
+ });
103
+ Object.defineProperty(exports, "createApp", {
104
+ enumerable: true,
105
+ get: () => h3$1.createApp
106
+ });
107
+ Object.defineProperty(exports, "createAppEventHandler", {
108
+ enumerable: true,
109
+ get: () => h3$1.createAppEventHandler
110
+ });
111
+ Object.defineProperty(exports, "createError", {
112
+ enumerable: true,
113
+ get: () => h3$1.createError
114
+ });
115
+ Object.defineProperty(exports, "createEvent", {
116
+ enumerable: true,
117
+ get: () => h3$1.createEvent
118
+ });
119
+ Object.defineProperty(exports, "createRouter", {
120
+ enumerable: true,
121
+ get: () => h3$1.createRouter
122
+ });
123
+ Object.defineProperty(exports, "createServer", {
124
+ enumerable: true,
125
+ get: () => h3$1.createApp
126
+ });
127
+ Object.defineProperty(exports, "defineEventHandler", {
128
+ enumerable: true,
129
+ get: () => h3$1.defineEventHandler
130
+ });
131
+ Object.defineProperty(exports, "defineLazyEventHandler", {
132
+ enumerable: true,
133
+ get: () => h3$1.defineLazyEventHandler
134
+ });
135
+ Object.defineProperty(exports, "defineNodeListener", {
136
+ enumerable: true,
137
+ get: () => h3$1.defineNodeListener
138
+ });
139
+ Object.defineProperty(exports, "defineNodeMiddleware", {
140
+ enumerable: true,
141
+ get: () => h3$1.defineNodeMiddleware
142
+ });
143
+ Object.defineProperty(exports, "defineRequestMiddleware", {
144
+ enumerable: true,
145
+ get: () => h3$1.defineRequestMiddleware
146
+ });
147
+ Object.defineProperty(exports, "defineResponseMiddleware", {
148
+ enumerable: true,
149
+ get: () => h3$1.defineResponseMiddleware
150
+ });
151
+ Object.defineProperty(exports, "defineWebSocket", {
152
+ enumerable: true,
153
+ get: () => h3$1.defineWebSocket
154
+ });
155
+ Object.defineProperty(exports, "dynamicEventHandler", {
156
+ enumerable: true,
157
+ get: () => h3$1.dynamicEventHandler
158
+ });
159
+ Object.defineProperty(exports, "eventHandler", {
160
+ enumerable: true,
161
+ get: () => h3$1.eventHandler
162
+ });
163
+ Object.defineProperty(exports, "fromNodeMiddleware", {
164
+ enumerable: true,
165
+ get: () => h3$1.fromNodeMiddleware
166
+ });
167
+ Object.defineProperty(exports, "fromPlainHandler", {
168
+ enumerable: true,
169
+ get: () => h3$1.fromPlainHandler
170
+ });
171
+ Object.defineProperty(exports, "fromWebHandler", {
172
+ enumerable: true,
173
+ get: () => h3$1.fromWebHandler
174
+ });
175
+ Object.defineProperty(exports, "isCorsOriginAllowed", {
176
+ enumerable: true,
177
+ get: () => h3$1.isCorsOriginAllowed
178
+ });
179
+ Object.defineProperty(exports, "isError", {
180
+ enumerable: true,
181
+ get: () => h3$1.isError
182
+ });
183
+ Object.defineProperty(exports, "isEventHandler", {
184
+ enumerable: true,
185
+ get: () => h3$1.isEventHandler
186
+ });
187
+ Object.defineProperty(exports, "isStream", {
188
+ enumerable: true,
189
+ get: () => h3$1.isStream
190
+ });
191
+ Object.defineProperty(exports, "isWebResponse", {
192
+ enumerable: true,
193
+ get: () => h3$1.isWebResponse
194
+ });
195
+ Object.defineProperty(exports, "lazyEventHandler", {
196
+ enumerable: true,
197
+ get: () => h3$1.lazyEventHandler
198
+ });
199
+ Object.defineProperty(exports, "promisifyNodeListener", {
200
+ enumerable: true,
201
+ get: () => h3$1.promisifyNodeListener
202
+ });
203
+ Object.defineProperty(exports, "sanitizeStatusCode", {
204
+ enumerable: true,
205
+ get: () => h3$1.sanitizeStatusCode
206
+ });
207
+ Object.defineProperty(exports, "sanitizeStatusMessage", {
208
+ enumerable: true,
209
+ get: () => h3$1.sanitizeStatusMessage
210
+ });
211
+ Object.defineProperty(exports, "serveStatic", {
212
+ enumerable: true,
213
+ get: () => h3$1.serveStatic
214
+ });
215
+ Object.defineProperty(exports, "splitCookiesString", {
216
+ enumerable: true,
217
+ get: () => h3$1.splitCookiesString
218
+ });
219
+ Object.defineProperty(exports, "toEventHandler", {
220
+ enumerable: true,
221
+ get: () => h3$1.toEventHandler
222
+ });
223
+ Object.defineProperty(exports, "toNodeListener", {
224
+ enumerable: true,
225
+ get: () => h3$1.toNodeListener
226
+ });
227
+ Object.defineProperty(exports, "toPlainHandler", {
228
+ enumerable: true,
229
+ get: () => h3$1.toPlainHandler
230
+ });
231
+ Object.defineProperty(exports, "toWebHandler", {
232
+ enumerable: true,
233
+ get: () => h3$1.toWebHandler
234
+ });
235
+ Object.defineProperty(exports, "useBase", {
236
+ enumerable: true,
237
+ get: () => h3$1.useBase
238
+ });
239
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ export { transformReadableStreamWithRouter, transformPipeableStreamWithRouter, } from './transformStreamWithRouter.cjs';
2
+ export { createStartHandler } from './createStartHandler.cjs';
3
+ export { createRequestHandler } from './createRequestHandler.cjs';
4
+ export { defineHandlerCallback } from './handlerCallback.cjs';
5
+ export type { HandlerCallback } from './handlerCallback.cjs';
6
+ export * from './h3.cjs';
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const warning = require("tiny-warning");
4
+ const routerCore = require("@tanstack/router-core");
5
+ const jsesc = require("jsesc");
6
+ const startClientCore = require("@tanstack/start-client-core");
7
+ const tsrScript = require("./tsrScript.cjs");
8
+ function attachRouterServerSsrUtils(router, manifest) {
9
+ router.ssr = {
10
+ manifest,
11
+ serializer: startClientCore.startSerializer
12
+ };
13
+ router.serverSsr = {
14
+ injectedHtml: [],
15
+ streamedKeys: /* @__PURE__ */ new Set(),
16
+ injectHtml: (getHtml) => {
17
+ const promise = Promise.resolve().then(getHtml);
18
+ router.serverSsr.injectedHtml.push(promise);
19
+ router.emit({
20
+ type: "onInjectedHtml",
21
+ promise
22
+ });
23
+ return promise.then(() => {
24
+ });
25
+ },
26
+ injectScript: (getScript, opts) => {
27
+ return router.serverSsr.injectHtml(async () => {
28
+ const script = await getScript();
29
+ return `<script class='tsr-once'>${script}${process.env.NODE_ENV === "development" && ((opts == null ? void 0 : opts.logScript) ?? true) ? `; console.info(\`Injected From Server:
30
+ ${jsesc(script, { quotes: "backtick" })}\`)` : ""}; if (typeof __TSR_SSR__ !== 'undefined') __TSR_SSR__.cleanScripts()<\/script>`;
31
+ });
32
+ },
33
+ streamValue: (key, value) => {
34
+ warning(
35
+ !router.serverSsr.streamedKeys.has(key),
36
+ "Key has already been streamed: " + key
37
+ );
38
+ router.serverSsr.streamedKeys.add(key);
39
+ router.serverSsr.injectScript(
40
+ () => `__TSR_SSR__.streamedValues['${key}'] = { value: ${jsesc(
41
+ router.ssr.serializer.stringify(value),
42
+ {
43
+ isScriptContext: true,
44
+ wrap: true,
45
+ json: true
46
+ }
47
+ )}}`
48
+ );
49
+ },
50
+ onMatchSettled
51
+ };
52
+ router.serverSsr.injectScript(() => tsrScript, {
53
+ logScript: false
54
+ });
55
+ }
56
+ function dehydrateRouter(router) {
57
+ var _a, _b;
58
+ const dehydratedRouter = {
59
+ manifest: router.ssr.manifest,
60
+ dehydratedData: (_b = (_a = router.options).dehydrate) == null ? void 0 : _b.call(_a)
61
+ };
62
+ router.serverSsr.injectScript(
63
+ () => `__TSR_SSR__.dehydrated = ${jsesc(
64
+ router.ssr.serializer.stringify(dehydratedRouter),
65
+ {
66
+ isScriptContext: true,
67
+ wrap: true,
68
+ json: true
69
+ }
70
+ )}`
71
+ );
72
+ }
73
+ function extractAsyncLoaderData(loaderData, ctx) {
74
+ const extracted = [];
75
+ const replaced = replaceBy(loaderData, (value, path) => {
76
+ if (value instanceof ReadableStream) {
77
+ const [copy1, copy2] = value.tee();
78
+ const entry = {
79
+ type: "stream",
80
+ path,
81
+ id: extracted.length,
82
+ matchIndex: ctx.match.index,
83
+ stream: copy2
84
+ };
85
+ extracted.push(entry);
86
+ return copy1;
87
+ } else if (value instanceof Promise) {
88
+ const deferredPromise = routerCore.defer(value);
89
+ const entry = {
90
+ type: "promise",
91
+ path,
92
+ id: extracted.length,
93
+ matchIndex: ctx.match.index,
94
+ promise: deferredPromise
95
+ };
96
+ extracted.push(entry);
97
+ }
98
+ return value;
99
+ });
100
+ return { replaced, extracted };
101
+ }
102
+ function onMatchSettled(opts) {
103
+ const { router, match } = opts;
104
+ let extracted = void 0;
105
+ let serializedLoaderData = void 0;
106
+ if (match.loaderData !== void 0) {
107
+ const result = extractAsyncLoaderData(match.loaderData, {
108
+ match
109
+ });
110
+ match.loaderData = result.replaced;
111
+ extracted = result.extracted;
112
+ serializedLoaderData = extracted.reduce(
113
+ (acc, entry) => {
114
+ return deepImmutableSetByPath(acc, ["temp", ...entry.path], void 0);
115
+ },
116
+ { temp: result.replaced }
117
+ ).temp;
118
+ }
119
+ const initCode = `__TSR_SSR__.initMatch(${jsesc(
120
+ {
121
+ id: match.id,
122
+ __beforeLoadContext: router.ssr.serializer.stringify(
123
+ match.__beforeLoadContext
124
+ ),
125
+ loaderData: router.ssr.serializer.stringify(serializedLoaderData),
126
+ error: router.ssr.serializer.stringify(match.error),
127
+ extracted: extracted == null ? void 0 : extracted.map((entry) => routerCore.pick(entry, ["type", "path"])),
128
+ updatedAt: match.updatedAt,
129
+ status: match.status
130
+ },
131
+ {
132
+ isScriptContext: true,
133
+ wrap: true,
134
+ json: true
135
+ }
136
+ )})`;
137
+ router.serverSsr.injectScript(() => initCode);
138
+ if (extracted) {
139
+ extracted.forEach((entry) => {
140
+ if (entry.type === "promise") return injectPromise(entry);
141
+ return injectStream(entry);
142
+ });
143
+ }
144
+ function injectPromise(entry) {
145
+ router.serverSsr.injectScript(async () => {
146
+ await entry.promise;
147
+ return `__TSR_SSR__.resolvePromise(${jsesc(
148
+ {
149
+ matchId: match.id,
150
+ id: entry.id,
151
+ promiseState: entry.promise[routerCore.TSR_DEFERRED_PROMISE]
152
+ },
153
+ {
154
+ isScriptContext: true,
155
+ wrap: true,
156
+ json: true
157
+ }
158
+ )})`;
159
+ });
160
+ }
161
+ function injectStream(entry) {
162
+ router.serverSsr.injectHtml(async () => {
163
+ try {
164
+ const reader = entry.stream.getReader();
165
+ let chunk = null;
166
+ while (!(chunk = await reader.read()).done) {
167
+ if (chunk.value) {
168
+ const code = `__TSR_SSR__.injectChunk(${jsesc(
169
+ {
170
+ matchId: match.id,
171
+ id: entry.id,
172
+ chunk: chunk.value
173
+ },
174
+ {
175
+ isScriptContext: true,
176
+ wrap: true,
177
+ json: true
178
+ }
179
+ )})`;
180
+ router.serverSsr.injectScript(() => code);
181
+ }
182
+ }
183
+ router.serverSsr.injectScript(
184
+ () => `__TSR_SSR__.closeStream(${jsesc(
185
+ {
186
+ matchId: match.id,
187
+ id: entry.id
188
+ },
189
+ {
190
+ isScriptContext: true,
191
+ wrap: true,
192
+ json: true
193
+ }
194
+ )})`
195
+ );
196
+ } catch (err) {
197
+ console.error("stream read error", err);
198
+ }
199
+ return "";
200
+ });
201
+ }
202
+ }
203
+ function deepImmutableSetByPath(obj, path, value) {
204
+ if (path.length === 0) {
205
+ return value;
206
+ }
207
+ const [key, ...rest] = path;
208
+ if (Array.isArray(obj)) {
209
+ return obj.map((item, i) => {
210
+ if (i === Number(key)) {
211
+ return deepImmutableSetByPath(item, rest, value);
212
+ }
213
+ return item;
214
+ });
215
+ }
216
+ if (routerCore.isPlainObject(obj)) {
217
+ return {
218
+ ...obj,
219
+ [key]: deepImmutableSetByPath(obj[key], rest, value)
220
+ };
221
+ }
222
+ return obj;
223
+ }
224
+ function replaceBy(obj, cb, path = []) {
225
+ if (routerCore.isPlainArray(obj)) {
226
+ return obj.map((value, i) => replaceBy(value, cb, [...path, `${i}`]));
227
+ }
228
+ if (routerCore.isPlainObject(obj)) {
229
+ const newObj2 = {};
230
+ for (const key in obj) {
231
+ newObj2[key] = replaceBy(obj[key], cb, [...path, key]);
232
+ }
233
+ return newObj2;
234
+ }
235
+ const newObj = cb(obj, path);
236
+ if (newObj !== obj) {
237
+ return newObj;
238
+ }
239
+ return obj;
240
+ }
241
+ exports.attachRouterServerSsrUtils = attachRouterServerSsrUtils;
242
+ exports.dehydrateRouter = dehydrateRouter;
243
+ exports.extractAsyncLoaderData = extractAsyncLoaderData;
244
+ exports.onMatchSettled = onMatchSettled;
245
+ exports.replaceBy = replaceBy;
246
+ //# sourceMappingURL=ssr-server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr-server.cjs","sources":["../../src/ssr-server.ts"],"sourcesContent":["import { default as warning } from 'tiny-warning'\nimport {\n TSR_DEFERRED_PROMISE,\n defer,\n isPlainArray,\n isPlainObject,\n pick,\n} from '@tanstack/router-core'\nimport jsesc from 'jsesc'\nimport { startSerializer } from '@tanstack/start-client-core'\nimport minifiedTsrBootStrapScript from './tsrScript?script-string'\nimport type {\n ClientExtractedBaseEntry,\n DehydratedRouter,\n ResolvePromiseState,\n SsrMatch,\n} from '@tanstack/start-client-core'\nimport type {\n AnyRouteMatch,\n AnyRouter,\n DeferredPromise,\n Manifest,\n} from '@tanstack/router-core'\n\nexport type ServerExtractedEntry =\n | ServerExtractedStream\n | ServerExtractedPromise\n\nexport interface ServerExtractedBaseEntry extends ClientExtractedBaseEntry {\n id: number\n matchIndex: number\n}\n\nexport interface ServerExtractedStream extends ServerExtractedBaseEntry {\n type: 'stream'\n stream: ReadableStream\n}\n\nexport interface ServerExtractedPromise extends ServerExtractedBaseEntry {\n type: 'promise'\n promise: DeferredPromise<any>\n}\n\nexport function attachRouterServerSsrUtils(\n router: AnyRouter,\n manifest: Manifest | undefined,\n) {\n router.ssr = {\n manifest,\n serializer: startSerializer,\n }\n\n router.serverSsr = {\n injectedHtml: [],\n streamedKeys: new Set(),\n injectHtml: (getHtml) => {\n const promise = Promise.resolve().then(getHtml)\n router.serverSsr!.injectedHtml.push(promise)\n router.emit({\n type: 'onInjectedHtml',\n promise,\n })\n\n return promise.then(() => {})\n },\n injectScript: (getScript, opts) => {\n return router.serverSsr!.injectHtml(async () => {\n const script = await getScript()\n return `<script class='tsr-once'>${script}${\n process.env.NODE_ENV === 'development' && (opts?.logScript ?? true)\n ? `; console.info(\\`Injected From Server:\n${jsesc(script, { quotes: 'backtick' })}\\`)`\n : ''\n }; if (typeof __TSR_SSR__ !== 'undefined') __TSR_SSR__.cleanScripts()</script>`\n })\n },\n streamValue: (key, value) => {\n warning(\n !router.serverSsr!.streamedKeys.has(key),\n 'Key has already been streamed: ' + key,\n )\n\n router.serverSsr!.streamedKeys.add(key)\n router.serverSsr!.injectScript(\n () =>\n `__TSR_SSR__.streamedValues['${key}'] = { value: ${jsesc(\n router.ssr!.serializer.stringify(value),\n {\n isScriptContext: true,\n wrap: true,\n json: true,\n },\n )}}`,\n )\n },\n onMatchSettled,\n }\n\n router.serverSsr.injectScript(() => minifiedTsrBootStrapScript, {\n logScript: false,\n })\n}\n\nexport function dehydrateRouter(router: AnyRouter) {\n const dehydratedRouter: DehydratedRouter = {\n manifest: router.ssr!.manifest,\n dehydratedData: router.options.dehydrate?.(),\n }\n\n router.serverSsr!.injectScript(\n () =>\n `__TSR_SSR__.dehydrated = ${jsesc(\n router.ssr!.serializer.stringify(dehydratedRouter),\n {\n isScriptContext: true,\n wrap: true,\n json: true,\n },\n )}`,\n )\n}\n\nexport function extractAsyncLoaderData(\n loaderData: any,\n ctx: {\n match: AnyRouteMatch\n router: AnyRouter\n },\n) {\n const extracted: Array<ServerExtractedEntry> = []\n\n const replaced = replaceBy(loaderData, (value, path) => {\n // If it's a stream, we need to tee it so we can read it multiple times\n if (value instanceof ReadableStream) {\n const [copy1, copy2] = value.tee()\n const entry: ServerExtractedStream = {\n type: 'stream',\n path,\n id: extracted.length,\n matchIndex: ctx.match.index,\n stream: copy2,\n }\n\n extracted.push(entry)\n return copy1\n } else if (value instanceof Promise) {\n const deferredPromise = defer(value)\n const entry: ServerExtractedPromise = {\n type: 'promise',\n path,\n id: extracted.length,\n matchIndex: ctx.match.index,\n promise: deferredPromise,\n }\n extracted.push(entry)\n }\n\n return value\n })\n\n return { replaced, extracted }\n}\n\nexport function onMatchSettled(opts: {\n router: AnyRouter\n match: AnyRouteMatch\n}) {\n const { router, match } = opts\n\n let extracted: Array<ServerExtractedEntry> | undefined = undefined\n let serializedLoaderData: any = undefined\n if (match.loaderData !== undefined) {\n const result = extractAsyncLoaderData(match.loaderData, {\n router,\n match,\n })\n match.loaderData = result.replaced\n extracted = result.extracted\n serializedLoaderData = extracted.reduce(\n (acc: any, entry: ServerExtractedEntry) => {\n return deepImmutableSetByPath(acc, ['temp', ...entry.path], undefined)\n },\n { temp: result.replaced },\n ).temp\n }\n\n const initCode = `__TSR_SSR__.initMatch(${jsesc(\n {\n id: match.id,\n __beforeLoadContext: router.ssr!.serializer.stringify(\n match.__beforeLoadContext,\n ),\n loaderData: router.ssr!.serializer.stringify(serializedLoaderData),\n error: router.ssr!.serializer.stringify(match.error),\n extracted: extracted?.map((entry) => pick(entry, ['type', 'path'])),\n updatedAt: match.updatedAt,\n status: match.status,\n } satisfies SsrMatch,\n {\n isScriptContext: true,\n wrap: true,\n json: true,\n },\n )})`\n\n router.serverSsr!.injectScript(() => initCode)\n\n if (extracted) {\n extracted.forEach((entry) => {\n if (entry.type === 'promise') return injectPromise(entry)\n return injectStream(entry)\n })\n }\n\n function injectPromise(entry: ServerExtractedPromise) {\n router.serverSsr!.injectScript(async () => {\n await entry.promise\n\n return `__TSR_SSR__.resolvePromise(${jsesc(\n {\n matchId: match.id,\n id: entry.id,\n promiseState: entry.promise[TSR_DEFERRED_PROMISE],\n } satisfies ResolvePromiseState,\n {\n isScriptContext: true,\n wrap: true,\n json: true,\n },\n )})`\n })\n }\n\n function injectStream(entry: ServerExtractedStream) {\n // Inject a promise that resolves when the stream is done\n // We do this to keep the stream open until we're done\n router.serverSsr!.injectHtml(async () => {\n //\n try {\n const reader = entry.stream.getReader()\n let chunk: ReadableStreamReadResult<any> | null = null\n while (!(chunk = await reader.read()).done) {\n if (chunk.value) {\n const code = `__TSR_SSR__.injectChunk(${jsesc(\n {\n matchId: match.id,\n id: entry.id,\n chunk: chunk.value,\n },\n {\n isScriptContext: true,\n wrap: true,\n json: true,\n },\n )})`\n\n router.serverSsr!.injectScript(() => code)\n }\n }\n\n router.serverSsr!.injectScript(\n () =>\n `__TSR_SSR__.closeStream(${jsesc(\n {\n matchId: match.id,\n id: entry.id,\n },\n {\n isScriptContext: true,\n wrap: true,\n json: true,\n },\n )})`,\n )\n } catch (err) {\n console.error('stream read error', err)\n }\n\n return ''\n })\n }\n}\n\nfunction deepImmutableSetByPath<T>(obj: T, path: Array<string>, value: any): T {\n // immutable set by path retaining array and object references\n if (path.length === 0) {\n return value\n }\n\n const [key, ...rest] = path\n\n if (Array.isArray(obj)) {\n return obj.map((item, i) => {\n if (i === Number(key)) {\n return deepImmutableSetByPath(item, rest, value)\n }\n return item\n }) as T\n }\n\n if (isPlainObject(obj)) {\n return {\n ...obj,\n [key!]: deepImmutableSetByPath((obj as any)[key!], rest, value),\n }\n }\n\n return obj\n}\n\nexport function replaceBy<T>(\n obj: T,\n cb: (value: any, path: Array<string>) => any,\n path: Array<string> = [],\n): T {\n if (isPlainArray(obj)) {\n return obj.map((value, i) => replaceBy(value, cb, [...path, `${i}`])) as any\n }\n\n if (isPlainObject(obj)) {\n // Do not allow objects with illegal\n const newObj: any = {}\n\n for (const key in obj) {\n newObj[key] = replaceBy(obj[key], cb, [...path, key])\n }\n\n return newObj\n }\n\n // // Detect classes, functions, and other non-serializable objects\n // // and return undefined. Exclude some known types that are serializable\n // if (\n // typeof obj === 'function' ||\n // (typeof obj === 'object' &&\n // ![Object, Promise, ReadableStream].includes((obj as any)?.constructor))\n // ) {\n // console.info(obj)\n // warning(false, `Non-serializable value ☝️ found at ${path.join('.')}`)\n // return undefined as any\n // }\n\n const newObj = cb(obj, path)\n\n if (newObj !== obj) {\n return newObj\n }\n\n return obj\n}\n"],"names":["startSerializer","minifiedTsrBootStrapScript","defer","pick","TSR_DEFERRED_PROMISE","isPlainObject","isPlainArray","newObj"],"mappings":"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"}