@valkyriestudios/utils 5.4.0 → 6.1.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/CHANGELOG.md +54 -0
- package/README.md +167 -5
- package/array/dedupe.js +2 -2
- package/array/is.js +2 -2
- package/array/isNotEmpty.js +2 -2
- package/array/join.js +2 -2
- package/array/mapFn.js +2 -2
- package/array/mapKey.js +2 -2
- package/array/mapPrimitive.js +2 -2
- package/array/sort.js +123 -0
- package/boolean/is.js +2 -2
- package/caching/memoize.js +2 -2
- package/date/is.js +2 -2
- package/deep/define.js +2 -2
- package/deep/freeze.js +4 -6
- package/deep/get.js +2 -2
- package/deep/seal.js +4 -6
- package/deep/set.js +2 -2
- package/function/is.js +2 -2
- package/function/noop.js +2 -2
- package/function/noopresolve.js +2 -2
- package/function/noopreturn.js +2 -2
- package/function/sleep.js +2 -2
- package/hash/fnv1A.js +2 -2
- package/hash/guid.js +10 -23
- package/is.js +181 -2
- package/number/is.js +2 -2
- package/number/isAbove.js +2 -2
- package/number/isAboveOrEqual.js +12 -0
- package/number/isBelow.js +2 -2
- package/number/isBelowOrEqual.js +12 -0
- package/number/isBetween.js +3 -4
- package/number/isInteger.js +2 -2
- package/number/isIntegerAbove.js +2 -2
- package/number/isIntegerAboveOrEqual.js +13 -0
- package/number/isIntegerBelow.js +2 -2
- package/number/isIntegerBelowOrEqual.js +13 -0
- package/number/isIntegerBetween.js +3 -4
- package/number/isNumericalNaN.js +2 -2
- package/number/randomBetween.js +3 -4
- package/number/randomIntBetween.js +14 -0
- package/number/round.js +5 -6
- package/number/toPercentage.js +3 -5
- package/object/define.js +3 -5
- package/object/defineFrozen.js +2 -2
- package/object/defineSealed.js +2 -2
- package/object/forValues.js +4 -7
- package/object/is.js +2 -2
- package/object/isNotEmpty.js +2 -2
- package/object/merge.js +1 -3
- package/object/pick.js +23 -12
- package/object/zip.js +4 -8
- package/package.json +2 -2
- package/regexp/is.js +2 -2
- package/string/humanizeBytes.js +14 -30
- package/string/humanizeNumber.js +57 -0
- package/string/is.js +2 -2
- package/string/isBetween.js +3 -5
- package/string/isNotEmpty.js +2 -2
- package/string/shorten.js +2 -2
- package/.nyc_output/23b5ae65-a0d9-469f-bf26-a14b838d3a7a.json +0 -1
- package/.nyc_output/2b8fcaa7-2b0c-41b7-a640-7aa74f867235.json +0 -1
- package/.nyc_output/processinfo/23b5ae65-a0d9-469f-bf26-a14b838d3a7a.json +0 -1
- package/.nyc_output/processinfo/2b8fcaa7-2b0c-41b7-a640-7aa74f867235.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/codecov +0 -0
- package/codecov.sh +0 -2
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -281
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/array/dedupe.js.html +0 -154
- package/coverage/lcov-report/src/array/index.html +0 -221
- package/coverage/lcov-report/src/array/is.js.html +0 -100
- package/coverage/lcov-report/src/array/isNotEmpty.js.html +0 -109
- package/coverage/lcov-report/src/array/join.js.html +0 -184
- package/coverage/lcov-report/src/array/mapFn.js.html +0 -184
- package/coverage/lcov-report/src/array/mapKey.js.html +0 -160
- package/coverage/lcov-report/src/array/mapPrimitive.js.html +0 -193
- package/coverage/lcov-report/src/array/shuffle.js.html +0 -133
- package/coverage/lcov-report/src/boolean/index.html +0 -116
- package/coverage/lcov-report/src/boolean/is.js.html +0 -100
- package/coverage/lcov-report/src/caching/index.html +0 -116
- package/coverage/lcov-report/src/caching/memoize.js.html +0 -157
- package/coverage/lcov-report/src/date/index.html +0 -116
- package/coverage/lcov-report/src/date/is.js.html +0 -100
- package/coverage/lcov-report/src/deep/define.js.html +0 -106
- package/coverage/lcov-report/src/deep/freeze.js.html +0 -151
- package/coverage/lcov-report/src/deep/get.js.html +0 -190
- package/coverage/lcov-report/src/deep/index.html +0 -176
- package/coverage/lcov-report/src/deep/seal.js.html +0 -151
- package/coverage/lcov-report/src/deep/set.js.html +0 -229
- package/coverage/lcov-report/src/equal.js.html +0 -280
- package/coverage/lcov-report/src/function/index.html +0 -176
- package/coverage/lcov-report/src/function/is.js.html +0 -103
- package/coverage/lcov-report/src/function/noop.js.html +0 -100
- package/coverage/lcov-report/src/function/noopresolve.js.html +0 -103
- package/coverage/lcov-report/src/function/noopreturn.js.html +0 -103
- package/coverage/lcov-report/src/function/sleep.js.html +0 -121
- package/coverage/lcov-report/src/hash/fnv1A.js.html +0 -238
- package/coverage/lcov-report/src/hash/guid.js.html +0 -184
- package/coverage/lcov-report/src/hash/index.html +0 -131
- package/coverage/lcov-report/src/index.html +0 -131
- package/coverage/lcov-report/src/is.js.html +0 -220
- package/coverage/lcov-report/src/number/index.html +0 -281
- package/coverage/lcov-report/src/number/is.js.html +0 -109
- package/coverage/lcov-report/src/number/isAbove.js.html +0 -115
- package/coverage/lcov-report/src/number/isBelow.js.html +0 -115
- package/coverage/lcov-report/src/number/isBetween.js.html +0 -121
- package/coverage/lcov-report/src/number/isInteger.js.html +0 -109
- package/coverage/lcov-report/src/number/isIntegerAbove.js.html +0 -118
- package/coverage/lcov-report/src/number/isIntegerBelow.js.html +0 -118
- package/coverage/lcov-report/src/number/isIntegerBetween.js.html +0 -124
- package/coverage/lcov-report/src/number/isNumericalNaN.js.html +0 -106
- package/coverage/lcov-report/src/number/randomBetween.js.html +0 -121
- package/coverage/lcov-report/src/number/round.js.html +0 -130
- package/coverage/lcov-report/src/number/toPercentage.js.html +0 -130
- package/coverage/lcov-report/src/object/define.js.html +0 -118
- package/coverage/lcov-report/src/object/defineFrozen.js.html +0 -106
- package/coverage/lcov-report/src/object/defineSealed.js.html +0 -106
- package/coverage/lcov-report/src/object/forValues.js.html +0 -133
- package/coverage/lcov-report/src/object/index.html +0 -236
- package/coverage/lcov-report/src/object/is.js.html +0 -100
- package/coverage/lcov-report/src/object/isNotEmpty.js.html +0 -109
- package/coverage/lcov-report/src/object/merge.js.html +0 -157
- package/coverage/lcov-report/src/object/pick.js.html +0 -151
- package/coverage/lcov-report/src/object/zip.js.html +0 -145
- package/coverage/lcov-report/src/regexp/index.html +0 -116
- package/coverage/lcov-report/src/regexp/is.js.html +0 -100
- package/coverage/lcov-report/src/string/humanizeBytes.js.html +0 -211
- package/coverage/lcov-report/src/string/index.html +0 -176
- package/coverage/lcov-report/src/string/is.js.html +0 -100
- package/coverage/lcov-report/src/string/isBetween.js.html +0 -133
- package/coverage/lcov-report/src/string/isNotEmpty.js.html +0 -109
- package/coverage/lcov-report/src/string/shorten.js.html +0 -139
- package/coverage/lcov.info +0 -1770
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,60 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic
|
|
6
6
|
Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [6.1.0] - 2023-04-23
|
|
9
|
+
### Improved
|
|
10
|
+
- Reduce eventual bundle size for package
|
|
11
|
+
|
|
12
|
+
## [6.0.0] - 2023-04-22
|
|
13
|
+
### Added
|
|
14
|
+
- array/sort
|
|
15
|
+
- string/humanizeNumber (with delim, separator, precision, units, divider) options
|
|
16
|
+
- number/randomIntBetween
|
|
17
|
+
- number/isAboveOrEqual
|
|
18
|
+
- number/isBelowOrEqual
|
|
19
|
+
- number/isIntegerAboveOrEqual
|
|
20
|
+
- number/isIntegerBelowOrEqual
|
|
21
|
+
- Is@NumberBelowOrEqual
|
|
22
|
+
- Is@NumberAboveOrEqual
|
|
23
|
+
- Is@IntegerBelowOrEqual
|
|
24
|
+
- Is@IntegerAboveOrEqual
|
|
25
|
+
- Is@Equal
|
|
26
|
+
- Is@Eq (as alias of Is@Equal)
|
|
27
|
+
- Is@NeArray (alias of Is@NotEmptyArray)
|
|
28
|
+
- Is@NeObject (alias of Is@NotEmptyObject)
|
|
29
|
+
- Is@NeString (alias of Is@NotEmptyString)
|
|
30
|
+
- Is@Num (alias of Is@Number)
|
|
31
|
+
- Is@NumBelow (alias of Is@NumberBelow)
|
|
32
|
+
- Is@NumBelowOrEqual (alias of Is@NumberBelowOrEqual)
|
|
33
|
+
- Is@NumAbove (alias of Is@NumberAbove)
|
|
34
|
+
- Is@NumAboveOrEqual (alias of Is@NumberAboveOrEqual)
|
|
35
|
+
- Is@NumBetween (alias of Is@NumberBetween)
|
|
36
|
+
- Is@NumLt (alias of Is@NumberBelow)
|
|
37
|
+
- Is@NumLte (alias of Is@NumberBelowOrEqual)
|
|
38
|
+
- Is@NumGt (alias of Is@NumberAbove)
|
|
39
|
+
- Is@NumGte (alias of Is@NumberAboveOrEqual)
|
|
40
|
+
- Is@Int (alias of Is@Integer)
|
|
41
|
+
- Is@IntBelow (alias of Is@IntegerBelow)
|
|
42
|
+
- Is@IntBelowOrEqual (alias of Is@IntegerBelowOrEqual)
|
|
43
|
+
- Is@IntAbove (alias of Is@IntegerAbove)
|
|
44
|
+
- Is@IntAboveOrEqual (alias of Is@IntegerAboveOrEqual)
|
|
45
|
+
- Is@IntBetween (alias of Is@IntegerBetween)
|
|
46
|
+
- Is@IntLt (alias of Is@IntegerBelow)
|
|
47
|
+
- Is@IntLte (alias of Is@IntegerBelowOrEqual)
|
|
48
|
+
- Is@IntGt (alias of Is@IntegerAbove)
|
|
49
|
+
- Is@IntGte (alias of Is@IntegerAboveOrEqual)
|
|
50
|
+
|
|
51
|
+
### Improved
|
|
52
|
+
- Dep: Upgrade eslint to 8.39.0
|
|
53
|
+
- object/pick: Now internally validates keys as strings and autotrims keys when picking
|
|
54
|
+
- number/round: Performance improvement due to usage of scientific notation not requiring math.pow
|
|
55
|
+
- number/round: Will only accept integers for precision variable from now on
|
|
56
|
+
- hash/guid: Is now 4x faster than previous implementation thanks to usage of bitwise operators and a precalculated hexmap (0-255), able to generate 50.000 guids in ~65ms and also no longer relying on high-performance timers
|
|
57
|
+
- string/humanizeBytes: Now humanizes the real number part and allows passing a custom delimiter for natural numbers (eg: 1024 -> 1,024, 1024 {delim:'.'} -> 1.024)
|
|
58
|
+
- string/humanizeBytes: Now allows passing a custom separator (eg: 10.024 {separator: ','} -> 10,024)
|
|
59
|
+
- string/humanizeBytes: Now allows passing a precision variable (default:2)
|
|
60
|
+
- string/humanizeBytes: Now allows passing a custom units array (eg: humanizeBytes(1024, {units: [' Jedi', ' Darth']}) -> 1 Darth, humanizeBytes(20, {units: [' Jedi', 'Darth']}) -> 20 Jedi)
|
|
61
|
+
|
|
8
62
|
## [5.4.0] - 2023-04-08
|
|
9
63
|
### Added
|
|
10
64
|
- String/humanizeBytes
|
package/README.md
CHANGED
|
@@ -155,6 +155,102 @@ shuffle(arr);
|
|
|
155
155
|
// [4, 6, 3, 2, 5, 1]
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
+
- **sort(val:Array[object], by:String|Function, dir:Enum(asc,desc), options:Object)**
|
|
159
|
+
Sort an array of objects, uses an implementation of [Tony Hoare's quicksort](https://cs.stanford.edu/people/eroberts/courses/soco/projects/2008-09/tony-hoare/quicksort.html)
|
|
160
|
+
|
|
161
|
+
```js
|
|
162
|
+
const out = sort([
|
|
163
|
+
{test: 'Peter'},
|
|
164
|
+
{test: 'Jack'},
|
|
165
|
+
{test: 'Pony'},
|
|
166
|
+
{test: 'John'},
|
|
167
|
+
{test: 'Joe'},
|
|
168
|
+
{test: 'Bob'},
|
|
169
|
+
{test: 'Alice'},
|
|
170
|
+
], 'test', 'desc');
|
|
171
|
+
// [{test: 'Pony'}, {test: 'Peter'}, {test: 'John'}, {test: 'Joe'}, {test: 'Jack'}, {test: 'Bob'}, {test: 'Alice'}]
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
```js
|
|
175
|
+
const out = sort([
|
|
176
|
+
{test: 'Peter'},
|
|
177
|
+
{test: 'Jack'},
|
|
178
|
+
{test: 'Pony'},
|
|
179
|
+
{test: 'John'},
|
|
180
|
+
{test: 'Joe'},
|
|
181
|
+
{test: 'Bob'},
|
|
182
|
+
{test: 'Alice'},
|
|
183
|
+
], 'test', 'asc');
|
|
184
|
+
// [{test: 'Alice'}, {test: 'Bob'}, {test: 'Jack'}, {test: 'Joe'}, {test: 'John'}, {test: 'Peter'}, {test: 'Pony'}]
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
allows passing a function to determine the key to sort by
|
|
188
|
+
|
|
189
|
+
```js
|
|
190
|
+
const out = sort([
|
|
191
|
+
{test: 'Peter'},
|
|
192
|
+
{test: 'Jack'},
|
|
193
|
+
{test: 'Pony'},
|
|
194
|
+
{test: 'JOHn'},
|
|
195
|
+
{test: 'Joe'},
|
|
196
|
+
{test: 'Bob'},
|
|
197
|
+
{test: 'Alice'},
|
|
198
|
+
], el => el.test.toLowerCase(), 'desc');
|
|
199
|
+
// [{test: 'Pony'}, {test: 'Peter'}, {test: 'JOHn'}, {test: 'Joe'}, {test: 'Jack'}, {test: 'Bob'}, {test: 'Alice'}]
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
auto-cleans input to only contains non-empty objects
|
|
203
|
+
|
|
204
|
+
```js
|
|
205
|
+
const out = sort([
|
|
206
|
+
{test: 'Peter'},
|
|
207
|
+
{},
|
|
208
|
+
{test: 'Jack'},
|
|
209
|
+
{test: 'Pony'},
|
|
210
|
+
{test: 'JOHn'},
|
|
211
|
+
false,
|
|
212
|
+
{test: 'Joe'},
|
|
213
|
+
{test: 'Bob'},
|
|
214
|
+
undefined,
|
|
215
|
+
{test: 'Alice'},
|
|
216
|
+
], el => el.test.toLowerCase(), 'desc');
|
|
217
|
+
// [{test: 'Pony'}, {test: 'Peter'}, {test: 'JOHn'}, {test: 'Joe'}, {test: 'Jack'}, {test: 'Bob'}, {test: 'Alice'}]
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
allows passing custom filter function to clean input
|
|
221
|
+
|
|
222
|
+
```js
|
|
223
|
+
const out = sort([
|
|
224
|
+
{test: 'Peter'},
|
|
225
|
+
{},
|
|
226
|
+
{test: 'Jack'},
|
|
227
|
+
{test: 'Pony'},
|
|
228
|
+
{test: false},
|
|
229
|
+
{test: 'JOHn'},
|
|
230
|
+
false,
|
|
231
|
+
{test: 'Joe'},
|
|
232
|
+
{test: undefined},
|
|
233
|
+
{test: 'Bob'},
|
|
234
|
+
undefined,
|
|
235
|
+
{test: 'Alice'},
|
|
236
|
+
], el => el.test.toLowerCase(), 'desc', {filter_fn: el => isObject(el) && isNotEmptyString(el.test)});
|
|
237
|
+
// [{test: 'Pony'}, {test: 'Peter'}, {test: 'JOHn'}, {test: 'Joe'}, {test: 'Jack'}, {test: 'Bob'}, {test: 'Alice'}]
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
allows passing custom options to position elements without a proper key (nokey_atend, defaults to true), or hide them (nokey_hide, defaults to false)
|
|
241
|
+
|
|
242
|
+
```js
|
|
243
|
+
const arr = [{test: 'Peter'}, {test: undefined}, {test: 'Jack'}, {test: 'Pony'}, {uid: 100}, {test: 'JOHn'}];
|
|
244
|
+
const out = sort(arr, el => el.test.toLowerCase(), 'desc', {nokey_atend: false});
|
|
245
|
+
// [{test: undefined}, {uid: 100}, {test: 'Pony'}, {test: 'Peter'}, {test: 'JOHn'}, {test: 'Jack'}]
|
|
246
|
+
|
|
247
|
+
const out = sort(arr, el => el.test.toLowerCase(), 'desc', {nokey_atend: true});
|
|
248
|
+
// [{test: 'Pony'}, {test: 'Peter'}, {test: 'JOHn'}, {test: 'Jack'}, {test: undefined}, {uid: 100}]
|
|
249
|
+
|
|
250
|
+
const out = sort(arr, el => el.test.toLowerCase(), 'desc', {nokey_hide: true});
|
|
251
|
+
// [{test: 'Pony'}, {test: 'Peter'}, {test: 'JOHn'}, {test: 'Jack'}]
|
|
252
|
+
```
|
|
253
|
+
|
|
158
254
|
### boolean
|
|
159
255
|
- **isBoolean(val:any)**
|
|
160
256
|
Check if a variable is of type Boolean
|
|
@@ -331,7 +427,7 @@ isNumber(0.5); // TRUE
|
|
|
331
427
|
```
|
|
332
428
|
|
|
333
429
|
- **isNumberAbove(val:number, comp:number)**
|
|
334
|
-
Check if a variable is above a certain bound
|
|
430
|
+
Check if a variable is a number above a certain bound
|
|
335
431
|
```js
|
|
336
432
|
isNumberAbove(5, 0); // TRUE
|
|
337
433
|
isNumberAbove(.1, 0); // TRUE
|
|
@@ -339,8 +435,17 @@ isNumberAbove(-1, -1); // FALSE
|
|
|
339
435
|
isNumberAbove(-10, -9); // FALSE
|
|
340
436
|
```
|
|
341
437
|
|
|
438
|
+
- **isNumberAboveOrEqual(val:number, comp:number)**
|
|
439
|
+
Check if a variable is a number above or equal to a certain bound
|
|
440
|
+
```js
|
|
441
|
+
isNumberAboveOrEqual(5, 0); // TRUE
|
|
442
|
+
isNumberAboveOrEqual(.1, 0); // TRUE
|
|
443
|
+
isNumberAboveOrEqual(-1, -1); // TRUE
|
|
444
|
+
isNumberAboveOrEqual(-10, -9); // FALSE
|
|
445
|
+
```
|
|
446
|
+
|
|
342
447
|
- **isNumberBelow(val:number, comp:number)**
|
|
343
|
-
Check if a variable is below a certain bound
|
|
448
|
+
Check if a variable is a number below a certain bound
|
|
344
449
|
```js
|
|
345
450
|
isNumberBelow(0, 5); // TRUE
|
|
346
451
|
isNumberBelow(0, .1); // TRUE
|
|
@@ -348,8 +453,17 @@ isNumberBelow(-1, -1); // FALSE
|
|
|
348
453
|
isNumberBelow(-9, -10); // FALSE
|
|
349
454
|
```
|
|
350
455
|
|
|
456
|
+
- **isNumberBelowOrEqual(val:number, comp:number)**
|
|
457
|
+
Check if a variable is a number below or equal a certain bound
|
|
458
|
+
```js
|
|
459
|
+
isNumberBelowOrEqual(0, 5); // TRUE
|
|
460
|
+
isNumberBelowOrEqual(0, .1); // TRUE
|
|
461
|
+
isNumberBelowOrEqual(-1, -1); // TRUE
|
|
462
|
+
isNumberBelowOrEqual(-9, -10); // FALSE
|
|
463
|
+
```
|
|
464
|
+
|
|
351
465
|
- **isNumberBetween(val:number, min:number, max:number)**
|
|
352
|
-
Check if a variable is between a range of numbers
|
|
466
|
+
Check if a variable is a number between a range of numbers
|
|
353
467
|
```js
|
|
354
468
|
isNumberBetween(5, 0, 10); // TRUE
|
|
355
469
|
isNumberBetween(.1, 0, 1); // TRUE
|
|
@@ -375,16 +489,35 @@ isIntegerAbove(-1, -1); // FALSE
|
|
|
375
489
|
isIntegerAbove(-10, -9); // FALSE
|
|
376
490
|
```
|
|
377
491
|
|
|
492
|
+
- **isIntegerAboveOrEqual(val:number, comp:number)**
|
|
493
|
+
Check if a variable is an integer above or equal to a certain bound
|
|
494
|
+
```js
|
|
495
|
+
isIntegerAboveOrEqual(5, 0); // TRUE
|
|
496
|
+
isIntegerAboveOrEqual(.1, 0); // FALSE
|
|
497
|
+
isIntegerAboveOrEqual(-1, -1); // TRUE
|
|
498
|
+
isIntegerAboveOrEqual(-10, -9); // FALSE
|
|
499
|
+
```
|
|
500
|
+
|
|
378
501
|
- **isIntegerBelow(val:number, comp:number)**
|
|
379
502
|
Check if a variable is an integer below a certain bound
|
|
380
503
|
```js
|
|
381
504
|
isIntegerBelow(0, 5); // TRUE
|
|
382
505
|
isIntegerBelow(0, .1); // TRUE
|
|
383
|
-
isIntegerBelow(.4, 5); //
|
|
506
|
+
isIntegerBelow(.4, 5); // FALSE
|
|
384
507
|
isIntegerBelow(-1, -1); // FALSE
|
|
385
508
|
isIntegerBelow(-9, -10); // FALSE
|
|
386
509
|
```
|
|
387
510
|
|
|
511
|
+
- **isIntegerBelowOrEqual(val:number, comp:number)**
|
|
512
|
+
Check if a variable is an integer below or equal to a certain bound
|
|
513
|
+
```js
|
|
514
|
+
isIntegerBelowOrEqual(0, 5); // TRUE
|
|
515
|
+
isIntegerBelowOrEqual(0, .1); // TRUE
|
|
516
|
+
isIntegerBelowOrEqual(.4, 5); // FALSE
|
|
517
|
+
isIntegerBelowOrEqual(-1, -1); // TRUE
|
|
518
|
+
isIntegerBelowOrEqual(-9, -10); // FALSE
|
|
519
|
+
```
|
|
520
|
+
|
|
388
521
|
- **isIntegerBetween(val:number, min:number, max:number)**
|
|
389
522
|
Check if a variable is an integer between a range of numbers
|
|
390
523
|
```js
|
|
@@ -425,6 +558,13 @@ randomBetween(); // Will generate a random between 0 and 10
|
|
|
425
558
|
randomBetween(25, 100); // Will generate a random between 25 and 100
|
|
426
559
|
```
|
|
427
560
|
|
|
561
|
+
- **randomIntBetween(min:Number=0,max:Number=10)**
|
|
562
|
+
Generate a random numeric value between a min and max range (max not inclusive)
|
|
563
|
+
```js
|
|
564
|
+
randomIntBetween(); // Will generate a random between 0 and 10 (10 not inclusive)
|
|
565
|
+
randomIntBetween(25, 100); // Will generate a random between 25 and 100 (100 not inclusive)
|
|
566
|
+
```
|
|
567
|
+
|
|
428
568
|
### object
|
|
429
569
|
- **forValues(obj:Object={}, cb:Function=noopreturn)**
|
|
430
570
|
Iterate over the keys of the object and apply the callback function to their values
|
|
@@ -575,6 +715,10 @@ shorten('To the moon and beyond', 11, ' '); // 'To the moon '
|
|
|
575
715
|
|
|
576
716
|
- **humanizeBytes(val:number|string)**
|
|
577
717
|
Humanize an amount of bytes
|
|
718
|
+
-- option:delim (default:','): Override the delimiter used, eg: `20000 -> 20,000`
|
|
719
|
+
-- option:separator (default:'.'): Override the separator used for floats, eg: '20.034' -> '20,034'
|
|
720
|
+
-- option:precision (default:2): Override decimal precision for floats: eg: '20.0344233' with precision 2 -> '20.03'
|
|
721
|
+
-- option:units (default:[' byes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB']): Override units used, eg: `4893290423489 with units [' Jedi', ' Darth', ' Vader', ' Force'] and precision of 0` -> `'4,893 Force'`
|
|
578
722
|
```js
|
|
579
723
|
humanizeBytes(1504230); // '1.4 MB'
|
|
580
724
|
humanizeBytes(23); // '23 bytes'
|
|
@@ -582,6 +726,24 @@ humanizeBytes(-374237489237); // '-348.5 GB'
|
|
|
582
726
|
humanizeBytes('-1504230'); // '-1.4 MB'
|
|
583
727
|
```
|
|
584
728
|
|
|
729
|
+
- **humanizeNumber(val:number|string, options:Object)**
|
|
730
|
+
Humanize a number
|
|
731
|
+
-- option:delim (default:','): Override the delimiter used, eg: `20000 -> 20,000`
|
|
732
|
+
-- option:separator (default:'.'): Override the separator used for floats, eg: '20.034' -> '20,034'
|
|
733
|
+
-- option:precision (default:2): Override decimal precision for floats: eg: '20.0344233' with precision 2 -> '20.03'
|
|
734
|
+
-- option:units (default:['', 'k', 'm', 'b', 't', 'q']): Override units used, eg: `1073741823 with units ['', 'K']` -> `1.073.741,82K`
|
|
735
|
+
-- option:real (default:false): Set to true to automatically round input numbers
|
|
736
|
+
-- option:divider (default:1000): Override default divider used for units (used internally for humanizeBytes with 1024 as divider)
|
|
737
|
+
|
|
738
|
+
```js
|
|
739
|
+
humanizeNumber(4327963279469432); // '4.33q'
|
|
740
|
+
humanizeNumber(1504230); // '1.5m'
|
|
741
|
+
humanizeNumber(-432443); // '-432.44k'
|
|
742
|
+
humanizeNumber('-1500'); // '-1.5k'
|
|
743
|
+
humanizeNumber(47328748923747923479); // '47,328.75q'
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
allows passing options to control the output, following options are possible:
|
|
747
|
+
|
|
585
748
|
## Contributors
|
|
586
749
|
- Peter Vermeulen : [Valkyrie Studios](www.valkyriestudios.be)
|
|
587
|
-
|
package/array/dedupe.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = dedupe;
|
|
7
7
|
var _fnv1A = _interopRequireDefault(require("../hash/fnv1A"));
|
|
8
8
|
var _isNotEmpty = _interopRequireDefault(require("./isNotEmpty"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
-
function
|
|
10
|
+
function dedupe() {
|
|
11
11
|
var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
12
12
|
if (!(0, _isNotEmpty["default"])(val)) return [];
|
|
13
13
|
var seen = {};
|
package/array/is.js
CHANGED
package/array/isNotEmpty.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = isNotEmptyArray;
|
|
7
7
|
var _is = _interopRequireDefault(require("./is"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
function
|
|
9
|
+
function isNotEmptyArray(val) {
|
|
10
10
|
if (!(0, _is["default"])(val)) return !1;
|
|
11
11
|
return val.length !== 0;
|
|
12
12
|
}
|
package/array/join.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = join;
|
|
7
7
|
var _isNotEmpty = _interopRequireDefault(require("./isNotEmpty"));
|
|
8
8
|
var _isNotEmpty2 = _interopRequireDefault(require("../string/isNotEmpty"));
|
|
9
9
|
var _is = _interopRequireDefault(require("../number/is"));
|
|
@@ -13,7 +13,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
13
13
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: !0 }; return { done: !1, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = !0, didErr = !1, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = !0; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
14
14
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
15
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
16
|
-
function
|
|
16
|
+
function join(arr) {
|
|
17
17
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
18
18
|
if (!(0, _isNotEmpty["default"])(arr)) return '';
|
|
19
19
|
var OPTS = Object.assign({
|
package/array/mapFn.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = mapFn;
|
|
7
7
|
var _is = _interopRequireDefault(require("../object/is"));
|
|
8
8
|
var _isNotEmpty = _interopRequireDefault(require("./isNotEmpty"));
|
|
9
9
|
var _is2 = _interopRequireDefault(require("../function/is"));
|
|
@@ -13,7 +13,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
13
13
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: !0 }; return { done: !1, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = !0, didErr = !1, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = !0; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
14
14
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
15
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
16
|
-
function
|
|
16
|
+
function mapFn(arr, fn) {
|
|
17
17
|
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
18
18
|
if (!(0, _isNotEmpty["default"])(arr) || !(0, _is2["default"])(fn)) return {};
|
|
19
19
|
var OPTS = Object.assign({
|
package/array/mapKey.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = mapKey;
|
|
7
7
|
var _is = _interopRequireDefault(require("../object/is"));
|
|
8
8
|
var _isNotEmpty = _interopRequireDefault(require("./isNotEmpty"));
|
|
9
9
|
var _isNotEmpty2 = _interopRequireDefault(require("../string/isNotEmpty"));
|
|
@@ -11,7 +11,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
11
11
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: !0 }; return { done: !1, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = !0, didErr = !1, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = !0; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
12
12
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
13
13
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
14
|
-
function
|
|
14
|
+
function mapKey(arr, key) {
|
|
15
15
|
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
16
16
|
if (!(0, _isNotEmpty["default"])(arr) || !(0, _isNotEmpty2["default"])(key)) return {};
|
|
17
17
|
var OPTS = Object.assign({
|
package/array/mapPrimitive.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = mapPrimitive;
|
|
7
7
|
var _is = _interopRequireDefault(require("../number/is"));
|
|
8
8
|
var _isNotEmpty = _interopRequireDefault(require("../string/isNotEmpty"));
|
|
9
9
|
var _isNotEmpty2 = _interopRequireDefault(require("./isNotEmpty"));
|
|
@@ -12,7 +12,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
12
12
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: !0 }; return { done: !1, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = !0, didErr = !1, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = !0; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
13
13
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
14
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
15
|
-
function
|
|
15
|
+
function mapPrimitive(arr) {
|
|
16
16
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
17
17
|
if (!(0, _isNotEmpty2["default"])(arr)) return {};
|
|
18
18
|
var OPTS = Object.assign({
|
package/array/sort.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = sort;
|
|
7
|
+
var _is = _interopRequireDefault(require("../boolean/is"));
|
|
8
|
+
var _isNotEmpty = _interopRequireDefault(require("./isNotEmpty"));
|
|
9
|
+
var _is2 = _interopRequireDefault(require("../object/is"));
|
|
10
|
+
var _isNotEmpty2 = _interopRequireDefault(require("../object/isNotEmpty"));
|
|
11
|
+
var _isNotEmpty3 = _interopRequireDefault(require("../string/isNotEmpty"));
|
|
12
|
+
var _is3 = _interopRequireDefault(require("../function/is"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
14
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
15
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
17
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
18
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: !0 }; return { done: !1, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = !0, didErr = !1, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = !0; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
19
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
20
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
21
|
+
function partition(arr, start_ix, end_ix) {
|
|
22
|
+
var pivotVal = arr[Math.floor((start_ix + end_ix) / 2)].t;
|
|
23
|
+
while (start_ix <= end_ix) {
|
|
24
|
+
while (arr[start_ix].t < pivotVal) {
|
|
25
|
+
start_ix++;
|
|
26
|
+
}
|
|
27
|
+
while (arr[end_ix].t > pivotVal) {
|
|
28
|
+
end_ix--;
|
|
29
|
+
}
|
|
30
|
+
if (start_ix <= end_ix) {
|
|
31
|
+
var temp = arr[start_ix];
|
|
32
|
+
arr[start_ix] = arr[end_ix];
|
|
33
|
+
arr[end_ix] = temp;
|
|
34
|
+
start_ix++;
|
|
35
|
+
end_ix--;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return start_ix;
|
|
39
|
+
}
|
|
40
|
+
function quickSort(arr) {
|
|
41
|
+
var start_ix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
42
|
+
var end_ix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length - 1;
|
|
43
|
+
if (start_ix < end_ix) {
|
|
44
|
+
var ix = partition(arr, start_ix, end_ix);
|
|
45
|
+
quickSort(arr, start_ix, ix - 1);
|
|
46
|
+
quickSort(arr, ix, end_ix);
|
|
47
|
+
}
|
|
48
|
+
return arr;
|
|
49
|
+
}
|
|
50
|
+
function sort(arr, by) {
|
|
51
|
+
var dir = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'asc';
|
|
52
|
+
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
53
|
+
if (!(0, _isNotEmpty["default"])(arr)) return [];
|
|
54
|
+
if (!(0, _isNotEmpty3["default"])(by) && !(0, _is3["default"])(by)) throw new Error('Sort by should be either a string or a function');
|
|
55
|
+
if (dir !== 'asc' && dir !== 'desc') throw new Error('dir should be either asc or desc');
|
|
56
|
+
var OPTS = {
|
|
57
|
+
filter_fn: (0, _is2["default"])(options) && (0, _is3["default"])(options.filter_fn) ? options.filter_fn : _isNotEmpty2["default"],
|
|
58
|
+
nokey_hide: (0, _is2["default"])(options) && (0, _is["default"])(options.nokey_hide) ? options.nokey_hide : !1,
|
|
59
|
+
nokey_atend: (0, _is2["default"])(options) && (0, _is["default"])(options.nokey_atend) ? options.nokey_atend : !0
|
|
60
|
+
};
|
|
61
|
+
var prepared_arr = [];
|
|
62
|
+
var nokey_arr = [];
|
|
63
|
+
if ((0, _isNotEmpty3["default"])(by)) {
|
|
64
|
+
var _iterator = _createForOfIteratorHelper(arr),
|
|
65
|
+
_step;
|
|
66
|
+
try {
|
|
67
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
68
|
+
var el = _step.value;
|
|
69
|
+
if (!OPTS.filter_fn(el)) continue;
|
|
70
|
+
if (!el.hasOwnProperty(by) || el[by] === undefined) {
|
|
71
|
+
nokey_arr.push(el);
|
|
72
|
+
} else {
|
|
73
|
+
prepared_arr.push({
|
|
74
|
+
t: el[by],
|
|
75
|
+
el: el
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch (err) {
|
|
80
|
+
_iterator.e(err);
|
|
81
|
+
} finally {
|
|
82
|
+
_iterator.f();
|
|
83
|
+
}
|
|
84
|
+
} else {
|
|
85
|
+
var key;
|
|
86
|
+
var _iterator2 = _createForOfIteratorHelper(arr),
|
|
87
|
+
_step2;
|
|
88
|
+
try {
|
|
89
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
90
|
+
var _el = _step2.value;
|
|
91
|
+
if (!OPTS.filter_fn(_el)) continue;
|
|
92
|
+
key = by(_el);
|
|
93
|
+
if (key === undefined) {
|
|
94
|
+
nokey_arr.push(_el);
|
|
95
|
+
} else {
|
|
96
|
+
prepared_arr.push({
|
|
97
|
+
t: by(_el),
|
|
98
|
+
el: _el
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
} catch (err) {
|
|
103
|
+
_iterator2.e(err);
|
|
104
|
+
} finally {
|
|
105
|
+
_iterator2.f();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
quickSort(prepared_arr);
|
|
109
|
+
if (dir === 'desc') prepared_arr.reverse();
|
|
110
|
+
if (OPTS.nokey_hide) {
|
|
111
|
+
return prepared_arr.map(function (obj) {
|
|
112
|
+
return obj.el;
|
|
113
|
+
});
|
|
114
|
+
} else if (OPTS.nokey_atend) {
|
|
115
|
+
return [].concat(_toConsumableArray(prepared_arr.map(function (obj) {
|
|
116
|
+
return obj.el;
|
|
117
|
+
})), nokey_arr);
|
|
118
|
+
} else {
|
|
119
|
+
return [].concat(nokey_arr, _toConsumableArray(prepared_arr.map(function (obj) {
|
|
120
|
+
return obj.el;
|
|
121
|
+
})));
|
|
122
|
+
}
|
|
123
|
+
}
|
package/boolean/is.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
7
|
-
function
|
|
6
|
+
exports["default"] = isBoolean;
|
|
7
|
+
function isBoolean(val) {
|
|
8
8
|
return val === !0 || val === !1 || typeof val === 'boolean' || val instanceof Boolean;
|
|
9
9
|
}
|
package/caching/memoize.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = memoize;
|
|
7
7
|
var _is = _interopRequireDefault(require("../function/is"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
function
|
|
9
|
+
function memoize(fn) {
|
|
10
10
|
var resolver = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;
|
|
11
11
|
var has_resolver = (0, _is["default"])(resolver);
|
|
12
12
|
var memoized = function memoized() {
|
package/date/is.js
CHANGED
package/deep/define.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = deepDefine;
|
|
7
7
|
var _set = _interopRequireDefault(require("./set"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
function
|
|
9
|
+
function deepDefine(obj, path) {
|
|
10
10
|
var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
11
11
|
return (0, _set["default"])(obj, path, value, !0);
|
|
12
12
|
}
|
package/deep/freeze.js
CHANGED
|
@@ -3,22 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = deepFreeze;
|
|
7
7
|
var _is = _interopRequireDefault(require("../object/is"));
|
|
8
8
|
var _is2 = _interopRequireDefault(require("../array/is"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
10
|
function deep(obj) {
|
|
11
11
|
var next = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Object.seal;
|
|
12
12
|
(Object.keys(obj) || []).forEach(function (key) {
|
|
13
|
-
if ((0, _is["default"])(obj[key]
|
|
13
|
+
if ((0, _is["default"])(obj[key]) || (0, _is2["default"])(obj[key])) {
|
|
14
14
|
deep(obj[key], next);
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
return next(obj);
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
if (!(0, _is["default"])(obj) && !(0, _is2["default"])(obj))
|
|
21
|
-
throw new TypeError('Only objects can be frozen');
|
|
22
|
-
}
|
|
19
|
+
function deepFreeze(obj) {
|
|
20
|
+
if (!(0, _is["default"])(obj) && !(0, _is2["default"])(obj)) throw new TypeError('Only objects can be frozen');
|
|
23
21
|
return deep(obj, Object.freeze);
|
|
24
22
|
}
|
package/deep/get.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
|
-
exports["default"] =
|
|
6
|
+
exports["default"] = deepGet;
|
|
7
7
|
var _is = _interopRequireDefault(require("../object/is"));
|
|
8
8
|
var _is2 = _interopRequireDefault(require("../array/is"));
|
|
9
9
|
var _isNotEmpty = _interopRequireDefault(require("../string/isNotEmpty"));
|
|
@@ -19,7 +19,7 @@ function interpolatePath(path) {
|
|
|
19
19
|
if ((0, _is2["default"])(path)) return _toConsumableArray(path);
|
|
20
20
|
return path.replace('[', '.').replace(']', '').split('.');
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function deepGet(obj, path) {
|
|
23
23
|
var get_parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !1;
|
|
24
24
|
if (!(0, _is["default"])(obj) && !(0, _is2["default"])(obj)) throw new TypeError('Deepget is only supported for objects');
|
|
25
25
|
var parts = interpolatePath(path);
|