@valkyriestudios/utils 12.9.0 → 12.11.0

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.
Files changed (89) hide show
  1. package/README.md +103 -81
  2. package/array/dedupe.js +7 -7
  3. package/array/groupBy.js +3 -4
  4. package/array/index.js +1 -1
  5. package/array/is.js +3 -4
  6. package/array/isNotEmpty.js +3 -4
  7. package/array/join.d.ts +6 -0
  8. package/array/join.js +16 -11
  9. package/array/mapFn.js +7 -7
  10. package/array/mapKey.js +7 -8
  11. package/array/mapPrimitive.js +12 -18
  12. package/array/shuffle.js +3 -4
  13. package/array/sort.d.ts +4 -5
  14. package/array/sort.js +18 -23
  15. package/boolean/index.js +1 -1
  16. package/boolean/is.js +3 -4
  17. package/caching/index.js +1 -1
  18. package/caching/memoize.d.ts +2 -1
  19. package/caching/memoize.js +40 -14
  20. package/date/addUTC.js +3 -4
  21. package/date/diff.js +3 -6
  22. package/date/endOfUTC.js +3 -4
  23. package/date/format.js +17 -14
  24. package/date/index.js +1 -1
  25. package/date/is.js +3 -4
  26. package/date/nowUnix.js +3 -4
  27. package/date/nowUnixMs.js +3 -4
  28. package/date/startOfUTC.js +3 -4
  29. package/date/toUTC.js +3 -4
  30. package/date/toUnix.js +3 -4
  31. package/deep/freeze.js +4 -5
  32. package/deep/get.js +4 -5
  33. package/deep/index.js +1 -1
  34. package/deep/seal.js +4 -5
  35. package/deep/set.js +3 -4
  36. package/equal.js +3 -4
  37. package/formdata/index.js +1 -1
  38. package/formdata/is.js +3 -4
  39. package/function/index.js +1 -1
  40. package/function/is.js +3 -4
  41. package/function/isAsync.js +3 -4
  42. package/function/noop.js +3 -4
  43. package/function/noopresolve.d.ts +1 -1
  44. package/function/noopresolve.js +3 -4
  45. package/function/noopreturn.d.ts +1 -1
  46. package/function/noopreturn.js +3 -4
  47. package/function/sleep.js +3 -4
  48. package/hash/fnv1A.js +3 -4
  49. package/hash/guid.js +3 -4
  50. package/hash/index.js +1 -1
  51. package/index.d.ts +16 -16
  52. package/is.js +1 -1
  53. package/number/index.js +1 -1
  54. package/number/is.js +3 -4
  55. package/number/isAbove.js +3 -4
  56. package/number/isAboveOrEqual.js +3 -4
  57. package/number/isBelow.js +3 -4
  58. package/number/isBelowOrEqual.js +3 -4
  59. package/number/isBetween.js +3 -4
  60. package/number/isInteger.js +3 -4
  61. package/number/isIntegerAbove.js +3 -4
  62. package/number/isIntegerAboveOrEqual.js +3 -4
  63. package/number/isIntegerBelow.js +3 -4
  64. package/number/isIntegerBelowOrEqual.js +3 -4
  65. package/number/isIntegerBetween.js +3 -4
  66. package/number/isNumericalNaN.js +3 -4
  67. package/number/randomBetween.js +3 -4
  68. package/number/randomIntBetween.js +3 -4
  69. package/number/round.js +3 -4
  70. package/number/toPercentage.js +3 -4
  71. package/object/define.js +3 -4
  72. package/object/index.js +1 -1
  73. package/object/is.js +3 -4
  74. package/object/isNotEmpty.js +3 -4
  75. package/object/merge.js +4 -7
  76. package/object/pick.js +5 -5
  77. package/package.json +1 -1
  78. package/regexp/index.js +1 -1
  79. package/regexp/is.js +3 -4
  80. package/regexp/sanitize.js +3 -4
  81. package/string/humanizeBytes.d.ts +2 -2
  82. package/string/humanizeBytes.js +8 -9
  83. package/string/humanizeNumber.d.ts +1 -1
  84. package/string/humanizeNumber.js +15 -30
  85. package/string/index.js +1 -1
  86. package/string/is.js +3 -4
  87. package/string/isBetween.js +3 -4
  88. package/string/isNotEmpty.js +3 -4
  89. package/string/shorten.js +3 -4
package/array/groupBy.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.groupBy = void 0;
3
+ exports.groupBy = groupBy;
4
+ exports.default = groupBy;
4
5
  const isNotEmpty_1 = require("../object/isNotEmpty");
5
6
  const FALLBACK = '_';
6
7
  const defaultHandler = () => FALLBACK;
@@ -30,5 +31,3 @@ function groupBy(arr, handler) {
30
31
  }
31
32
  return acc;
32
33
  }
33
- exports.groupBy = groupBy;
34
- exports.default = groupBy;
package/array/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sort = exports.shuffle = exports.groupBy = exports.mapPrimitive = exports.mapKey = exports.mapFn = exports.join = exports.isNe = exports.isNeArray = exports.isNotEmpty = exports.isNotEmptyArray = exports.is = exports.isArray = exports.dedupe = void 0;
4
4
  const dedupe_1 = require("./dedupe");
package/array/is.js CHANGED
@@ -1,8 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.isArray = void 0;
3
+ exports.isArray = isArray;
4
+ exports.default = isArray;
4
5
  function isArray(val) {
5
6
  return Array.isArray(val);
6
7
  }
7
- exports.isArray = isArray;
8
- exports.default = isArray;
@@ -1,8 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.isNotEmptyArray = void 0;
3
+ exports.isNotEmptyArray = isNotEmptyArray;
4
+ exports.default = isNotEmptyArray;
4
5
  function isNotEmptyArray(val) {
5
6
  return Array.isArray(val) && val.length !== 0;
6
7
  }
7
- exports.isNotEmptyArray = isNotEmptyArray;
8
- exports.default = isNotEmptyArray;
package/array/join.d.ts CHANGED
@@ -11,6 +11,12 @@ interface joinOptions {
11
11
  * eg: join([' hello', 'world '], {trim: true}) -> 'hello world'
12
12
  */
13
13
  trim?: boolean;
14
+ /**
15
+ * Trim internals of values or not
16
+ * (default=false)
17
+ * eg: join([' hello world', 'this is ', 'Peter'], {trimBetween: true, trim: true}) -> 'hello world this is peter'
18
+ */
19
+ innertrim?: boolean;
14
20
  /**
15
21
  * Automatically trim all string values
16
22
  * (default=true)
package/array/join.js CHANGED
@@ -1,7 +1,9 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.join = void 0;
3
+ exports.join = join;
4
+ exports.default = join;
4
5
  const round_1 = require("../number/round");
6
+ const isInteger_1 = require("../number/isInteger");
5
7
  function join(val, opts) {
6
8
  if (!Array.isArray(val) || !val.length)
7
9
  return '';
@@ -9,26 +11,29 @@ function join(val, opts) {
9
11
  let TRIM = true;
10
12
  let VALTRIM = true;
11
13
  let VALROUND = false;
14
+ let INNERTRIM = false;
12
15
  if (opts && Object.prototype.toString.call(opts) === '[object Object]') {
13
16
  if (typeof opts.delim === 'string')
14
17
  DELIM = opts.delim;
15
18
  if (opts.trim === false)
16
19
  TRIM = opts.trim;
17
20
  if (opts.valtrim === false)
18
- VALTRIM = opts.valtrim;
19
- if (Number.isInteger(opts.valround) && opts.valround >= 0)
21
+ VALTRIM = false;
22
+ if (opts.innertrim === true)
23
+ INNERTRIM = true;
24
+ if ((0, isInteger_1.isInteger)(opts.valround) && opts.valround >= 0)
20
25
  VALROUND = opts.valround;
21
26
  }
22
- const filtered = [];
23
- for (const el of val) {
27
+ let result = '';
28
+ for (let i = 0; i < val.length; i++) {
29
+ const el = val[i];
24
30
  if (typeof el === 'string' && el.trim().length) {
25
- filtered.push(VALTRIM ? el.trim() : el);
31
+ const trimmed = VALTRIM ? el.trim() : el;
32
+ result = `${result}${i !== 0 ? DELIM : ''}${INNERTRIM ? trimmed.replace(/(\s){2,}/g, ' ') : trimmed}`;
26
33
  }
27
34
  else if (Number.isFinite(el)) {
28
- filtered.push(VALROUND !== false ? (0, round_1.round)(el, VALROUND) : el);
35
+ result = `${result}${i !== 0 ? DELIM : ''}${VALROUND !== false ? (0, round_1.round)(el, VALROUND) : el}`;
29
36
  }
30
37
  }
31
- return TRIM ? filtered.join(DELIM).trim() : filtered.join(DELIM);
38
+ return TRIM ? result.trim() : result;
32
39
  }
33
- exports.join = join;
34
- exports.default = join;
package/array/mapFn.js CHANGED
@@ -1,23 +1,23 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.mapFn = void 0;
3
+ exports.mapFn = mapFn;
4
+ exports.default = mapFn;
4
5
  function mapFn(arr, fn, opts) {
5
6
  if ((!Array.isArray(arr) || !arr.length) ||
6
7
  typeof fn !== 'function')
7
8
  return {};
8
- const MERGE = opts && Object.prototype.toString.call(opts) === '[object Object]' && opts.merge === true;
9
+ const MERGE = opts?.merge === true;
9
10
  const map = {};
10
11
  let hash = false;
11
- for (const el of arr) {
12
+ for (let i = 0; i < arr.length; i++) {
13
+ const el = arr[i];
12
14
  if (Object.prototype.toString.call(el) !== '[object Object]')
13
15
  continue;
14
16
  hash = fn(el);
15
17
  if (!Number.isFinite(hash) && !(typeof hash === 'string' && hash.trim().length))
16
18
  continue;
17
19
  hash = `${hash}`;
18
- map[hash] = MERGE && map.hasOwnProperty(hash) ? { ...map[hash], ...el } : el;
20
+ map[hash] = MERGE && map[hash] !== undefined ? { ...map[hash], ...el } : el;
19
21
  }
20
22
  return map;
21
23
  }
22
- exports.mapFn = mapFn;
23
- exports.default = mapFn;
package/array/mapKey.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.mapKey = void 0;
3
+ exports.mapKey = mapKey;
4
+ exports.default = mapKey;
4
5
  function mapKey(arr, key, opts) {
5
6
  if ((!Array.isArray(arr) || !arr.length) ||
6
7
  typeof key !== 'string')
@@ -8,15 +9,13 @@ function mapKey(arr, key, opts) {
8
9
  const key_s = key.trim();
9
10
  if (!key_s.length)
10
11
  return {};
11
- const MERGE = opts && Object.prototype.toString.call(opts) === '[object Object]' && opts.merge === true;
12
+ const MERGE = opts?.merge === true;
12
13
  const map = {};
13
- for (const el of arr) {
14
- if (Object.prototype.toString.call(el) !== '[object Object]' ||
15
- !Object.prototype.hasOwnProperty.call(el, key_s))
14
+ for (let i = 0; i < arr.length; i++) {
15
+ const el = arr[i];
16
+ if (el?.[key_s] === undefined)
16
17
  continue;
17
18
  map[el[key_s]] = MERGE && map.hasOwnProperty(el[key_s]) ? { ...map[el[key_s]], ...el } : el;
18
19
  }
19
20
  return map;
20
21
  }
21
- exports.mapKey = mapKey;
22
- exports.default = mapKey;
@@ -1,24 +1,20 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.mapPrimitive = void 0;
3
+ exports.mapPrimitive = mapPrimitive;
4
+ exports.default = mapPrimitive;
4
5
  const round_1 = require("../number/round");
5
- function mapPrimitive(arr, opts) {
6
+ const isIntegerAboveOrEqual_1 = require("../number/isIntegerAboveOrEqual");
7
+ function mapPrimitive(arr, opts = {}) {
6
8
  if (!Array.isArray(arr) || !arr.length)
7
9
  return {};
8
- let VALTRIM = false;
9
- let VALROUND = false;
10
- let KEYROUND = false;
11
- if (opts && Object.prototype.toString.call(opts) === '[object Object]') {
12
- if (opts.valtrim === true)
13
- VALTRIM = true;
14
- if (opts.valround === true ||
15
- (Number.isInteger(opts.valround) && opts.valround >= 0))
16
- VALROUND = opts.valround;
17
- if (opts.keyround === true)
18
- KEYROUND = true;
19
- }
10
+ const VALTRIM = opts?.valtrim === true;
11
+ const VALROUND = (0, isIntegerAboveOrEqual_1.isIntegerAboveOrEqual)(opts?.valround, 0)
12
+ ? opts?.valround
13
+ : opts?.valround === true;
14
+ const KEYROUND = opts?.keyround === true;
20
15
  const map = {};
21
- for (const el of arr) {
16
+ for (let i = 0; i < arr.length; i++) {
17
+ const el = arr[i];
22
18
  if (typeof el === 'string') {
23
19
  const trimmed = el.trim();
24
20
  if (!trimmed.length)
@@ -35,5 +31,3 @@ function mapPrimitive(arr, opts) {
35
31
  }
36
32
  return map;
37
33
  }
38
- exports.mapPrimitive = mapPrimitive;
39
- exports.default = mapPrimitive;
package/array/shuffle.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.shuffle = void 0;
3
+ exports.shuffle = shuffle;
4
+ exports.default = shuffle;
4
5
  function shuffle(arr) {
5
6
  if (!Array.isArray(arr))
6
7
  return;
@@ -9,5 +10,3 @@ function shuffle(arr) {
9
10
  [arr[i], arr[j]] = [arr[j], arr[i]];
10
11
  }
11
12
  }
12
- exports.shuffle = shuffle;
13
- exports.default = shuffle;
package/array/sort.d.ts CHANGED
@@ -15,10 +15,7 @@ interface sortOptions {
15
15
  */
16
16
  nokey_atend?: boolean;
17
17
  }
18
- interface sortObject {
19
- [key: string]: any;
20
- }
21
- type sortByFunction = (el: sortObject) => string;
18
+ type sortByFunction = (el: Record<string, any>) => string;
22
19
  /**
23
20
  * Sort an array of objects, uses an implementation of Tony Hoare's quicksort
24
21
  * (https://cs.stanford.edu/people/eroberts/courses/soco/projects/2008-09/tony-hoare/quicksort.html)
@@ -54,5 +51,7 @@ type sortByFunction = (el: sortObject) => string;
54
51
  * @returns Sorted array
55
52
  * @throws {Error}
56
53
  */
57
- declare function sort(arr: sortObject[], by: string | sortByFunction, dir?: 'asc' | 'desc', opts?: sortOptions): sortObject[];
54
+ declare function sort<T extends {
55
+ [key: string]: any;
56
+ }[]>(arr: T, by: string | sortByFunction, dir?: 'asc' | 'desc', opts?: sortOptions): T;
58
57
  export { sort, sort as default };
package/array/sort.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.sort = void 0;
3
+ exports.sort = sort;
4
+ exports.default = sort;
4
5
  const isNotEmpty_1 = require("../object/isNotEmpty");
5
6
  function partition(arr, start_ix, end_ix) {
6
7
  const pivot_val = arr[Math.floor((start_ix + end_ix) / 2)].t;
@@ -53,10 +54,11 @@ function sort(arr, by, dir = 'asc', opts) {
53
54
  const by_s = by.trim();
54
55
  if (!by_s.length)
55
56
  throw new Error('Sort by as string should contain content');
56
- for (const el of arr) {
57
+ for (let i = 0; i < arr.length; i++) {
58
+ const el = arr[i];
57
59
  if (!FILTER_FN(el))
58
60
  continue;
59
- if (!Object.prototype.hasOwnProperty.call(el, by_s) || el[by_s] === undefined) {
61
+ if (el?.[by_s] === undefined) {
60
62
  nokey_arr.push(el);
61
63
  }
62
64
  else {
@@ -66,7 +68,8 @@ function sort(arr, by, dir = 'asc', opts) {
66
68
  }
67
69
  else if (typeof by === 'function') {
68
70
  let key;
69
- for (const el of arr) {
71
+ for (let i = 0; i < arr.length; i++) {
72
+ const el = arr[i];
70
73
  if (!FILTER_FN(el))
71
74
  continue;
72
75
  key = by(el);
@@ -84,24 +87,16 @@ function sort(arr, by, dir = 'asc', opts) {
84
87
  quickSort(prepared_arr);
85
88
  if (dir === 'desc')
86
89
  prepared_arr.reverse();
87
- const result = [];
88
- if (NOKEY_HIDE) {
89
- for (const obj of prepared_arr)
90
- result.push(obj.el);
91
- }
92
- else if (NOKEY_AT_END) {
93
- for (const obj of prepared_arr)
94
- result.push(obj.el);
95
- for (const el of nokey_arr)
96
- result.push(el);
90
+ const rslt = [];
91
+ if (!NOKEY_HIDE && !NOKEY_AT_END) {
92
+ for (let i = 0; i < nokey_arr.length; i++)
93
+ rslt.push(nokey_arr[i]);
97
94
  }
98
- else {
99
- for (const el of nokey_arr)
100
- result.push(el);
101
- for (const obj of prepared_arr)
102
- result.push(obj.el);
95
+ for (let i = 0; i < prepared_arr.length; i++)
96
+ rslt.push(prepared_arr[i].el);
97
+ if (!NOKEY_HIDE && NOKEY_AT_END) {
98
+ for (let i = 0; i < nokey_arr.length; i++)
99
+ rslt.push(nokey_arr[i]);
103
100
  }
104
- return result;
101
+ return rslt;
105
102
  }
106
- exports.sort = sort;
107
- exports.default = sort;
package/boolean/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.is = exports.isBoolean = void 0;
4
4
  const is_1 = require("./is");
package/boolean/is.js CHANGED
@@ -1,8 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.isBoolean = void 0;
3
+ exports.isBoolean = isBoolean;
4
+ exports.default = isBoolean;
4
5
  function isBoolean(val) {
5
6
  return val === true || val === false;
6
7
  }
7
- exports.isBoolean = isBoolean;
8
- exports.default = isBoolean;
package/caching/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.memoize = void 0;
4
4
  const memoize_1 = require("./memoize");
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @param fn - Function to memoize
8
8
  * @param resolver - Optional resolver function to generate cache key. If not passed the first argument is used as map key
9
+ * @param {false|number?} memoize_for - Memoize for X milliseconds, if passed false will indefinitely memoize (default = false)
9
10
  */
10
- declare function memoize(fn: Function, resolver?: Function): Function;
11
+ declare function memoize<T extends (...args: any[]) => unknown>(fn: T, resolver?: (...args: Parameters<T>) => any, memoize_for?: number | false): T;
11
12
  export { memoize, memoize as default };
@@ -1,17 +1,43 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.memoize = void 0;
4
- function memoize(fn, resolver) {
5
- const memoized = function () {
6
- const key = typeof resolver === 'function' ? resolver.apply(this, arguments) : arguments[0];
7
- if (memoized.cache.has(key))
8
- return memoized.cache.get(key);
9
- const result = fn.apply(this, arguments);
10
- memoized.cache.set(key, result);
11
- return result;
12
- };
13
- memoized.cache = new Map();
14
- return memoized;
15
- }
16
3
  exports.memoize = memoize;
17
4
  exports.default = memoize;
5
+ const isAsync_1 = require("../function/isAsync");
6
+ const isIntegerAbove_1 = require("../number/isIntegerAbove");
7
+ const toUTC_1 = require("../date/toUTC");
8
+ const diff_1 = require("../date/diff");
9
+ function memoize(fn, resolver, memoize_for = false) {
10
+ const cache_for = (0, isIntegerAbove_1.default)(memoize_for, 0) ? memoize_for : false;
11
+ if ((0, isAsync_1.default)(fn)) {
12
+ const memoized = async function (...args) {
13
+ const key = typeof resolver === 'function' ? resolver(...args) : args[0];
14
+ if (memoized.cache.has(key)) {
15
+ const cached_val = memoized.cache.get(key);
16
+ if (cache_for === false || (0, diff_1.default)((0, toUTC_1.default)(new Date()), cached_val.d) < cache_for) {
17
+ return cached_val.r;
18
+ }
19
+ }
20
+ const result = await fn(...args);
21
+ memoized.cache.set(key, { r: result, d: (0, toUTC_1.default)(new Date()) });
22
+ return result;
23
+ };
24
+ memoized.cache = new Map();
25
+ return memoized;
26
+ }
27
+ else {
28
+ const memoized = function (...args) {
29
+ const key = typeof resolver === 'function' ? resolver(...args) : args[0];
30
+ if (memoized.cache.has(key)) {
31
+ const cached_val = memoized.cache.get(key);
32
+ if (cache_for === false || (0, diff_1.default)((0, toUTC_1.default)(new Date()), cached_val.d) < cache_for) {
33
+ return cached_val.r;
34
+ }
35
+ }
36
+ const result = fn(...args);
37
+ memoized.cache.set(key, { r: result, d: (0, toUTC_1.default)(new Date()) });
38
+ return result;
39
+ };
40
+ memoized.cache = new Map();
41
+ return memoized;
42
+ }
43
+ }
package/date/addUTC.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.addUTC = void 0;
3
+ exports.addUTC = addUTC;
4
+ exports.default = addUTC;
4
5
  const is_1 = require("./is");
5
6
  function addUTC(val, amt = 0, key = 'millisecond') {
6
7
  if (!(0, is_1.isDate)(val))
@@ -40,5 +41,3 @@ function addUTC(val, amt = 0, key = 'millisecond') {
40
41
  return new Date(Date.UTC(year, month, date, hour, min, sec, ms));
41
42
  }
42
43
  }
43
- exports.addUTC = addUTC;
44
- exports.default = addUTC;
package/date/diff.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.diff = void 0;
3
+ exports.diff = diff;
4
+ exports.default = diff;
4
5
  const is_1 = require("./is");
5
6
  const SECOND_IN_MILLISECONDS = 1000;
6
7
  const MINUTE_IN_MILLISECONDS = SECOND_IN_MILLISECONDS * 60;
@@ -11,8 +12,6 @@ function diff(val_a, val_b, key = 'millisecond') {
11
12
  if (!(0, is_1.isDate)(val_a) ||
12
13
  !(0, is_1.isDate)(val_b))
13
14
  throw new TypeError('Diff requires date objects for both values');
14
- if (typeof key !== 'string')
15
- throw new TypeError('Key needs to be a string');
16
15
  const diff_in_ms = val_a.valueOf() - val_b.valueOf();
17
16
  switch (key) {
18
17
  case 'week':
@@ -34,5 +33,3 @@ function diff(val_a, val_b, key = 'millisecond') {
34
33
  return diff_in_ms;
35
34
  }
36
35
  }
37
- exports.diff = diff;
38
- exports.default = diff;
package/date/endOfUTC.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.endOfUTC = void 0;
3
+ exports.endOfUTC = endOfUTC;
4
+ exports.default = endOfUTC;
4
5
  const is_1 = require("./is");
5
6
  const WEEK_END = new Map([
6
7
  ['week', 0],
@@ -48,5 +49,3 @@ function endOfUTC(val, key = 'millisecond') {
48
49
  return new Date(Date.UTC(val.getUTCFullYear(), val.getUTCMonth(), val.getUTCDate(), val.getUTCHours(), val.getUTCMinutes(), val.getUTCSeconds(), val.getUTCMilliseconds()));
49
50
  }
50
51
  }
51
- exports.endOfUTC = endOfUTC;
52
- exports.default = endOfUTC;
package/date/format.js CHANGED
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.format = void 0;
3
+ exports.format = format;
4
+ exports.default = format;
4
5
  const is_1 = require("./is");
5
6
  const DEFAULT_LOCALE = 'en-US';
6
7
  let DEFAULT_TZ = 'UTC';
@@ -39,12 +40,13 @@ function toZone(date, zone) {
39
40
  }
40
41
  function runIntl(loc, token, props, val) {
41
42
  const hash = `${loc}:${token}`;
42
- if (intl_formatters.has(hash))
43
- return intl_formatters.get(hash).format(val);
43
+ let formatter = intl_formatters.get(hash);
44
+ if (formatter)
45
+ return formatter.format(val);
44
46
  try {
45
- const instance = new Intl.DateTimeFormat(loc, props);
46
- intl_formatters.set(hash, instance);
47
- return instance.format(val);
47
+ formatter = new Intl.DateTimeFormat(loc, props);
48
+ intl_formatters.set(hash, formatter);
49
+ return formatter.format(val);
48
50
  }
49
51
  catch (err) {
50
52
  throw new Error(`format: Failed to run conversion for ${token} with locale ${loc}`);
@@ -76,9 +78,10 @@ const Tokens = [
76
78
  .sort((a, b) => a[0].length > b[0].length ? -1 : 1)
77
79
  .map((el) => [el[0], new RegExp(el[0], 'g'), el[1]]);
78
80
  function getSpecChain(spec) {
79
- if (spec_cache.has(spec))
80
- return spec_cache.get(spec);
81
- const spec_chain = [];
81
+ let spec_chain = spec_cache.get(spec);
82
+ if (spec_chain)
83
+ return spec_chain;
84
+ spec_chain = [];
82
85
  let cursor;
83
86
  for (let i = 0; i < Tokens.length; i++) {
84
87
  cursor = Tokens[i];
@@ -113,15 +116,15 @@ function format(val, spec, locale = DEFAULT_LOCALE, zone = DEFAULT_TZ) {
113
116
  if (!spec_chain)
114
117
  return val.toISOString();
115
118
  const d = toZone(val, zone);
116
- for (const el of spec_chain) {
119
+ for (let i = 0; i < spec_chain.length; i++) {
120
+ const el = spec_chain[i];
117
121
  formatted_string = formatted_string.replace(el[1], el[2](d, locale));
118
122
  }
119
123
  if (escaped_acc.length) {
120
- for (const escape_token of escaped_acc) {
124
+ for (let i = 0; i < escaped_acc.length; i++) {
125
+ const escape_token = escaped_acc[i];
121
126
  formatted_string = formatted_string.replace(escape_token[0], escape_token[1]);
122
127
  }
123
128
  }
124
129
  return formatted_string;
125
130
  }
126
- exports.format = format;
127
- exports.default = format;
package/date/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toUTC = exports.toUnix = exports.startOfUTC = exports.nowUnixMs = exports.nowUnix = exports.is = exports.isDate = exports.format = exports.endOfUTC = exports.diff = exports.addUTC = void 0;
4
4
  const addUTC_1 = require("./addUTC");
package/date/is.js CHANGED
@@ -1,8 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.isDate = void 0;
3
+ exports.isDate = isDate;
4
+ exports.default = isDate;
4
5
  function isDate(val) {
5
6
  return val instanceof Date && !isNaN(val);
6
7
  }
7
- exports.isDate = isDate;
8
- exports.default = isDate;
package/date/nowUnix.js CHANGED
@@ -1,8 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.nowUnix = void 0;
3
+ exports.nowUnix = nowUnix;
4
+ exports.default = nowUnix;
4
5
  function nowUnix() {
5
6
  return Math.floor(Date.now() / 1000);
6
7
  }
7
- exports.nowUnix = nowUnix;
8
- exports.default = nowUnix;
package/date/nowUnixMs.js CHANGED
@@ -1,8 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.nowUnixMs = void 0;
3
+ exports.nowUnixMs = nowUnixMs;
4
+ exports.default = nowUnixMs;
4
5
  function nowUnixMs() {
5
6
  return Math.floor(Date.now());
6
7
  }
7
- exports.nowUnixMs = nowUnixMs;
8
- exports.default = nowUnixMs;
@@ -1,6 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.startOfUTC = void 0;
3
+ exports.startOfUTC = startOfUTC;
4
+ exports.default = startOfUTC;
4
5
  const is_1 = require("./is");
5
6
  const WEEK_START = new Map([
6
7
  ['week', 1],
@@ -48,5 +49,3 @@ function startOfUTC(val, key = 'millisecond') {
48
49
  return new Date(Date.UTC(val.getUTCFullYear(), val.getUTCMonth(), val.getUTCDate(), val.getUTCHours(), val.getUTCMinutes(), val.getUTCSeconds(), val.getUTCMilliseconds()));
49
50
  }
50
51
  }
51
- exports.startOfUTC = startOfUTC;
52
- exports.default = startOfUTC;
package/date/toUTC.js CHANGED
@@ -1,11 +1,10 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.toUTC = void 0;
3
+ exports.toUTC = toUTC;
4
+ exports.default = toUTC;
4
5
  const is_1 = require("./is");
5
6
  function toUTC(val) {
6
7
  if (!(0, is_1.isDate)(val))
7
8
  throw new TypeError('toUTC requires a date object');
8
9
  return new Date(Date.UTC(val.getUTCFullYear(), val.getUTCMonth(), val.getUTCDate(), val.getUTCHours(), val.getUTCMinutes(), val.getUTCSeconds(), val.getUTCMilliseconds()));
9
10
  }
10
- exports.toUTC = toUTC;
11
- exports.default = toUTC;
package/date/toUnix.js CHANGED
@@ -1,11 +1,10 @@
1
- 'use strict';
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = exports.toUnix = void 0;
3
+ exports.toUnix = toUnix;
4
+ exports.default = toUnix;
4
5
  const is_1 = require("./is");
5
6
  function toUnix(val) {
6
7
  if (!(0, is_1.isDate)(val))
7
8
  throw new TypeError('toUnix requires a date object');
8
9
  return Math.floor(val.valueOf() / 1000);
9
10
  }
10
- exports.toUnix = toUnix;
11
- exports.default = toUnix;