core-express 0.1.0 → 0.1.1
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/README.md +1 -1
- package/lib/GenericController.js +224 -131
- package/lib/GenericSearchController.js +58 -37
- package/lib/HealthController.js +16 -58
- package/lib/LoadController.js +71 -46
- package/lib/LoadSearchController.js +113 -41
- package/lib/LogController.js +89 -0
- package/lib/LowCodeController.js +100 -0
- package/lib/SearchController.js +32 -25
- package/lib/access.js +34 -0
- package/lib/client.js +80 -0
- package/lib/edit.js +99 -84
- package/lib/health.js +157 -76
- package/lib/http.js +316 -0
- package/lib/index.js +488 -16
- package/lib/log.js +242 -0
- package/lib/resources.js +106 -6
- package/lib/search.js +766 -160
- package/lib/view.js +48 -34
- package/package.json +8 -4
- package/src/GenericController.ts +217 -106
- package/src/GenericSearchController.ts +38 -21
- package/src/HealthController.ts +9 -9
- package/src/LoadController.ts +70 -40
- package/src/LoadSearchController.ts +114 -21
- package/src/LogController.ts +137 -0
- package/src/LowCodeController.ts +88 -0
- package/src/SearchController.ts +28 -17
- package/src/access.ts +42 -0
- package/src/client.ts +69 -0
- package/src/edit.ts +93 -61
- package/src/health.ts +27 -28
- package/src/http.ts +295 -0
- package/src/index.ts +464 -13
- package/src/log.ts +245 -0
- package/src/metadata.ts +34 -23
- package/src/resources.ts +143 -4
- package/src/search.ts +782 -198
- package/src/view.ts +44 -30
- package/tsconfig.json +1 -0
- package/lib/response.js +0 -12
- package/src/response.ts +0 -10
package/lib/search.js
CHANGED
|
@@ -1,198 +1,804 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
1
|
+
"use strict"
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
|
+
var http_1 = require("./http")
|
|
4
|
+
var resources_1 = require("./resources")
|
|
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_2 = req.query[resources_1.resources.limit]
|
|
65
|
+
var v_2 = field_2 ? field_2.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 field = req.query[resources_1.resources.limit]
|
|
91
|
+
var v = field ? field.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
|
|
114
|
+
function queryLimit(req) {
|
|
115
|
+
return http_1.queryNumber(req, resources_1.resources.limit, resources_1.resources.defaultLimit)
|
|
116
|
+
}
|
|
117
|
+
exports.queryLimit = queryLimit
|
|
118
|
+
function queryPage(req, filter) {
|
|
119
|
+
var field = req.query[resources_1.resources.page]
|
|
120
|
+
var v = field ? field.toString() : undefined
|
|
121
|
+
if (!v || v.length === 0) {
|
|
122
|
+
filter[resources_1.resources.page] = 1
|
|
123
|
+
return 1
|
|
124
|
+
}
|
|
125
|
+
if (isNaN(v)) {
|
|
126
|
+
filter[resources_1.resources.page] = 1
|
|
127
|
+
return 1
|
|
128
|
+
}
|
|
129
|
+
var n = parseFloat(v)
|
|
130
|
+
filter[resources_1.resources.page] = n
|
|
131
|
+
return n
|
|
132
|
+
}
|
|
133
|
+
exports.queryPage = queryPage
|
|
134
|
+
function getOffset(limit, page) {
|
|
135
|
+
return !page || page <= 1 || limit <= 0 ? 0 : limit * (page - 1)
|
|
136
|
+
}
|
|
137
|
+
exports.getOffset = getOffset
|
|
138
|
+
function getPageTotal(pageSize, total) {
|
|
139
|
+
if (!pageSize || pageSize <= 0) {
|
|
140
|
+
return 1
|
|
141
|
+
} else {
|
|
142
|
+
if (!total) {
|
|
143
|
+
total = 0
|
|
144
|
+
}
|
|
145
|
+
if (total % pageSize === 0) {
|
|
146
|
+
return Math.floor(total / pageSize)
|
|
147
|
+
}
|
|
148
|
+
return Math.floor(total / pageSize + 1)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
exports.getPageTotal = getPageTotal
|
|
152
|
+
function formatText() {
|
|
153
|
+
var args = []
|
|
154
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
155
|
+
args[_i] = arguments[_i]
|
|
156
|
+
}
|
|
157
|
+
var formatted = args[0]
|
|
158
|
+
if (!formatted || formatted === "") {
|
|
159
|
+
return ""
|
|
160
|
+
}
|
|
161
|
+
if (args.length > 1 && Array.isArray(args[1])) {
|
|
162
|
+
var params = args[1]
|
|
163
|
+
for (var i = 0; i < params.length; i++) {
|
|
164
|
+
var regexp = new RegExp("\\{" + i + "\\}", "gi")
|
|
165
|
+
formatted = formatted.replace(regexp, params[i])
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
for (var i = 1; i < args.length; i++) {
|
|
169
|
+
var regexp = new RegExp("\\{" + (i - 1) + "\\}", "gi")
|
|
170
|
+
formatted = formatted.replace(regexp, args[i])
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return formatted
|
|
174
|
+
}
|
|
175
|
+
exports.formatText = formatText
|
|
176
|
+
function buildMessage(resource, results, limit, page, total) {
|
|
177
|
+
if (!results || results.length === 0) {
|
|
178
|
+
return resource.msg_no_data_found
|
|
179
|
+
} else {
|
|
180
|
+
if (!page) {
|
|
181
|
+
page = 1
|
|
182
|
+
}
|
|
183
|
+
var fromIndex = (page - 1) * limit + 1
|
|
184
|
+
var toIndex = fromIndex + results.length - 1
|
|
185
|
+
var pageTotal = getPageTotal(limit, total)
|
|
186
|
+
if (pageTotal > 1) {
|
|
187
|
+
var msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, page, pageTotal)
|
|
188
|
+
return msg2
|
|
189
|
+
} else {
|
|
190
|
+
var msg3 = formatText(resource.msg_search_result_sequence, fromIndex, toIndex)
|
|
191
|
+
return msg3
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.buildMessage = buildMessage
|
|
196
|
+
function buildPages(pageSize, total) {
|
|
197
|
+
var pageTotal = getPageTotal(pageSize, total)
|
|
198
|
+
if (pageTotal <= 1) {
|
|
199
|
+
return [1]
|
|
200
|
+
}
|
|
201
|
+
var arr = []
|
|
202
|
+
for (var i = 1; i <= pageTotal; i++) {
|
|
203
|
+
arr.push(i)
|
|
204
|
+
}
|
|
205
|
+
return arr
|
|
206
|
+
}
|
|
207
|
+
exports.buildPages = buildPages
|
|
208
|
+
function hasSearch(req) {
|
|
209
|
+
return req.url.indexOf("?") >= 0
|
|
210
|
+
}
|
|
211
|
+
exports.hasSearch = hasSearch
|
|
212
|
+
function getSearch(url) {
|
|
213
|
+
var i = url.indexOf("?")
|
|
214
|
+
return i < 0 ? et : url.substring(i + 1)
|
|
215
|
+
}
|
|
216
|
+
exports.getSearch = getSearch
|
|
217
|
+
function getField(search, fieldName) {
|
|
218
|
+
var i = search.indexOf(fieldName + "=")
|
|
219
|
+
if (i < 0) {
|
|
220
|
+
return ""
|
|
221
|
+
}
|
|
222
|
+
if (i > 0) {
|
|
223
|
+
if (search.substring(i - 1, 1) != "&") {
|
|
224
|
+
i = search.indexOf("&" + fieldName + "=")
|
|
225
|
+
if (i < 0) {
|
|
226
|
+
return search
|
|
227
|
+
}
|
|
228
|
+
i = i + 1
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
var j = search.indexOf("&", i + fieldName.length)
|
|
232
|
+
return j >= 0 ? search.substring(i, j) : search.substring(i)
|
|
233
|
+
}
|
|
234
|
+
exports.getField = getField
|
|
235
|
+
function removeField(search, fieldName) {
|
|
236
|
+
var i = search.indexOf(fieldName + "=")
|
|
237
|
+
if (i < 0) {
|
|
238
|
+
return search
|
|
239
|
+
}
|
|
240
|
+
if (i > 0) {
|
|
241
|
+
if (search.substring(i - 1, 1) != "&") {
|
|
242
|
+
i = search.indexOf("&" + fieldName + "=")
|
|
243
|
+
if (i < 0) {
|
|
244
|
+
return search
|
|
245
|
+
}
|
|
246
|
+
i = i + 1
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
var j = search.indexOf("&", i + fieldName.length)
|
|
250
|
+
return j >= 0 ? search.substring(0, i) + search.substring(j + 1) : search.substring(0, i - 1)
|
|
251
|
+
}
|
|
252
|
+
exports.removeField = removeField
|
|
253
|
+
function removePage(search) {
|
|
254
|
+
search = removeField(search, resources_1.resources.page)
|
|
255
|
+
search = removeField(search, resources_1.resources.partial)
|
|
256
|
+
return search
|
|
257
|
+
}
|
|
258
|
+
exports.removePage = removePage
|
|
259
|
+
function buildPageSearch(search) {
|
|
260
|
+
var sr = removePage(search)
|
|
261
|
+
return sr.length == 0 ? sr : "&" + sr
|
|
262
|
+
}
|
|
263
|
+
exports.buildPageSearch = buildPageSearch
|
|
264
|
+
function buildPageSearchFromUrl(url) {
|
|
265
|
+
var search = getSearch(url)
|
|
266
|
+
return buildPageSearch(search)
|
|
267
|
+
}
|
|
268
|
+
exports.buildPageSearchFromUrl = buildPageSearchFromUrl
|
|
269
|
+
function removeSort(search) {
|
|
270
|
+
search = removeField(search, resources_1.resources.sort)
|
|
271
|
+
search = removeField(search, resources_1.resources.partial)
|
|
272
|
+
return search
|
|
273
|
+
}
|
|
274
|
+
exports.removeSort = removeSort
|
|
275
|
+
function getSortString(field, sort) {
|
|
276
|
+
if (field === sort.field) {
|
|
277
|
+
return sort.type === "-" ? field : "-" + field
|
|
278
|
+
}
|
|
279
|
+
return field
|
|
280
|
+
}
|
|
281
|
+
exports.getSortString = getSortString
|
|
282
|
+
function buildSort(s) {
|
|
283
|
+
if (!s || s.indexOf(",") >= 0) {
|
|
284
|
+
return {}
|
|
285
|
+
}
|
|
286
|
+
if (s.startsWith("-")) {
|
|
287
|
+
return { field: s.substring(1), type: "-" }
|
|
288
|
+
} else {
|
|
289
|
+
return { field: s.startsWith("+") ? s.substring(1) : s, type: "+" }
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
exports.buildSort = buildSort
|
|
293
|
+
function buildSortFromRequest(req) {
|
|
294
|
+
var s = http_1.query(req, resources_1.resources.sort)
|
|
295
|
+
return buildSort(s)
|
|
296
|
+
}
|
|
297
|
+
exports.buildSortFromRequest = buildSortFromRequest
|
|
298
|
+
function renderSort(field, sort) {
|
|
299
|
+
if (field === sort.field) {
|
|
300
|
+
return sort.type === "-" ? "<i class='sort-down'></i>" : "<i class='sort-up'></i>"
|
|
301
|
+
}
|
|
302
|
+
return et
|
|
303
|
+
}
|
|
304
|
+
exports.renderSort = renderSort
|
|
305
|
+
function buildSortSearch(search, fields, sortStr) {
|
|
306
|
+
var sort = buildSort(sortStr)
|
|
307
|
+
search = removeSort(search)
|
|
308
|
+
var sorts = {}
|
|
309
|
+
var prefix = search.length > 0 ? "?" + search + "&" : "?"
|
|
310
|
+
for (var i = 0; i < fields.length; i++) {
|
|
311
|
+
sorts[fields[i]] = {
|
|
312
|
+
url: prefix + resources_1.resources.sort + "=" + getSortString(fields[i], sort),
|
|
313
|
+
tag: renderSort(fields[i], sort),
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
return sorts
|
|
317
|
+
}
|
|
318
|
+
exports.buildSortSearch = buildSortSearch
|
|
319
|
+
function clone(obj) {
|
|
320
|
+
if (!obj) {
|
|
321
|
+
return obj
|
|
322
|
+
}
|
|
323
|
+
if (obj instanceof Date) {
|
|
324
|
+
return new Date(obj.getTime())
|
|
325
|
+
}
|
|
326
|
+
if (typeof obj !== "object") {
|
|
327
|
+
return obj
|
|
328
|
+
}
|
|
329
|
+
if (Array.isArray(obj)) {
|
|
330
|
+
var arr = []
|
|
331
|
+
for (var _i = 0, obj_1 = obj; _i < obj_1.length; _i++) {
|
|
332
|
+
var sub = obj_1[_i]
|
|
333
|
+
var c = clone(sub)
|
|
334
|
+
arr.push(c)
|
|
335
|
+
}
|
|
336
|
+
return arr
|
|
337
|
+
}
|
|
338
|
+
var x = {}
|
|
339
|
+
var keys = Object.keys(obj)
|
|
340
|
+
for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
|
|
341
|
+
var k = keys_1[_a]
|
|
342
|
+
var v = obj[k]
|
|
343
|
+
if (v instanceof Date) {
|
|
344
|
+
x[k] = new Date(v.getTime())
|
|
345
|
+
} else {
|
|
346
|
+
switch (typeof v) {
|
|
347
|
+
case "object":
|
|
348
|
+
x[k] = clone(v)
|
|
349
|
+
break
|
|
350
|
+
default:
|
|
351
|
+
x[k] = v
|
|
352
|
+
break
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return x
|
|
357
|
+
}
|
|
358
|
+
exports.clone = clone
|
|
359
|
+
function cloneFilter(obj, limit, page) {
|
|
360
|
+
var f = clone(obj)
|
|
361
|
+
if (!obj.hasOwnProperty(resources_1.resources.page)) {
|
|
362
|
+
obj[resources_1.resources.page] = page
|
|
363
|
+
}
|
|
364
|
+
if (!obj.hasOwnProperty(resources_1.resources.limit)) {
|
|
365
|
+
obj[resources_1.resources.limit] = limit
|
|
366
|
+
}
|
|
367
|
+
return f
|
|
368
|
+
}
|
|
369
|
+
exports.cloneFilter = cloneFilter
|
|
370
|
+
function addSequence(list, offset, name) {
|
|
371
|
+
var n = name ? name : "sequence"
|
|
372
|
+
var l = list.length
|
|
373
|
+
for (var i = 0; i < l; i++) {
|
|
374
|
+
list[i][n] = offset + i + 1
|
|
375
|
+
}
|
|
376
|
+
return list
|
|
377
|
+
}
|
|
378
|
+
exports.addSequence = addSequence
|
|
3
379
|
function jsonResult(res, result, quick, fields, config) {
|
|
4
380
|
if (quick && fields && fields.length > 0) {
|
|
5
|
-
res.status(200).json(toCsv(fields, result))
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
res.status(200).json(buildResult(result, config));
|
|
381
|
+
res.status(200).json(toCsv(fields, result)).end()
|
|
382
|
+
} else {
|
|
383
|
+
res.status(200).json(buildResult(result, config)).end()
|
|
9
384
|
}
|
|
10
385
|
}
|
|
11
|
-
exports.jsonResult = jsonResult
|
|
386
|
+
exports.jsonResult = jsonResult
|
|
12
387
|
function buildResult(r, conf) {
|
|
13
388
|
if (!conf) {
|
|
14
|
-
return r
|
|
389
|
+
return r
|
|
15
390
|
}
|
|
16
|
-
var x = {}
|
|
17
|
-
|
|
18
|
-
x[
|
|
19
|
-
|
|
20
|
-
|
|
391
|
+
var x = {}
|
|
392
|
+
var li = conf.list ? conf.list : "list"
|
|
393
|
+
x[li] = http_1.minimizeArray(r.list)
|
|
394
|
+
var to = conf.total ? conf.total : "total"
|
|
395
|
+
x[to] = r.total
|
|
396
|
+
if (r.nextPageToken && r.nextPageToken.length > 0) {
|
|
397
|
+
var t = conf.token ? conf.token : "token"
|
|
398
|
+
x[t] = r.nextPageToken
|
|
21
399
|
}
|
|
22
|
-
return x
|
|
400
|
+
return x
|
|
23
401
|
}
|
|
24
|
-
exports.buildResult = buildResult
|
|
402
|
+
exports.buildResult = buildResult
|
|
25
403
|
function initializeConfig(conf) {
|
|
26
404
|
if (!conf) {
|
|
27
|
-
return undefined
|
|
405
|
+
return undefined
|
|
28
406
|
}
|
|
29
407
|
var c = {
|
|
408
|
+
excluding: conf.excluding,
|
|
30
409
|
list: conf.list,
|
|
31
410
|
total: conf.total,
|
|
32
411
|
token: conf.token,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
412
|
+
csv: conf.csv,
|
|
413
|
+
}
|
|
414
|
+
if (!c.excluding || c.excluding.length === 0) {
|
|
415
|
+
c.excluding = "excluding"
|
|
416
|
+
}
|
|
36
417
|
if (!c.list || c.list.length === 0) {
|
|
37
|
-
c.list =
|
|
418
|
+
c.list = "list"
|
|
38
419
|
}
|
|
39
420
|
if (!c.total || c.total.length === 0) {
|
|
40
|
-
c.
|
|
41
|
-
}
|
|
42
|
-
if (!c.
|
|
43
|
-
c.
|
|
44
|
-
}
|
|
45
|
-
return c
|
|
46
|
-
}
|
|
47
|
-
exports.initializeConfig = initializeConfig
|
|
48
|
-
function fromRequest(req,
|
|
49
|
-
var s =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return format(s);
|
|
59
|
-
}
|
|
60
|
-
exports.fromBody = fromBody;
|
|
61
|
-
function fromUrl(req, format) {
|
|
62
|
-
var s = {};
|
|
63
|
-
var obj = req.query;
|
|
64
|
-
var keys = Object.keys(obj);
|
|
65
|
-
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
66
|
-
var key = keys_1[_i];
|
|
67
|
-
if (key === 'fields') {
|
|
68
|
-
var x = obj[key].split(',');
|
|
69
|
-
s[key] = x;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
s[key] = obj[key];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (format) {
|
|
76
|
-
format(s);
|
|
77
|
-
}
|
|
78
|
-
return s;
|
|
79
|
-
}
|
|
80
|
-
exports.fromUrl = fromUrl;
|
|
81
|
-
function getLimit(obj) {
|
|
82
|
-
var refId = obj['refId'];
|
|
83
|
-
if (!refId) {
|
|
84
|
-
refId = obj['nextPageToken'];
|
|
85
|
-
}
|
|
86
|
-
var pageSize = obj['limit'];
|
|
87
|
-
if (!pageSize) {
|
|
88
|
-
pageSize = obj['pageSize'];
|
|
89
|
-
}
|
|
90
|
-
if (pageSize && !isNaN(pageSize)) {
|
|
91
|
-
var ipageSize = Math.floor(parseFloat(pageSize));
|
|
92
|
-
if (ipageSize > 0) {
|
|
93
|
-
var skip = obj['skip'];
|
|
94
|
-
if (skip && !isNaN(skip)) {
|
|
95
|
-
var iskip = Math.floor(parseFloat(skip));
|
|
96
|
-
if (iskip >= 0) {
|
|
97
|
-
deletePageInfo(obj);
|
|
98
|
-
return { limit: ipageSize, skip: iskip };
|
|
99
|
-
}
|
|
421
|
+
c.total = "total"
|
|
422
|
+
}
|
|
423
|
+
if (!c.token || c.token.length === 0) {
|
|
424
|
+
c.token = "nextPageToken"
|
|
425
|
+
}
|
|
426
|
+
return c
|
|
427
|
+
}
|
|
428
|
+
exports.initializeConfig = initializeConfig
|
|
429
|
+
function fromRequest(req, arr) {
|
|
430
|
+
var s = req.method === "GET" ? fromUrl(req, arr) : req.body
|
|
431
|
+
var page = s[resources_1.resources.page]
|
|
432
|
+
if (page) {
|
|
433
|
+
if (isNaN(page)) {
|
|
434
|
+
s[resources_1.resources.page] = 1
|
|
435
|
+
} else {
|
|
436
|
+
var n = parseFloat(page)
|
|
437
|
+
if (n < 1) {
|
|
438
|
+
n = 1
|
|
100
439
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
440
|
+
s[resources_1.resources.page] = n
|
|
441
|
+
}
|
|
442
|
+
} else {
|
|
443
|
+
s[resources_1.resources.page] = 1
|
|
444
|
+
}
|
|
445
|
+
var limit = s[resources_1.resources.limit]
|
|
446
|
+
if (limit) {
|
|
447
|
+
if (isNaN(limit)) {
|
|
448
|
+
s[resources_1.resources.limit] = resources_1.resources.defaultLimit
|
|
449
|
+
} else {
|
|
450
|
+
var n = parseFloat(limit)
|
|
451
|
+
if (n < 1) {
|
|
452
|
+
n = resources_1.resources.defaultLimit
|
|
107
453
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
454
|
+
s[resources_1.resources.limit] = n
|
|
455
|
+
}
|
|
456
|
+
} else {
|
|
457
|
+
s[resources_1.resources.limit] = resources_1.resources.defaultLimit
|
|
458
|
+
}
|
|
459
|
+
if (resources_1.resources.partial.length > 0) {
|
|
460
|
+
delete s[resources_1.resources.partial]
|
|
461
|
+
}
|
|
462
|
+
return s
|
|
463
|
+
}
|
|
464
|
+
exports.fromRequest = fromRequest
|
|
465
|
+
function buildArray(arr, s0, s1, s2) {
|
|
466
|
+
var r = []
|
|
467
|
+
if (arr && arr.length > 0) {
|
|
468
|
+
for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {
|
|
469
|
+
var a = arr_1[_i]
|
|
470
|
+
r.push(a)
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
if (s0 && s0.length > 0) {
|
|
474
|
+
r.push(s0)
|
|
475
|
+
}
|
|
476
|
+
if (s1 && s1.length > 0) {
|
|
477
|
+
r.push(s1)
|
|
478
|
+
}
|
|
479
|
+
if (s2 && s2.length > 0) {
|
|
480
|
+
r.push(s2)
|
|
481
|
+
}
|
|
482
|
+
return r
|
|
483
|
+
}
|
|
484
|
+
exports.buildArray = buildArray
|
|
485
|
+
function fromUrl(req, arr) {
|
|
486
|
+
var s = {}
|
|
487
|
+
var obj = req.query
|
|
488
|
+
var keys = Object.keys(obj)
|
|
489
|
+
for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
|
|
490
|
+
var key = keys_2[_i]
|
|
491
|
+
if (inArray(key, arr)) {
|
|
492
|
+
var x = obj[key].split(",")
|
|
493
|
+
setValue(s, key, x)
|
|
494
|
+
} else {
|
|
495
|
+
setValue(s, key, obj[key])
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
return s
|
|
499
|
+
}
|
|
500
|
+
exports.fromUrl = fromUrl
|
|
501
|
+
function inArray(s, arr) {
|
|
502
|
+
if (!arr || arr.length === 0) {
|
|
503
|
+
return false
|
|
504
|
+
}
|
|
505
|
+
for (var _i = 0, arr_2 = arr; _i < arr_2.length; _i++) {
|
|
506
|
+
var a = arr_2[_i]
|
|
507
|
+
if (s === a) {
|
|
508
|
+
return true
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return false
|
|
512
|
+
}
|
|
513
|
+
exports.inArray = inArray
|
|
514
|
+
function setValue(o, key, value) {
|
|
515
|
+
var obj = o
|
|
516
|
+
var replaceKey = key.replace(/\[/g, ".[").replace(/\.\./g, ".")
|
|
517
|
+
if (replaceKey.indexOf(".") === 0) {
|
|
518
|
+
replaceKey = replaceKey.slice(1, replaceKey.length)
|
|
519
|
+
}
|
|
520
|
+
var keys = replaceKey.split(".")
|
|
521
|
+
var firstKey = keys.shift()
|
|
522
|
+
if (!firstKey) {
|
|
523
|
+
return
|
|
524
|
+
}
|
|
525
|
+
var isArrayKey = /\[([0-9]+)\]/.test(firstKey)
|
|
526
|
+
if (keys.length > 0) {
|
|
527
|
+
var firstKeyValue = obj[firstKey] || {}
|
|
528
|
+
var returnValue = setValue(firstKeyValue, keys.join("."), value)
|
|
529
|
+
return setKey(obj, isArrayKey, firstKey, returnValue)
|
|
530
|
+
}
|
|
531
|
+
return setKey(obj, isArrayKey, firstKey, value)
|
|
532
|
+
}
|
|
533
|
+
exports.setValue = setValue
|
|
534
|
+
var setKey = function (_object, _isArrayKey, _key, _nextValue) {
|
|
535
|
+
if (_isArrayKey) {
|
|
536
|
+
if (_object.length > _key) {
|
|
537
|
+
_object[_key] = _nextValue
|
|
538
|
+
} else {
|
|
539
|
+
_object.push(_nextValue)
|
|
540
|
+
}
|
|
541
|
+
} else {
|
|
542
|
+
_object[_key] = _nextValue
|
|
543
|
+
}
|
|
544
|
+
return _object
|
|
545
|
+
}
|
|
546
|
+
function getParameters(obj) {
|
|
547
|
+
var o = obj
|
|
548
|
+
var fields
|
|
549
|
+
var fs = o[resources_1.resources.fields]
|
|
550
|
+
if (fs && Array.isArray(fs)) {
|
|
551
|
+
fields = fs
|
|
552
|
+
}
|
|
553
|
+
var nextPageToken = o[resources_1.resources.nextPageToken]
|
|
554
|
+
var page = 1
|
|
555
|
+
var spage = o[resources_1.resources.page]
|
|
556
|
+
if (spage && typeof spage === "string") {
|
|
557
|
+
if (!isNaN(spage)) {
|
|
558
|
+
var ipage = Math.floor(parseFloat(spage))
|
|
559
|
+
if (ipage > 1) {
|
|
560
|
+
page = ipage
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
var limit = resources_1.resources.defaultLimit
|
|
565
|
+
var slimit = o[resources_1.resources.limit]
|
|
566
|
+
if (slimit && typeof slimit === "string") {
|
|
567
|
+
if (!isNaN(slimit)) {
|
|
568
|
+
var ilimit = Math.floor(parseFloat(slimit))
|
|
569
|
+
if (ilimit > 0) {
|
|
570
|
+
limit = ilimit
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
var r = { limit: limit, fields: fields, page: page, nextPageToken: nextPageToken, pageOrNextPageToken: page }
|
|
575
|
+
if (r.nextPageToken && r.nextPageToken.length > 0) {
|
|
576
|
+
r.pageOrNextPageToken = r.nextPageToken
|
|
577
|
+
}
|
|
578
|
+
deletePageInfo(o)
|
|
579
|
+
return r
|
|
580
|
+
}
|
|
581
|
+
exports.getParameters = getParameters
|
|
582
|
+
function deletePageInfo(obj, arr) {
|
|
583
|
+
if (!arr || arr.length === 0) {
|
|
584
|
+
delete obj[resources_1.resources.fields]
|
|
585
|
+
delete obj[resources_1.resources.limit]
|
|
586
|
+
delete obj[resources_1.resources.page]
|
|
587
|
+
if (resources_1.resources.nextPageToken && resources_1.resources.nextPageToken.length > 0) {
|
|
588
|
+
delete obj[resources_1.resources.nextPageToken]
|
|
589
|
+
}
|
|
590
|
+
if (resources_1.resources.partial && resources_1.resources.partial.length > 0) {
|
|
591
|
+
delete obj[resources_1.resources.partial]
|
|
592
|
+
}
|
|
593
|
+
} else {
|
|
594
|
+
for (var _i = 0, arr_3 = arr; _i < arr_3.length; _i++) {
|
|
595
|
+
var o = arr_3[_i]
|
|
596
|
+
if (o && o.length > 0) {
|
|
597
|
+
delete obj[o]
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
exports.deletePageInfo = deletePageInfo
|
|
603
|
+
var re = /"/g
|
|
153
604
|
function toCsv(fields, r) {
|
|
154
605
|
if (!r || r.list.length === 0) {
|
|
155
|
-
return
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
var
|
|
159
|
-
var
|
|
160
|
-
var
|
|
161
|
-
var
|
|
162
|
-
|
|
163
|
-
rows.push('' + r.total + ',' + (r.last ? '1' : ''));
|
|
606
|
+
return "0"
|
|
607
|
+
} else {
|
|
608
|
+
var e = ""
|
|
609
|
+
var s = "string"
|
|
610
|
+
var n = "number"
|
|
611
|
+
var b = '""'
|
|
612
|
+
var rows = []
|
|
613
|
+
rows.push("" + (r.total ? r.total : "") + "," + (r.nextPageToken ? r.nextPageToken : ""))
|
|
164
614
|
for (var _i = 0, _a = r.list; _i < _a.length; _i++) {
|
|
165
|
-
var item = _a[_i]
|
|
166
|
-
var cols = []
|
|
615
|
+
var item = _a[_i]
|
|
616
|
+
var cols = []
|
|
167
617
|
for (var _b = 0, fields_1 = fields; _b < fields_1.length; _b++) {
|
|
168
|
-
var name = fields_1[_b]
|
|
169
|
-
var v = item[name]
|
|
618
|
+
var name = fields_1[_b]
|
|
619
|
+
var v = item[name]
|
|
170
620
|
if (!v) {
|
|
171
|
-
cols.push(e)
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
621
|
+
cols.push(e)
|
|
622
|
+
} else {
|
|
174
623
|
if (typeof v === s) {
|
|
175
|
-
if (s.indexOf(
|
|
176
|
-
cols.push('"' + v.replace(re, b) + '"')
|
|
624
|
+
if (s.indexOf(",") >= 0) {
|
|
625
|
+
cols.push('"' + v.replace(re, b) + '"')
|
|
626
|
+
} else {
|
|
627
|
+
cols.push(v)
|
|
177
628
|
}
|
|
178
|
-
|
|
179
|
-
|
|
629
|
+
} else if (v instanceof Date) {
|
|
630
|
+
cols.push(v.toISOString())
|
|
631
|
+
} else if (typeof v === n) {
|
|
632
|
+
cols.push(v.toString())
|
|
633
|
+
} else {
|
|
634
|
+
cols.push("")
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
rows.push(cols.join(","))
|
|
639
|
+
}
|
|
640
|
+
return rows.join("\n")
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
exports.toCsv = toCsv
|
|
644
|
+
function buildMetadata(attributes, includeDate) {
|
|
645
|
+
var keys = Object.keys(attributes)
|
|
646
|
+
var dates = []
|
|
647
|
+
var numbers = []
|
|
648
|
+
for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {
|
|
649
|
+
var key = keys_3[_i]
|
|
650
|
+
var attr = attributes[key]
|
|
651
|
+
if (attr.type === "number" || attr.type === "integer") {
|
|
652
|
+
numbers.push(key)
|
|
653
|
+
} else if (attr.type === "datetime" || (includeDate === true && attr.type === "date")) {
|
|
654
|
+
dates.push(key)
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
var m = {}
|
|
658
|
+
if (dates.length > 0) {
|
|
659
|
+
m.dates = dates
|
|
660
|
+
}
|
|
661
|
+
if (numbers.length > 0) {
|
|
662
|
+
m.numbers = numbers
|
|
663
|
+
}
|
|
664
|
+
return m
|
|
665
|
+
}
|
|
666
|
+
exports.buildMetadata = buildMetadata
|
|
667
|
+
var _datereg = "/Date("
|
|
668
|
+
var _re = /-?\d+/
|
|
669
|
+
function toDate(v) {
|
|
670
|
+
if (!v) {
|
|
671
|
+
return null
|
|
672
|
+
}
|
|
673
|
+
if (v instanceof Date) {
|
|
674
|
+
return v
|
|
675
|
+
} else if (typeof v === "number") {
|
|
676
|
+
return new Date(v)
|
|
677
|
+
}
|
|
678
|
+
var i = v.indexOf(_datereg)
|
|
679
|
+
if (i >= 0) {
|
|
680
|
+
var m = _re.exec(v)
|
|
681
|
+
if (m !== null) {
|
|
682
|
+
var d = parseInt(m[0], 10)
|
|
683
|
+
return new Date(d)
|
|
684
|
+
} else {
|
|
685
|
+
return null
|
|
686
|
+
}
|
|
687
|
+
} else {
|
|
688
|
+
if (isNaN(v)) {
|
|
689
|
+
return new Date(v)
|
|
690
|
+
} else {
|
|
691
|
+
var d = parseInt(v, 10)
|
|
692
|
+
return new Date(d)
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
function format(obj, dates, nums) {
|
|
697
|
+
var o = obj
|
|
698
|
+
if (dates && dates.length > 0) {
|
|
699
|
+
for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {
|
|
700
|
+
var s = dates_1[_i]
|
|
701
|
+
var v = o[s]
|
|
702
|
+
if (v) {
|
|
703
|
+
if (v instanceof Date) {
|
|
704
|
+
continue
|
|
705
|
+
}
|
|
706
|
+
if (typeof v === "string" || typeof v === "number") {
|
|
707
|
+
var d = toDate(v)
|
|
708
|
+
if (d) {
|
|
709
|
+
if (!(d instanceof Date) || d.toString() === "Invalid Date") {
|
|
710
|
+
delete o[s]
|
|
711
|
+
} else {
|
|
712
|
+
o[s] = d
|
|
180
713
|
}
|
|
181
714
|
}
|
|
182
|
-
|
|
183
|
-
|
|
715
|
+
} else if (typeof v === "object") {
|
|
716
|
+
var keys = Object.keys(v)
|
|
717
|
+
for (var _a = 0, keys_4 = keys; _a < keys_4.length; _a++) {
|
|
718
|
+
var key = keys_4[_a]
|
|
719
|
+
var v2 = v[key]
|
|
720
|
+
if (v2 instanceof Date) {
|
|
721
|
+
continue
|
|
722
|
+
}
|
|
723
|
+
if (typeof v2 === "string" || typeof v2 === "number") {
|
|
724
|
+
var d2 = toDate(v2)
|
|
725
|
+
if (d2) {
|
|
726
|
+
if (!(d2 instanceof Date) || d2.toString() === "Invalid Date") {
|
|
727
|
+
delete v[key]
|
|
728
|
+
} else {
|
|
729
|
+
v[key] = d2
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
}
|
|
184
733
|
}
|
|
185
|
-
|
|
186
|
-
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
if (nums && nums.length > 0) {
|
|
739
|
+
for (var _b = 0, nums_1 = nums; _b < nums_1.length; _b++) {
|
|
740
|
+
var s = nums_1[_b]
|
|
741
|
+
var v = o[s]
|
|
742
|
+
if (v) {
|
|
743
|
+
if (v instanceof Date) {
|
|
744
|
+
delete o[s]
|
|
745
|
+
continue
|
|
746
|
+
}
|
|
747
|
+
if (typeof v === "number") {
|
|
748
|
+
continue
|
|
749
|
+
}
|
|
750
|
+
if (typeof v === "string") {
|
|
751
|
+
if (!isNaN(v)) {
|
|
752
|
+
delete o[s]
|
|
753
|
+
continue
|
|
754
|
+
} else {
|
|
755
|
+
var i = parseFloat(v)
|
|
756
|
+
o[s] = i
|
|
187
757
|
}
|
|
188
|
-
|
|
189
|
-
|
|
758
|
+
} else if (typeof v === "object") {
|
|
759
|
+
var keys = Object.keys(v)
|
|
760
|
+
for (var _c = 0, keys_5 = keys; _c < keys_5.length; _c++) {
|
|
761
|
+
var key = keys_5[_c]
|
|
762
|
+
var v2 = v[key]
|
|
763
|
+
if (v2 instanceof Date) {
|
|
764
|
+
delete o[key]
|
|
765
|
+
continue
|
|
766
|
+
}
|
|
767
|
+
if (typeof v2 === "number") {
|
|
768
|
+
continue
|
|
769
|
+
}
|
|
770
|
+
if (typeof v2 === "string") {
|
|
771
|
+
if (!isNaN(v2)) {
|
|
772
|
+
delete v[key]
|
|
773
|
+
} else {
|
|
774
|
+
var i = parseFloat(v2)
|
|
775
|
+
v[key] = i
|
|
776
|
+
}
|
|
777
|
+
}
|
|
190
778
|
}
|
|
191
779
|
}
|
|
192
780
|
}
|
|
193
|
-
rows.push(cols.join(','));
|
|
194
781
|
}
|
|
195
|
-
return rows.join('\n');
|
|
196
782
|
}
|
|
783
|
+
return o
|
|
784
|
+
}
|
|
785
|
+
exports.format = format
|
|
786
|
+
function getMetadataFunc(viewService, dates, numbers, keys) {
|
|
787
|
+
var m = { dates: dates, numbers: numbers }
|
|
788
|
+
if ((m.dates && m.dates.length > 0) || (m.numbers && m.numbers.length > 0)) {
|
|
789
|
+
return m
|
|
790
|
+
}
|
|
791
|
+
if (keys) {
|
|
792
|
+
if (!Array.isArray(keys)) {
|
|
793
|
+
return buildMetadata(keys)
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
if (typeof viewService !== "function" && viewService.metadata) {
|
|
797
|
+
var metadata = viewService.metadata()
|
|
798
|
+
if (metadata) {
|
|
799
|
+
return buildMetadata(metadata)
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
return undefined
|
|
197
803
|
}
|
|
198
|
-
exports.
|
|
804
|
+
exports.getMetadataFunc = getMetadataFunc
|