-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathrouter.js
More file actions
44 lines (35 loc) · 842 Bytes
/
router.js
File metadata and controls
44 lines (35 loc) · 842 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import extractLocation from '../shared/extractLocation'
import { generateBase } from './project'
export default class Router {
previous = null
constructor(request, response) {
this.request = request
this.response = response
}
_redirect(target) {
if (!this.response.headersSent) {
const { url } = extractLocation(target)
this.response.redirect(url)
}
}
get url() {
return extractLocation(this.request.originalUrl).url
}
set url(target) {
this._redirect(target)
}
get path() {
return extractLocation(this.request.path).path
}
set path(target) {
const { search } = extractLocation(this.request.originalUrl)
if (search) {
this._redirect(`${target}?${search}`)
} else {
this._redirect(target)
}
}
get base() {
return generateBase()
}
}