11import { withoutTrailingSlash } from "ufo" ;
2- import { lazyEventHandler , toEventHandler , isEventHandler , eventHandler , H3Event } from "./event" ;
2+ import {
3+ lazyEventHandler ,
4+ toEventHandler ,
5+ isEventHandler ,
6+ eventHandler ,
7+ H3Event ,
8+ } from "./event" ;
39import { createError } from "./error" ;
410import { send , sendStream , isStream , MIMES } from "./utils" ;
511import type { EventHandler , LazyEventHandler } from "./types" ;
612
713export interface Layer {
8- route : string
9- match ?: Matcher
10- handler : EventHandler
14+ route : string ;
15+ match ?: Matcher ;
16+ handler : EventHandler ;
1117}
1218
13- export type Stack = Layer [ ]
19+ export type Stack = Layer [ ] ;
1420
1521export interface InputLayer {
16- route ?: string
17- match ?: Matcher
18- handler : EventHandler
19- lazy ?: boolean
22+ route ?: string ;
23+ match ?: Matcher ;
24+ handler : EventHandler ;
25+ lazy ?: boolean ;
2026}
2127
22- export type InputStack = InputLayer [ ]
28+ export type InputStack = InputLayer [ ] ;
2329
24- export type Matcher = ( url : string , event ?: H3Event ) => boolean
30+ export type Matcher = ( url : string , event ?: H3Event ) => boolean ;
2531
2632export interface AppUse {
27- ( route : string | string [ ] , handler : EventHandler | EventHandler [ ] , options ?: Partial < InputLayer > ) : App
28- ( handler : EventHandler | EventHandler [ ] , options ?: Partial < InputLayer > ) : App
29- ( options : InputLayer ) : App
33+ (
34+ route : string | string [ ] ,
35+ handler : EventHandler | EventHandler [ ] ,
36+ options ?: Partial < InputLayer >
37+ ) : App ;
38+ ( handler : EventHandler | EventHandler [ ] , options ?: Partial < InputLayer > ) : App ;
39+ ( options : InputLayer ) : App ;
3040}
3141
3242export interface AppOptions {
33- debug ?: boolean
34- onError ?: ( error : Error , event : H3Event ) => any
43+ debug ?: boolean ;
44+ onError ?: ( error : Error , event : H3Event ) => any ;
3545}
3646
3747export interface App {
38- stack : Stack
39- handler : EventHandler
40- options : AppOptions
41- use : AppUse
48+ stack : Stack ;
49+ handler : EventHandler ;
50+ options : AppOptions ;
51+ use : AppUse ;
4252}
4353
44- export function createApp ( options : AppOptions = { } ) : App {
54+ export function createApp ( options : AppOptions = { } ) : App {
4555 const stack : Stack = [ ] ;
4656 const handler = createAppEventHandler ( stack , options ) ;
4757 const app : App = {
4858 // @ts -ignore
4959 use : ( arg1 , arg2 , arg3 ) => use ( app as App , arg1 , arg2 , arg3 ) ,
5060 handler,
5161 stack,
52- options
62+ options,
5363 } ;
5464 return app ;
5565}
5666
57- export function use (
67+ export function use (
5868 app : App ,
5969 arg1 : string | EventHandler | InputLayer | InputLayer [ ] ,
6070 arg2 ?: Partial < InputLayer > | EventHandler | EventHandler [ ] ,
6171 arg3 ?: Partial < InputLayer >
6272) {
6373 if ( Array . isArray ( arg1 ) ) {
64- for ( const i of arg1 ) { use ( app , i , arg2 , arg3 ) ; }
74+ for ( const i of arg1 ) {
75+ use ( app , i , arg2 , arg3 ) ;
76+ }
6577 } else if ( Array . isArray ( arg2 ) ) {
66- for ( const i of arg2 ) { use ( app , arg1 , i , arg3 ) ; }
78+ for ( const i of arg2 ) {
79+ use ( app , arg1 , i , arg3 ) ;
80+ }
6781 } else if ( typeof arg1 === "string" ) {
68- app . stack . push ( normalizeLayer ( { ...arg3 , route : arg1 , handler : arg2 as EventHandler } ) ) ;
82+ app . stack . push (
83+ normalizeLayer ( { ...arg3 , route : arg1 , handler : arg2 as EventHandler } )
84+ ) ;
6985 } else if ( typeof arg1 === "function" ) {
70- app . stack . push ( normalizeLayer ( { ...arg2 , route : "/" , handler : arg1 as EventHandler } ) ) ;
86+ app . stack . push (
87+ normalizeLayer ( { ...arg2 , route : "/" , handler : arg1 as EventHandler } )
88+ ) ;
7189 } else {
7290 app . stack . push ( normalizeLayer ( { ...arg1 } ) ) ;
7391 }
7492 return app ;
7593}
7694
77- export function createAppEventHandler ( stack : Stack , options : AppOptions ) {
95+ export function createAppEventHandler ( stack : Stack , options : AppOptions ) {
7896 const spacing = options . debug ? 2 : undefined ;
7997 return eventHandler ( async ( event ) => {
80- ( event . node . req as any ) . originalUrl = ( event . node . req as any ) . originalUrl || event . node . req . url || "/" ;
98+ ( event . node . req as any ) . originalUrl =
99+ ( event . node . req as any ) . originalUrl || event . node . req . url || "/" ;
81100 const reqUrl = event . node . req . url || "/" ;
82101 for ( const layer of stack ) {
83102 if ( layer . route . length > 1 ) {
@@ -103,26 +122,36 @@ export function createAppEventHandler (stack: Stack, options: AppOptions) {
103122 } else if ( val === null ) {
104123 event . node . res . statusCode = 204 ;
105124 return send ( event ) ;
106- } else if ( type === "object" || type === "boolean" || type === "number" /* IS_JSON */ ) {
125+ } else if (
126+ type === "object" ||
127+ type === "boolean" ||
128+ type === "number" /* IS_JSON */
129+ ) {
107130 if ( val . buffer ) {
108131 return send ( event , val ) ;
109132 } else if ( val instanceof Error ) {
110133 throw createError ( val ) ;
111134 } else {
112- return send ( event , JSON . stringify ( val , undefined , spacing ) , MIMES . json ) ;
135+ return send (
136+ event ,
137+ JSON . stringify ( val , undefined , spacing ) ,
138+ MIMES . json
139+ ) ;
113140 }
114141 }
115142 }
116143 if ( ! event . node . res . writableEnded ) {
117144 throw createError ( {
118145 statusCode : 404 ,
119- statusMessage : `Cannot find any route matching ${ event . node . req . url || "/" } .`
146+ statusMessage : `Cannot find any route matching ${
147+ event . node . req . url || "/"
148+ } .`,
120149 } ) ;
121150 }
122151 } ) ;
123152}
124153
125- function normalizeLayer ( input : InputLayer ) {
154+ function normalizeLayer ( input : InputLayer ) {
126155 let handler = input . handler ;
127156 // @ts -ignore
128157 if ( handler . handler ) {
@@ -139,6 +168,6 @@ function normalizeLayer (input: InputLayer) {
139168 return {
140169 route : withoutTrailingSlash ( input . route ) ,
141170 match : input . match ,
142- handler
171+ handler,
143172 } as Layer ;
144173}
0 commit comments