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/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
- else {
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
- x[conf.list] = r.list;
18
- x[conf.total] = r.total;
19
- if (r.last) {
20
- x[conf.last] = r.last;
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
- last: conf.last,
34
- quick: conf.csv
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 = 'list';
418
+ c.list = "list"
38
419
  }
39
420
  if (!c.total || c.total.length === 0) {
40
- c.list = 'total';
41
- }
42
- if (!c.last || c.last.length === 0) {
43
- c.last = 'last';
44
- }
45
- return c;
46
- }
47
- exports.initializeConfig = initializeConfig;
48
- function fromRequest(req, format) {
49
- var s = (req.method === 'GET' ? fromUrl(req, format) : fromBody(req, format));
50
- return s;
51
- }
52
- exports.fromRequest = fromRequest;
53
- function fromBody(req, format) {
54
- var s = req.body;
55
- if (!format) {
56
- return s;
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
- var pageIndex = obj['page'];
102
- if (!pageIndex) {
103
- pageIndex = obj['pageIndex'];
104
- if (!pageIndex) {
105
- pageIndex = obj['pageNo'];
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
- if (pageIndex && !isNaN(pageIndex)) {
109
- var ipageIndex = Math.floor(parseFloat(pageIndex));
110
- if (ipageIndex < 1) {
111
- ipageIndex = 1;
112
- }
113
- var firstPageSize = obj['firstLimit'];
114
- if (!firstPageSize) {
115
- firstPageSize = obj['firstPageSize'];
116
- }
117
- if (!firstPageSize) {
118
- firstPageSize = obj['initPageSize'];
119
- }
120
- if (firstPageSize && !isNaN(firstPageSize)) {
121
- var ifirstPageSize = Math.floor(parseFloat(firstPageSize));
122
- if (ifirstPageSize > 0) {
123
- deletePageInfo(obj);
124
- return { limit: ipageSize, skip: ipageSize * (ipageIndex - 2) + ifirstPageSize };
125
- }
126
- }
127
- deletePageInfo(obj);
128
- return { limit: ipageSize, skip: ipageSize * (ipageIndex - 1) };
129
- }
130
- deletePageInfo(obj);
131
- return { limit: ipageSize, skip: 0, refId: refId };
132
- }
133
- }
134
- return { limit: undefined, skip: undefined, refId: refId };
135
- }
136
- exports.getLimit = getLimit;
137
- function deletePageInfo(obj) {
138
- delete obj['limit'];
139
- delete obj['firstLimit'];
140
- delete obj['skip'];
141
- delete obj['page'];
142
- delete obj['pageNo'];
143
- delete obj['pageIndex'];
144
- delete obj['pageSize'];
145
- delete obj['initPageSize'];
146
- delete obj['firstPageSize'];
147
- delete obj['refId'];
148
- delete obj['refId'];
149
- delete obj['nextPageToken'];
150
- }
151
- exports.deletePageInfo = deletePageInfo;
152
- var re = /"/g;
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 '0';
156
- }
157
- else {
158
- var e = '';
159
- var s = 'string';
160
- var n = 'number';
161
- var b = '""';
162
- var rows = [];
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(',') >= 0) {
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
- else {
179
- cols.push(v);
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
- else if (v instanceof Date) {
183
- cols.push(v.toISOString());
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
- else if (typeof v === n) {
186
- cols.push(v.toString());
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
- else {
189
- cols.push('');
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.toCsv = toCsv;
804
+ exports.getMetadataFunc = getMetadataFunc