@adonisjs/http-server 6.8.2-4 → 6.8.2-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.
- package/LICENSE.md +1 -1
- package/build/factories/http_context.d.ts +1 -0
- package/build/factories/http_context.d.ts.map +1 -0
- package/build/factories/main.d.ts +1 -0
- package/build/factories/main.d.ts.map +1 -0
- package/build/factories/qs_parser_factory.d.ts +1 -0
- package/build/factories/qs_parser_factory.d.ts.map +1 -0
- package/build/factories/request.d.ts +1 -0
- package/build/factories/request.d.ts.map +1 -0
- package/build/factories/response.d.ts +1 -0
- package/build/factories/response.d.ts.map +1 -0
- package/build/factories/router.d.ts +1 -0
- package/build/factories/router.d.ts.map +1 -0
- package/build/factories/server_factory.d.ts +1 -0
- package/build/factories/server_factory.d.ts.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -0
- package/build/src/cookies/client.d.ts +1 -0
- package/build/src/cookies/client.d.ts.map +1 -0
- package/build/src/cookies/drivers/encrypted.d.ts +1 -0
- package/build/src/cookies/drivers/encrypted.d.ts.map +1 -0
- package/build/src/cookies/drivers/plain.d.ts +1 -0
- package/build/src/cookies/drivers/plain.d.ts.map +1 -0
- package/build/src/cookies/drivers/signed.d.ts +1 -0
- package/build/src/cookies/drivers/signed.d.ts.map +1 -0
- package/build/src/cookies/parser.d.ts +1 -0
- package/build/src/cookies/parser.d.ts.map +1 -0
- package/build/src/cookies/serializer.d.ts +1 -0
- package/build/src/cookies/serializer.d.ts.map +1 -0
- package/build/src/debug.d.ts +1 -0
- package/build/src/debug.d.ts.map +1 -0
- package/build/src/define_config.d.ts +1 -0
- package/build/src/define_config.d.ts.map +1 -0
- package/build/src/define_middleware.d.ts +1 -0
- package/build/src/define_middleware.d.ts.map +1 -0
- package/build/src/exception_handler.d.ts +1 -0
- package/build/src/exception_handler.d.ts.map +1 -0
- package/build/src/exceptions.d.ts +1 -0
- package/build/src/exceptions.d.ts.map +1 -0
- package/build/src/helpers.d.ts +1 -0
- package/build/src/helpers.d.ts.map +1 -0
- package/build/src/http_context/local_storage.d.ts +1 -0
- package/build/src/http_context/local_storage.d.ts.map +1 -0
- package/build/src/http_context/main.d.ts +1 -0
- package/build/src/http_context/main.d.ts.map +1 -0
- package/build/src/qs.d.ts +1 -0
- package/build/src/qs.d.ts.map +1 -0
- package/build/src/redirect.d.ts +1 -0
- package/build/src/redirect.d.ts.map +1 -0
- package/build/src/request.d.ts +1 -0
- package/build/src/request.d.ts.map +1 -0
- package/build/src/response.d.ts +1 -0
- package/build/src/response.d.ts.map +1 -0
- package/build/src/router/brisk.d.ts +1 -0
- package/build/src/router/brisk.d.ts.map +1 -0
- package/build/src/router/executor.d.ts +1 -0
- package/build/src/router/executor.d.ts.map +1 -0
- package/build/src/router/factories/use_return_value.d.ts +1 -0
- package/build/src/router/factories/use_return_value.d.ts.map +1 -0
- package/build/src/router/group.d.ts +1 -0
- package/build/src/router/group.d.ts.map +1 -0
- package/build/src/router/lookup_store/main.d.ts +1 -0
- package/build/src/router/lookup_store/main.d.ts.map +1 -0
- package/build/src/router/lookup_store/route_finder.d.ts +1 -0
- package/build/src/router/lookup_store/route_finder.d.ts.map +1 -0
- package/build/src/router/lookup_store/url_builder.d.ts +1 -0
- package/build/src/router/lookup_store/url_builder.d.ts.map +1 -0
- package/build/src/router/main.d.ts +1 -0
- package/build/src/router/main.d.ts.map +1 -0
- package/build/src/router/matchers.d.ts +1 -0
- package/build/src/router/matchers.d.ts.map +1 -0
- package/build/src/router/parser.d.ts +1 -0
- package/build/src/router/parser.d.ts.map +1 -0
- package/build/src/router/resource.d.ts +1 -0
- package/build/src/router/resource.d.ts.map +1 -0
- package/build/src/router/route.d.ts +1 -0
- package/build/src/router/route.d.ts.map +1 -0
- package/build/src/router/store.d.ts +1 -0
- package/build/src/router/store.d.ts.map +1 -0
- package/build/src/server/factories/final_handler.d.ts +1 -0
- package/build/src/server/factories/final_handler.d.ts.map +1 -0
- package/build/src/server/factories/middleware_handler.d.ts +1 -0
- package/build/src/server/factories/middleware_handler.d.ts.map +1 -0
- package/build/src/server/factories/write_response.d.ts +1 -0
- package/build/src/server/factories/write_response.d.ts.map +1 -0
- package/build/src/server/main.d.ts +1 -0
- package/build/src/server/main.d.ts.map +1 -0
- package/build/src/types/base.d.ts +1 -0
- package/build/src/types/base.d.ts.map +1 -0
- package/build/src/types/main.d.ts +1 -0
- package/build/src/types/main.d.ts.map +1 -0
- package/build/src/types/middleware.d.ts +1 -0
- package/build/src/types/middleware.d.ts.map +1 -0
- package/build/src/types/qs.d.ts +1 -0
- package/build/src/types/qs.d.ts.map +1 -0
- package/build/src/types/request.d.ts +1 -0
- package/build/src/types/request.d.ts.map +1 -0
- package/build/src/types/response.d.ts +1 -0
- package/build/src/types/response.d.ts.map +1 -0
- package/build/src/types/route.d.ts +1 -0
- package/build/src/types/route.d.ts.map +1 -0
- package/build/src/types/server.d.ts +1 -0
- package/build/src/types/server.d.ts.map +1 -0
- package/factories/http_context.ts +73 -0
- package/factories/main.ts +15 -0
- package/factories/qs_parser_factory.ts +54 -0
- package/factories/request.ts +101 -0
- package/factories/response.ts +106 -0
- package/factories/router.ts +61 -0
- package/factories/server_factory.ts +94 -0
- package/index.ts +23 -0
- package/package.json +27 -23
- package/src/cookies/client.ts +98 -0
- package/src/cookies/drivers/encrypted.ts +42 -0
- package/src/cookies/drivers/plain.ts +37 -0
- package/src/cookies/drivers/signed.ts +42 -0
- package/src/cookies/parser.ts +196 -0
- package/src/cookies/serializer.ts +98 -0
- package/src/debug.ts +11 -0
- package/src/define_config.ts +56 -0
- package/src/define_middleware.ts +61 -0
- package/src/exception_handler.ts +290 -0
- package/src/exceptions.ts +55 -0
- package/src/helpers.ts +108 -0
- package/src/http_context/local_storage.ts +50 -0
- package/src/http_context/main.ts +126 -0
- package/src/qs.ts +31 -0
- package/src/redirect.ts +181 -0
- package/src/request.ts +982 -0
- package/src/response.ts +1421 -0
- package/src/router/brisk.ts +113 -0
- package/src/router/executor.ts +36 -0
- package/src/router/factories/use_return_value.ts +26 -0
- package/src/router/group.ts +243 -0
- package/src/router/lookup_store/main.ts +102 -0
- package/src/router/lookup_store/route_finder.ts +60 -0
- package/src/router/lookup_store/url_builder.ts +250 -0
- package/src/router/main.ts +431 -0
- package/src/router/matchers.ts +40 -0
- package/src/router/parser.ts +20 -0
- package/src/router/resource.ts +277 -0
- package/src/router/route.ts +363 -0
- package/src/router/store.ts +239 -0
- package/src/server/factories/final_handler.ts +38 -0
- package/src/server/factories/middleware_handler.ts +23 -0
- package/src/server/factories/write_response.ts +26 -0
- package/src/server/main.ts +356 -0
- package/src/types/base.ts +30 -0
- package/src/types/main.ts +16 -0
- package/src/types/middleware.ts +59 -0
- package/src/types/qs.ts +85 -0
- package/src/types/request.ts +52 -0
- package/src/types/response.ts +57 -0
- package/src/types/route.ts +217 -0
- package/src/types/server.ts +92 -0
package/src/redirect.ts
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @adonisjs/http-server
|
|
3
|
+
*
|
|
4
|
+
* (c) AdonisJS
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { parse } from 'node:url'
|
|
11
|
+
import encodeUrl from 'encodeurl'
|
|
12
|
+
import type { IncomingMessage } from 'node:http'
|
|
13
|
+
|
|
14
|
+
import debug from './debug.js'
|
|
15
|
+
import type { Qs } from './qs.js'
|
|
16
|
+
import type { Response } from './response.js'
|
|
17
|
+
import type { Router } from './router/main.js'
|
|
18
|
+
import type { MakeUrlOptions } from './types/route.js'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Exposes the API to construct redirect routes
|
|
22
|
+
*/
|
|
23
|
+
export class Redirect {
|
|
24
|
+
/**
|
|
25
|
+
* A boolean to forward the existing query string
|
|
26
|
+
*/
|
|
27
|
+
#forwardQueryString = false
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The status code for the redirect
|
|
31
|
+
*/
|
|
32
|
+
#statusCode = 302
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* A custom query string to forward
|
|
36
|
+
*/
|
|
37
|
+
#queryString: Record<string, any> = {}
|
|
38
|
+
|
|
39
|
+
#request: IncomingMessage
|
|
40
|
+
#response: Response
|
|
41
|
+
#router: Router
|
|
42
|
+
#qs: Qs
|
|
43
|
+
|
|
44
|
+
constructor(request: IncomingMessage, response: Response, router: Router, qs: Qs) {
|
|
45
|
+
this.#request = request
|
|
46
|
+
this.#response = response
|
|
47
|
+
this.#router = router
|
|
48
|
+
this.#qs = qs
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Sends response by setting require headers
|
|
53
|
+
*/
|
|
54
|
+
#sendResponse(url: string, query: Record<string, any>) {
|
|
55
|
+
const stringified = this.#qs.stringify(query)
|
|
56
|
+
|
|
57
|
+
url = stringified ? `${url}?${stringified}` : url
|
|
58
|
+
debug('redirecting to url "%s"', url)
|
|
59
|
+
|
|
60
|
+
this.#response.location(encodeUrl(url))
|
|
61
|
+
this.#response.safeStatus(this.#statusCode)
|
|
62
|
+
this.#response.type('text/plain; charset=utf-8')
|
|
63
|
+
this.#response.send(`Redirecting to ${url}`)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Returns the referrer url
|
|
68
|
+
*/
|
|
69
|
+
#getReferrerUrl(): string {
|
|
70
|
+
let url = this.#request.headers['referer'] || this.#request.headers['referrer'] || '/'
|
|
71
|
+
return Array.isArray(url) ? url[0] : url
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Set a custom status code.
|
|
76
|
+
*/
|
|
77
|
+
status(statusCode: number): this {
|
|
78
|
+
this.#statusCode = statusCode
|
|
79
|
+
return this
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Clearing query string values added using the
|
|
84
|
+
* "withQs" method
|
|
85
|
+
*/
|
|
86
|
+
clearQs(): this {
|
|
87
|
+
this.#forwardQueryString = false
|
|
88
|
+
this.#queryString = {}
|
|
89
|
+
return this
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Define query string for the redirect. Not passing
|
|
94
|
+
* any value will forward the current request query
|
|
95
|
+
* string.
|
|
96
|
+
*/
|
|
97
|
+
withQs(): this
|
|
98
|
+
withQs(values: Record<string, any>): this
|
|
99
|
+
withQs(name: string, value: any): this
|
|
100
|
+
withQs(name?: Record<string, any> | string, value?: any): this {
|
|
101
|
+
if (typeof name === 'undefined') {
|
|
102
|
+
this.#forwardQueryString = true
|
|
103
|
+
return this
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (typeof name === 'string') {
|
|
107
|
+
this.#queryString[name] = value
|
|
108
|
+
return this
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
Object.assign(this.#queryString, name)
|
|
112
|
+
return this
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Redirect to the previous path.
|
|
117
|
+
*/
|
|
118
|
+
back() {
|
|
119
|
+
let query: Record<string, any> = {}
|
|
120
|
+
|
|
121
|
+
const referrerUrl = this.#getReferrerUrl()
|
|
122
|
+
const url = parse(referrerUrl)
|
|
123
|
+
|
|
124
|
+
debug('referrer url "%s"', referrerUrl)
|
|
125
|
+
debug('referrer base url "%s"', url.pathname)
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Parse query string from the referrer url
|
|
129
|
+
*/
|
|
130
|
+
if (this.#forwardQueryString) {
|
|
131
|
+
query = this.#qs.parse(url.query || '')
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Append custom query string
|
|
136
|
+
*/
|
|
137
|
+
Object.assign(query, this.#queryString)
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Redirect
|
|
141
|
+
*/
|
|
142
|
+
this.#sendResponse(url.pathname || '', query)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Redirect the request using a route identifier.
|
|
147
|
+
*/
|
|
148
|
+
toRoute(routeIdentifier: string, params?: any[] | Record<string, any>, options?: MakeUrlOptions) {
|
|
149
|
+
if (options && options.qs) {
|
|
150
|
+
this.withQs(options.qs)
|
|
151
|
+
options.qs = undefined
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const url = this.#router.makeUrl(routeIdentifier, params, options)
|
|
155
|
+
return this.toPath(url)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Redirect the request using a path.
|
|
160
|
+
*/
|
|
161
|
+
toPath(url: string) {
|
|
162
|
+
let query: Record<string, any> = {}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Extract query string from the current URL
|
|
166
|
+
*/
|
|
167
|
+
if (this.#forwardQueryString) {
|
|
168
|
+
query = this.#qs.parse(parse(this.#request.url!).query || '')
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Assign custom query string
|
|
173
|
+
*/
|
|
174
|
+
Object.assign(query, this.#queryString)
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Redirect
|
|
178
|
+
*/
|
|
179
|
+
this.#sendResponse(url, query)
|
|
180
|
+
}
|
|
181
|
+
}
|