web-one 0.0.2 → 0.0.3
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/form.js +11 -10
- package/lib/index.js +106 -66
- package/package.json +2 -2
- package/src/index.ts +118 -64
- package/tsconfig.json +1 -1
package/lib/form.js
CHANGED
|
@@ -8,11 +8,12 @@ function fromFormData(formData, attrs, includeUndefine, includeErrorForNumbers)
|
|
|
8
8
|
}
|
|
9
9
|
exports.fromFormData = fromFormData;
|
|
10
10
|
function fromFormDataWithAttributes(formData, attrs, includeUndefine, includeErrorForNumbers) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
for (
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
var obj = {};
|
|
12
|
+
var keys = formData.keys();
|
|
13
|
+
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
14
|
+
var key = keys_1[_i];
|
|
15
|
+
var attr = attrs[key];
|
|
16
|
+
var v = formData.get(key);
|
|
16
17
|
if (attr) {
|
|
17
18
|
obj[key] = v;
|
|
18
19
|
if (v && typeof v === "string") {
|
|
@@ -22,7 +23,7 @@ function fromFormDataWithAttributes(formData, attrs, includeUndefine, includeErr
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
else if (attr.type === "datetime" || attr.type === "date") {
|
|
25
|
-
|
|
26
|
+
var d = new Date(v);
|
|
26
27
|
if (d.toString() !== "Invalid Date") {
|
|
27
28
|
obj[key] = d;
|
|
28
29
|
}
|
|
@@ -34,11 +35,11 @@ function fromFormDataWithAttributes(formData, attrs, includeUndefine, includeErr
|
|
|
34
35
|
obj[key] = v.split(",");
|
|
35
36
|
}
|
|
36
37
|
else if (attr.type === "integers" || attr.type === "numbers") {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
for (
|
|
38
|
+
var s = v.split(",");
|
|
39
|
+
var nums = [];
|
|
40
|
+
for (var i = 0; i < s.length; i++) {
|
|
40
41
|
if (!isNaN(s[i])) {
|
|
41
|
-
|
|
42
|
+
var num = parseFloat(s[i]);
|
|
42
43
|
nums.push(num);
|
|
43
44
|
}
|
|
44
45
|
else if (includeErrorForNumbers) {
|
package/lib/index.js
CHANGED
|
@@ -286,6 +286,61 @@ function buildSortSearch(params, fields, sortStr) {
|
|
|
286
286
|
return sorts;
|
|
287
287
|
}
|
|
288
288
|
exports.buildSortSearch = buildSortSearch;
|
|
289
|
+
function formatInteger(v, groupSeparator) {
|
|
290
|
+
if (groupSeparator === void 0) { groupSeparator = ","; }
|
|
291
|
+
if (v == null || !Number.isFinite(v)) {
|
|
292
|
+
return "";
|
|
293
|
+
}
|
|
294
|
+
var isNegative = v < 0;
|
|
295
|
+
var n = Math.abs(Math.trunc(v));
|
|
296
|
+
if (n < 1000) {
|
|
297
|
+
return isNegative ? "-" + n : "" + n;
|
|
298
|
+
}
|
|
299
|
+
var result = "";
|
|
300
|
+
var count = 0;
|
|
301
|
+
while (n > 0) {
|
|
302
|
+
var digit = n % 10;
|
|
303
|
+
n = (n / 10) | 0;
|
|
304
|
+
if (count > 0 && count % 3 === 0) {
|
|
305
|
+
result = groupSeparator + result;
|
|
306
|
+
}
|
|
307
|
+
result = digit + result;
|
|
308
|
+
count++;
|
|
309
|
+
}
|
|
310
|
+
return isNegative ? "-" + result : result;
|
|
311
|
+
}
|
|
312
|
+
exports.formatInteger = formatInteger;
|
|
313
|
+
function formatNumber(v, scale, d, g) {
|
|
314
|
+
if (v == null) {
|
|
315
|
+
return "";
|
|
316
|
+
}
|
|
317
|
+
if (!d && !g) {
|
|
318
|
+
g = ",";
|
|
319
|
+
d = ".";
|
|
320
|
+
}
|
|
321
|
+
else if (!g) {
|
|
322
|
+
g = d === "," ? "." : ",";
|
|
323
|
+
}
|
|
324
|
+
var s = scale === 0 || scale ? v.toFixed(scale) : v.toString();
|
|
325
|
+
var x = s.split(".", 2);
|
|
326
|
+
var y = x[0];
|
|
327
|
+
var arr = [];
|
|
328
|
+
var len = y.length - 1;
|
|
329
|
+
for (var k = 0; k < len; k++) {
|
|
330
|
+
arr.push(y[len - k]);
|
|
331
|
+
if ((k + 1) % 3 === 0) {
|
|
332
|
+
arr.push(g);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
arr.push(y[0]);
|
|
336
|
+
if (x.length === 1) {
|
|
337
|
+
return arr.reverse().join("");
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
return arr.reverse().join("") + d + x[1];
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
exports.formatNumber = formatNumber;
|
|
289
344
|
function getDateFormat(profile) {
|
|
290
345
|
return "M/D/YYYY";
|
|
291
346
|
}
|
|
@@ -359,101 +414,86 @@ function datetimeToString(date) {
|
|
|
359
414
|
return year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds;
|
|
360
415
|
}
|
|
361
416
|
exports.datetimeToString = datetimeToString;
|
|
362
|
-
function formatDate(d,
|
|
363
|
-
if (!d) {
|
|
417
|
+
function formatDate(d, format) {
|
|
418
|
+
if (!d || !format) {
|
|
364
419
|
return "";
|
|
365
420
|
}
|
|
366
|
-
var
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
var
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
fm = true;
|
|
385
|
-
}
|
|
386
|
-
if (iyear === -1) {
|
|
387
|
-
iyear = items.indexOf("YY");
|
|
388
|
-
fy = full ? full : false;
|
|
389
|
-
}
|
|
390
|
-
arr[iday] = getD(d.getDate(), fd);
|
|
391
|
-
arr[im] = getD(d.getMonth() + 1, fm);
|
|
392
|
-
arr[iyear] = getYear(d.getFullYear(), fy);
|
|
393
|
-
var s = detectSeparator(format);
|
|
394
|
-
var e = detectLastSeparator(format);
|
|
395
|
-
var l = items.length === 4 ? format[format.length - 1] : "";
|
|
396
|
-
return arr[0] + s + arr[1] + e + arr[2] + l;
|
|
397
|
-
}
|
|
398
|
-
exports.formatDate = formatDate;
|
|
399
|
-
function detectSeparator(format) {
|
|
400
|
-
var len = format.length;
|
|
401
|
-
for (var i = 0; i < len; i++) {
|
|
402
|
-
var c = format[i];
|
|
403
|
-
if (!((c >= "A" && c <= "Z") || (c >= "a" && c <= "z"))) {
|
|
404
|
-
return c;
|
|
421
|
+
var y = d.getFullYear();
|
|
422
|
+
var m = d.getMonth() + 1;
|
|
423
|
+
var day = d.getDate();
|
|
424
|
+
var out = "";
|
|
425
|
+
var i = 0;
|
|
426
|
+
while (i < format.length) {
|
|
427
|
+
var c = format.charCodeAt(i);
|
|
428
|
+
if (c === 121) {
|
|
429
|
+
var len = count(format, i, 121);
|
|
430
|
+
if (len >= 4) {
|
|
431
|
+
out += y.toString();
|
|
432
|
+
i += 4;
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
out += shortYear(y);
|
|
436
|
+
i += 2;
|
|
437
|
+
}
|
|
438
|
+
continue;
|
|
405
439
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
440
|
+
if (c === 77) {
|
|
441
|
+
var len = count(format, i, 77);
|
|
442
|
+
out += len >= 2 ? pad(m) : m.toString();
|
|
443
|
+
i += len >= 2 ? 2 : 1;
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
if (c === 100) {
|
|
447
|
+
var len = count(format, i, 100);
|
|
448
|
+
out += len >= 2 ? pad(day) : day.toString();
|
|
449
|
+
i += len >= 2 ? 2 : 1;
|
|
450
|
+
continue;
|
|
415
451
|
}
|
|
452
|
+
out += format[i];
|
|
453
|
+
i++;
|
|
416
454
|
}
|
|
417
|
-
return
|
|
455
|
+
return out;
|
|
418
456
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
return s.substring(s.length - 2);
|
|
457
|
+
exports.formatDate = formatDate;
|
|
458
|
+
function shortYear(y) {
|
|
459
|
+
return (y % 100 + 100) % 100 < 10
|
|
460
|
+
? "0" + ((y % 100 + 100) % 100)
|
|
461
|
+
: "" + ((y % 100 + 100) % 100);
|
|
425
462
|
}
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
463
|
+
function count(s, i, ch) {
|
|
464
|
+
var n = 0;
|
|
465
|
+
while (i + n < s.length && s.charCodeAt(i + n) === ch) {
|
|
466
|
+
n++;
|
|
467
|
+
}
|
|
468
|
+
return n;
|
|
429
469
|
}
|
|
430
|
-
function formatDateTime(date, dateFormat
|
|
470
|
+
function formatDateTime(date, dateFormat) {
|
|
431
471
|
if (!date) {
|
|
432
472
|
return "";
|
|
433
473
|
}
|
|
434
|
-
var sd = formatDate(date, dateFormat
|
|
474
|
+
var sd = formatDate(date, dateFormat);
|
|
435
475
|
if (sd.length === 0) {
|
|
436
476
|
return sd;
|
|
437
477
|
}
|
|
438
478
|
return sd + " " + formatTime(date);
|
|
439
479
|
}
|
|
440
480
|
exports.formatDateTime = formatDateTime;
|
|
441
|
-
function formatLongDateTime(date, dateFormat
|
|
481
|
+
function formatLongDateTime(date, dateFormat) {
|
|
442
482
|
if (!date) {
|
|
443
483
|
return "";
|
|
444
484
|
}
|
|
445
|
-
var sd = formatDate(date, dateFormat
|
|
485
|
+
var sd = formatDate(date, dateFormat);
|
|
446
486
|
if (sd.length === 0) {
|
|
447
487
|
return sd;
|
|
448
488
|
}
|
|
449
489
|
return sd + " " + formatLongTime(date);
|
|
450
490
|
}
|
|
451
491
|
exports.formatLongDateTime = formatLongDateTime;
|
|
452
|
-
function formatFullDateTime(date, dateFormat, s
|
|
492
|
+
function formatFullDateTime(date, dateFormat, s) {
|
|
453
493
|
if (!date) {
|
|
454
494
|
return "";
|
|
455
495
|
}
|
|
456
|
-
var sd = formatDate(date, dateFormat
|
|
496
|
+
var sd = formatDate(date, dateFormat);
|
|
457
497
|
if (sd.length === 0) {
|
|
458
498
|
return sd;
|
|
459
499
|
}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -271,6 +271,65 @@ export function buildSortSearch(params: StringMap, fields: string[], sortStr?: s
|
|
|
271
271
|
return sorts
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
+
export function formatInteger(v?: number | null, groupSeparator: string = ","): string {
|
|
275
|
+
if (v == null || !Number.isFinite(v)) {
|
|
276
|
+
return ""
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const isNegative = v < 0
|
|
280
|
+
let n = Math.abs(Math.trunc(v))
|
|
281
|
+
|
|
282
|
+
// Fast path for small numbers (no separator needed)
|
|
283
|
+
if (n < 1000) {
|
|
284
|
+
return isNegative ? `-${n}` : `${n}`
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
let result = ""
|
|
288
|
+
let count = 0
|
|
289
|
+
|
|
290
|
+
while (n > 0) {
|
|
291
|
+
const digit = n % 10
|
|
292
|
+
n = (n / 10) | 0 // faster floor for positive integers
|
|
293
|
+
|
|
294
|
+
if (count > 0 && count % 3 === 0) {
|
|
295
|
+
result = groupSeparator + result
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
result = digit + result
|
|
299
|
+
count++
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
return isNegative ? `-${result}` : result
|
|
303
|
+
}
|
|
304
|
+
export function formatNumber(v?: number | null, scale?: number, d?: string | null, g?: string): string {
|
|
305
|
+
if (v == null) {
|
|
306
|
+
return ""
|
|
307
|
+
}
|
|
308
|
+
if (!d && !g) {
|
|
309
|
+
g = ","
|
|
310
|
+
d = "."
|
|
311
|
+
} else if (!g) {
|
|
312
|
+
g = d === "," ? "." : ","
|
|
313
|
+
}
|
|
314
|
+
const s = scale === 0 || scale ? v.toFixed(scale) : v.toString()
|
|
315
|
+
const x = s.split(".", 2)
|
|
316
|
+
const y = x[0]
|
|
317
|
+
const arr: string[] = []
|
|
318
|
+
const len = y.length - 1
|
|
319
|
+
for (let k = 0; k < len; k++) {
|
|
320
|
+
arr.push(y[len - k])
|
|
321
|
+
if ((k + 1) % 3 === 0) {
|
|
322
|
+
arr.push(g)
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
arr.push(y[0])
|
|
326
|
+
if (x.length === 1) {
|
|
327
|
+
return arr.reverse().join("")
|
|
328
|
+
} else {
|
|
329
|
+
return arr.reverse().join("") + d + x[1]
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
274
333
|
export function getDateFormat(profile?: string): string {
|
|
275
334
|
return "M/D/YYYY"
|
|
276
335
|
}
|
|
@@ -337,97 +396,92 @@ export function datetimeToString(date?: Date | string): string | undefined {
|
|
|
337
396
|
return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`
|
|
338
397
|
}
|
|
339
398
|
|
|
340
|
-
export function formatDate(d: Date | null | undefined,
|
|
341
|
-
if (!d) {
|
|
399
|
+
export function formatDate(d: Date | null | undefined, format?: string): string {
|
|
400
|
+
if (!d || !format) {
|
|
342
401
|
return ""
|
|
343
402
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
let
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
iyear = items.indexOf("YY")
|
|
366
|
-
fy = full ? full : false
|
|
367
|
-
}
|
|
368
|
-
arr[iday] = getD(d.getDate(), fd)
|
|
369
|
-
arr[im] = getD(d.getMonth() + 1, fm)
|
|
370
|
-
arr[iyear] = getYear(d.getFullYear(), fy)
|
|
371
|
-
const s = detectSeparator(format)
|
|
372
|
-
const e = detectLastSeparator(format)
|
|
373
|
-
const l = items.length === 4 ? format[format.length - 1] : ""
|
|
374
|
-
return arr[0] + s + arr[1] + e + arr[2] + l
|
|
375
|
-
}
|
|
376
|
-
function detectSeparator(format: string): string {
|
|
377
|
-
const len = format.length
|
|
378
|
-
for (let i = 0; i < len; i++) {
|
|
379
|
-
const c = format[i]
|
|
380
|
-
if (!((c >= "A" && c <= "Z") || (c >= "a" && c <= "z"))) {
|
|
381
|
-
return c
|
|
403
|
+
const y = d.getFullYear()
|
|
404
|
+
const m = d.getMonth() + 1
|
|
405
|
+
const day = d.getDate()
|
|
406
|
+
|
|
407
|
+
let out = ""
|
|
408
|
+
let i = 0
|
|
409
|
+
|
|
410
|
+
while (i < format.length) {
|
|
411
|
+
const c = format.charCodeAt(i)
|
|
412
|
+
|
|
413
|
+
// yyyy / yy
|
|
414
|
+
if (c === 121 /* y */) {
|
|
415
|
+
const len = count(format, i, 121)
|
|
416
|
+
if (len >= 4) {
|
|
417
|
+
out += y.toString()
|
|
418
|
+
i += 4
|
|
419
|
+
} else {
|
|
420
|
+
out += shortYear(y)
|
|
421
|
+
i += 2
|
|
422
|
+
}
|
|
423
|
+
continue
|
|
382
424
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
425
|
+
|
|
426
|
+
// MM / M
|
|
427
|
+
if (c === 77 /* M */) {
|
|
428
|
+
const len = count(format, i, 77)
|
|
429
|
+
out += len >= 2 ? pad(m) : m.toString()
|
|
430
|
+
i += len >= 2 ? 2 : 1
|
|
431
|
+
continue
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
// dd / d
|
|
435
|
+
if (c === 100 /* d */) {
|
|
436
|
+
const len = count(format, i, 100)
|
|
437
|
+
out += len >= 2 ? pad(day) : day.toString()
|
|
438
|
+
i += len >= 2 ? 2 : 1
|
|
439
|
+
continue
|
|
392
440
|
}
|
|
441
|
+
|
|
442
|
+
// literal char
|
|
443
|
+
out += format[i]
|
|
444
|
+
i++
|
|
393
445
|
}
|
|
394
|
-
return
|
|
446
|
+
return out
|
|
395
447
|
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
const s = y.toString()
|
|
401
|
-
return s.substring(s.length - 2)
|
|
448
|
+
function shortYear(y: number): string {
|
|
449
|
+
return (y % 100 + 100) % 100 < 10
|
|
450
|
+
? "0" + ((y % 100 + 100) % 100)
|
|
451
|
+
: "" + ((y % 100 + 100) % 100)
|
|
402
452
|
}
|
|
403
|
-
function
|
|
404
|
-
|
|
453
|
+
function count(s: string, i: number, ch: number): number {
|
|
454
|
+
let n = 0
|
|
455
|
+
while (i + n < s.length && s.charCodeAt(i + n) === ch) {
|
|
456
|
+
n++
|
|
457
|
+
}
|
|
458
|
+
return n
|
|
405
459
|
}
|
|
406
|
-
export function formatDateTime(date: Date | null | undefined, dateFormat?: string
|
|
460
|
+
export function formatDateTime(date: Date | null | undefined, dateFormat?: string): string {
|
|
407
461
|
if (!date) {
|
|
408
462
|
return ""
|
|
409
463
|
}
|
|
410
|
-
const sd = formatDate(date, dateFormat
|
|
464
|
+
const sd = formatDate(date, dateFormat)
|
|
411
465
|
if (sd.length === 0) {
|
|
412
466
|
return sd
|
|
413
467
|
}
|
|
414
468
|
return sd + " " + formatTime(date)
|
|
415
469
|
}
|
|
416
|
-
export function formatLongDateTime(date: Date | null | undefined, dateFormat?: string
|
|
470
|
+
export function formatLongDateTime(date: Date | null | undefined, dateFormat?: string): string {
|
|
417
471
|
if (!date) {
|
|
418
472
|
return ""
|
|
419
473
|
}
|
|
420
|
-
const sd = formatDate(date, dateFormat
|
|
474
|
+
const sd = formatDate(date, dateFormat)
|
|
421
475
|
if (sd.length === 0) {
|
|
422
476
|
return sd
|
|
423
477
|
}
|
|
424
478
|
return sd + " " + formatLongTime(date)
|
|
425
479
|
}
|
|
426
|
-
export function formatFullDateTime(date: Date | null | undefined, dateFormat?: string, s?: string
|
|
480
|
+
export function formatFullDateTime(date: Date | null | undefined, dateFormat?: string, s?: string): string {
|
|
427
481
|
if (!date) {
|
|
428
482
|
return ""
|
|
429
483
|
}
|
|
430
|
-
const sd = formatDate(date, dateFormat
|
|
484
|
+
const sd = formatDate(date, dateFormat)
|
|
431
485
|
if (sd.length === 0) {
|
|
432
486
|
return sd
|
|
433
487
|
}
|