@tanstack/start-server-core 1.120.5 → 1.121.0-alpha.3

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/README.md +6 -27
  2. package/dist/cjs/createRequestHandler.cjs +1 -3
  3. package/dist/cjs/createRequestHandler.cjs.map +1 -1
  4. package/dist/cjs/createStartHandler.cjs +265 -31
  5. package/dist/cjs/createStartHandler.cjs.map +1 -1
  6. package/dist/cjs/createStartHandler.d.cts +8 -6
  7. package/dist/cjs/h3.cjs +30 -73
  8. package/dist/cjs/h3.cjs.map +1 -1
  9. package/dist/cjs/h3.d.cts +11 -7
  10. package/dist/cjs/handlerCallback.cjs.map +1 -1
  11. package/dist/cjs/handlerCallback.d.cts +3 -4
  12. package/dist/cjs/index.cjs +17 -14
  13. package/dist/cjs/index.cjs.map +1 -1
  14. package/dist/cjs/index.d.cts +6 -1
  15. package/dist/cjs/router-manifest.cjs +44 -0
  16. package/dist/cjs/router-manifest.cjs.map +1 -0
  17. package/dist/cjs/router-manifest.d.cts +17 -0
  18. package/dist/cjs/server-functions-handler.cjs +145 -0
  19. package/dist/cjs/server-functions-handler.cjs.map +1 -0
  20. package/dist/cjs/server-functions-handler.d.cts +3 -0
  21. package/dist/cjs/serverRoute.cjs +100 -0
  22. package/dist/cjs/serverRoute.cjs.map +1 -0
  23. package/dist/cjs/serverRoute.d.cts +115 -0
  24. package/dist/cjs/ssr-server.cjs +3 -2
  25. package/dist/cjs/ssr-server.cjs.map +1 -1
  26. package/dist/esm/createRequestHandler.js +1 -3
  27. package/dist/esm/createRequestHandler.js.map +1 -1
  28. package/dist/esm/createStartHandler.d.ts +8 -6
  29. package/dist/esm/createStartHandler.js +245 -33
  30. package/dist/esm/createStartHandler.js.map +1 -1
  31. package/dist/esm/h3.d.ts +11 -7
  32. package/dist/esm/h3.js +26 -63
  33. package/dist/esm/h3.js.map +1 -1
  34. package/dist/esm/handlerCallback.d.ts +3 -4
  35. package/dist/esm/handlerCallback.js.map +1 -1
  36. package/dist/esm/index.d.ts +6 -1
  37. package/dist/esm/index.js +14 -5
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/router-manifest.d.ts +17 -0
  40. package/dist/esm/router-manifest.js +44 -0
  41. package/dist/esm/router-manifest.js.map +1 -0
  42. package/dist/esm/server-functions-handler.d.ts +3 -0
  43. package/dist/esm/server-functions-handler.js +145 -0
  44. package/dist/esm/server-functions-handler.js.map +1 -0
  45. package/dist/esm/serverRoute.d.ts +115 -0
  46. package/dist/esm/serverRoute.js +100 -0
  47. package/dist/esm/serverRoute.js.map +1 -0
  48. package/dist/esm/ssr-server.js +3 -2
  49. package/dist/esm/ssr-server.js.map +1 -1
  50. package/package.json +8 -6
  51. package/src/createRequestHandler.ts +1 -3
  52. package/src/createStartHandler.ts +373 -47
  53. package/src/h3.ts +71 -78
  54. package/src/handlerCallback.ts +5 -12
  55. package/src/index.tsx +11 -1
  56. package/src/router-manifest.ts +79 -0
  57. package/src/server-functions-handler.ts +260 -0
  58. package/src/serverRoute.ts +661 -0
  59. package/src/ssr-server.ts +2 -0
  60. package/src/tanstack-start.d.ts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"h3.cjs","sources":["../../src/h3.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\nimport {\n H3Event,\n appendCorsHeaders as _appendCorsHeaders,\n appendCorsPreflightHeaders as _appendCorsPreflightHeaders,\n appendHeader as _appendHeader,\n appendHeaders as _appendHeaders,\n appendResponseHeader as _appendResponseHeader,\n appendResponseHeaders as _appendResponseHeaders,\n assertMethod as _assertMethod,\n clearResponseHeaders as _clearResponseHeaders,\n clearSession as _clearSession,\n defaultContentType as _defaultContentType,\n deleteCookie as _deleteCookie,\n fetchWithEvent as _fetchWithEvent,\n getCookie as _getCookie,\n getHeader as _getHeader,\n getHeaders as _getHeaders,\n getProxyRequestHeaders as _getProxyRequestHeaders,\n getQuery as _getQuery,\n getRequestFingerprint as _getRequestFingerprint,\n getRequestHeader as _getRequestHeader,\n getRequestHeaders as _getRequestHeaders,\n getRequestHost as _getRequestHost,\n getRequestIP as _getRequestIP,\n getRequestProtocol as _getRequestProtocol,\n getRequestURL as _getRequestURL,\n getRequestWebStream as _getRequestWebStream,\n getResponseHeader as _getResponseHeader,\n getResponseHeaders as _getResponseHeaders,\n getResponseStatus as _getResponseStatus,\n getResponseStatusText as _getResponseStatusText,\n getRouterParam as _getRouterParam,\n getRouterParams as _getRouterParams,\n getSession as _getSession,\n getValidatedQuery as _getValidatedQuery,\n getValidatedRouterParams as _getValidatedRouterParams,\n handleCacheHeaders as _handleCacheHeaders,\n handleCors as _handleCors,\n isMethod as _isMethod,\n isPreflightRequest as _isPreflightRequest,\n parseCookies as _parseCookies,\n proxyRequest as _proxyRequest,\n readBody as _readBody,\n readFormData as _readFormData,\n readMultipartFormData as _readMultipartFormData,\n readRawBody as _readRawBody,\n readValidatedBody as _readValidatedBody,\n removeResponseHeader as _removeResponseHeader,\n sealSession as _sealSession,\n send as _send,\n sendError as _sendError,\n sendNoContent as _sendNoContent,\n sendProxy as _sendProxy,\n sendRedirect as _sendRedirect,\n sendStream as _sendStream,\n sendWebResponse as _sendWebResponse,\n setCookie as _setCookie,\n setHeader as _setHeader,\n setHeaders as _setHeaders,\n setResponseHeader as _setResponseHeader,\n setResponseHeaders as _setResponseHeaders,\n setResponseStatus as _setResponseStatus,\n unsealSession as _unsealSession,\n updateSession as _updateSession,\n useSession as _useSession,\n writeEarlyHints as _writeEarlyHints,\n} from 'h3'\nimport { getContext as getUnctxContext } from 'unctx'\nimport type {\n Encoding,\n HTTPHeaderName,\n InferEventInput,\n _RequestMiddleware,\n _ResponseMiddleware,\n} from 'h3'\n\nfunction _setContext(event: H3Event, key: string, value: any) {\n event.context[key] = value\n}\n\nfunction _getContext(event: H3Event, key: string) {\n return event.context[key]\n}\n\nexport function defineMiddleware(options: {\n onRequest?: _RequestMiddleware | Array<_RequestMiddleware>\n onBeforeResponse?: _ResponseMiddleware | Array<_ResponseMiddleware>\n}) {\n return options\n}\n\nfunction toWebRequestH3(event: H3Event) {\n /**\n * @type {ReadableStream | undefined}\n */\n let readableStream: ReadableStream | undefined\n\n const url = getRequestURL(event)\n const base = {\n // @ts-ignore Undici option\n duplex: 'half',\n method: event.method,\n headers: event.headers,\n }\n\n if ((event.node.req as any).body instanceof ArrayBuffer) {\n return new Request(url, {\n ...base,\n body: (event.node.req as any).body,\n })\n }\n\n return new Request(url, {\n ...base,\n get body() {\n if (readableStream) {\n return readableStream\n }\n readableStream = getRequestWebStream(event)\n return readableStream\n },\n })\n}\n\nexport function toWebRequest(event: H3Event) {\n event.web ??= {\n request: toWebRequestH3(event),\n url: getRequestURL(event),\n }\n return event.web.request\n}\n\nexport {\n H3Error,\n H3Event,\n MIMES,\n callNodeListener,\n createApp,\n createAppEventHandler,\n createEvent,\n createRouter,\n defineEventHandler,\n defineLazyEventHandler,\n defineNodeListener,\n defineNodeMiddleware,\n defineRequestMiddleware,\n defineResponseMiddleware,\n dynamicEventHandler,\n defineWebSocket,\n eventHandler,\n splitCookiesString,\n fromNodeMiddleware,\n fromPlainHandler,\n fromWebHandler,\n isError,\n isEventHandler,\n isWebResponse,\n lazyEventHandler,\n promisifyNodeListener,\n serveStatic,\n toEventHandler,\n toNodeListener,\n toPlainHandler,\n toWebHandler,\n isCorsOriginAllowed,\n isStream,\n createError,\n sanitizeStatusCode,\n sanitizeStatusMessage,\n useBase,\n type AddRouteShortcuts,\n type App,\n type AppOptions,\n type AppUse,\n type CacheConditions,\n type CreateRouterOptions,\n type Duplex,\n type DynamicEventHandler,\n type Encoding,\n type EventHandler,\n type EventHandlerObject,\n type EventHandlerRequest,\n type EventHandlerResponse,\n type H3CorsOptions,\n type H3EventContext,\n type HTTPHeaderName,\n type HTTPMethod,\n type InferEventInput,\n type InputLayer,\n type InputStack,\n type Layer,\n type LazyEventHandler,\n type Matcher,\n type MultiPartData,\n type NodeEventContext,\n type NodeListener,\n type NodeMiddleware,\n type NodePromisifiedHandler,\n type PlainHandler,\n type PlainRequest,\n type PlainResponse,\n type ProxyOptions,\n type RequestFingerprintOptions,\n type RequestHeaders,\n type RouteNode,\n type Router,\n type RouterMethod,\n type RouterUse,\n type ServeStaticOptions,\n type Session,\n type SessionConfig,\n type SessionData,\n type Stack,\n type StaticAssetMeta,\n type ValidateFunction,\n type ValidateResult,\n type WebEventContext,\n type WebHandler,\n type _RequestMiddleware,\n type _ResponseMiddleware,\n} from 'h3'\n\nfunction getHTTPEvent() {\n return getEvent()\n}\n\nexport const HTTPEventSymbol = Symbol('$HTTPEvent')\n\nexport function isEvent(\n obj: any,\n): obj is H3Event | { [HTTPEventSymbol]: H3Event } {\n return (\n typeof obj === 'object' &&\n (obj instanceof H3Event ||\n obj?.[HTTPEventSymbol] instanceof H3Event ||\n obj?.__is_event__ === true)\n )\n // Implement logic to check if obj is an H3Event\n}\n\ntype Tail<T> = T extends [any, ...infer U] ? U : never\n\ntype PrependOverload<\n TOriginal extends (...args: Array<any>) => any,\n TOverload extends (...args: Array<any>) => any,\n> = TOverload & TOriginal\n\n// add an overload to the function without the event argument\ntype WrapFunction<TFn extends (...args: Array<any>) => any> = PrependOverload<\n TFn,\n (\n ...args: Parameters<TFn> extends [H3Event, ...infer TArgs]\n ? TArgs\n : Parameters<TFn>\n ) => ReturnType<TFn>\n>\n\nfunction createWrapperFunction<TFn extends (...args: Array<any>) => any>(\n h3Function: TFn,\n): WrapFunction<TFn> {\n return function (...args: Array<any>) {\n const event = args[0]\n if (!isEvent(event)) {\n if (!(globalThis as any).app.config.server.experimental?.asyncContext) {\n throw new Error(\n 'AsyncLocalStorage was not enabled. Use the `server.experimental.asyncContext: true` option in your app configuration to enable it. Or, pass the instance of HTTPEvent that you have as the first argument to the function.',\n )\n }\n args.unshift(getHTTPEvent())\n } else {\n args[0] =\n event instanceof H3Event || (event as any).__is_event__\n ? event\n : event[HTTPEventSymbol]\n }\n\n return (h3Function as any)(...args)\n } as any\n}\n\n// Creating wrappers for each utility and exporting them with their original names\ntype WrappedReadRawBody = <TEncoding extends Encoding = 'utf8'>(\n ...args: Tail<Parameters<typeof _readRawBody<TEncoding>>>\n) => ReturnType<typeof _readRawBody<TEncoding>>\nexport const readRawBody: PrependOverload<\n typeof _readRawBody,\n WrappedReadRawBody\n> = createWrapperFunction(_readRawBody)\ntype WrappedReadBody = <T, TEventInput = InferEventInput<'body', H3Event, T>>(\n ...args: Tail<Parameters<typeof _readBody<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _readBody<T, H3Event, TEventInput>>\nexport const readBody: PrependOverload<typeof _readBody, WrappedReadBody> =\n createWrapperFunction(_readBody)\ntype WrappedGetQuery = <\n T,\n TEventInput = Exclude<InferEventInput<'query', H3Event, T>, undefined>,\n>(\n ...args: Tail<Parameters<typeof _getQuery<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _getQuery<T, H3Event, TEventInput>>\nexport const getQuery: PrependOverload<typeof _getQuery, WrappedGetQuery> =\n createWrapperFunction(_getQuery)\nexport const isMethod = createWrapperFunction(_isMethod)\nexport const isPreflightRequest = createWrapperFunction(_isPreflightRequest)\ntype WrappedGetValidatedQuery = <\n T,\n TEventInput = InferEventInput<'query', H3Event, T>,\n>(\n ...args: Tail<Parameters<typeof _getValidatedQuery<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _getValidatedQuery<T, H3Event, TEventInput>>\nexport const getValidatedQuery: PrependOverload<\n typeof _getValidatedQuery,\n WrappedGetValidatedQuery\n> = createWrapperFunction(_getValidatedQuery)\nexport const getRouterParams = createWrapperFunction(_getRouterParams)\nexport const getRouterParam = createWrapperFunction(_getRouterParam)\ntype WrappedGetValidatedRouterParams = <\n T,\n TEventInput = InferEventInput<'routerParams', H3Event, T>,\n>(\n ...args: Tail<\n Parameters<typeof _getValidatedRouterParams<T, H3Event, TEventInput>>\n >\n) => ReturnType<typeof _getValidatedRouterParams<T, H3Event, TEventInput>>\nexport const getValidatedRouterParams: PrependOverload<\n typeof _getValidatedRouterParams,\n WrappedGetValidatedRouterParams\n> = createWrapperFunction(_getValidatedRouterParams)\nexport const assertMethod = createWrapperFunction(_assertMethod)\nexport const getRequestHeaders = createWrapperFunction(_getRequestHeaders)\nexport const getRequestHeader = createWrapperFunction(_getRequestHeader)\nexport const getRequestURL = createWrapperFunction(_getRequestURL)\nexport const getRequestHost = createWrapperFunction(_getRequestHost)\nexport const getRequestProtocol = createWrapperFunction(_getRequestProtocol)\nexport const getRequestIP = createWrapperFunction(_getRequestIP)\nexport const send = createWrapperFunction(_send)\nexport const sendNoContent = createWrapperFunction(_sendNoContent)\nexport const setResponseStatus = createWrapperFunction(_setResponseStatus)\nexport const getResponseStatus = createWrapperFunction(_getResponseStatus)\nexport const getResponseStatusText = createWrapperFunction(\n _getResponseStatusText,\n)\nexport const getResponseHeaders = createWrapperFunction(_getResponseHeaders)\nexport const getResponseHeader = createWrapperFunction(_getResponseHeader)\nexport const setResponseHeaders = createWrapperFunction(_setResponseHeaders)\ntype WrappedSetResponseHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _setResponseHeader<T>>>\n) => ReturnType<typeof _setResponseHeader<T>>\nexport const setResponseHeader: PrependOverload<\n typeof _setResponseHeader,\n WrappedSetResponseHeader\n> = createWrapperFunction(_setResponseHeader)\nexport const appendResponseHeaders = createWrapperFunction(\n _appendResponseHeaders,\n)\ntype WrappedAppendResponseHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _appendResponseHeader<T>>>\n) => ReturnType<typeof _appendResponseHeader<T>>\nexport const appendResponseHeader: PrependOverload<\n typeof _appendResponseHeader,\n WrappedAppendResponseHeader\n> = createWrapperFunction(_appendResponseHeader)\nexport const defaultContentType = createWrapperFunction(_defaultContentType)\nexport const sendRedirect = createWrapperFunction(_sendRedirect)\nexport const sendStream = createWrapperFunction(_sendStream)\nexport const writeEarlyHints = createWrapperFunction(_writeEarlyHints)\nexport const sendError = createWrapperFunction(_sendError)\nexport const sendProxy = createWrapperFunction(_sendProxy)\nexport const proxyRequest = createWrapperFunction(_proxyRequest)\ntype WrappedFetchWithEvent = <\n T = unknown,\n TResponse = any,\n TFetch extends (req: RequestInfo | URL, opts?: any) => any = typeof fetch,\n>(\n ...args: Tail<Parameters<typeof _fetchWithEvent<T, TResponse, TFetch>>>\n) => ReturnType<typeof _fetchWithEvent<T, TResponse, TFetch>>\nexport const fetchWithEvent: PrependOverload<\n typeof _fetchWithEvent,\n WrappedFetchWithEvent\n> = createWrapperFunction(_fetchWithEvent)\nexport const getProxyRequestHeaders = createWrapperFunction(\n _getProxyRequestHeaders,\n)\n\nexport const parseCookies = createWrapperFunction(_parseCookies)\nexport const getCookie = createWrapperFunction(_getCookie)\nexport const setCookie = createWrapperFunction(_setCookie)\nexport const deleteCookie = createWrapperFunction(_deleteCookie)\n// not exported :(\ntype SessionDataT = Record<string, any>\ntype WrappedUseSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _useSession<T>>>\n) => ReturnType<typeof _useSession<T>>\n// we need to `as` these because the WrapFunction doesn't work for them\n// because they also accept CompatEvent instead of H3Event\nexport const useSession = createWrapperFunction(_useSession) as PrependOverload<\n typeof _useSession,\n WrappedUseSession\n>\ntype WrappedGetSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _getSession<T>>>\n) => ReturnType<typeof _getSession<T>>\nexport const getSession = createWrapperFunction(_getSession) as PrependOverload<\n typeof _getSession,\n WrappedGetSession\n>\ntype WrappedUpdateSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _updateSession<T>>>\n) => ReturnType<typeof _updateSession<T>>\nexport const updateSession: PrependOverload<\n typeof _updateSession,\n WrappedUpdateSession\n> = createWrapperFunction(_updateSession)\ntype WrappedSealSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _sealSession<T>>>\n) => ReturnType<typeof _sealSession<T>>\nexport const sealSession = createWrapperFunction(\n _sealSession,\n) as PrependOverload<typeof _sealSession, WrappedSealSession>\nexport const unsealSession = createWrapperFunction(_unsealSession)\nexport const clearSession = createWrapperFunction(_clearSession)\nexport const handleCacheHeaders = createWrapperFunction(_handleCacheHeaders)\nexport const handleCors = createWrapperFunction(_handleCors)\nexport const appendCorsHeaders = createWrapperFunction(_appendCorsHeaders)\nexport const appendCorsPreflightHeaders = createWrapperFunction(\n _appendCorsPreflightHeaders,\n)\nexport const sendWebResponse = createWrapperFunction(_sendWebResponse)\ntype WrappedAppendHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _appendHeader<T>>>\n) => ReturnType<typeof _appendHeader<T>>\nexport const appendHeader: PrependOverload<\n typeof _appendHeader,\n WrappedAppendHeader\n> = createWrapperFunction(_appendHeader)\nexport const appendHeaders = createWrapperFunction(_appendHeaders)\ntype WrappedSetHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _setHeader<T>>>\n) => ReturnType<typeof _setHeader<T>>\nexport const setHeader: PrependOverload<typeof _setHeader, WrappedSetHeader> =\n createWrapperFunction(_setHeader)\nexport const setHeaders = createWrapperFunction(_setHeaders)\nexport const getHeader = createWrapperFunction(_getHeader)\nexport const getHeaders = createWrapperFunction(_getHeaders)\nexport const getRequestFingerprint = createWrapperFunction(\n _getRequestFingerprint,\n)\nexport const getRequestWebStream = createWrapperFunction(_getRequestWebStream)\nexport const readFormData = createWrapperFunction(_readFormData)\nexport const readMultipartFormData = createWrapperFunction(\n _readMultipartFormData,\n)\ntype WrappedReadValidatedBody = <\n T,\n TEventInput = InferEventInput<'body', H3Event, T>,\n>(\n ...args: Tail<Parameters<typeof _readValidatedBody<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _readValidatedBody<T, H3Event, TEventInput>>\nexport const readValidatedBody: PrependOverload<\n typeof _readValidatedBody,\n WrappedReadValidatedBody\n> = createWrapperFunction(_readValidatedBody)\nexport const removeResponseHeader = createWrapperFunction(_removeResponseHeader)\nexport const getContext = createWrapperFunction(_getContext)\nexport const setContext = createWrapperFunction(_setContext)\n\nexport const clearResponseHeaders = createWrapperFunction(_clearResponseHeaders)\n\nexport const getWebRequest = createWrapperFunction(toWebRequest)\n\nexport { createApp as createServer } from 'h3'\n\nfunction getNitroAsyncContext() {\n const nitroAsyncContext = getUnctxContext('nitro-app', {\n asyncContext: (globalThis as any).app.config.server.experimental\n ?.asyncContext\n ? true\n : false,\n AsyncLocalStorage,\n })\n\n return nitroAsyncContext\n}\n\nexport function getEvent() {\n const event = (getNitroAsyncContext().use() as any).event as\n | H3Event\n | undefined\n if (!event) {\n throw new Error(\n `No HTTPEvent found in AsyncLocalStorage. Make sure you are using the function within the server runtime.`,\n )\n }\n return event\n}\n\nexport async function handleHTTPEvent(event: H3Event) {\n return await (globalThis as any).$handle(event)\n}\n"],"names":["H3Event","_readRawBody","_readBody","_getQuery","_isMethod","_isPreflightRequest","_getValidatedQuery","_getRouterParams","_getRouterParam","_getValidatedRouterParams","_assertMethod","_getRequestHeaders","_getRequestHeader","_getRequestURL","_getRequestHost","_getRequestProtocol","_getRequestIP","_send","_sendNoContent","_setResponseStatus","_getResponseStatus","_getResponseStatusText","_getResponseHeaders","_getResponseHeader","_setResponseHeaders","_setResponseHeader","_appendResponseHeaders","_appendResponseHeader","_defaultContentType","_sendRedirect","_sendStream","_writeEarlyHints","_sendError","_sendProxy","_proxyRequest","_fetchWithEvent","_getProxyRequestHeaders","_parseCookies","_getCookie","_setCookie","_deleteCookie","_useSession","_getSession","_updateSession","_sealSession","_unsealSession","_clearSession","_handleCacheHeaders","_handleCors","_appendCorsHeaders","_appendCorsPreflightHeaders","_sendWebResponse","_appendHeader","_appendHeaders","_setHeader","_setHeaders","_getHeader","_getHeaders","_getRequestFingerprint","_getRequestWebStream","_readFormData","_readMultipartFormData","_readValidatedBody","_removeResponseHeader","_clearResponseHeaders","getUnctxContext","AsyncLocalStorage"],"mappings":"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"}
1
+ {"version":3,"file":"h3.cjs","sources":["../../src/h3.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\nimport {\n H3Event,\n appendCorsHeaders as _appendCorsHeaders,\n appendCorsPreflightHeaders as _appendCorsPreflightHeaders,\n appendHeader as _appendHeader,\n appendHeaders as _appendHeaders,\n appendResponseHeader as _appendResponseHeader,\n appendResponseHeaders as _appendResponseHeaders,\n assertMethod as _assertMethod,\n clearResponseHeaders as _clearResponseHeaders,\n clearSession as _clearSession,\n defaultContentType as _defaultContentType,\n defineEventHandler as _defineEventHandler,\n deleteCookie as _deleteCookie,\n eventHandler as _eventHandler,\n fetchWithEvent as _fetchWithEvent,\n getCookie as _getCookie,\n getHeader as _getHeader,\n getHeaders as _getHeaders,\n getProxyRequestHeaders as _getProxyRequestHeaders,\n getQuery as _getQuery,\n getRequestFingerprint as _getRequestFingerprint,\n getRequestHeader as _getRequestHeader,\n getRequestHeaders as _getRequestHeaders,\n getRequestHost as _getRequestHost,\n getRequestIP as _getRequestIP,\n getRequestProtocol as _getRequestProtocol,\n getRequestURL as _getRequestURL,\n getRequestWebStream as _getRequestWebStream,\n getResponseHeader as _getResponseHeader,\n getResponseHeaders as _getResponseHeaders,\n getResponseStatus as _getResponseStatus,\n getResponseStatusText as _getResponseStatusText,\n getRouterParam as _getRouterParam,\n getRouterParams as _getRouterParams,\n getSession as _getSession,\n getValidatedQuery as _getValidatedQuery,\n getValidatedRouterParams as _getValidatedRouterParams,\n handleCacheHeaders as _handleCacheHeaders,\n handleCors as _handleCors,\n isMethod as _isMethod,\n isPreflightRequest as _isPreflightRequest,\n parseCookies as _parseCookies,\n proxyRequest as _proxyRequest,\n readBody as _readBody,\n readFormData as _readFormData,\n readMultipartFormData as _readMultipartFormData,\n readRawBody as _readRawBody,\n readValidatedBody as _readValidatedBody,\n removeResponseHeader as _removeResponseHeader,\n sealSession as _sealSession,\n send as _send,\n sendError as _sendError,\n sendNoContent as _sendNoContent,\n sendProxy as _sendProxy,\n sendRedirect as _sendRedirect,\n sendStream as _sendStream,\n sendWebResponse as _sendWebResponse,\n setCookie as _setCookie,\n setHeader as _setHeader,\n setHeaders as _setHeaders,\n setResponseHeader as _setResponseHeader,\n setResponseHeaders as _setResponseHeaders,\n setResponseStatus as _setResponseStatus,\n toWebRequest as _toWebRequest,\n unsealSession as _unsealSession,\n updateSession as _updateSession,\n useSession as _useSession,\n writeEarlyHints as _writeEarlyHints,\n} from 'h3'\n\nimport type {\n Encoding,\n EventHandler,\n HTTPHeaderName,\n InferEventInput,\n _RequestMiddleware,\n _ResponseMiddleware,\n} from 'h3'\n\nconst eventStorage = new AsyncLocalStorage()\n\nfunction _setContext(event: H3Event, key: string, value: any) {\n event.context[key] = value\n}\n\nfunction _getContext(event: H3Event, key: string) {\n return event.context[key]\n}\n\nexport function defineMiddleware(options: {\n onRequest?: _RequestMiddleware | Array<_RequestMiddleware>\n onBeforeResponse?: _ResponseMiddleware | Array<_ResponseMiddleware>\n}) {\n return options\n}\n\n// function toWebRequestH3(event: H3Event) {\n// /**\n// * @type {ReadableStream | undefined}\n// */\n// let readableStream: ReadableStream | undefined\n\n// const url = _getRequestURL(event)\n// const base = {\n// // @ts-ignore Undici option\n// duplex: 'half',\n// method: event.method,\n// headers: event.headers,\n// }\n\n// if ((event.node.req as any).body instanceof ArrayBuffer) {\n// return new Request(url, {\n// ...base,\n// body: (event.node.req as any).body,\n// })\n// }\n\n// return new Request(url, {\n// ...base,\n// get body() {\n// if (readableStream) {\n// return readableStream\n// }\n// readableStream = _getRequestWebStream(event)\n// return readableStream\n// },\n// })\n// }\n\nexport {\n H3Error,\n H3Event,\n MIMES,\n callNodeListener,\n createApp,\n createAppEventHandler,\n createEvent,\n createRouter,\n defineLazyEventHandler,\n defineNodeListener,\n defineNodeMiddleware,\n defineRequestMiddleware,\n defineResponseMiddleware,\n dynamicEventHandler,\n defineWebSocket,\n splitCookiesString,\n fromNodeMiddleware,\n fromPlainHandler,\n fromWebHandler,\n isError,\n isEventHandler,\n isWebResponse,\n lazyEventHandler,\n promisifyNodeListener,\n serveStatic,\n toEventHandler,\n toNodeListener,\n toPlainHandler,\n toWebHandler,\n toWebRequest,\n isCorsOriginAllowed,\n isStream,\n createError,\n sanitizeStatusCode,\n sanitizeStatusMessage,\n useBase,\n type AddRouteShortcuts,\n type App,\n type AppOptions,\n type AppUse,\n type CacheConditions,\n type CreateRouterOptions,\n type Duplex,\n type DynamicEventHandler,\n type Encoding,\n type EventHandler,\n type EventHandlerObject,\n type EventHandlerRequest,\n type EventHandlerResponse,\n type H3CorsOptions,\n type H3EventContext,\n type HTTPHeaderName,\n type HTTPMethod,\n type InferEventInput,\n type InputLayer,\n type InputStack,\n type Layer,\n type LazyEventHandler,\n type Matcher,\n type MultiPartData,\n type NodeEventContext,\n type NodeListener,\n type NodeMiddleware,\n type NodePromisifiedHandler,\n type PlainHandler,\n type PlainRequest,\n type PlainResponse,\n type ProxyOptions,\n type RequestFingerprintOptions,\n type RequestHeaders,\n type RouteNode,\n type Router,\n type RouterMethod,\n type RouterUse,\n type ServeStaticOptions,\n type Session,\n type SessionConfig,\n type SessionData,\n type Stack,\n type StaticAssetMeta,\n type ValidateFunction,\n type ValidateResult,\n type WebEventContext,\n type WebHandler,\n type _RequestMiddleware,\n type _ResponseMiddleware,\n} from 'h3'\n\nexport function defineEventHandler(handler: EventHandler) {\n return _defineEventHandler((event) => {\n return runWithEvent(event, () => handler(event))\n })\n}\n\nexport function eventHandler(handler: EventHandler) {\n return _eventHandler((event) => {\n return runWithEvent(event, () => handler(event))\n })\n}\n\nexport async function runWithEvent<T>(\n event: H3Event,\n fn: () => T | Promise<T>,\n): Promise<T> {\n return eventStorage.run(event, fn)\n}\n\nexport function getEvent() {\n const event = eventStorage.getStore() as H3Event | undefined\n if (!event) {\n throw new Error(\n `No HTTPEvent found in AsyncLocalStorage. Make sure you are using the function within the server runtime.`,\n )\n }\n return event\n}\n\nexport const HTTPEventSymbol = Symbol('$HTTPEvent')\n\nexport function isEvent(\n obj: any,\n): obj is H3Event | { [HTTPEventSymbol]: H3Event } {\n return (\n typeof obj === 'object' &&\n (obj instanceof H3Event ||\n obj?.[HTTPEventSymbol] instanceof H3Event ||\n obj?.__is_event__ === true)\n )\n // Implement logic to check if obj is an H3Event\n}\n\ntype Tail<T> = T extends [any, ...infer U] ? U : never\n\ntype PrependOverload<\n TOriginal extends (...args: Array<any>) => any,\n TOverload extends (...args: Array<any>) => any,\n> = TOverload & TOriginal\n\n// add an overload to the function without the event argument\ntype WrapFunction<TFn extends (...args: Array<any>) => any> = PrependOverload<\n TFn,\n (\n ...args: Parameters<TFn> extends [H3Event, ...infer TArgs]\n ? TArgs\n : Parameters<TFn>\n ) => ReturnType<TFn>\n>\n\nfunction createWrapperFunction<TFn extends (...args: Array<any>) => any>(\n h3Function: TFn,\n): WrapFunction<TFn> {\n return function (...args: Array<any>) {\n const event = args[0]\n if (!isEvent(event)) {\n args.unshift(getEvent())\n } else {\n args[0] =\n event instanceof H3Event || (event as any).__is_event__\n ? event\n : event[HTTPEventSymbol]\n }\n\n return (h3Function as any)(...args)\n } as any\n}\n\n// Creating wrappers for each utility and exporting them with their original names\ntype WrappedReadRawBody = <TEncoding extends Encoding = 'utf8'>(\n ...args: Tail<Parameters<typeof _readRawBody<TEncoding>>>\n) => ReturnType<typeof _readRawBody<TEncoding>>\nexport const readRawBody: PrependOverload<\n typeof _readRawBody,\n WrappedReadRawBody\n> = createWrapperFunction(_readRawBody)\ntype WrappedReadBody = <T, TEventInput = InferEventInput<'body', H3Event, T>>(\n ...args: Tail<Parameters<typeof _readBody<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _readBody<T, H3Event, TEventInput>>\nexport const readBody: PrependOverload<typeof _readBody, WrappedReadBody> =\n createWrapperFunction(_readBody)\ntype WrappedGetQuery = <\n T,\n TEventInput = Exclude<InferEventInput<'query', H3Event, T>, undefined>,\n>(\n ...args: Tail<Parameters<typeof _getQuery<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _getQuery<T, H3Event, TEventInput>>\nexport const getQuery: PrependOverload<typeof _getQuery, WrappedGetQuery> =\n createWrapperFunction(_getQuery)\nexport const isMethod = createWrapperFunction(_isMethod)\nexport const isPreflightRequest = createWrapperFunction(_isPreflightRequest)\ntype WrappedGetValidatedQuery = <\n T,\n TEventInput = InferEventInput<'query', H3Event, T>,\n>(\n ...args: Tail<Parameters<typeof _getValidatedQuery<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _getValidatedQuery<T, H3Event, TEventInput>>\nexport const getValidatedQuery: PrependOverload<\n typeof _getValidatedQuery,\n WrappedGetValidatedQuery\n> = createWrapperFunction(_getValidatedQuery)\nexport const getRouterParams = createWrapperFunction(_getRouterParams)\nexport const getRouterParam = createWrapperFunction(_getRouterParam)\ntype WrappedGetValidatedRouterParams = <\n T,\n TEventInput = InferEventInput<'routerParams', H3Event, T>,\n>(\n ...args: Tail<\n Parameters<typeof _getValidatedRouterParams<T, H3Event, TEventInput>>\n >\n) => ReturnType<typeof _getValidatedRouterParams<T, H3Event, TEventInput>>\nexport const getValidatedRouterParams: PrependOverload<\n typeof _getValidatedRouterParams,\n WrappedGetValidatedRouterParams\n> = createWrapperFunction(_getValidatedRouterParams)\nexport const assertMethod = createWrapperFunction(_assertMethod)\nexport const getRequestHeaders = createWrapperFunction(_getRequestHeaders)\nexport const getRequestHeader = createWrapperFunction(_getRequestHeader)\nexport const getRequestURL = createWrapperFunction(_getRequestURL)\nexport const getRequestHost = createWrapperFunction(_getRequestHost)\nexport const getRequestProtocol = createWrapperFunction(_getRequestProtocol)\nexport const getRequestIP = createWrapperFunction(_getRequestIP)\nexport const send = createWrapperFunction(_send)\nexport const sendNoContent = createWrapperFunction(_sendNoContent)\nexport const setResponseStatus = createWrapperFunction(_setResponseStatus)\nexport const getResponseStatus = createWrapperFunction(_getResponseStatus)\nexport const getResponseStatusText = createWrapperFunction(\n _getResponseStatusText,\n)\nexport const getResponseHeaders = createWrapperFunction(_getResponseHeaders)\nexport const getResponseHeader = createWrapperFunction(_getResponseHeader)\nexport const setResponseHeaders = createWrapperFunction(_setResponseHeaders)\ntype WrappedSetResponseHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _setResponseHeader<T>>>\n) => ReturnType<typeof _setResponseHeader<T>>\nexport const setResponseHeader: PrependOverload<\n typeof _setResponseHeader,\n WrappedSetResponseHeader\n> = createWrapperFunction(_setResponseHeader)\nexport const appendResponseHeaders = createWrapperFunction(\n _appendResponseHeaders,\n)\ntype WrappedAppendResponseHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _appendResponseHeader<T>>>\n) => ReturnType<typeof _appendResponseHeader<T>>\nexport const appendResponseHeader: PrependOverload<\n typeof _appendResponseHeader,\n WrappedAppendResponseHeader\n> = createWrapperFunction(_appendResponseHeader)\nexport const defaultContentType = createWrapperFunction(_defaultContentType)\nexport const sendRedirect = createWrapperFunction(_sendRedirect)\nexport const sendStream = createWrapperFunction(_sendStream)\nexport const writeEarlyHints = createWrapperFunction(_writeEarlyHints)\nexport const sendError = createWrapperFunction(_sendError)\nexport const sendProxy = createWrapperFunction(_sendProxy)\nexport const proxyRequest = createWrapperFunction(_proxyRequest)\ntype WrappedFetchWithEvent = <\n T = unknown,\n TResponse = any,\n TFetch extends (req: RequestInfo | URL, opts?: any) => any = typeof fetch,\n>(\n ...args: Tail<Parameters<typeof _fetchWithEvent<T, TResponse, TFetch>>>\n) => ReturnType<typeof _fetchWithEvent<T, TResponse, TFetch>>\nexport const fetchWithEvent: PrependOverload<\n typeof _fetchWithEvent,\n WrappedFetchWithEvent\n> = createWrapperFunction(_fetchWithEvent)\nexport const getProxyRequestHeaders = createWrapperFunction(\n _getProxyRequestHeaders,\n)\n\nexport const parseCookies = createWrapperFunction(_parseCookies)\nexport const getCookie = createWrapperFunction(_getCookie)\nexport const setCookie = createWrapperFunction(_setCookie)\nexport const deleteCookie = createWrapperFunction(_deleteCookie)\n// not exported :(\ntype SessionDataT = Record<string, any>\ntype WrappedUseSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _useSession<T>>>\n) => ReturnType<typeof _useSession<T>>\n// we need to `as` these because the WrapFunction doesn't work for them\n// because they also accept CompatEvent instead of H3Event\nexport const useSession = createWrapperFunction(_useSession) as PrependOverload<\n typeof _useSession,\n WrappedUseSession\n>\ntype WrappedGetSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _getSession<T>>>\n) => ReturnType<typeof _getSession<T>>\nexport const getSession = createWrapperFunction(_getSession) as PrependOverload<\n typeof _getSession,\n WrappedGetSession\n>\ntype WrappedUpdateSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _updateSession<T>>>\n) => ReturnType<typeof _updateSession<T>>\nexport const updateSession: PrependOverload<\n typeof _updateSession,\n WrappedUpdateSession\n> = createWrapperFunction(_updateSession)\ntype WrappedSealSession = <T extends SessionDataT>(\n ...args: Tail<Parameters<typeof _sealSession<T>>>\n) => ReturnType<typeof _sealSession<T>>\nexport const sealSession = createWrapperFunction(\n _sealSession,\n) as PrependOverload<typeof _sealSession, WrappedSealSession>\nexport const unsealSession = createWrapperFunction(_unsealSession)\nexport const clearSession = createWrapperFunction(_clearSession)\nexport const handleCacheHeaders = createWrapperFunction(_handleCacheHeaders)\nexport const handleCors = createWrapperFunction(_handleCors)\nexport const appendCorsHeaders = createWrapperFunction(_appendCorsHeaders)\nexport const appendCorsPreflightHeaders = createWrapperFunction(\n _appendCorsPreflightHeaders,\n)\nexport const sendWebResponse = createWrapperFunction(_sendWebResponse)\ntype WrappedAppendHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _appendHeader<T>>>\n) => ReturnType<typeof _appendHeader<T>>\nexport const appendHeader: PrependOverload<\n typeof _appendHeader,\n WrappedAppendHeader\n> = createWrapperFunction(_appendHeader)\nexport const appendHeaders = createWrapperFunction(_appendHeaders)\ntype WrappedSetHeader = <T extends HTTPHeaderName>(\n ...args: Tail<Parameters<typeof _setHeader<T>>>\n) => ReturnType<typeof _setHeader<T>>\nexport const setHeader: PrependOverload<typeof _setHeader, WrappedSetHeader> =\n createWrapperFunction(_setHeader)\nexport const setHeaders = createWrapperFunction(_setHeaders)\nexport const getHeader = createWrapperFunction(_getHeader)\nexport const getHeaders = createWrapperFunction(_getHeaders)\nexport const getRequestFingerprint = createWrapperFunction(\n _getRequestFingerprint,\n)\nexport const getRequestWebStream = createWrapperFunction(_getRequestWebStream)\nexport const readFormData = createWrapperFunction(_readFormData)\nexport const readMultipartFormData = createWrapperFunction(\n _readMultipartFormData,\n)\ntype WrappedReadValidatedBody = <\n T,\n TEventInput = InferEventInput<'body', H3Event, T>,\n>(\n ...args: Tail<Parameters<typeof _readValidatedBody<T, H3Event, TEventInput>>>\n) => ReturnType<typeof _readValidatedBody<T, H3Event, TEventInput>>\nexport const readValidatedBody: PrependOverload<\n typeof _readValidatedBody,\n WrappedReadValidatedBody\n> = createWrapperFunction(_readValidatedBody)\nexport const removeResponseHeader = createWrapperFunction(_removeResponseHeader)\nexport const getContext = createWrapperFunction(_getContext)\nexport const setContext = createWrapperFunction(_setContext)\nexport const clearResponseHeaders = createWrapperFunction(_clearResponseHeaders)\nexport const getWebRequest = createWrapperFunction(_toWebRequest)\n\nexport type RequestHandler = (ctx: {\n request: Request\n}) => Promise<Response> | Response\n\nexport function requestHandler(handler: RequestHandler) {\n return handler\n}\n"],"names":["AsyncLocalStorage","_defineEventHandler","_eventHandler","H3Event","_readRawBody","_readBody","_getQuery","_isMethod","_isPreflightRequest","_getValidatedQuery","_getRouterParams","_getRouterParam","_getValidatedRouterParams","_assertMethod","_getRequestHeaders","_getRequestHeader","_getRequestURL","_getRequestHost","_getRequestProtocol","_getRequestIP","_send","_sendNoContent","_setResponseStatus","_getResponseStatus","_getResponseStatusText","_getResponseHeaders","_getResponseHeader","_setResponseHeaders","_setResponseHeader","_appendResponseHeaders","_appendResponseHeader","_defaultContentType","_sendRedirect","_sendStream","_writeEarlyHints","_sendError","_sendProxy","_proxyRequest","_fetchWithEvent","_getProxyRequestHeaders","_parseCookies","_getCookie","_setCookie","_deleteCookie","_useSession","_getSession","_updateSession","_sealSession","_unsealSession","_clearSession","_handleCacheHeaders","_handleCors","_appendCorsHeaders","_appendCorsPreflightHeaders","_sendWebResponse","_appendHeader","_appendHeaders","_setHeader","_setHeaders","_getHeader","_getHeaders","_getRequestFingerprint","_getRequestWebStream","_readFormData","_readMultipartFormData","_readValidatedBody","_removeResponseHeader","_clearResponseHeaders","_toWebRequest"],"mappings":";;;;AAiFA,MAAM,eAAe,IAAIA,iBAAAA,kBAAkB;AAE3C,SAAS,YAAY,OAAgB,KAAa,OAAY;AACtD,QAAA,QAAQ,GAAG,IAAI;AACvB;AAEA,SAAS,YAAY,OAAgB,KAAa;AACzC,SAAA,MAAM,QAAQ,GAAG;AAC1B;AAEO,SAAS,iBAAiB,SAG9B;AACM,SAAA;AACT;AA4HO,SAAS,mBAAmB,SAAuB;AACjD,SAAAC,GAAAA,mBAAoB,CAAC,UAAU;AACpC,WAAO,aAAa,OAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,EAAA,CAChD;AACH;AAEO,SAAS,aAAa,SAAuB;AAC3C,SAAAC,GAAAA,aAAc,CAAC,UAAU;AAC9B,WAAO,aAAa,OAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,EAAA,CAChD;AACH;AAEsB,eAAA,aACpB,OACA,IACY;AACL,SAAA,aAAa,IAAI,OAAO,EAAE;AACnC;AAEO,SAAS,WAAW;AACnB,QAAA,QAAQ,aAAa,SAAS;AACpC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAEK,SAAA;AACT;AAEa,MAAA,kBAAkB,OAAO,YAAY;AAE3C,SAAS,QACd,KACiD;AAE/C,SAAA,OAAO,QAAQ,aACd,eAAeC,GAAAA,YACd,2BAAM,6BAA4BA,GAClC,YAAA,2BAAK,kBAAiB;AAG5B;AAmBA,SAAS,sBACP,YACmB;AACnB,SAAO,YAAa,MAAkB;AAC9B,UAAA,QAAQ,KAAK,CAAC;AAChB,QAAA,CAAC,QAAQ,KAAK,GAAG;AACd,WAAA,QAAQ,UAAU;AAAA,IAAA,OAClB;AACA,WAAA,CAAC,IACJ,iBAAiBA,GAAA,WAAY,MAAc,eACvC,QACA,MAAM,eAAe;AAAA,IAAA;AAGrB,WAAA,WAAmB,GAAG,IAAI;AAAA,EACpC;AACF;AAMa,MAAA,cAGT,sBAAsBC,GAAY,WAAA;AAIzB,MAAA,WACX,sBAAsBC,GAAS,QAAA;AAOpB,MAAA,WACX,sBAAsBC,GAAS,QAAA;AACpB,MAAA,WAAW,sBAAsBC,GAAS,QAAA;AAC1C,MAAA,qBAAqB,sBAAsBC,GAAmB,kBAAA;AAO9D,MAAA,oBAGT,sBAAsBC,GAAkB,iBAAA;AAC/B,MAAA,kBAAkB,sBAAsBC,GAAgB,eAAA;AACxD,MAAA,iBAAiB,sBAAsBC,GAAe,cAAA;AAStD,MAAA,2BAGT,sBAAsBC,GAAyB,wBAAA;AACtC,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AAClD,MAAA,oBAAoB,sBAAsBC,GAAkB,iBAAA;AAC5D,MAAA,mBAAmB,sBAAsBC,GAAiB,gBAAA;AAC1D,MAAA,gBAAgB,sBAAsBC,GAAc,aAAA;AACpD,MAAA,iBAAiB,sBAAsBC,GAAe,cAAA;AACtD,MAAA,qBAAqB,sBAAsBC,GAAmB,kBAAA;AAC9D,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AAClD,MAAA,OAAO,sBAAsBC,GAAK,IAAA;AAClC,MAAA,gBAAgB,sBAAsBC,GAAc,aAAA;AACpD,MAAA,oBAAoB,sBAAsBC,GAAkB,iBAAA;AAC5D,MAAA,oBAAoB,sBAAsBC,GAAkB,iBAAA;AAClE,MAAM,wBAAwB;AAAA,EACnCC,GAAAA;AACF;AACa,MAAA,qBAAqB,sBAAsBC,GAAmB,kBAAA;AAC9D,MAAA,oBAAoB,sBAAsBC,GAAkB,iBAAA;AAC5D,MAAA,qBAAqB,sBAAsBC,GAAmB,kBAAA;AAI9D,MAAA,oBAGT,sBAAsBC,GAAkB,iBAAA;AACrC,MAAM,wBAAwB;AAAA,EACnCC,GAAAA;AACF;AAIa,MAAA,uBAGT,sBAAsBC,GAAqB,oBAAA;AAClC,MAAA,qBAAqB,sBAAsBC,GAAmB,kBAAA;AAC9D,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AAClD,MAAA,aAAa,sBAAsBC,GAAW,UAAA;AAC9C,MAAA,kBAAkB,sBAAsBC,GAAgB,eAAA;AACxD,MAAA,YAAY,sBAAsBC,GAAU,SAAA;AAC5C,MAAA,YAAY,sBAAsBC,GAAU,SAAA;AAC5C,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AAQlD,MAAA,iBAGT,sBAAsBC,GAAe,cAAA;AAClC,MAAM,yBAAyB;AAAA,EACpCC,GAAAA;AACF;AAEa,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AAClD,MAAA,YAAY,sBAAsBC,GAAU,SAAA;AAC5C,MAAA,YAAY,sBAAsBC,GAAU,SAAA;AAC5C,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AAQlD,MAAA,aAAa,sBAAsBC,GAAW,UAAA;AAO9C,MAAA,aAAa,sBAAsBC,GAAW,UAAA;AAO9C,MAAA,gBAGT,sBAAsBC,GAAc,aAAA;AAIjC,MAAM,cAAc;AAAA,EACzBC,GAAAA;AACF;AACa,MAAA,gBAAgB,sBAAsBC,GAAc,aAAA;AACpD,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AAClD,MAAA,qBAAqB,sBAAsBC,GAAmB,kBAAA;AAC9D,MAAA,aAAa,sBAAsBC,GAAW,UAAA;AAC9C,MAAA,oBAAoB,sBAAsBC,GAAkB,iBAAA;AAClE,MAAM,6BAA6B;AAAA,EACxCC,GAAAA;AACF;AACa,MAAA,kBAAkB,sBAAsBC,GAAgB,eAAA;AAIxD,MAAA,eAGT,sBAAsBC,GAAa,YAAA;AAC1B,MAAA,gBAAgB,sBAAsBC,GAAc,aAAA;AAIpD,MAAA,YACX,sBAAsBC,GAAU,SAAA;AACrB,MAAA,aAAa,sBAAsBC,GAAW,UAAA;AAC9C,MAAA,YAAY,sBAAsBC,GAAU,SAAA;AAC5C,MAAA,aAAa,sBAAsBC,GAAW,UAAA;AACpD,MAAM,wBAAwB;AAAA,EACnCC,GAAAA;AACF;AACa,MAAA,sBAAsB,sBAAsBC,GAAoB,mBAAA;AAChE,MAAA,eAAe,sBAAsBC,GAAa,YAAA;AACxD,MAAM,wBAAwB;AAAA,EACnCC,GAAAA;AACF;AAOa,MAAA,oBAGT,sBAAsBC,GAAkB,iBAAA;AAC/B,MAAA,uBAAuB,sBAAsBC,GAAqB,oBAAA;AAClE,MAAA,aAAa,sBAAsB,WAAW;AAC9C,MAAA,aAAa,sBAAsB,WAAW;AAC9C,MAAA,uBAAuB,sBAAsBC,GAAqB,oBAAA;AAClE,MAAA,gBAAgB,sBAAsBC,GAAa,YAAA;AAMzD,SAAS,eAAe,SAAyB;AAC/C,SAAA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/cjs/h3.d.cts CHANGED
@@ -1,4 +1,4 @@
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';
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, toWebRequest as _toWebRequest, unsealSession as _unsealSession, updateSession as _updateSession, useSession as _useSession, writeEarlyHints as _writeEarlyHints, Encoding, EventHandler, HTTPHeaderName, InferEventInput, _RequestMiddleware, _ResponseMiddleware } from 'h3';
2
2
  declare function _setContext(event: H3Event, key: string, value: any): void;
3
3
  declare function _getContext(event: H3Event, key: string): any;
4
4
  export declare function defineMiddleware(options: {
@@ -8,8 +8,11 @@ export declare function defineMiddleware(options: {
8
8
  onRequest?: _RequestMiddleware | Array<_RequestMiddleware>;
9
9
  onBeforeResponse?: _ResponseMiddleware | Array<_ResponseMiddleware>;
10
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';
11
+ export { H3Error, H3Event, MIMES, callNodeListener, createApp, createAppEventHandler, createEvent, createRouter, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, dynamicEventHandler, defineWebSocket, splitCookiesString, fromNodeMiddleware, fromPlainHandler, fromWebHandler, isError, isEventHandler, isWebResponse, lazyEventHandler, promisifyNodeListener, serveStatic, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, 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';
12
+ export declare function defineEventHandler(handler: EventHandler): EventHandler<import('h3').EventHandlerRequest, Promise<any>>;
13
+ export declare function eventHandler(handler: EventHandler): EventHandler<import('h3').EventHandlerRequest, Promise<any>>;
14
+ export declare function runWithEvent<T>(event: H3Event, fn: () => T | Promise<T>): Promise<T>;
15
+ export declare function getEvent(): H3Event<import('h3').EventHandlerRequest>;
13
16
  export declare const HTTPEventSymbol: unique symbol;
14
17
  export declare function isEvent(obj: any): obj is H3Event | {
15
18
  [HTTPEventSymbol]: H3Event;
@@ -99,7 +102,8 @@ export declare const removeResponseHeader: WrapFunction<typeof _removeResponseHe
99
102
  export declare const getContext: WrapFunction<typeof _getContext>;
100
103
  export declare const setContext: WrapFunction<typeof _setContext>;
101
104
  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>;
105
+ export declare const getWebRequest: WrapFunction<typeof _toWebRequest>;
106
+ export type RequestHandler = (ctx: {
107
+ request: Request;
108
+ }) => Promise<Response> | Response;
109
+ export declare function requestHandler(handler: RequestHandler): RequestHandler;
@@ -1 +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;;"}
1
+ {"version":3,"file":"handlerCallback.cjs","sources":["../../src/handlerCallback.ts"],"sourcesContent":["import type { AnyRouter } from '@tanstack/router-core'\n\nexport interface HandlerCallback<TRouter extends AnyRouter> {\n (ctx: {\n request: Request\n router: TRouter\n responseHeaders: Headers\n }): Response | Promise<Response>\n}\n\nexport function defineHandlerCallback<TRouter extends AnyRouter>(\n handler: HandlerCallback<TRouter>,\n): HandlerCallback<TRouter> {\n return handler\n}\n"],"names":[],"mappings":";;AAUO,SAAS,sBACd,SAC0B;AACnB,SAAA;AACT;;"}
@@ -1,10 +1,9 @@
1
- import { EventHandlerResponse } from 'h3';
2
1
  import { AnyRouter } from '@tanstack/router-core';
3
- export interface HandlerCallback<TRouter extends AnyRouter, TResponse extends EventHandlerResponse = EventHandlerResponse> {
2
+ export interface HandlerCallback<TRouter extends AnyRouter> {
4
3
  (ctx: {
5
4
  request: Request;
6
5
  router: TRouter;
7
6
  responseHeaders: Headers;
8
- }): TResponse;
7
+ }): Response | Promise<Response>;
9
8
  }
10
- export declare function defineHandlerCallback<TRouter extends AnyRouter, TResponse = EventHandlerResponse>(handler: HandlerCallback<TRouter, TResponse>): HandlerCallback<TRouter, TResponse>;
9
+ export declare function defineHandlerCallback<TRouter extends AnyRouter>(handler: HandlerCallback<TRouter>): HandlerCallback<TRouter>;
@@ -4,13 +4,20 @@ const transformStreamWithRouter = require("./transformStreamWithRouter.cjs");
4
4
  const createStartHandler = require("./createStartHandler.cjs");
5
5
  const createRequestHandler = require("./createRequestHandler.cjs");
6
6
  const handlerCallback = require("./handlerCallback.cjs");
7
+ const ssrServer = require("./ssr-server.cjs");
8
+ const serverFunctionsHandler = require("./server-functions-handler.cjs");
7
9
  const h3 = require("./h3.cjs");
10
+ const serverRoute = require("./serverRoute.cjs");
8
11
  const h3$1 = require("h3");
9
12
  exports.transformPipeableStreamWithRouter = transformStreamWithRouter.transformPipeableStreamWithRouter;
10
13
  exports.transformReadableStreamWithRouter = transformStreamWithRouter.transformReadableStreamWithRouter;
11
14
  exports.createStartHandler = createStartHandler.createStartHandler;
15
+ exports.getStartResponseHeaders = createStartHandler.getStartResponseHeaders;
12
16
  exports.createRequestHandler = createRequestHandler.createRequestHandler;
13
17
  exports.defineHandlerCallback = handlerCallback.defineHandlerCallback;
18
+ exports.attachRouterServerSsrUtils = ssrServer.attachRouterServerSsrUtils;
19
+ exports.dehydrateRouter = ssrServer.dehydrateRouter;
20
+ exports.handleServerAction = serverFunctionsHandler.handleServerAction;
14
21
  exports.HTTPEventSymbol = h3.HTTPEventSymbol;
15
22
  exports.appendCorsHeaders = h3.appendCorsHeaders;
16
23
  exports.appendCorsPreflightHeaders = h3.appendCorsPreflightHeaders;
@@ -22,8 +29,10 @@ exports.assertMethod = h3.assertMethod;
22
29
  exports.clearResponseHeaders = h3.clearResponseHeaders;
23
30
  exports.clearSession = h3.clearSession;
24
31
  exports.defaultContentType = h3.defaultContentType;
32
+ exports.defineEventHandler = h3.defineEventHandler;
25
33
  exports.defineMiddleware = h3.defineMiddleware;
26
34
  exports.deleteCookie = h3.deleteCookie;
35
+ exports.eventHandler = h3.eventHandler;
27
36
  exports.fetchWithEvent = h3.fetchWithEvent;
28
37
  exports.getContext = h3.getContext;
29
38
  exports.getCookie = h3.getCookie;
@@ -52,7 +61,6 @@ exports.getValidatedRouterParams = h3.getValidatedRouterParams;
52
61
  exports.getWebRequest = h3.getWebRequest;
53
62
  exports.handleCacheHeaders = h3.handleCacheHeaders;
54
63
  exports.handleCors = h3.handleCors;
55
- exports.handleHTTPEvent = h3.handleHTTPEvent;
56
64
  exports.isEvent = h3.isEvent;
57
65
  exports.isMethod = h3.isMethod;
58
66
  exports.isPreflightRequest = h3.isPreflightRequest;
@@ -64,6 +72,8 @@ exports.readMultipartFormData = h3.readMultipartFormData;
64
72
  exports.readRawBody = h3.readRawBody;
65
73
  exports.readValidatedBody = h3.readValidatedBody;
66
74
  exports.removeResponseHeader = h3.removeResponseHeader;
75
+ exports.requestHandler = h3.requestHandler;
76
+ exports.runWithEvent = h3.runWithEvent;
67
77
  exports.sealSession = h3.sealSession;
68
78
  exports.send = h3.send;
69
79
  exports.sendError = h3.sendError;
@@ -79,11 +89,12 @@ exports.setHeaders = h3.setHeaders;
79
89
  exports.setResponseHeader = h3.setResponseHeader;
80
90
  exports.setResponseHeaders = h3.setResponseHeaders;
81
91
  exports.setResponseStatus = h3.setResponseStatus;
82
- exports.toWebRequest = h3.toWebRequest;
83
92
  exports.unsealSession = h3.unsealSession;
84
93
  exports.updateSession = h3.updateSession;
85
94
  exports.useSession = h3.useSession;
86
95
  exports.writeEarlyHints = h3.writeEarlyHints;
96
+ exports.createServerFileRoute = serverRoute.createServerFileRoute;
97
+ exports.createServerRoute = serverRoute.createServerRoute;
87
98
  Object.defineProperty(exports, "H3Error", {
88
99
  enumerable: true,
89
100
  get: () => h3$1.H3Error
@@ -120,14 +131,6 @@ Object.defineProperty(exports, "createRouter", {
120
131
  enumerable: true,
121
132
  get: () => h3$1.createRouter
122
133
  });
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
134
  Object.defineProperty(exports, "defineLazyEventHandler", {
132
135
  enumerable: true,
133
136
  get: () => h3$1.defineLazyEventHandler
@@ -156,10 +159,6 @@ Object.defineProperty(exports, "dynamicEventHandler", {
156
159
  enumerable: true,
157
160
  get: () => h3$1.dynamicEventHandler
158
161
  });
159
- Object.defineProperty(exports, "eventHandler", {
160
- enumerable: true,
161
- get: () => h3$1.eventHandler
162
- });
163
162
  Object.defineProperty(exports, "fromNodeMiddleware", {
164
163
  enumerable: true,
165
164
  get: () => h3$1.fromNodeMiddleware
@@ -232,6 +231,10 @@ Object.defineProperty(exports, "toWebHandler", {
232
231
  enumerable: true,
233
232
  get: () => h3$1.toWebHandler
234
233
  });
234
+ Object.defineProperty(exports, "toWebRequest", {
235
+ enumerable: true,
236
+ get: () => h3$1.toWebRequest
237
+ });
235
238
  Object.defineProperty(exports, "useBase", {
236
239
  enumerable: true,
237
240
  get: () => h3$1.useBase
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,11 @@
1
1
  export { transformReadableStreamWithRouter, transformPipeableStreamWithRouter, } from './transformStreamWithRouter.cjs';
2
- export { createStartHandler } from './createStartHandler.cjs';
2
+ export { getStartResponseHeaders, createStartHandler, } from './createStartHandler.cjs';
3
+ export type { CustomizeStartHandler } from './createStartHandler.cjs';
3
4
  export { createRequestHandler } from './createRequestHandler.cjs';
4
5
  export { defineHandlerCallback } from './handlerCallback.cjs';
5
6
  export type { HandlerCallback } from './handlerCallback.cjs';
7
+ export { attachRouterServerSsrUtils, dehydrateRouter } from './ssr-server.cjs';
8
+ export { handleServerAction } from './server-functions-handler.cjs';
6
9
  export * from './h3.cjs';
10
+ export { createServerRoute, createServerFileRoute } from './serverRoute.cjs';
11
+ export type { CreateServerFileRoute } from './serverRoute.cjs';
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const tanstack_startManifest = require("tanstack:start-manifest");
4
+ const routerCore = require("@tanstack/router-core");
5
+ function getStartManifest() {
6
+ const startManifest = tanstack_startManifest.tsrStartManifest();
7
+ const rootRoute = startManifest.routes[routerCore.rootRouteId] = startManifest.routes[routerCore.rootRouteId] || {};
8
+ rootRoute.assets = rootRoute.assets || [];
9
+ if (process.env.NODE_ENV === "development" && !process.env.TSS_CLIENT_ENTRY) {
10
+ throw new Error(
11
+ "tanstack/start-server-core: TSS_CLIENT_ENTRY must be defined in your environment for getStartManifest()"
12
+ );
13
+ }
14
+ if (process.env.NODE_ENV === "development") {
15
+ const script = `${globalThis.TSS_INJECTED_HEAD_SCRIPTS ? globalThis.TSS_INJECTED_HEAD_SCRIPTS + "; " : ""}import(${JSON.stringify(process.env.TSS_CLIENT_ENTRY)})`;
16
+ rootRoute.assets.push({
17
+ tag: "script",
18
+ attrs: {
19
+ type: "module",
20
+ suppressHydrationWarning: true,
21
+ async: true
22
+ },
23
+ children: script
24
+ });
25
+ }
26
+ const manifest = {
27
+ ...startManifest,
28
+ routes: Object.fromEntries(
29
+ Object.entries(startManifest.routes).map(([k, v]) => {
30
+ const { preloads, assets } = v;
31
+ return [
32
+ k,
33
+ {
34
+ preloads,
35
+ assets
36
+ }
37
+ ];
38
+ })
39
+ )
40
+ };
41
+ return manifest;
42
+ }
43
+ exports.getStartManifest = getStartManifest;
44
+ //# sourceMappingURL=router-manifest.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-manifest.cjs","sources":["../../src/router-manifest.ts"],"sourcesContent":["import { tsrStartManifest } from 'tanstack:start-manifest'\nimport { rootRouteId } from '@tanstack/router-core'\n\ndeclare global {\n // eslint-disable-next-line no-var\n var TSS_INJECTED_HEAD_SCRIPTS: string | undefined\n}\n\n/**\n * @description Returns the router manifest that should be sent to the client.\n * This includes only the assets and preloads for the current route and any\n * special assets that are needed for the client. It does not include relationships\n * between routes or any other data that is not needed for the client.\n */\nexport function getStartManifest() {\n const startManifest = tsrStartManifest()\n\n const rootRoute = (startManifest.routes[rootRouteId] =\n startManifest.routes[rootRouteId] || {})\n\n rootRoute.assets = rootRoute.assets || []\n\n // Get the entry for the client\n // const ClientManifest = getManifest('client')\n\n // const importPath =\n // ClientManifest.inputs[ClientManifest.handler]?.output.path\n // if (!importPath) {\n // invariant(importPath, 'Could not find client entry in manifest')\n // }\n\n if (process.env.NODE_ENV === 'development' && !process.env.TSS_CLIENT_ENTRY) {\n throw new Error(\n 'tanstack/start-server-core: TSS_CLIENT_ENTRY must be defined in your environment for getStartManifest()',\n )\n }\n\n if (process.env.NODE_ENV === 'development') {\n // Always fake that HMR is ready\n // const CLIENT_BASE = sanitizeBase(process.env.TSS_CLIENT_BASE || '')\n\n // if (!CLIENT_BASE) {\n // throw new Error(\n // 'tanstack/start-router-manifest: TSS_CLIENT_BASE must be defined in your environment for getFullRouterManifest()',\n // )\n // }\n\n const script = `${globalThis.TSS_INJECTED_HEAD_SCRIPTS ? globalThis.TSS_INJECTED_HEAD_SCRIPTS + '; ' : ''}import(${JSON.stringify(process.env.TSS_CLIENT_ENTRY)})`\n\n rootRoute.assets.push({\n tag: 'script',\n attrs: {\n type: 'module',\n suppressHydrationWarning: true,\n async: true,\n },\n children: script,\n })\n }\n\n const manifest = {\n ...startManifest,\n routes: Object.fromEntries(\n Object.entries(startManifest.routes).map(([k, v]) => {\n const { preloads, assets } = v\n return [\n k,\n {\n preloads,\n assets,\n },\n ]\n }),\n ),\n }\n\n // Strip out anything that isn't needed for the client\n return manifest\n}\n"],"names":["tsrStartManifest","rootRouteId"],"mappings":";;;;AAcO,SAAS,mBAAmB;AACjC,QAAM,gBAAgBA,uBAAAA,iBAAiB;AAEjC,QAAA,YAAa,cAAc,OAAOC,WAAAA,WAAW,IACjD,cAAc,OAAOA,WAAW,WAAA,KAAK,CAAC;AAE9B,YAAA,SAAS,UAAU,UAAU,CAAC;AAWxC,MAAI,QAAQ,IAAI,aAAa,iBAAiB,CAAC,QAAQ,IAAI,kBAAkB;AAC3E,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAGE,MAAA,QAAQ,IAAI,aAAa,eAAe;AAU1C,UAAM,SAAS,GAAG,WAAW,4BAA4B,WAAW,4BAA4B,OAAO,EAAE,UAAU,KAAK,UAAU,QAAQ,IAAI,gBAAgB,CAAC;AAE/J,cAAU,OAAO,KAAK;AAAA,MACpB,KAAK;AAAA,MACL,OAAO;AAAA,QACL,MAAM;AAAA,QACN,0BAA0B;AAAA,QAC1B,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,IAAA,CACX;AAAA,EAAA;AAGH,QAAM,WAAW;AAAA,IACf,GAAG;AAAA,IACH,QAAQ,OAAO;AAAA,MACb,OAAO,QAAQ,cAAc,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM;AAC7C,cAAA,EAAE,UAAU,OAAA,IAAW;AACtB,eAAA;AAAA,UACL;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UAAA;AAAA,QAEJ;AAAA,MACD,CAAA;AAAA,IAAA;AAAA,EAEL;AAGO,SAAA;AACT;;"}
@@ -0,0 +1,17 @@
1
+ declare global {
2
+ var TSS_INJECTED_HEAD_SCRIPTS: string | undefined;
3
+ }
4
+ /**
5
+ * @description Returns the router manifest that should be sent to the client.
6
+ * This includes only the assets and preloads for the current route and any
7
+ * special assets that are needed for the client. It does not include relationships
8
+ * between routes or any other data that is not needed for the client.
9
+ */
10
+ export declare function getStartManifest(): {
11
+ routes: {
12
+ [k: string]: {
13
+ preloads: string[] | undefined;
14
+ assets: import('@tanstack/router-core').RouterManagedTag[] | undefined;
15
+ };
16
+ };
17
+ };
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const routerCore = require("@tanstack/router-core");
4
+ const invariant = require("tiny-invariant");
5
+ const startClientCore = require("@tanstack/start-client-core");
6
+ const _serverFnManifest = require("tanstack:server-fn-manifest");
7
+ const h3 = require("./h3.cjs");
8
+ const serverFnManifest = _serverFnManifest;
9
+ function sanitizeBase(base) {
10
+ if (!base) {
11
+ throw new Error(
12
+ "🚨 process.env.TSS_SERVER_FN_BASE is required in start/server-handler/index"
13
+ );
14
+ }
15
+ return base.replace(/^\/|\/$/g, "");
16
+ }
17
+ const handleServerAction = async ({ request }) => {
18
+ const controller = new AbortController();
19
+ const signal = controller.signal;
20
+ const abort = () => controller.abort();
21
+ request.signal.addEventListener("abort", abort);
22
+ const method = request.method;
23
+ const url = new URL(request.url, "http://localhost:3000");
24
+ const regex = new RegExp(
25
+ `${sanitizeBase(process.env.TSS_SERVER_FN_BASE)}/([^/?#]+)`
26
+ );
27
+ const match = url.pathname.match(regex);
28
+ const serverFnId = match ? match[1] : null;
29
+ const search = Object.fromEntries(url.searchParams.entries());
30
+ const isCreateServerFn = "createServerFn" in search;
31
+ const isRaw = "raw" in search;
32
+ if (typeof serverFnId !== "string") {
33
+ throw new Error("Invalid server action param for serverFnId: " + serverFnId);
34
+ }
35
+ const serverFnInfo = serverFnManifest[serverFnId];
36
+ if (!serverFnInfo) {
37
+ console.info("serverFnManifest", serverFnManifest);
38
+ throw new Error("Server function info not found for " + serverFnId);
39
+ }
40
+ const fnModule = await serverFnInfo.importer();
41
+ if (!fnModule) {
42
+ console.info("serverFnInfo", serverFnInfo);
43
+ throw new Error("Server function module not resolved for " + serverFnId);
44
+ }
45
+ const action = fnModule[serverFnInfo.functionName];
46
+ if (!action) {
47
+ console.info("serverFnInfo", serverFnInfo);
48
+ console.info("fnModule", fnModule);
49
+ throw new Error(
50
+ `Server function module export not resolved for serverFn ID: ${serverFnId}`
51
+ );
52
+ }
53
+ const formDataContentTypes = [
54
+ "multipart/form-data",
55
+ "application/x-www-form-urlencoded"
56
+ ];
57
+ const response = await (async () => {
58
+ try {
59
+ let result = await (async () => {
60
+ if (request.headers.get("Content-Type") && formDataContentTypes.some(
61
+ (type) => {
62
+ var _a;
63
+ return (_a = request.headers.get("Content-Type")) == null ? void 0 : _a.includes(type);
64
+ }
65
+ )) {
66
+ invariant(
67
+ method.toLowerCase() !== "get",
68
+ "GET requests with FormData payloads are not supported"
69
+ );
70
+ return await action(await request.formData(), signal);
71
+ }
72
+ if (method.toLowerCase() === "get") {
73
+ let payload2 = search;
74
+ if (isCreateServerFn) {
75
+ payload2 = search.payload;
76
+ }
77
+ payload2 = payload2 ? startClientCore.startSerializer.parse(payload2) : payload2;
78
+ return await action(payload2, signal);
79
+ }
80
+ const jsonPayloadAsString = await request.text();
81
+ const payload = startClientCore.startSerializer.parse(jsonPayloadAsString);
82
+ if (isCreateServerFn) {
83
+ return await action(payload, signal);
84
+ }
85
+ return await action(...payload, signal);
86
+ })();
87
+ if (result.result instanceof Response) {
88
+ return result.result;
89
+ }
90
+ if (!isCreateServerFn) {
91
+ result = result.result;
92
+ if (result instanceof Response) {
93
+ return result;
94
+ }
95
+ }
96
+ if (routerCore.isNotFound(result)) {
97
+ return isNotFoundResponse(result);
98
+ }
99
+ return new Response(
100
+ result !== void 0 ? startClientCore.startSerializer.stringify(result) : void 0,
101
+ {
102
+ status: h3.getResponseStatus(h3.getEvent()),
103
+ headers: {
104
+ "Content-Type": "application/json"
105
+ }
106
+ }
107
+ );
108
+ } catch (error) {
109
+ if (error instanceof Response) {
110
+ return error;
111
+ }
112
+ if (routerCore.isNotFound(error)) {
113
+ return isNotFoundResponse(error);
114
+ }
115
+ console.info();
116
+ console.info("Server Fn Error!");
117
+ console.info();
118
+ console.error(error);
119
+ console.info();
120
+ return new Response(startClientCore.startSerializer.stringify(error), {
121
+ status: 500,
122
+ headers: {
123
+ "Content-Type": "application/json"
124
+ }
125
+ });
126
+ }
127
+ })();
128
+ request.signal.removeEventListener("abort", abort);
129
+ if (isRaw) {
130
+ return response;
131
+ }
132
+ return response;
133
+ };
134
+ function isNotFoundResponse(error) {
135
+ const { headers, ...rest } = error;
136
+ return new Response(JSON.stringify(rest), {
137
+ status: 200,
138
+ headers: {
139
+ "Content-Type": "application/json",
140
+ ...headers || {}
141
+ }
142
+ });
143
+ }
144
+ exports.handleServerAction = handleServerAction;
145
+ //# sourceMappingURL=server-functions-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-functions-handler.cjs","sources":["../../src/server-functions-handler.ts"],"sourcesContent":["import { isNotFound } from '@tanstack/router-core'\nimport invariant from 'tiny-invariant'\nimport { startSerializer } from '@tanstack/start-client-core'\n// @ts-expect-error\nimport _serverFnManifest from 'tanstack:server-fn-manifest'\nimport { getEvent, getResponseStatus } from './h3'\n\nconst serverFnManifest = _serverFnManifest as Record<\n string,\n {\n functionName: string\n extractedFilename: string\n importer: () => Promise<any>\n }\n>\n\nfunction sanitizeBase(base: string | undefined) {\n if (!base) {\n throw new Error(\n '🚨 process.env.TSS_SERVER_FN_BASE is required in start/server-handler/index',\n )\n }\n\n return base.replace(/^\\/|\\/$/g, '')\n}\n\nexport const handleServerAction = async ({ request }: { request: Request }) => {\n const controller = new AbortController()\n const signal = controller.signal\n const abort = () => controller.abort()\n request.signal.addEventListener('abort', abort)\n\n const method = request.method\n const url = new URL(request.url, 'http://localhost:3000')\n // extract the serverFnId from the url as host/_serverFn/:serverFnId\n // Define a regex to match the path and extract the :thing part\n const regex = new RegExp(\n `${sanitizeBase(process.env.TSS_SERVER_FN_BASE)}/([^/?#]+)`,\n )\n\n // Execute the regex\n const match = url.pathname.match(regex)\n const serverFnId = match ? match[1] : null\n const search = Object.fromEntries(url.searchParams.entries()) as {\n payload?: any\n createServerFn?: boolean\n }\n\n const isCreateServerFn = 'createServerFn' in search\n const isRaw = 'raw' in search\n\n if (typeof serverFnId !== 'string') {\n throw new Error('Invalid server action param for serverFnId: ' + serverFnId)\n }\n\n const serverFnInfo = serverFnManifest[serverFnId]\n\n if (!serverFnInfo) {\n console.info('serverFnManifest', serverFnManifest)\n throw new Error('Server function info not found for ' + serverFnId)\n }\n\n const fnModule: undefined | { [key: string]: any } =\n await serverFnInfo.importer()\n\n if (!fnModule) {\n console.info('serverFnInfo', serverFnInfo)\n throw new Error('Server function module not resolved for ' + serverFnId)\n }\n\n const action = fnModule[serverFnInfo.functionName]\n\n if (!action) {\n console.info('serverFnInfo', serverFnInfo)\n console.info('fnModule', fnModule)\n throw new Error(\n `Server function module export not resolved for serverFn ID: ${serverFnId}`,\n )\n }\n\n // Known FormData 'Content-Type' header values\n const formDataContentTypes = [\n 'multipart/form-data',\n 'application/x-www-form-urlencoded',\n ]\n\n const response = await (async () => {\n try {\n let result = await (async () => {\n // FormData\n if (\n request.headers.get('Content-Type') &&\n formDataContentTypes.some((type) =>\n request.headers.get('Content-Type')?.includes(type),\n )\n ) {\n // We don't support GET requests with FormData payloads... that seems impossible\n invariant(\n method.toLowerCase() !== 'get',\n 'GET requests with FormData payloads are not supported',\n )\n\n return await action(await request.formData(), signal)\n }\n\n // Get requests use the query string\n if (method.toLowerCase() === 'get') {\n // By default the payload is the search params\n let payload: any = search\n\n // If this GET request was created by createServerFn,\n // then the payload will be on the payload param\n if (isCreateServerFn) {\n payload = search.payload\n }\n\n // If there's a payload, we should try to parse it\n payload = payload ? startSerializer.parse(payload) : payload\n\n // Send it through!\n return await action(payload, signal)\n }\n\n // This must be a POST request, likely JSON???\n const jsonPayloadAsString = await request.text()\n\n // We should probably try to deserialize the payload\n // as JSON, but we'll just pass it through for now.\n const payload = startSerializer.parse(jsonPayloadAsString)\n\n // If this POST request was created by createServerFn,\n // it's payload will be the only argument\n if (isCreateServerFn) {\n return await action(payload, signal)\n }\n\n // Otherwise, we'll spread the payload. Need to\n // support `use server` functions that take multiple\n // arguments.\n return await action(...(payload as any), signal)\n })()\n\n // Any time we get a Response back, we should just\n // return it immediately.\n if (result.result instanceof Response) {\n return result.result\n }\n\n // If this is a non createServerFn request, we need to\n // pull out the result from the result object\n if (!isCreateServerFn) {\n result = result.result\n\n // The result might again be a response,\n // and if it is, return it.\n if (result instanceof Response) {\n return result\n }\n }\n\n // if (!search.createServerFn) {\n // result = result.result\n // }\n\n // else if (\n // isPlainObject(result) &&\n // 'result' in result &&\n // result.result instanceof Response\n // ) {\n // return result.result\n // }\n\n // TODO: RSCs Where are we getting this package?\n // if (isValidElement(result)) {\n // const { renderToPipeableStream } = await import(\n // // @ts-expect-error\n // 'react-server-dom/server'\n // )\n\n // const pipeableStream = renderToPipeableStream(result)\n\n // setHeaders(event, {\n // 'Content-Type': 'text/x-component',\n // } as any)\n\n // sendStream(event, response)\n // event._handled = true\n\n // return new Response(null, { status: 200 })\n // }\n\n if (isNotFound(result)) {\n return isNotFoundResponse(result)\n }\n\n return new Response(\n result !== undefined ? startSerializer.stringify(result) : undefined,\n {\n status: getResponseStatus(getEvent()),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n )\n } catch (error: any) {\n if (error instanceof Response) {\n return error\n }\n // else if (\n // isPlainObject(error) &&\n // 'result' in error &&\n // error.result instanceof Response\n // ) {\n // return error.result\n // }\n\n // Currently this server-side context has no idea how to\n // build final URLs, so we need to defer that to the client.\n // The client will check for __redirect and __notFound keys,\n // and if they exist, it will handle them appropriately.\n\n if (isNotFound(error)) {\n return isNotFoundResponse(error)\n }\n\n console.info()\n console.info('Server Fn Error!')\n console.info()\n console.error(error)\n console.info()\n\n return new Response(startSerializer.stringify(error), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n })()\n\n request.signal.removeEventListener('abort', abort)\n\n if (isRaw) {\n return response\n }\n\n return response\n}\n\nfunction isNotFoundResponse(error: any) {\n const { headers, ...rest } = error\n\n return new Response(JSON.stringify(rest), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {}),\n },\n })\n}\n"],"names":["payload","startSerializer","isNotFound","getResponseStatus","getEvent"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const handleServerAction: ({ request }: {
2
+ request: Request;
3
+ }) => Promise<any>;