-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpage-express-mapper.js
57 lines (51 loc) · 1.5 KB
/
page-express-mapper.js
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
45
46
47
48
49
50
51
52
53
54
55
56
57
const page = require('page')
function pageExpressMapper (params) {
let router, res
// renderMethod param
if (params.renderMethod && typeof params.renderMethod === 'function') {
res = {
render: params.renderMethod, // template, model
redirect: function (route) {
page.redirect(route)
}
}
// overload page.js route prototype
page.Route.prototype.middleware = function (fn) {
const self = this
return function (ctx, next) {
if (self.match(ctx.path, ctx.params)) return fn(ctx, res, next) // the method is the same except this line was modified
next()
}
}
}
// customRouter param
if (params.customRouter) {
router = params.customRouter
} else {
router = {
route: function (route) {
return {
get: function (...callbacks) {
page(route, ...callbacks)
router.stack[route] = router.stack[route] || {}
router.stack[route].get = true
},
post: function (...callbacks) {
page(route, ...callbacks)
router.stack[route] = router.stack[route] || {}
router.stack[route].post = true
},
all: function (...callbacks) {
page(route, ...callbacks)
router.stack[route] = router.stack[route] || {}
router.stack[route].get = true
router.stack[route].post = true
}
}
}
}
}
router.stack = {}
return router
}
module.exports = pageExpressMapper