express-ext 0.3.5 → 0.3.7
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/index.js +7 -7
- package/lib/search.js +46 -1
- package/package.json +1 -1
- package/src/index.ts +6 -6
- package/src/search.ts +41 -2
package/lib/index.js
CHANGED
|
@@ -354,14 +354,14 @@ var map = {
|
|
|
354
354
|
"'": ''',
|
|
355
355
|
'`': '`',
|
|
356
356
|
};
|
|
357
|
-
function
|
|
357
|
+
function escapeHTML(input) {
|
|
358
358
|
return input.replace(/[&<>"'`]/g, function (char) {
|
|
359
359
|
return map[char];
|
|
360
360
|
});
|
|
361
361
|
}
|
|
362
362
|
var s = 'string';
|
|
363
363
|
var o = 'object';
|
|
364
|
-
function
|
|
364
|
+
function escape(obj) {
|
|
365
365
|
if (!obj || typeof obj !== s) {
|
|
366
366
|
return obj;
|
|
367
367
|
}
|
|
@@ -370,22 +370,22 @@ function escapeHTML(obj) {
|
|
|
370
370
|
var key = keys_1[_i];
|
|
371
371
|
var v = obj[key];
|
|
372
372
|
if (typeof v === s) {
|
|
373
|
-
obj[key] =
|
|
373
|
+
obj[key] = escapeHTML(v);
|
|
374
374
|
} else if (Array.isArray(v) && v.length > 0) {
|
|
375
375
|
var v1 = v[0];
|
|
376
376
|
if (typeof v1 === o && !(v1 instanceof Date)) {
|
|
377
377
|
for (var _a = 0, v_1 = v; _a < v_1.length; _a++) {
|
|
378
378
|
var item = v_1[_a];
|
|
379
|
-
|
|
379
|
+
escape(item);
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
382
|
} else if (typeof v === o && !(v instanceof Date)) {
|
|
383
|
-
|
|
383
|
+
escape(obj[key]);
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
386
|
return obj;
|
|
387
387
|
}
|
|
388
|
-
exports.
|
|
388
|
+
exports.escape = escape;
|
|
389
389
|
function escapeArray(arrs) {
|
|
390
390
|
if (!arrs) {
|
|
391
391
|
return arrs;
|
|
@@ -393,7 +393,7 @@ function escapeArray(arrs) {
|
|
|
393
393
|
if (arrs.length > 0) {
|
|
394
394
|
for (var _i = 0, arrs_1 = arrs; _i < arrs_1.length; _i++) {
|
|
395
395
|
var obj = arrs_1[_i];
|
|
396
|
-
|
|
396
|
+
escape(obj);
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
399
|
return arrs;
|
package/lib/search.js
CHANGED
|
@@ -22,6 +22,50 @@ function getPageTotal(pageSize, total) {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
exports.getPageTotal = getPageTotal;
|
|
25
|
+
function formatText() {
|
|
26
|
+
var args = [];
|
|
27
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
28
|
+
args[_i] = arguments[_i];
|
|
29
|
+
}
|
|
30
|
+
var formatted = args[0];
|
|
31
|
+
if (!formatted || formatted === '') {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
if (args.length > 1 && Array.isArray(args[1])) {
|
|
35
|
+
var params = args[1];
|
|
36
|
+
for (var i = 0; i < params.length; i++) {
|
|
37
|
+
var regexp = new RegExp('\\{' + i + '\\}', 'gi');
|
|
38
|
+
formatted = formatted.replace(regexp, params[i]);
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
for (var i = 1; i < args.length; i++) {
|
|
42
|
+
var regexp = new RegExp('\\{' + (i - 1) + '\\}', 'gi');
|
|
43
|
+
formatted = formatted.replace(regexp, args[i]);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return formatted;
|
|
47
|
+
}
|
|
48
|
+
exports.formatText = formatText;
|
|
49
|
+
function buildMessage(resource, results, limit, page, total) {
|
|
50
|
+
if (!results || results.length === 0) {
|
|
51
|
+
return resource.msg_no_data_found;
|
|
52
|
+
} else {
|
|
53
|
+
if (!page) {
|
|
54
|
+
page = 1;
|
|
55
|
+
}
|
|
56
|
+
var fromIndex = (page - 1) * limit + 1;
|
|
57
|
+
var toIndex = fromIndex + results.length - 1;
|
|
58
|
+
var pageTotal = getPageTotal(limit, total);
|
|
59
|
+
if (pageTotal > 1) {
|
|
60
|
+
var msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, page, pageTotal);
|
|
61
|
+
return msg2;
|
|
62
|
+
} else {
|
|
63
|
+
var msg3 = formatText(resource.msg_search_result_sequence, fromIndex, toIndex);
|
|
64
|
+
return msg3;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.buildMessage = buildMessage;
|
|
25
69
|
function buildPages(pageSize, total) {
|
|
26
70
|
var pageTotal = getPageTotal(pageSize, total);
|
|
27
71
|
if (pageTotal <= 1) {
|
|
@@ -131,7 +175,8 @@ function renderSort(field, sort) {
|
|
|
131
175
|
return et;
|
|
132
176
|
}
|
|
133
177
|
exports.renderSort = renderSort;
|
|
134
|
-
function buildSortSearch(search, fields,
|
|
178
|
+
function buildSortSearch(search, fields, sortStr) {
|
|
179
|
+
var sort = buildSort(sortStr);
|
|
135
180
|
search = removeSort(search);
|
|
136
181
|
var sorts = {};
|
|
137
182
|
var prefix = search.length > 0 ? '?' + search + '&' : '?';
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -340,7 +340,7 @@ const map: StringMap = {
|
|
|
340
340
|
"'": ''',
|
|
341
341
|
'`': '`',
|
|
342
342
|
};
|
|
343
|
-
function
|
|
343
|
+
function escapeHTML(input: string): string {
|
|
344
344
|
return input.replace(/[&<>"'`]/g, function (char) {
|
|
345
345
|
return map[char];
|
|
346
346
|
});
|
|
@@ -348,7 +348,7 @@ function escapeHtml(input: string): string {
|
|
|
348
348
|
|
|
349
349
|
const s = 'string';
|
|
350
350
|
const o = 'object';
|
|
351
|
-
export function
|
|
351
|
+
export function escape(obj: any): any {
|
|
352
352
|
if (!obj || typeof obj !== s) {
|
|
353
353
|
return obj;
|
|
354
354
|
}
|
|
@@ -356,16 +356,16 @@ export function escapeHTML(obj: any): any {
|
|
|
356
356
|
for (const key of keys) {
|
|
357
357
|
const v = obj[key];
|
|
358
358
|
if (typeof v === s) {
|
|
359
|
-
obj[key] =
|
|
359
|
+
obj[key] = escapeHTML(v);
|
|
360
360
|
} else if (Array.isArray(v) && v.length > 0) {
|
|
361
361
|
const v1 = v[0];
|
|
362
362
|
if (typeof v1 === o && !(v1 instanceof Date)) {
|
|
363
363
|
for (const item of v) {
|
|
364
|
-
|
|
364
|
+
escape(item);
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
} else if (typeof v === o && !(v instanceof Date)) {
|
|
368
|
-
|
|
368
|
+
escape(obj[key]);
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
371
|
return obj;
|
|
@@ -376,7 +376,7 @@ export function escapeArray<T>(arrs: T[]): T[] {
|
|
|
376
376
|
}
|
|
377
377
|
if (arrs.length > 0) {
|
|
378
378
|
for (const obj of arrs) {
|
|
379
|
-
|
|
379
|
+
escape(obj);
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
382
|
return arrs;
|
package/src/search.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Request, Response } from 'express';
|
|
|
2
2
|
import { minimizeArray, query } from './http';
|
|
3
3
|
import { ViewService } from './LoadController';
|
|
4
4
|
import { Attribute, Attributes } from './metadata';
|
|
5
|
-
import { resources } from './resources';
|
|
5
|
+
import { resources, StringMap } from './resources';
|
|
6
6
|
|
|
7
7
|
const et = '';
|
|
8
8
|
|
|
@@ -54,6 +54,44 @@ export function getPageTotal(pageSize?: number, total?: number): number {
|
|
|
54
54
|
return Math.floor(total / pageSize + 1);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
export function formatText(...args: any[]): string {
|
|
58
|
+
let formatted = args[0];
|
|
59
|
+
if (!formatted || formatted === '') {
|
|
60
|
+
return '';
|
|
61
|
+
}
|
|
62
|
+
if (args.length > 1 && Array.isArray(args[1])) {
|
|
63
|
+
const params = args[1];
|
|
64
|
+
for (let i = 0; i < params.length; i++) {
|
|
65
|
+
const regexp = new RegExp('\\{' + i + '\\}', 'gi');
|
|
66
|
+
formatted = formatted.replace(regexp, params[i]);
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
for (let i = 1; i < args.length; i++) {
|
|
70
|
+
const regexp = new RegExp('\\{' + (i - 1) + '\\}', 'gi');
|
|
71
|
+
formatted = formatted.replace(regexp, args[i]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return formatted;
|
|
75
|
+
}
|
|
76
|
+
export function buildMessage<T>(resource: StringMap, results: T[], limit: number, page: number | undefined, total?: number): string {
|
|
77
|
+
if (!results || results.length === 0) {
|
|
78
|
+
return resource.msg_no_data_found;
|
|
79
|
+
} else {
|
|
80
|
+
if (!page) {
|
|
81
|
+
page = 1;
|
|
82
|
+
}
|
|
83
|
+
const fromIndex = (page - 1) * limit + 1;
|
|
84
|
+
const toIndex = fromIndex + results.length - 1;
|
|
85
|
+
const pageTotal = getPageTotal(limit, total);
|
|
86
|
+
if (pageTotal > 1) {
|
|
87
|
+
const msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, page, pageTotal);
|
|
88
|
+
return msg2;
|
|
89
|
+
} else {
|
|
90
|
+
const msg3 = formatText(resource.msg_search_result_sequence, fromIndex, toIndex);
|
|
91
|
+
return msg3;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
57
95
|
export function buildPages(pageSize?: number, total?: number): number[] {
|
|
58
96
|
const pageTotal = getPageTotal(pageSize, total);
|
|
59
97
|
if (pageTotal <= 1) {
|
|
@@ -162,7 +200,8 @@ export function renderSort(field: string, sort: Sort): string {
|
|
|
162
200
|
}
|
|
163
201
|
return et;
|
|
164
202
|
}
|
|
165
|
-
export function buildSortSearch(search: string, fields: string[],
|
|
203
|
+
export function buildSortSearch(search: string, fields: string[], sortStr?: string): SortMap {
|
|
204
|
+
const sort = buildSort(sortStr);
|
|
166
205
|
search = removeSort(search);
|
|
167
206
|
let sorts: SortMap = {};
|
|
168
207
|
const prefix = search.length > 0 ? '?' + search + '&' : '?';
|