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 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
- const obj = {};
12
- const keys = formData.keys();
13
- for (const key of keys) {
14
- const attr = attrs[key];
15
- const v = formData.get(key);
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
- const d = new Date(v);
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
- const s = v.split(",");
38
- const nums = [];
39
- for (let i = 0; i < s.length; i++) {
38
+ var s = v.split(",");
39
+ var nums = [];
40
+ for (var i = 0; i < s.length; i++) {
40
41
  if (!isNaN(s[i])) {
41
- const num = parseFloat(s[i]);
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, dateFormat, full, upper) {
363
- if (!d) {
417
+ function formatDate(d, format) {
418
+ if (!d || !format) {
364
419
  return "";
365
420
  }
366
- var format = dateFormat && dateFormat.length > 0 ? dateFormat : "M/D/YYYY";
367
- if (upper) {
368
- format = format.toUpperCase();
369
- }
370
- var arr = ["", "", ""];
371
- var items = format.split(/\/|\.| |-/);
372
- var iday = items.indexOf("D");
373
- var im = items.indexOf("M");
374
- var iyear = items.indexOf("YYYY");
375
- var fm = full ? full : false;
376
- var fd = full ? full : false;
377
- var fy = true;
378
- if (iday === -1) {
379
- iday = items.indexOf("DD");
380
- fd = true;
381
- }
382
- if (im === -1) {
383
- im = items.indexOf("MM");
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
- return "/";
408
- }
409
- function detectLastSeparator(format) {
410
- var len = format.length - 3;
411
- for (var i = len; i > -0; i--) {
412
- var c = format[i];
413
- if (!((c >= "A" && c <= "Z") || (c >= "a" && c <= "z"))) {
414
- return c;
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
- function getYear(y, full) {
420
- if (full || (y <= 99 && y >= -99)) {
421
- return y.toString();
422
- }
423
- var s = y.toString();
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
- exports.getYear = getYear;
427
- function getD(n, fu) {
428
- return fu ? pad(n) : n.toString();
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, full, upper) {
470
+ function formatDateTime(date, dateFormat) {
431
471
  if (!date) {
432
472
  return "";
433
473
  }
434
- var sd = formatDate(date, dateFormat, full, upper);
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, full, upper) {
481
+ function formatLongDateTime(date, dateFormat) {
442
482
  if (!date) {
443
483
  return "";
444
484
  }
445
- var sd = formatDate(date, dateFormat, full, upper);
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, full, upper) {
492
+ function formatFullDateTime(date, dateFormat, s) {
453
493
  if (!date) {
454
494
  return "";
455
495
  }
456
- var sd = formatDate(date, dateFormat, full, upper);
496
+ var sd = formatDate(date, dateFormat);
457
497
  if (sd.length === 0) {
458
498
  return sd;
459
499
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "web-one",
3
- "version": "0.0.2",
4
- "description": "Validate data",
3
+ "version": "0.0.3",
4
+ "description": "Web utilities",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
7
7
  "scripts": {
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, dateFormat?: string, full?: boolean, upper?: boolean): string {
341
- if (!d) {
399
+ export function formatDate(d: Date | null | undefined, format?: string): string {
400
+ if (!d || !format) {
342
401
  return ""
343
402
  }
344
- let format = dateFormat && dateFormat.length > 0 ? dateFormat : "M/D/YYYY"
345
- if (upper) {
346
- format = format.toUpperCase()
347
- }
348
- let arr = ["", "", ""]
349
- const items = format.split(/\/|\.| |-/)
350
- let iday = items.indexOf("D")
351
- let im = items.indexOf("M")
352
- let iyear = items.indexOf("YYYY")
353
- let fm = full ? full : false
354
- let fd = full ? full : false
355
- let fy = true
356
- if (iday === -1) {
357
- iday = items.indexOf("DD")
358
- fd = true
359
- }
360
- if (im === -1) {
361
- im = items.indexOf("MM")
362
- fm = true
363
- }
364
- if (iyear === -1) {
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
- return "/"
385
- }
386
- function detectLastSeparator(format: string): string {
387
- const len = format.length - 3
388
- for (let i = len; i > -0; i--) {
389
- const c = format[i]
390
- if (!((c >= "A" && c <= "Z") || (c >= "a" && c <= "z"))) {
391
- return c
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
- export function getYear(y: number, full?: boolean): string {
397
- if (full || (y <= 99 && y >= -99)) {
398
- return y.toString()
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 getD(n: number, fu: boolean): string {
404
- return fu ? pad(n) : n.toString()
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, full?: boolean, upper?: boolean): 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, full, upper)
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, full?: boolean, upper?: boolean): 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, full, upper)
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, full?: boolean, upper?: boolean): 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, full, upper)
484
+ const sd = formatDate(date, dateFormat)
431
485
  if (sd.length === 0) {
432
486
  return sd
433
487
  }
package/tsconfig.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "compileOnSave": true,
3
3
  "compilerOptions": {
4
- "target": "es6",
4
+ "target": "es5",
5
5
  "baseUrl": "./src",
6
6
  "outDir": "./lib",
7
7
  "module": "commonjs",