@@ -3,8 +3,12 @@ import { ServerResponse as NodeServerResponse } from "unenv/runtime/node/http/_r
33import type { App } from "../app" ;
44import type { HTTPMethod } from "../types" ;
55import { createError , isError , sendError } from "../error" ;
6- import { H3Event , createEvent } from "../event" ;
7- import { splitCookiesString } from "../utils" ;
6+ import { H3Event , createEvent , eventHandler } from "../event" ;
7+ import {
8+ setResponseHeader ,
9+ setResponseStatus ,
10+ splitCookiesString ,
11+ } from "../utils" ;
812
913export interface PlainRequest {
1014 _eventOverrides ?: Partial < H3Event > ;
@@ -33,6 +37,24 @@ export function toPlainHandler(app: App) {
3337 return handler ;
3438}
3539
40+ /** @experimental */
41+ export function fromPlainHandler ( handler : PlainHandler ) {
42+ return eventHandler ( async ( event ) => {
43+ const res = await handler ( {
44+ method : event . method ,
45+ path : event . path ,
46+ headers : Object . fromEntries ( event . headers . entries ( ) ) ,
47+ body : event . rawBody ,
48+ context : event . context ,
49+ } ) ;
50+ setResponseStatus ( event , res . status , res . statusText ) ;
51+ for ( const [ key , value ] of res . headers ) {
52+ setResponseHeader ( event , key , value ) ;
53+ }
54+ return res . body ;
55+ } ) ;
56+ }
57+
3658// --- Internal ---
3759
3860export async function _handlePlainRequest ( app : App , request : PlainRequest ) {
0 commit comments