express-ext 0.5.2 → 0.5.4
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/lib/HealthController.js +14 -15
- package/lib/LogController.js +55 -56
- package/lib/index.js +19 -11
- package/lib/log.js +146 -151
- package/lib/search.js +108 -0
- package/package.json +1 -1
- package/src/HealthController.ts +2 -2
- package/src/LogController.ts +6 -7
- package/src/access.ts +5 -7
- package/src/index.ts +20 -12
- package/src/log.ts +4 -6
- package/src/search.ts +107 -0
package/lib/HealthController.js
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
|
-
var health_1 = require("./health")
|
|
1
|
+
"use strict"
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
|
+
var health_1 = require("./health")
|
|
4
4
|
var HealthController = (function () {
|
|
5
5
|
function HealthController(checkers) {
|
|
6
|
-
this.checkers = checkers
|
|
7
|
-
this.check = this.check.bind(this)
|
|
6
|
+
this.checkers = checkers
|
|
7
|
+
this.check = this.check.bind(this)
|
|
8
8
|
}
|
|
9
9
|
HealthController.prototype.check = function (req, res) {
|
|
10
10
|
health_1.health(this.checkers).then(function (r) {
|
|
11
|
-
if (r.status ===
|
|
12
|
-
|
|
11
|
+
if (r.status === "UP") {
|
|
12
|
+
res.status(200).json(r).end()
|
|
13
|
+
} else {
|
|
14
|
+
res.status(500).json(r).end()
|
|
13
15
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return HealthController;
|
|
20
|
-
}());
|
|
21
|
-
exports.HealthController = HealthController;
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
return HealthController
|
|
19
|
+
})()
|
|
20
|
+
exports.HealthController = HealthController
|
package/lib/LogController.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
1
|
+
"use strict"
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
3
|
exports.map = {
|
|
4
4
|
TRACE: -2,
|
|
5
5
|
DEBUG: -1,
|
|
@@ -7,84 +7,83 @@ exports.map = {
|
|
|
7
7
|
WARN: 1,
|
|
8
8
|
ERROR: 2,
|
|
9
9
|
PANIC: 3,
|
|
10
|
-
FATAL: 4
|
|
11
|
-
}
|
|
10
|
+
FATAL: 4,
|
|
11
|
+
}
|
|
12
12
|
var LogController = (function () {
|
|
13
13
|
function LogController(logger, updateL, mp) {
|
|
14
|
-
this.logger = logger
|
|
15
|
-
this.map =
|
|
16
|
-
this.update = updateL ? updateL : updateLog
|
|
17
|
-
this.config = this.config.bind(this)
|
|
14
|
+
this.logger = logger
|
|
15
|
+
this.map = mp ? mp : exports.map
|
|
16
|
+
this.update = updateL ? updateL : updateLog
|
|
17
|
+
this.config = this.config.bind(this)
|
|
18
18
|
}
|
|
19
19
|
LogController.prototype.config = function (req, res) {
|
|
20
|
-
var obj = req.body
|
|
21
|
-
if (!obj || obj === '') {
|
|
22
|
-
return res.status(400).end('The request body cannot be empty');
|
|
23
|
-
}
|
|
20
|
+
var obj = req.body
|
|
24
21
|
if (!this.logger) {
|
|
25
|
-
|
|
22
|
+
res.status(503).end("Logger is not available")
|
|
23
|
+
return
|
|
26
24
|
}
|
|
27
|
-
if (typeof obj.level ===
|
|
25
|
+
if (typeof obj.level === "string" && obj.level.length > 0) {
|
|
28
26
|
if (!this.map) {
|
|
29
|
-
|
|
27
|
+
res.status(503).end("Map is not available")
|
|
28
|
+
return
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
|
-
var changed = this.update(this.logger, obj, this.map)
|
|
31
|
+
var changed = this.update(this.logger, obj, this.map)
|
|
33
32
|
if (changed) {
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return res.status(204).json(false).end();
|
|
33
|
+
res.status(200).json(true).end()
|
|
34
|
+
} else {
|
|
35
|
+
res.status(204).json(false).end()
|
|
38
36
|
}
|
|
39
|
-
}
|
|
40
|
-
return LogController
|
|
41
|
-
}()
|
|
42
|
-
exports.LogController = LogController
|
|
37
|
+
}
|
|
38
|
+
return LogController
|
|
39
|
+
})()
|
|
40
|
+
exports.LogController = LogController
|
|
43
41
|
function updateLog(logger, obj, mp) {
|
|
44
|
-
var changed = false
|
|
45
|
-
if (typeof obj.level ===
|
|
46
|
-
var lv = mp[obj.level.toUpperCase()]
|
|
42
|
+
var changed = false
|
|
43
|
+
if (typeof obj.level === "string" && obj.level.length > 0) {
|
|
44
|
+
var lv = mp[obj.level.toUpperCase()]
|
|
47
45
|
if (lv !== undefined) {
|
|
48
|
-
logger.level = lv
|
|
49
|
-
changed = true
|
|
46
|
+
logger.level = lv
|
|
47
|
+
changed = true
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
if (obj.map) {
|
|
53
|
-
if (typeof obj.map.level ===
|
|
54
|
-
logger.map.level = obj.map.level
|
|
55
|
-
changed = true
|
|
51
|
+
if (typeof obj.map.level === "string" && obj.map.level.length > 0) {
|
|
52
|
+
logger.map.level = obj.map.level
|
|
53
|
+
changed = true
|
|
56
54
|
}
|
|
57
|
-
if (typeof obj.map.time ===
|
|
58
|
-
logger.map.time = obj.map.time
|
|
59
|
-
changed = true
|
|
55
|
+
if (typeof obj.map.time === "string" && obj.map.time.length > 0) {
|
|
56
|
+
logger.map.time = obj.map.time
|
|
57
|
+
changed = true
|
|
60
58
|
}
|
|
61
|
-
if (typeof obj.map.msg ===
|
|
62
|
-
logger.map.msg = obj.map.msg
|
|
63
|
-
changed = true
|
|
59
|
+
if (typeof obj.map.msg === "string" && obj.map.msg.length > 0) {
|
|
60
|
+
logger.map.msg = obj.map.msg
|
|
61
|
+
changed = true
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
|
-
if (obj.constants !== undefined && typeof obj.constants ===
|
|
67
|
-
var ks = Object.keys(obj.constants)
|
|
64
|
+
if (obj.constants !== undefined && typeof obj.constants === "object") {
|
|
65
|
+
var ks = Object.keys(obj.constants)
|
|
68
66
|
if (ks.length > 0) {
|
|
69
|
-
logger.constants = obj.constants
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
logger.constants = undefined;
|
|
67
|
+
logger.constants = obj.constants
|
|
68
|
+
} else {
|
|
69
|
+
logger.constants = undefined
|
|
73
70
|
}
|
|
74
|
-
changed = true
|
|
71
|
+
changed = true
|
|
75
72
|
}
|
|
76
73
|
if (obj.name) {
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
if (
|
|
75
|
+
typeof obj.name.trace === "string" &&
|
|
76
|
+
typeof obj.name.debug === "string" &&
|
|
77
|
+
typeof obj.name.info === "string" &&
|
|
78
|
+
typeof obj.name.warn === "string" &&
|
|
79
|
+
typeof obj.name.error === "string" &&
|
|
80
|
+
typeof obj.name.panic === "string" &&
|
|
81
|
+
typeof obj.name.fatal === "string"
|
|
82
|
+
) {
|
|
83
|
+
logger.name = obj.name
|
|
84
|
+
changed = true
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
|
-
return changed
|
|
87
|
+
return changed
|
|
89
88
|
}
|
|
90
|
-
exports.updateLog = updateLog
|
|
89
|
+
exports.updateLog = updateLog
|
package/lib/index.js
CHANGED
|
@@ -53,10 +53,12 @@ var SavedController = (function () {
|
|
|
53
53
|
var userId = res.locals[this.userId]
|
|
54
54
|
var id = req.params[this.id]
|
|
55
55
|
if (!id || id.length === 0) {
|
|
56
|
-
|
|
56
|
+
res.status(400).end("'" + this.id + "' cannot be empty")
|
|
57
|
+
return
|
|
57
58
|
}
|
|
58
59
|
if (!userId || userId.length === 0) {
|
|
59
|
-
|
|
60
|
+
res.status(400).end("'" + this.userId + "' cannot be empty")
|
|
61
|
+
return
|
|
60
62
|
}
|
|
61
63
|
this.savedService
|
|
62
64
|
.save(userId, id)
|
|
@@ -73,10 +75,12 @@ var SavedController = (function () {
|
|
|
73
75
|
var userId = res.locals[this.userId]
|
|
74
76
|
var id = req.params[this.id]
|
|
75
77
|
if (!id || id.length === 0) {
|
|
76
|
-
|
|
78
|
+
res.status(400).end("'" + this.id + "' cannot be empty")
|
|
79
|
+
return
|
|
77
80
|
}
|
|
78
81
|
if (!userId || userId.length === 0) {
|
|
79
|
-
|
|
82
|
+
res.status(400).end("'" + this.userId + "' cannot be empty")
|
|
83
|
+
return
|
|
80
84
|
}
|
|
81
85
|
this.savedService
|
|
82
86
|
.remove(userId, id)
|
|
@@ -105,10 +109,12 @@ var FollowController = (function () {
|
|
|
105
109
|
var userId = res.locals[this.userId]
|
|
106
110
|
var id = req.params[this.id]
|
|
107
111
|
if (!id || id.length === 0) {
|
|
108
|
-
|
|
112
|
+
res.status(400).end("'" + this.id + "' cannot be empty")
|
|
113
|
+
return
|
|
109
114
|
}
|
|
110
115
|
if (!userId || userId.length === 0) {
|
|
111
|
-
|
|
116
|
+
res.status(400).end("'" + this.userId + "' cannot be empty")
|
|
117
|
+
return
|
|
112
118
|
}
|
|
113
119
|
this.service
|
|
114
120
|
.follow(userId, id)
|
|
@@ -125,10 +131,12 @@ var FollowController = (function () {
|
|
|
125
131
|
var userId = res.locals[this.userId]
|
|
126
132
|
var id = req.params[this.id]
|
|
127
133
|
if (!id || id.length === 0) {
|
|
128
|
-
|
|
134
|
+
res.status(400).end("'" + this.id + "' cannot be empty")
|
|
135
|
+
return
|
|
129
136
|
}
|
|
130
137
|
if (!userId || userId.length === 0) {
|
|
131
|
-
|
|
138
|
+
res.status(400).end("'" + this.userId + "' cannot be empty")
|
|
139
|
+
return
|
|
132
140
|
}
|
|
133
141
|
this.service
|
|
134
142
|
.unfollow(userId, id)
|
|
@@ -174,7 +182,7 @@ var UserReactionController = (function () {
|
|
|
174
182
|
this.service
|
|
175
183
|
.react(id, author, reaction)
|
|
176
184
|
.then(function (count) {
|
|
177
|
-
|
|
185
|
+
res.status(200).json(count).end()
|
|
178
186
|
})
|
|
179
187
|
.catch(function (err) {
|
|
180
188
|
return http_1.handleError(err, res, _this.log)
|
|
@@ -200,7 +208,7 @@ var UserReactionController = (function () {
|
|
|
200
208
|
this.service
|
|
201
209
|
.unreact(id, author, reaction)
|
|
202
210
|
.then(function (count) {
|
|
203
|
-
|
|
211
|
+
res.status(200).json(count).end()
|
|
204
212
|
})
|
|
205
213
|
.catch(function (err) {
|
|
206
214
|
return http_1.handleError(err, res, _this.log)
|
|
@@ -221,7 +229,7 @@ var UserReactionController = (function () {
|
|
|
221
229
|
this.service
|
|
222
230
|
.checkReaction(id, author)
|
|
223
231
|
.then(function (count) {
|
|
224
|
-
|
|
232
|
+
res.status(200).json(count).end()
|
|
225
233
|
})
|
|
226
234
|
.catch(function (err) {
|
|
227
235
|
return http_1.handleError(err, res, _this.log)
|
package/lib/log.js
CHANGED
|
@@ -1,247 +1,242 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
|
-
var stream_1 = require("stream")
|
|
4
|
-
var resources_1 = require("./resources")
|
|
1
|
+
"use strict"
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
|
+
var stream_1 = require("stream")
|
|
4
|
+
var resources_1 = require("./resources")
|
|
5
5
|
function createConfig(c) {
|
|
6
6
|
if (!c) {
|
|
7
|
-
return { skips: [], duration:
|
|
7
|
+
return { skips: [], duration: "duration", request: "", response: "", status: "", size: "" }
|
|
8
8
|
}
|
|
9
9
|
var l = {
|
|
10
10
|
log: c.log,
|
|
11
11
|
separate: c.separate,
|
|
12
|
-
skips: c.skips ? c.skips.split(
|
|
13
|
-
duration: c.duration ? c.duration :
|
|
14
|
-
request: c.request ? c.request :
|
|
15
|
-
response: c.response ? c.response :
|
|
16
|
-
status: c.status ? c.status :
|
|
17
|
-
size: c.size ? c.size :
|
|
18
|
-
}
|
|
19
|
-
return l
|
|
12
|
+
skips: c.skips ? c.skips.split(",") : [],
|
|
13
|
+
duration: c.duration ? c.duration : "duration",
|
|
14
|
+
request: c.request ? c.request : "",
|
|
15
|
+
response: c.response ? c.response : "",
|
|
16
|
+
status: c.status ? c.status : "",
|
|
17
|
+
size: c.size ? c.size : "",
|
|
18
|
+
}
|
|
19
|
+
return l
|
|
20
20
|
}
|
|
21
|
-
exports.createConfig = createConfig
|
|
21
|
+
exports.createConfig = createConfig
|
|
22
22
|
function skip(skips, url) {
|
|
23
23
|
if (skips.length === 0) {
|
|
24
|
-
return false
|
|
24
|
+
return false
|
|
25
25
|
}
|
|
26
|
-
var u = removeUrlParams(url)
|
|
26
|
+
var u = removeUrlParams(url)
|
|
27
27
|
for (var _i = 0, skips_1 = skips; _i < skips_1.length; _i++) {
|
|
28
|
-
var s = skips_1[_i]
|
|
28
|
+
var s = skips_1[_i]
|
|
29
29
|
if (u.endsWith(s)) {
|
|
30
|
-
return true
|
|
30
|
+
return true
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
return false
|
|
33
|
+
return false
|
|
34
34
|
}
|
|
35
|
-
exports.skip = skip
|
|
35
|
+
exports.skip = skip
|
|
36
36
|
function removeUrlParams(url) {
|
|
37
|
-
var startParams = url.indexOf(
|
|
38
|
-
return startParams !== -1 ? url.substring(0, startParams) : url
|
|
37
|
+
var startParams = url.indexOf("?")
|
|
38
|
+
return startParams !== -1 ? url.substring(0, startParams) : url
|
|
39
39
|
}
|
|
40
|
-
exports.removeUrlParams = removeUrlParams
|
|
41
|
-
var o =
|
|
40
|
+
exports.removeUrlParams = removeUrlParams
|
|
41
|
+
var o = "OPTIONS"
|
|
42
42
|
var MiddlewareLogger = (function () {
|
|
43
43
|
function MiddlewareLogger(write, conf, build) {
|
|
44
|
-
this.write = write
|
|
45
|
-
this.build = build
|
|
46
|
-
this.log = this.log.bind(this)
|
|
47
|
-
this.conf = createConfig(conf)
|
|
44
|
+
this.write = write
|
|
45
|
+
this.build = build
|
|
46
|
+
this.log = this.log.bind(this)
|
|
47
|
+
this.conf = createConfig(conf)
|
|
48
48
|
}
|
|
49
49
|
MiddlewareLogger.prototype.log = function (req, res, next) {
|
|
50
|
-
var _this = this
|
|
51
|
-
var m = req.method
|
|
50
|
+
var _this = this
|
|
51
|
+
var m = req.method
|
|
52
52
|
if (m !== o && this.conf.log && !skip(this.conf.skips, req.originalUrl)) {
|
|
53
|
-
var start_1 = process.hrtime()
|
|
54
|
-
var x_1 = this.conf.request
|
|
55
|
-
var r_1 = false
|
|
56
|
-
if (m !==
|
|
57
|
-
r_1 = true
|
|
53
|
+
var start_1 = process.hrtime()
|
|
54
|
+
var x_1 = this.conf.request
|
|
55
|
+
var r_1 = false
|
|
56
|
+
if (m !== "GET" && m !== "DELETE") {
|
|
57
|
+
r_1 = true
|
|
58
58
|
}
|
|
59
|
-
var msg_1 = m + " " + req.originalUrl
|
|
59
|
+
var msg_1 = m + " " + req.originalUrl
|
|
60
60
|
if (this.conf.separate && r_1) {
|
|
61
61
|
if (this.conf.request.length > 0) {
|
|
62
|
-
var op = {}
|
|
63
|
-
op[x_1] = JSON.stringify(req.body)
|
|
62
|
+
var op = {}
|
|
63
|
+
op[x_1] = JSON.stringify(req.body)
|
|
64
64
|
if (this.build) {
|
|
65
|
-
var op2 = this.build(req, op)
|
|
66
|
-
this.write(msg_1, op2)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
this.write(msg_1, op);
|
|
65
|
+
var op2 = this.build(req, op)
|
|
66
|
+
this.write(msg_1, op2)
|
|
67
|
+
} else {
|
|
68
|
+
this.write(msg_1, op)
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
|
-
var chunks_1 = []
|
|
74
|
-
mapResponseBody(res, chunks_1)
|
|
75
|
-
res.on(
|
|
76
|
-
var duration = getDurationInMilliseconds(start_1)
|
|
77
|
-
var op = {}
|
|
72
|
+
var chunks_1 = []
|
|
73
|
+
mapResponseBody(res, chunks_1)
|
|
74
|
+
res.on("finish", function () {
|
|
75
|
+
var duration = getDurationInMilliseconds(start_1)
|
|
76
|
+
var op = {}
|
|
78
77
|
if (r_1 && !_this.conf.separate && _this.conf.request.length > 0) {
|
|
79
|
-
op[x_1] = JSON.stringify(req.body)
|
|
78
|
+
op[x_1] = JSON.stringify(req.body)
|
|
80
79
|
}
|
|
81
80
|
if (_this.conf.response.length > 0) {
|
|
82
|
-
var rsBody = Buffer.concat(chunks_1).toString(resources_1.resources.encoding)
|
|
83
|
-
op[_this.conf.response] = rsBody
|
|
81
|
+
var rsBody = Buffer.concat(chunks_1).toString(resources_1.resources.encoding)
|
|
82
|
+
op[_this.conf.response] = rsBody
|
|
84
83
|
}
|
|
85
84
|
if (_this.conf.status.length > 0) {
|
|
86
|
-
op[_this.conf.status] = res.statusCode
|
|
85
|
+
op[_this.conf.status] = res.statusCode
|
|
87
86
|
}
|
|
88
87
|
if (_this.conf.size.length > 0) {
|
|
89
|
-
if (
|
|
90
|
-
op[_this.conf.size] = res[
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
op[_this.conf.size] = l;
|
|
88
|
+
if ("_contentLength" in res) {
|
|
89
|
+
op[_this.conf.size] = res["_contentLength"]
|
|
90
|
+
} else if (res.hasHeader("content-length")) {
|
|
91
|
+
var l = res.getHeader("content-length")
|
|
92
|
+
if (typeof l === "number" || typeof l === "string") {
|
|
93
|
+
op[_this.conf.size] = l
|
|
96
94
|
}
|
|
97
95
|
}
|
|
98
96
|
}
|
|
99
|
-
op[_this.conf.duration] = duration
|
|
97
|
+
op[_this.conf.duration] = duration
|
|
100
98
|
if (_this.build) {
|
|
101
|
-
var op2 = _this.build(req, op)
|
|
102
|
-
_this.write(msg_1, op2)
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
_this.write(msg_1, op);
|
|
99
|
+
var op2 = _this.build(req, op)
|
|
100
|
+
_this.write(msg_1, op2)
|
|
101
|
+
} else {
|
|
102
|
+
_this.write(msg_1, op)
|
|
106
103
|
}
|
|
107
|
-
})
|
|
108
|
-
next()
|
|
104
|
+
})
|
|
105
|
+
next()
|
|
106
|
+
} else {
|
|
107
|
+
next()
|
|
109
108
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return MiddlewareLogger;
|
|
115
|
-
}());
|
|
116
|
-
exports.MiddlewareLogger = MiddlewareLogger;
|
|
109
|
+
}
|
|
110
|
+
return MiddlewareLogger
|
|
111
|
+
})()
|
|
112
|
+
exports.MiddlewareLogger = MiddlewareLogger
|
|
117
113
|
var mapResponseBody = function (res, chunks) {
|
|
118
|
-
var defaultWrite = res.write.bind(res)
|
|
119
|
-
var defaultEnd = res.end.bind(res)
|
|
120
|
-
var ps = new stream_1.PassThrough()
|
|
121
|
-
ps.on(
|
|
114
|
+
var defaultWrite = res.write.bind(res)
|
|
115
|
+
var defaultEnd = res.end.bind(res)
|
|
116
|
+
var ps = new stream_1.PassThrough()
|
|
117
|
+
ps.on("data", function (data) {
|
|
118
|
+
return chunks.push(data)
|
|
119
|
+
})
|
|
122
120
|
res.write = function () {
|
|
123
|
-
var _a
|
|
124
|
-
var args = []
|
|
121
|
+
var _a
|
|
122
|
+
var args = []
|
|
125
123
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
126
|
-
args[_i] = arguments[_i]
|
|
124
|
+
args[_i] = arguments[_i]
|
|
127
125
|
}
|
|
128
|
-
(_a = ps).write.apply(_a, args)
|
|
129
|
-
defaultWrite.apply(void 0, args)
|
|
130
|
-
}
|
|
126
|
+
;(_a = ps).write.apply(_a, args)
|
|
127
|
+
defaultWrite.apply(void 0, args)
|
|
128
|
+
}
|
|
131
129
|
res.end = function () {
|
|
132
|
-
var args = []
|
|
130
|
+
var args = []
|
|
133
131
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
134
|
-
args[_i] = arguments[_i]
|
|
132
|
+
args[_i] = arguments[_i]
|
|
135
133
|
}
|
|
136
|
-
ps.end.apply(ps, args)
|
|
137
|
-
defaultEnd.apply(void 0, args)
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
var NS_PER_SEC = 1e9
|
|
141
|
-
var NS_TO_MS = 1e6
|
|
134
|
+
ps.end.apply(ps, args)
|
|
135
|
+
defaultEnd.apply(void 0, args)
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
var NS_PER_SEC = 1e9
|
|
139
|
+
var NS_TO_MS = 1e6
|
|
142
140
|
var getDurationInMilliseconds = function (start) {
|
|
143
|
-
var diff = process.hrtime(start)
|
|
144
|
-
return (diff[0] * NS_PER_SEC + diff[1]) / NS_TO_MS
|
|
145
|
-
}
|
|
141
|
+
var diff = process.hrtime(start)
|
|
142
|
+
return (diff[0] * NS_PER_SEC + diff[1]) / NS_TO_MS
|
|
143
|
+
}
|
|
146
144
|
var MiddlewareController = (function () {
|
|
147
145
|
function MiddlewareController(logger) {
|
|
148
|
-
this.logger = logger
|
|
149
|
-
this.config = this.config.bind(this)
|
|
146
|
+
this.logger = logger
|
|
147
|
+
this.config = this.config.bind(this)
|
|
150
148
|
}
|
|
151
149
|
MiddlewareController.prototype.config = function (req, res) {
|
|
152
|
-
var obj = req.body
|
|
153
|
-
if (!obj || obj === '') {
|
|
154
|
-
return res.status(400).end('The request body cannot be empty');
|
|
155
|
-
}
|
|
150
|
+
var obj = req.body
|
|
156
151
|
if (!this.logger) {
|
|
157
|
-
|
|
152
|
+
res.status(503).end("Logger is not available")
|
|
153
|
+
return
|
|
158
154
|
}
|
|
159
|
-
var changed = false
|
|
155
|
+
var changed = false
|
|
160
156
|
if (obj.log !== undefined) {
|
|
161
|
-
this.logger.conf.log = obj.log
|
|
162
|
-
changed = true
|
|
157
|
+
this.logger.conf.log = obj.log
|
|
158
|
+
changed = true
|
|
163
159
|
}
|
|
164
160
|
if (obj.separate !== undefined) {
|
|
165
|
-
this.logger.conf.separate = obj.separate
|
|
166
|
-
changed = true
|
|
161
|
+
this.logger.conf.separate = obj.separate
|
|
162
|
+
changed = true
|
|
167
163
|
}
|
|
168
164
|
if (Array.isArray(obj.skips)) {
|
|
169
165
|
if (isValidSkips(obj.skips)) {
|
|
170
|
-
this.logger.conf.skips = obj.skips
|
|
171
|
-
changed = true
|
|
166
|
+
this.logger.conf.skips = obj.skips
|
|
167
|
+
changed = true
|
|
172
168
|
}
|
|
173
169
|
}
|
|
174
|
-
if (typeof obj.duration ===
|
|
175
|
-
this.logger.conf.duration = obj.duration
|
|
176
|
-
changed = true
|
|
170
|
+
if (typeof obj.duration === "string" && obj.duration.length > 0) {
|
|
171
|
+
this.logger.conf.duration = obj.duration
|
|
172
|
+
changed = true
|
|
177
173
|
}
|
|
178
|
-
if (typeof obj.request ===
|
|
179
|
-
this.logger.conf.request = obj.request
|
|
180
|
-
changed = true
|
|
174
|
+
if (typeof obj.request === "string") {
|
|
175
|
+
this.logger.conf.request = obj.request
|
|
176
|
+
changed = true
|
|
181
177
|
}
|
|
182
|
-
if (typeof obj.response ===
|
|
183
|
-
this.logger.conf.response = obj.response
|
|
184
|
-
changed = true
|
|
178
|
+
if (typeof obj.response === "string") {
|
|
179
|
+
this.logger.conf.response = obj.response
|
|
180
|
+
changed = true
|
|
185
181
|
}
|
|
186
|
-
if (typeof obj.status ===
|
|
187
|
-
this.logger.conf.status = obj.status
|
|
188
|
-
changed = true
|
|
182
|
+
if (typeof obj.status === "string") {
|
|
183
|
+
this.logger.conf.status = obj.status
|
|
184
|
+
changed = true
|
|
189
185
|
}
|
|
190
|
-
if (typeof obj.size ===
|
|
191
|
-
this.logger.conf.size = obj.size
|
|
192
|
-
changed = true
|
|
186
|
+
if (typeof obj.size === "string") {
|
|
187
|
+
this.logger.conf.size = obj.size
|
|
188
|
+
changed = true
|
|
193
189
|
}
|
|
194
190
|
if (changed) {
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return res.status(204).json(false).end();
|
|
191
|
+
res.status(200).json(true).end()
|
|
192
|
+
} else {
|
|
193
|
+
res.status(204).json(false).end()
|
|
199
194
|
}
|
|
200
|
-
}
|
|
201
|
-
return MiddlewareController
|
|
202
|
-
}()
|
|
203
|
-
exports.MiddlewareController = MiddlewareController
|
|
195
|
+
}
|
|
196
|
+
return MiddlewareController
|
|
197
|
+
})()
|
|
198
|
+
exports.MiddlewareController = MiddlewareController
|
|
204
199
|
function isValidSkips(s) {
|
|
205
200
|
for (var _i = 0, s_1 = s; _i < s_1.length; _i++) {
|
|
206
|
-
var x = s_1[_i]
|
|
207
|
-
if (!(typeof x ===
|
|
208
|
-
return false
|
|
201
|
+
var x = s_1[_i]
|
|
202
|
+
if (!(typeof x === "string")) {
|
|
203
|
+
return false
|
|
209
204
|
}
|
|
210
205
|
}
|
|
211
|
-
return true
|
|
206
|
+
return true
|
|
212
207
|
}
|
|
213
|
-
exports.isValidSkips = isValidSkips
|
|
208
|
+
exports.isValidSkips = isValidSkips
|
|
214
209
|
function mask(s, start, end, replace) {
|
|
215
210
|
if (start < 0) {
|
|
216
|
-
start = 0
|
|
211
|
+
start = 0
|
|
217
212
|
}
|
|
218
213
|
if (end < 0) {
|
|
219
|
-
end = 0
|
|
214
|
+
end = 0
|
|
220
215
|
}
|
|
221
|
-
var t = start + end
|
|
216
|
+
var t = start + end
|
|
222
217
|
if (t >= s.length) {
|
|
223
|
-
return replace.repeat(s.length)
|
|
218
|
+
return replace.repeat(s.length)
|
|
224
219
|
}
|
|
225
|
-
return s.substr(0, start) + replace.repeat(s.length - t) + s.substr(s.length - end)
|
|
220
|
+
return s.substr(0, start) + replace.repeat(s.length - t) + s.substr(s.length - end)
|
|
226
221
|
}
|
|
227
|
-
exports.mask = mask
|
|
222
|
+
exports.mask = mask
|
|
228
223
|
function margin(s, start, end, replace) {
|
|
229
224
|
if (start >= end) {
|
|
230
|
-
return
|
|
225
|
+
return ""
|
|
231
226
|
}
|
|
232
227
|
if (start < 0) {
|
|
233
|
-
start = 0
|
|
228
|
+
start = 0
|
|
234
229
|
}
|
|
235
230
|
if (end < 0) {
|
|
236
|
-
end = 0
|
|
231
|
+
end = 0
|
|
237
232
|
}
|
|
238
233
|
if (start >= s.length) {
|
|
239
|
-
return replace.repeat(s.length)
|
|
234
|
+
return replace.repeat(s.length)
|
|
240
235
|
}
|
|
241
236
|
if (end >= s.length) {
|
|
242
|
-
return replace.repeat(start) + s.substr(start)
|
|
237
|
+
return replace.repeat(start) + s.substr(start)
|
|
243
238
|
}
|
|
244
|
-
return replace.repeat(start) + s.substr(start, end - start) + replace.repeat(s.length - end)
|
|
239
|
+
return replace.repeat(start) + s.substr(start, end - start) + replace.repeat(s.length - end)
|
|
245
240
|
}
|
|
246
|
-
exports.margin = margin
|
|
247
|
-
exports.maskMargin = margin
|
|
241
|
+
exports.margin = margin
|
|
242
|
+
exports.maskMargin = margin
|
package/lib/search.js
CHANGED
|
@@ -3,6 +3,114 @@ Object.defineProperty(exports, "__esModule", { value: true })
|
|
|
3
3
|
var http_1 = require("./http")
|
|
4
4
|
var resources_1 = require("./resources")
|
|
5
5
|
var et = ""
|
|
6
|
+
function getPage(req, filter) {
|
|
7
|
+
if (filter) {
|
|
8
|
+
var v0 = filter[resources_1.resources.page]
|
|
9
|
+
if (v0 == undefined) {
|
|
10
|
+
var field_1 = req.query[resources_1.resources.page]
|
|
11
|
+
var v_1 = field_1 ? field_1.toString() : undefined
|
|
12
|
+
if (!v_1 || v_1.length === 0) {
|
|
13
|
+
filter[resources_1.resources.page] = 1
|
|
14
|
+
return 1
|
|
15
|
+
}
|
|
16
|
+
if (isNaN(v_1)) {
|
|
17
|
+
filter[resources_1.resources.page] = 1
|
|
18
|
+
return 1
|
|
19
|
+
} else {
|
|
20
|
+
var n_1 = parseFloat(v_1)
|
|
21
|
+
if (n_1 < 1) {
|
|
22
|
+
n_1 = 1
|
|
23
|
+
}
|
|
24
|
+
filter[resources_1.resources.page] = n_1
|
|
25
|
+
return n_1
|
|
26
|
+
}
|
|
27
|
+
} else if (typeof v0 === "number") {
|
|
28
|
+
if (v0 > 0) {
|
|
29
|
+
return v0
|
|
30
|
+
} else {
|
|
31
|
+
filter[resources_1.resources.page] = 1
|
|
32
|
+
return 1
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
var field = req.query[resources_1.resources.page]
|
|
37
|
+
var v = field ? field.toString() : undefined
|
|
38
|
+
if (!v || v.length === 0) {
|
|
39
|
+
if (filter) {
|
|
40
|
+
filter[resources_1.resources.page] = 1
|
|
41
|
+
}
|
|
42
|
+
return 1
|
|
43
|
+
}
|
|
44
|
+
if (isNaN(v)) {
|
|
45
|
+
if (filter) {
|
|
46
|
+
filter[resources_1.resources.page] = 1
|
|
47
|
+
}
|
|
48
|
+
return 1
|
|
49
|
+
}
|
|
50
|
+
var n = parseFloat(v)
|
|
51
|
+
if (n < 1) {
|
|
52
|
+
n = 1
|
|
53
|
+
}
|
|
54
|
+
if (filter) {
|
|
55
|
+
filter[resources_1.resources.page] = n
|
|
56
|
+
}
|
|
57
|
+
return n
|
|
58
|
+
}
|
|
59
|
+
exports.getPage = getPage
|
|
60
|
+
function getLimit(req, filter) {
|
|
61
|
+
if (filter) {
|
|
62
|
+
var v0 = filter[resources_1.resources.limit]
|
|
63
|
+
if (v0 == undefined) {
|
|
64
|
+
var field = req.query[resources_1.resources.limit]
|
|
65
|
+
var v_2 = field ? field.toString() : undefined
|
|
66
|
+
if (!v_2 || v_2.length === 0) {
|
|
67
|
+
filter[resources_1.resources.limit] = resources_1.resources.defaultLimit
|
|
68
|
+
return resources_1.resources.defaultLimit
|
|
69
|
+
}
|
|
70
|
+
if (isNaN(v_2)) {
|
|
71
|
+
filter[resources_1.resources.limit] = resources_1.resources.defaultLimit
|
|
72
|
+
return 1
|
|
73
|
+
} else {
|
|
74
|
+
var n_2 = parseFloat(v_2)
|
|
75
|
+
if (n_2 < 1) {
|
|
76
|
+
n_2 = resources_1.resources.defaultLimit
|
|
77
|
+
}
|
|
78
|
+
filter[resources_1.resources.limit] = n_2
|
|
79
|
+
return n_2
|
|
80
|
+
}
|
|
81
|
+
} else if (typeof v0 === "number") {
|
|
82
|
+
if (v0 > 0) {
|
|
83
|
+
return v0
|
|
84
|
+
} else {
|
|
85
|
+
filter[resources_1.resources.limit] = resources_1.resources.defaultLimit
|
|
86
|
+
return resources_1.resources.defaultLimit
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
var fieldxxx = req.query[resources_1.resources.limit]
|
|
91
|
+
var v = fieldxxx ? fieldxxx.toString() : undefined
|
|
92
|
+
if (!v || v.length === 0) {
|
|
93
|
+
if (filter) {
|
|
94
|
+
filter[resources_1.resources.limit] = resources_1.resources.defaultLimit
|
|
95
|
+
}
|
|
96
|
+
return resources_1.resources.defaultLimit
|
|
97
|
+
}
|
|
98
|
+
if (isNaN(v)) {
|
|
99
|
+
if (filter) {
|
|
100
|
+
filter[resources_1.resources.limit] = resources_1.resources.defaultLimit
|
|
101
|
+
}
|
|
102
|
+
return resources_1.resources.defaultLimit
|
|
103
|
+
}
|
|
104
|
+
var n = parseFloat(v)
|
|
105
|
+
if (n < 1) {
|
|
106
|
+
n = resources_1.resources.defaultLimit
|
|
107
|
+
}
|
|
108
|
+
if (filter) {
|
|
109
|
+
filter[resources_1.resources.limit] = n
|
|
110
|
+
}
|
|
111
|
+
return n
|
|
112
|
+
}
|
|
113
|
+
exports.getLimit = getLimit
|
|
6
114
|
function queryLimit(req) {
|
|
7
115
|
return http_1.queryNumber(req, resources_1.resources.limit, resources_1.resources.defaultLimit)
|
|
8
116
|
}
|
package/package.json
CHANGED
package/src/HealthController.ts
CHANGED
|
@@ -8,9 +8,9 @@ export class HealthController {
|
|
|
8
8
|
check(req: Request, res: Response) {
|
|
9
9
|
health(this.checkers).then((r) => {
|
|
10
10
|
if (r.status === "UP") {
|
|
11
|
-
|
|
11
|
+
res.status(200).json(r).end()
|
|
12
12
|
} else {
|
|
13
|
-
|
|
13
|
+
res.status(500).json(r).end()
|
|
14
14
|
}
|
|
15
15
|
})
|
|
16
16
|
}
|
package/src/LogController.ts
CHANGED
|
@@ -69,22 +69,21 @@ export class LogController {
|
|
|
69
69
|
}
|
|
70
70
|
config(req: Request, res: Response) {
|
|
71
71
|
const obj: LogConfig = req.body
|
|
72
|
-
if (!obj || (obj as any) === "") {
|
|
73
|
-
return res.status(400).end("The request body cannot be empty")
|
|
74
|
-
}
|
|
75
72
|
if (!this.logger) {
|
|
76
|
-
|
|
73
|
+
res.status(503).end("Logger is not available")
|
|
74
|
+
return
|
|
77
75
|
}
|
|
78
76
|
if (typeof obj.level === "string" && obj.level.length > 0) {
|
|
79
77
|
if (!this.map) {
|
|
80
|
-
|
|
78
|
+
res.status(503).end("Map is not available")
|
|
79
|
+
return
|
|
81
80
|
}
|
|
82
81
|
}
|
|
83
82
|
const changed = this.update(this.logger, obj, this.map)
|
|
84
83
|
if (changed) {
|
|
85
|
-
|
|
84
|
+
res.status(200).json(true).end()
|
|
86
85
|
} else {
|
|
87
|
-
|
|
86
|
+
res.status(204).json(false).end()
|
|
88
87
|
}
|
|
89
88
|
}
|
|
90
89
|
}
|
package/src/access.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { NextFunction } from "express"
|
|
2
|
-
import { ParamsDictionary, Request, Response } from "express-serve-static-core"
|
|
3
|
-
import { ParsedQs } from "qs"
|
|
1
|
+
import { NextFunction, Request, Response } from "express"
|
|
4
2
|
|
|
5
3
|
export interface AccessConfig {
|
|
6
4
|
origin?: string | string[]
|
|
@@ -11,10 +9,10 @@ export interface AccessConfig {
|
|
|
11
9
|
export type AccessControlAllowConfig = AccessConfig
|
|
12
10
|
export function allow(
|
|
13
11
|
access: AccessConfig,
|
|
14
|
-
): (req: Request
|
|
12
|
+
): (req: Request, res: Response, next: NextFunction) => void {
|
|
15
13
|
const ao = access.origin
|
|
16
14
|
if (typeof ao === "string") {
|
|
17
|
-
return (req: Request
|
|
15
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
18
16
|
res.header("Access-Control-Allow-Origin", access.origin)
|
|
19
17
|
res.header("Access-Control-Allow-Credentials", access.credentials)
|
|
20
18
|
res.header("Access-Control-Allow-Methods", access.methods)
|
|
@@ -22,7 +20,7 @@ export function allow(
|
|
|
22
20
|
next()
|
|
23
21
|
}
|
|
24
22
|
} else if (Array.isArray(ao) && ao.length > 0) {
|
|
25
|
-
return (req: Request
|
|
23
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
26
24
|
const origin = req.headers.origin
|
|
27
25
|
if (origin) {
|
|
28
26
|
if (ao.includes(origin)) {
|
|
@@ -35,7 +33,7 @@ export function allow(
|
|
|
35
33
|
next()
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
|
-
return (req: Request
|
|
36
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
39
37
|
res.header("Access-Control-Allow-Credentials", access.credentials)
|
|
40
38
|
res.header("Access-Control-Allow-Methods", access.methods)
|
|
41
39
|
res.setHeader("Access-Control-Allow-Headers", access.headers)
|
package/src/index.ts
CHANGED
|
@@ -20,7 +20,7 @@ export {
|
|
|
20
20
|
Controller as Handler,
|
|
21
21
|
LoadSearchController as LoadSearchHandler,
|
|
22
22
|
Service as LowCodeService,
|
|
23
|
-
SearchController as SearchHandler
|
|
23
|
+
SearchController as SearchHandler
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export * from "./access"
|
|
@@ -59,10 +59,12 @@ export class SavedController {
|
|
|
59
59
|
const userId: string = res.locals[this.userId]
|
|
60
60
|
const id = req.params[this.id]
|
|
61
61
|
if (!id || id.length === 0) {
|
|
62
|
-
|
|
62
|
+
res.status(400).end(`'${this.id}' cannot be empty`)
|
|
63
|
+
return
|
|
63
64
|
}
|
|
64
65
|
if (!userId || userId.length === 0) {
|
|
65
|
-
|
|
66
|
+
res.status(400).end(`'${this.userId}' cannot be empty`)
|
|
67
|
+
return
|
|
66
68
|
}
|
|
67
69
|
this.savedService
|
|
68
70
|
.save(userId, id)
|
|
@@ -76,10 +78,12 @@ export class SavedController {
|
|
|
76
78
|
const userId: string = res.locals[this.userId]
|
|
77
79
|
const id = req.params[this.id]
|
|
78
80
|
if (!id || id.length === 0) {
|
|
79
|
-
|
|
81
|
+
res.status(400).end(`'${this.id}' cannot be empty`)
|
|
82
|
+
return
|
|
80
83
|
}
|
|
81
84
|
if (!userId || userId.length === 0) {
|
|
82
|
-
|
|
85
|
+
res.status(400).end(`'${this.userId}' cannot be empty`)
|
|
86
|
+
return
|
|
83
87
|
}
|
|
84
88
|
this.savedService
|
|
85
89
|
.remove(userId, id)
|
|
@@ -108,10 +112,12 @@ export class FollowController {
|
|
|
108
112
|
const userId: string = res.locals[this.userId]
|
|
109
113
|
const id = req.params[this.id]
|
|
110
114
|
if (!id || id.length === 0) {
|
|
111
|
-
|
|
115
|
+
res.status(400).end(`'${this.id}' cannot be empty`)
|
|
116
|
+
return
|
|
112
117
|
}
|
|
113
118
|
if (!userId || userId.length === 0) {
|
|
114
|
-
|
|
119
|
+
res.status(400).end(`'${this.userId}' cannot be empty`)
|
|
120
|
+
return
|
|
115
121
|
}
|
|
116
122
|
this.service
|
|
117
123
|
.follow(userId, id)
|
|
@@ -125,10 +131,12 @@ export class FollowController {
|
|
|
125
131
|
const userId: string = res.locals[this.userId]
|
|
126
132
|
const id = req.params[this.id]
|
|
127
133
|
if (!id || id.length === 0) {
|
|
128
|
-
|
|
134
|
+
res.status(400).end(`'${this.id}' cannot be empty`)
|
|
135
|
+
return
|
|
129
136
|
}
|
|
130
137
|
if (!userId || userId.length === 0) {
|
|
131
|
-
|
|
138
|
+
res.status(400).end(`'${this.userId}' cannot be empty`)
|
|
139
|
+
return
|
|
132
140
|
}
|
|
133
141
|
this.service
|
|
134
142
|
.unfollow(userId, id)
|
|
@@ -172,7 +180,7 @@ export class UserReactionController {
|
|
|
172
180
|
this.service
|
|
173
181
|
.react(id, author, reaction)
|
|
174
182
|
.then((count) => {
|
|
175
|
-
|
|
183
|
+
res.status(200).json(count).end()
|
|
176
184
|
})
|
|
177
185
|
.catch((err) => handleError(err, res, this.log))
|
|
178
186
|
}
|
|
@@ -195,7 +203,7 @@ export class UserReactionController {
|
|
|
195
203
|
this.service
|
|
196
204
|
.unreact(id, author, reaction)
|
|
197
205
|
.then((count) => {
|
|
198
|
-
|
|
206
|
+
res.status(200).json(count).end()
|
|
199
207
|
})
|
|
200
208
|
.catch((err) => handleError(err, res, this.log))
|
|
201
209
|
}
|
|
@@ -213,7 +221,7 @@ export class UserReactionController {
|
|
|
213
221
|
this.service
|
|
214
222
|
.checkReaction(id, author)
|
|
215
223
|
.then((count) => {
|
|
216
|
-
|
|
224
|
+
res.status(200).json(count).end()
|
|
217
225
|
})
|
|
218
226
|
.catch((err) => handleError(err, res, this.log))
|
|
219
227
|
}
|
package/src/log.ts
CHANGED
|
@@ -165,11 +165,9 @@ export class MiddlewareController {
|
|
|
165
165
|
}
|
|
166
166
|
config(req: Request, res: Response) {
|
|
167
167
|
const obj: MiddleLog = req.body
|
|
168
|
-
if (!obj || (obj as any) === "") {
|
|
169
|
-
return res.status(400).end("The request body cannot be empty")
|
|
170
|
-
}
|
|
171
168
|
if (!this.logger) {
|
|
172
|
-
|
|
169
|
+
res.status(503).end("Logger is not available")
|
|
170
|
+
return
|
|
173
171
|
}
|
|
174
172
|
let changed = false
|
|
175
173
|
if (obj.log !== undefined) {
|
|
@@ -207,9 +205,9 @@ export class MiddlewareController {
|
|
|
207
205
|
changed = true
|
|
208
206
|
}
|
|
209
207
|
if (changed) {
|
|
210
|
-
|
|
208
|
+
res.status(200).json(true).end()
|
|
211
209
|
} else {
|
|
212
|
-
|
|
210
|
+
res.status(204).json(false).end()
|
|
213
211
|
}
|
|
214
212
|
}
|
|
215
213
|
}
|
package/src/search.ts
CHANGED
|
@@ -36,6 +36,113 @@ export interface SearchResult<T> {
|
|
|
36
36
|
last?: boolean
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
export function getPage<F extends Filter>(req: Request, filter?: F): number {
|
|
40
|
+
if (filter) {
|
|
41
|
+
const v0 = (filter as any)[resources.page]
|
|
42
|
+
if (v0 == undefined) {
|
|
43
|
+
const field = req.query[resources.page]
|
|
44
|
+
const v = field ? field.toString() : undefined
|
|
45
|
+
if (!v || v.length === 0) {
|
|
46
|
+
;(filter as any)[resources.page] = 1
|
|
47
|
+
return 1
|
|
48
|
+
}
|
|
49
|
+
if (isNaN(v as any)) {
|
|
50
|
+
;(filter as any)[resources.page] = 1
|
|
51
|
+
return 1
|
|
52
|
+
} else {
|
|
53
|
+
let n = parseFloat(v)
|
|
54
|
+
if (n < 1) {
|
|
55
|
+
n = 1
|
|
56
|
+
}
|
|
57
|
+
;(filter as any)[resources.page] = n
|
|
58
|
+
return n
|
|
59
|
+
}
|
|
60
|
+
} else if (typeof v0 === "number") {
|
|
61
|
+
if (v0 > 0) {
|
|
62
|
+
return v0
|
|
63
|
+
} else {
|
|
64
|
+
;(filter as any)[resources.page] = 1
|
|
65
|
+
return 1
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const field = req.query[resources.page]
|
|
70
|
+
const v = field ? field.toString() : undefined
|
|
71
|
+
if (!v || v.length === 0) {
|
|
72
|
+
if (filter) {
|
|
73
|
+
;(filter as any)[resources.page] = 1
|
|
74
|
+
}
|
|
75
|
+
return 1
|
|
76
|
+
}
|
|
77
|
+
if (isNaN(v as any)) {
|
|
78
|
+
if (filter) {
|
|
79
|
+
;(filter as any)[resources.page] = 1
|
|
80
|
+
}
|
|
81
|
+
return 1
|
|
82
|
+
}
|
|
83
|
+
let n = parseFloat(v)
|
|
84
|
+
if (n < 1) {
|
|
85
|
+
n = 1
|
|
86
|
+
}
|
|
87
|
+
if (filter) {
|
|
88
|
+
;(filter as any)[resources.page] = n
|
|
89
|
+
}
|
|
90
|
+
return n
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function getLimit<F extends Filter>(req: Request, filter?: F): number {
|
|
94
|
+
if (filter) {
|
|
95
|
+
const v0 = (filter as any)[resources.limit]
|
|
96
|
+
if (v0 == undefined) {
|
|
97
|
+
const field = req.query[resources.limit]
|
|
98
|
+
const v = field ? field.toString() : undefined
|
|
99
|
+
if (!v || v.length === 0) {
|
|
100
|
+
;(filter as any)[resources.limit] = resources.defaultLimit
|
|
101
|
+
return resources.defaultLimit
|
|
102
|
+
}
|
|
103
|
+
if (isNaN(v as any)) {
|
|
104
|
+
;(filter as any)[resources.limit] = resources.defaultLimit
|
|
105
|
+
return 1
|
|
106
|
+
} else {
|
|
107
|
+
let n = parseFloat(v)
|
|
108
|
+
if (n < 1) {
|
|
109
|
+
n = resources.defaultLimit
|
|
110
|
+
}
|
|
111
|
+
;(filter as any)[resources.limit] = n
|
|
112
|
+
return n
|
|
113
|
+
}
|
|
114
|
+
} else if (typeof v0 === "number") {
|
|
115
|
+
if (v0 > 0) {
|
|
116
|
+
return v0
|
|
117
|
+
} else {
|
|
118
|
+
;(filter as any)[resources.limit] = resources.defaultLimit
|
|
119
|
+
return resources.defaultLimit
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const fieldxxx = req.query[resources.limit]
|
|
124
|
+
const v = fieldxxx ? fieldxxx.toString() : undefined
|
|
125
|
+
if (!v || v.length === 0) {
|
|
126
|
+
if (filter) {
|
|
127
|
+
;(filter as any)[resources.limit] = resources.defaultLimit
|
|
128
|
+
}
|
|
129
|
+
return resources.defaultLimit
|
|
130
|
+
}
|
|
131
|
+
if (isNaN(v as any)) {
|
|
132
|
+
if (filter) {
|
|
133
|
+
;(filter as any)[resources.limit] = resources.defaultLimit
|
|
134
|
+
}
|
|
135
|
+
return resources.defaultLimit
|
|
136
|
+
}
|
|
137
|
+
let n = parseFloat(v)
|
|
138
|
+
if (n < 1) {
|
|
139
|
+
n = resources.defaultLimit
|
|
140
|
+
}
|
|
141
|
+
if (filter) {
|
|
142
|
+
;(filter as any)[resources.limit] = n
|
|
143
|
+
}
|
|
144
|
+
return n
|
|
145
|
+
}
|
|
39
146
|
export function queryLimit(req: Request): number {
|
|
40
147
|
return queryNumber(req, resources.limit, resources.defaultLimit)
|
|
41
148
|
}
|