@@ -8,7 +8,14 @@ import {
8
8
getAcceptsCharsets ,
9
9
getAcceptsEncodings ,
10
10
getAcceptsLanguages ,
11
- getRangeFromHeader
11
+ getRangeFromHeader ,
12
+ checkIfXMLHttpRequest ,
13
+ reqIs ,
14
+ getHostname ,
15
+ getIP ,
16
+ getIPs ,
17
+ getProtocol ,
18
+ getSubdomains
12
19
} from './extensions/req/mod.ts'
13
20
import {
14
21
send ,
@@ -21,7 +28,9 @@ import {
21
28
getResponseHeader ,
22
29
append ,
23
30
setLinksHeader ,
24
- setContentType
31
+ setContentType ,
32
+ formatResponse ,
33
+ setVaryHeader
25
34
} from './extensions/res/mod.ts'
26
35
27
36
import { Response , renderTemplate } from './response.ts'
@@ -32,7 +41,7 @@ export const extendMiddleware = <
32
41
Res extends Response = Response
33
42
> (
34
43
app : App
35
- ) => ( req : Req , res : Res , next ? : NextFunction ) => {
44
+ ) => ( req : Req , res : Res , next : NextFunction ) => {
36
45
const { settings } = app
37
46
38
47
// Request extensions
@@ -54,6 +63,20 @@ export const extendMiddleware = <
54
63
req . acceptsLanguages = getAcceptsLanguages ( req )
55
64
56
65
req . range = getRangeFromHeader ( req )
66
+ req . xhr = checkIfXMLHttpRequest ( req )
67
+ req . is = reqIs ( req )
68
+
69
+ req . ip = getIP ( req )
70
+ req . ips = getIPs ( req )
71
+
72
+ if ( settings ?. networkExtensions ) {
73
+ req . protocol = getProtocol ( req )
74
+ req . secure = req . protocol === 'https'
75
+ req . hostname = getHostname ( req )
76
+ req . subdomains = getSubdomains ( req , settings . subdomainOffset )
77
+ req . ip = getIP ( req )
78
+ req . ips = getIPs ( req )
79
+ }
57
80
58
81
// Response extensions
59
82
@@ -62,21 +85,16 @@ export const extendMiddleware = <
62
85
res . sendFile = sendFile < Res > ( res )
63
86
res . sendStatus = sendStatus ( req , res )
64
87
res . json = json < Res > ( res )
65
-
66
88
res . setHeader = setHeader < Res > ( res )
67
89
res . set = setHeader < Res > ( res )
68
-
69
90
res . location = setLocationHeader < Req , Res > ( req , res )
70
-
71
91
res . get = getResponseHeader < Res > ( res )
72
-
73
92
res . append = append < Res > ( res )
74
-
75
93
res . render = renderTemplate < RenderOptions , Res > ( res , app )
76
-
77
94
res . links = setLinksHeader < Res > ( res )
78
-
79
95
res . type = setContentType < Res > ( res )
96
+ res . format = formatResponse ( req , res , next )
97
+ res . vary = setVaryHeader ( res )
80
98
81
99
next ?.( )
82
100
}
0 commit comments