@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.
- package/README.md +103 -81
- package/array/dedupe.js +7 -7
- package/array/groupBy.js +3 -4
- package/array/index.js +1 -1
- package/array/is.js +3 -4
- package/array/isNotEmpty.js +3 -4
- package/array/join.d.ts +6 -0
- package/array/join.js +16 -11
- package/array/mapFn.js +7 -7
- package/array/mapKey.js +7 -8
- package/array/mapPrimitive.js +12 -18
- package/array/shuffle.js +3 -4
- package/array/sort.d.ts +4 -5
- package/array/sort.js +18 -23
- package/boolean/index.js +1 -1
- package/boolean/is.js +3 -4
- package/caching/index.js +1 -1
- package/caching/memoize.d.ts +2 -1
- package/caching/memoize.js +40 -14
- package/date/addUTC.js +3 -4
- package/date/diff.js +3 -6
- package/date/endOfUTC.js +3 -4
- package/date/format.js +17 -14
- package/date/index.js +1 -1
- package/date/is.js +3 -4
- package/date/nowUnix.js +3 -4
- package/date/nowUnixMs.js +3 -4
- package/date/startOfUTC.js +3 -4
- package/date/toUTC.js +3 -4
- package/date/toUnix.js +3 -4
- package/deep/freeze.js +4 -5
- package/deep/get.js +4 -5
- package/deep/index.js +1 -1
- package/deep/seal.js +4 -5
- package/deep/set.js +3 -4
- package/equal.js +3 -4
- package/formdata/index.js +1 -1
- package/formdata/is.js +3 -4
- package/function/index.js +1 -1
- package/function/is.js +3 -4
- package/function/isAsync.js +3 -4
- package/function/noop.js +3 -4
- package/function/noopresolve.d.ts +1 -1
- package/function/noopresolve.js +3 -4
- package/function/noopreturn.d.ts +1 -1
- package/function/noopreturn.js +3 -4
- package/function/sleep.js +3 -4
- package/hash/fnv1A.js +3 -4
- package/hash/guid.js +3 -4
- package/hash/index.js +1 -1
- package/index.d.ts +16 -16
- package/is.js +1 -1
- package/number/index.js +1 -1
- package/number/is.js +3 -4
- package/number/isAbove.js +3 -4
- package/number/isAboveOrEqual.js +3 -4
- package/number/isBelow.js +3 -4
- package/number/isBelowOrEqual.js +3 -4
- package/number/isBetween.js +3 -4
- package/number/isInteger.js +3 -4
- package/number/isIntegerAbove.js +3 -4
- package/number/isIntegerAboveOrEqual.js +3 -4
- package/number/isIntegerBelow.js +3 -4
- package/number/isIntegerBelowOrEqual.js +3 -4
- package/number/isIntegerBetween.js +3 -4
- package/number/isNumericalNaN.js +3 -4
- package/number/randomBetween.js +3 -4
- package/number/randomIntBetween.js +3 -4
- package/number/round.js +3 -4
- package/number/toPercentage.js +3 -4
- package/object/define.js +3 -4
- package/object/index.js +1 -1
- package/object/is.js +3 -4
- package/object/isNotEmpty.js +3 -4
- package/object/merge.js +4 -7
- package/object/pick.js +5 -5
- package/package.json +1 -1
- package/regexp/index.js +1 -1
- package/regexp/is.js +3 -4
- package/regexp/sanitize.js +3 -4
- package/string/humanizeBytes.d.ts +2 -2
- package/string/humanizeBytes.js +8 -9
- package/string/humanizeNumber.d.ts +1 -1
- package/string/humanizeNumber.js +15 -30
- package/string/index.js +1 -1
- package/string/is.js +3 -4
- package/string/isBetween.js +3 -4
- package/string/isNotEmpty.js +3 -4
- package/string/shorten.js +3 -4
package/array/groupBy.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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;
|
package/array/isNotEmpty.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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 =
|
|
19
|
-
if (
|
|
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
|
-
|
|
23
|
-
for (
|
|
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
|
-
|
|
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
|
-
|
|
35
|
+
result = `${result}${i !== 0 ? DELIM : ''}${VALROUND !== false ? (0, round_1.round)(el, VALROUND) : el}`;
|
|
29
36
|
}
|
|
30
37
|
}
|
|
31
|
-
return TRIM ?
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
|
9
|
+
const MERGE = opts?.merge === true;
|
|
9
10
|
const map = {};
|
|
10
11
|
let hash = false;
|
|
11
|
-
for (
|
|
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
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
|
12
|
+
const MERGE = opts?.merge === true;
|
|
12
13
|
const map = {};
|
|
13
|
-
for (
|
|
14
|
-
|
|
15
|
-
|
|
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;
|
package/array/mapPrimitive.js
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.mapPrimitive = mapPrimitive;
|
|
4
|
+
exports.default = mapPrimitive;
|
|
4
5
|
const round_1 = require("../number/round");
|
|
5
|
-
|
|
6
|
+
const isIntegerAboveOrEqual_1 = require("../number/isIntegerAboveOrEqual");
|
|
7
|
+
function mapPrimitive(arr, opts = {}) {
|
|
6
8
|
if (!Array.isArray(arr) || !arr.length)
|
|
7
9
|
return {};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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 (
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
88
|
-
if (NOKEY_HIDE) {
|
|
89
|
-
for (
|
|
90
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
for (
|
|
102
|
-
|
|
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
|
|
101
|
+
return rslt;
|
|
105
102
|
}
|
|
106
|
-
exports.sort = sort;
|
|
107
|
-
exports.default = sort;
|
package/boolean/index.js
CHANGED
package/boolean/is.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
package/caching/memoize.d.ts
CHANGED
|
@@ -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:
|
|
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 };
|
package/caching/memoize.js
CHANGED
|
@@ -1,17 +1,43 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
43
|
-
|
|
43
|
+
let formatter = intl_formatters.get(hash);
|
|
44
|
+
if (formatter)
|
|
45
|
+
return formatter.format(val);
|
|
44
46
|
try {
|
|
45
|
-
|
|
46
|
-
intl_formatters.set(hash,
|
|
47
|
-
return
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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;
|
package/date/startOfUTC.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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;
|