si-funciona 2.6.1 → 2.7.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 +48 -19
- package/browser/siFunciona.js +80 -77
- package/browser/siFunciona.min.js +1 -1
- package/dist/helpers/arrays/BasicQueue.d.ts +64 -64
- package/dist/helpers/arrays/BasicQueue.js +61 -61
- package/dist/helpers/arrays/addUniqueToArray.d.ts +9 -9
- package/dist/helpers/arrays/addUniqueToArray.js +16 -16
- package/dist/helpers/arrays/buildArray.d.ts +10 -10
- package/dist/helpers/arrays/buildArray.js +25 -25
- package/dist/helpers/arrays/buildArrayOfReferences.d.ts +10 -10
- package/dist/helpers/arrays/buildArrayOfReferences.js +22 -22
- package/dist/helpers/arrays/compareArrays.d.ts +96 -96
- package/dist/helpers/arrays/compareArrays.js +96 -96
- package/dist/helpers/arrays/mergeArrays.d.ts +8 -8
- package/dist/helpers/arrays/mergeArrays.js +21 -21
- package/dist/helpers/arrays/uniqueArray.d.ts +8 -8
- package/dist/helpers/arrays/uniqueArray.js +16 -16
- package/dist/helpers/arrays.d.ts +27 -27
- package/dist/helpers/arrays.js +74 -74
- package/dist/helpers/descriptors/assignDescriptor.d.ts +13 -13
- package/dist/helpers/descriptors/assignDescriptor.js +57 -57
- package/dist/helpers/descriptors/assignDescriptorDetail.d.ts +13 -13
- package/dist/helpers/descriptors/assignDescriptorDetail.js +36 -36
- package/dist/helpers/descriptors/checkClearValues.d.ts +11 -11
- package/dist/helpers/descriptors/checkClearValues.js +20 -20
- package/dist/helpers/descriptors/checkDescriptorComplete.d.ts +10 -10
- package/dist/helpers/descriptors/checkDescriptorComplete.js +19 -19
- package/dist/helpers/descriptors/cloneDescriptor.d.ts +9 -9
- package/dist/helpers/descriptors/cloneDescriptor.js +35 -35
- package/dist/helpers/descriptors/cloneDescriptorDetail.d.ts +9 -9
- package/dist/helpers/descriptors/cloneDescriptorDetail.js +26 -26
- package/dist/helpers/descriptors/compareDescriptor.d.ts +12 -12
- package/dist/helpers/descriptors/compareDescriptor.js +32 -32
- package/dist/helpers/descriptors/describeObject.d.ts +14 -14
- package/dist/helpers/descriptors/describeObject.js +52 -52
- package/dist/helpers/descriptors/describeObjectDetail.d.ts +13 -13
- package/dist/helpers/descriptors/describeObjectDetail.js +37 -37
- package/dist/helpers/descriptors/describeObjectMap.d.ts +35 -35
- package/dist/helpers/descriptors/describeObjectMap.js +107 -107
- package/dist/helpers/descriptors/nextReference.d.ts +12 -12
- package/dist/helpers/descriptors/nextReference.js +30 -30
- package/dist/helpers/descriptors/sameDescriptor.d.ts +12 -12
- package/dist/helpers/descriptors/sameDescriptor.js +21 -21
- package/dist/helpers/descriptors/samples/descriptor.d.ts +34 -34
- package/dist/helpers/descriptors/samples/descriptor.js +22 -22
- package/dist/helpers/descriptors/samples/descriptorDetail.d.ts +42 -42
- package/dist/helpers/descriptors/samples/descriptorDetail.js +24 -24
- package/dist/helpers/descriptors/samples/descriptorMap.d.ts +16 -16
- package/dist/helpers/descriptors/samples/descriptorMap.js +14 -14
- package/dist/helpers/descriptors/samples/mappedDescriptorMap.d.ts +10 -10
- package/dist/helpers/descriptors/samples/mappedDescriptorMap.js +287 -287
- package/dist/helpers/descriptors.d.ts +56 -56
- package/dist/helpers/descriptors.js +129 -129
- package/dist/helpers/functions/callWithParams.d.ts +10 -10
- package/dist/helpers/functions/callWithParams.js +16 -16
- package/dist/helpers/functions/curry.d.ts +10 -10
- package/dist/helpers/functions/curry.js +16 -16
- package/dist/helpers/functions/delay.d.ts +20 -20
- package/dist/helpers/functions/delay.js +31 -31
- package/dist/helpers/functions/makeBasicQueue.d.ts +9 -9
- package/dist/helpers/functions/makeBasicQueue.js +18 -18
- package/dist/helpers/functions/onBodyLoad.d.ts +9 -9
- package/dist/helpers/functions/onBodyLoad.js +75 -75
- package/dist/helpers/functions/pipe.d.ts +9 -9
- package/dist/helpers/functions/pipe.js +17 -17
- package/dist/helpers/functions/preloadParams.d.ts +19 -19
- package/dist/helpers/functions/preloadParams.js +20 -20
- package/dist/helpers/functions/queueManager.d.ts +48 -48
- package/dist/helpers/functions/queueManager.js +123 -123
- package/dist/helpers/functions/queueTimeout.d.ts +20 -20
- package/dist/helpers/functions/queueTimeout.js +22 -22
- package/dist/helpers/functions/relevancyFilter.d.ts +34 -34
- package/dist/helpers/functions/relevancyFilter.js +33 -33
- package/dist/helpers/functions/trace.d.ts +13 -13
- package/dist/helpers/functions/trace.js +24 -24
- package/dist/helpers/functions.d.ts +40 -40
- package/dist/helpers/functions.js +105 -105
- package/dist/helpers/numbers/absoluteMax.d.ts +9 -9
- package/dist/helpers/numbers/absoluteMax.js +15 -15
- package/dist/helpers/numbers/absoluteMin.d.ts +9 -9
- package/dist/helpers/numbers/absoluteMin.js +15 -15
- package/dist/helpers/numbers/compare.d.ts +12 -12
- package/dist/helpers/numbers/compare.js +18 -18
- package/dist/helpers/numbers/greatestCommonDivisor.d.ts +9 -9
- package/dist/helpers/numbers/greatestCommonDivisor.js +15 -15
- package/dist/helpers/numbers/leastCommonMultiple.d.ts +9 -9
- package/dist/helpers/numbers/leastCommonMultiple.js +17 -17
- package/dist/helpers/numbers/lowestCommonDenominator.d.ts +9 -9
- package/dist/helpers/numbers/lowestCommonDenominator.js +19 -19
- package/dist/helpers/numbers/randomInteger.d.ts +18 -12
- package/dist/helpers/numbers/randomInteger.js +24 -18
- package/dist/helpers/numbers/randomNumber.d.ts +13 -12
- package/dist/helpers/numbers/randomNumber.js +19 -18
- package/dist/helpers/numbers/simplestRatio.d.ts +8 -8
- package/dist/helpers/numbers/simplestRatio.js +28 -28
- package/dist/helpers/numbers.d.ts +30 -30
- package/dist/helpers/numbers.js +89 -89
- package/dist/helpers/objects/cloneObject.d.ts +2 -4
- package/dist/helpers/objects/cloneObject.js +2 -4
- package/dist/helpers/objects/dotGet.d.ts +11 -11
- package/dist/helpers/objects/dotGet.js +59 -59
- package/dist/helpers/objects/dotNotate.d.ts +27 -27
- package/dist/helpers/objects/dotNotate.js +79 -79
- package/dist/helpers/objects/dotSet.d.ts +11 -11
- package/dist/helpers/objects/dotSet.js +53 -53
- package/dist/helpers/objects/dotUnset.d.ts +10 -10
- package/dist/helpers/objects/dotUnset.js +52 -52
- package/dist/helpers/objects/emptyObject.d.ts +8 -8
- package/dist/helpers/objects/emptyObject.js +17 -17
- package/dist/helpers/objects/filterObject.d.ts +26 -26
- package/dist/helpers/objects/filterObject.js +33 -33
- package/dist/helpers/objects/isCloneable.d.ts +8 -8
- package/dist/helpers/objects/isCloneable.js +16 -16
- package/dist/helpers/objects/isEqual.d.ts +16 -16
- package/dist/helpers/objects/isEqual.js +100 -100
- package/dist/helpers/objects/isInstanceObject.d.ts +8 -8
- package/dist/helpers/objects/isInstanceObject.js +26 -26
- package/dist/helpers/objects/isObject.d.ts +8 -8
- package/dist/helpers/objects/isObject.js +14 -14
- package/dist/helpers/objects/mapObject.d.ts +25 -25
- package/dist/helpers/objects/mapObject.js +25 -25
- package/dist/helpers/objects/mergeObjects.d.ts +12 -12
- package/dist/helpers/objects/mergeObjects.js +19 -19
- package/dist/helpers/objects/mergeObjectsBase.d.ts +9 -6
- package/dist/helpers/objects/mergeObjectsBase.js +59 -61
- package/dist/helpers/objects/mergeObjectsBase.min.js +1 -1
- package/dist/helpers/objects/mergeObjectsMutable.d.ts +12 -12
- package/dist/helpers/objects/mergeObjectsMutable.js +17 -17
- package/dist/helpers/objects/objectKeys.d.ts +13 -13
- package/dist/helpers/objects/objectKeys.js +39 -39
- package/dist/helpers/objects/objectValues.d.ts +13 -13
- package/dist/helpers/objects/objectValues.js +20 -20
- package/dist/helpers/objects/reduceObject.d.ts +30 -30
- package/dist/helpers/objects/reduceObject.js +25 -25
- package/dist/helpers/objects/setAndReturnValue.d.ts +13 -13
- package/dist/helpers/objects/setAndReturnValue.js +19 -19
- package/dist/helpers/objects/setValue.d.ts +14 -14
- package/dist/helpers/objects/setValue.js +21 -21
- package/dist/helpers/objects.d.ts +1 -1
- package/dist/helpers/objects.js +177 -177
- package/dist/helpers/strings/camelCase.d.ts +8 -8
- package/dist/helpers/strings/camelCase.js +19 -19
- package/dist/helpers/strings/kabobCase.d.ts +8 -8
- package/dist/helpers/strings/kabobCase.js +18 -18
- package/dist/helpers/strings/makeFilepath.d.ts +9 -9
- package/dist/helpers/strings/makeFilepath.js +49 -49
- package/dist/helpers/strings/makeRelativePath.d.ts +9 -9
- package/dist/helpers/strings/makeRelativePath.js +43 -43
- package/dist/helpers/strings/regexEscape.d.ts +8 -8
- package/dist/helpers/strings/regexEscape.js +15 -15
- package/dist/helpers/strings/snakeCase.d.ts +8 -8
- package/dist/helpers/strings/snakeCase.js +18 -18
- package/dist/helpers/strings/strAfter.d.ts +9 -9
- package/dist/helpers/strings/strAfter.js +18 -18
- package/dist/helpers/strings/strAfterLast.d.ts +9 -9
- package/dist/helpers/strings/strAfterLast.js +18 -18
- package/dist/helpers/strings/strBefore.d.ts +9 -9
- package/dist/helpers/strings/strBefore.js +18 -18
- package/dist/helpers/strings/strBeforeLast.d.ts +9 -9
- package/dist/helpers/strings/strBeforeLast.js +18 -18
- package/dist/helpers/strings/titleCase.d.ts +8 -8
- package/dist/helpers/strings/titleCase.js +19 -19
- package/dist/helpers/strings/ucFirst.d.ts +8 -8
- package/dist/helpers/strings/ucFirst.js +14 -14
- package/dist/helpers/strings/words.d.ts +9 -9
- package/dist/helpers/strings/words.js +15 -15
- package/dist/helpers/strings.d.ts +38 -38
- package/dist/helpers/strings.js +121 -121
- package/dist/main.d.ts +15 -15
- package/dist/main.js +103 -103
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -249,6 +249,7 @@ Simplify working with object by providing array-like parsing. Also, provides clo
|
|
|
249
249
|
* [.mapObject(obj, fn, [thisArg])](#module_objectHelpers.mapObject) ⇒ <code>Object</code> \| <code>Array</code>
|
|
250
250
|
* [.isObject(object)](#module_objectHelpers.isObject) ⇒ <code>boolean</code>
|
|
251
251
|
* [.isInstanceObject(object)](#module_objectHelpers.isInstanceObject) ⇒ <code>boolean</code>
|
|
252
|
+
* [.isEqual(first, second)](#module_objectHelpers.isEqual) ⇒ <code>boolean</code>
|
|
252
253
|
* [.isCloneable(value)](#module_objectHelpers.isCloneable) ⇒ <code>boolean</code>
|
|
253
254
|
* [.filterObject(obj, fn, [thisArg])](#module_objectHelpers.filterObject) ⇒ <code>Object</code> \| <code>Array</code>
|
|
254
255
|
* [.emptyObject(item)](#module_objectHelpers.emptyObject) ⇒ <code>boolean</code>
|
|
@@ -358,18 +359,19 @@ Optional flag will include the inherited keys from prototype chain when set.
|
|
|
358
359
|
### objectHelpers.mergeObjectsBase([options]) ⇒ <code>module:objectHelpers~mergeObjectsCallback</code> \| <code>mergeObjectsCallback</code>
|
|
359
360
|
Perform a deep merge of objects. This will return a function that will combine all objects and sub-objects.
|
|
360
361
|
Objects having the same attributes will overwrite from last object to first.
|
|
361
|
-
|
|
362
|
-
|
|
362
|
+
Every call of the returned function keeps its own record of the objects it has already visited (so circular
|
|
363
|
+
references are followed only once, and an object which is referenced in several places is merged once), and nothing
|
|
364
|
+
is remembered between calls: the results of separate calls never share state or go stale.
|
|
363
365
|
|
|
364
366
|
**Kind**: static method of [<code>objectHelpers</code>](#module_objectHelpers)
|
|
365
367
|
|
|
366
368
|
| Param | Type | Default | Description |
|
|
367
369
|
| --- | --- | --- | --- |
|
|
368
370
|
| [options] | <code>Object</code> | <code>{}</code> | |
|
|
369
|
-
| [options.mapLimit] | <code>number</code> | <code>100</code> |
|
|
371
|
+
| [options.mapLimit] | <code>number</code> | <code>100</code> | Deprecated and ignored: the record of visited objects is now scoped to a single call, so it does not need trimming. |
|
|
370
372
|
| [options.depthLimit] | <code>number</code> | <code>-1</code> | Control how many nested levels deep will be used, -1 = no limit, >-1 = nth level limited. |
|
|
371
|
-
| [options.relevancyRange] | <code>number</code> | <code>1000</code> |
|
|
372
|
-
| [options.map] | <code>Iterable</code> \| <code>array</code> | <code>[]</code> | A predetermined list of references
|
|
373
|
+
| [options.relevancyRange] | <code>number</code> | <code>1000</code> | Deprecated and ignored: see mapLimit. |
|
|
374
|
+
| [options.map] | <code>Iterable</code> \| <code>array</code> | <code>[]</code> | A predetermined list of references (source and the object it should resolve to) which every call starts from. It is only read, never added to. |
|
|
373
375
|
| [options.useClone] | <code>boolean</code> | <code>false</code> | |
|
|
374
376
|
|
|
375
377
|
<a name="module_objectHelpers.mapObject"></a>
|
|
@@ -409,6 +411,26 @@ Check if the current object has inherited properties.
|
|
|
409
411
|
| --- | --- |
|
|
410
412
|
| object | <code>Object</code> \| <code>Array</code> |
|
|
411
413
|
|
|
414
|
+
<a name="module_objectHelpers.isEqual"></a>
|
|
415
|
+
|
|
416
|
+
### objectHelpers.isEqual(first, second) ⇒ <code>boolean</code>
|
|
417
|
+
Check whether two values are equal by value, however they are stored: two separately made arrays or objects with the
|
|
418
|
+
same contents are equal, while two references only need to be the same when the value is a function.
|
|
419
|
+
- Primitives are equal when they are the same value (and NaN equals NaN)
|
|
420
|
+
- Arrays are equal when they have the same elements in the same order
|
|
421
|
+
- Objects are equal when they have the same prototype (the same kind of object) and the same own properties with
|
|
422
|
+
equal values, the order of the properties does not matter
|
|
423
|
+
- Dates, regular expressions, Maps and Sets are compared by what they hold
|
|
424
|
+
- Circular references are handled: a pair of objects which is already being compared is taken to be equal
|
|
425
|
+
|
|
426
|
+
**Kind**: static method of [<code>objectHelpers</code>](#module_objectHelpers)
|
|
427
|
+
**Returns**: <code>boolean</code> - True when the values are equal.
|
|
428
|
+
|
|
429
|
+
| Param | Type | Description |
|
|
430
|
+
| --- | --- | --- |
|
|
431
|
+
| first | <code>\*</code> | The first value. |
|
|
432
|
+
| second | <code>\*</code> | The second value. |
|
|
433
|
+
|
|
412
434
|
<a name="module_objectHelpers.isCloneable"></a>
|
|
413
435
|
|
|
414
436
|
### objectHelpers.isCloneable(value) ⇒ <code>boolean</code>
|
|
@@ -504,8 +526,6 @@ Get a nested property value from an object.
|
|
|
504
526
|
|
|
505
527
|
### objectHelpers.cloneObject(object, [options]) ⇒ <code>Object</code>
|
|
506
528
|
Clone objects for manipulation without data corruption, returns a copy of the provided object.
|
|
507
|
-
NOTE: Use the mapLimit and relevancyRange to resolve "too much recursion" when the object is large and is known to
|
|
508
|
-
have circular references. A high mapLimit may lead to heavy memory usage and slow performance.
|
|
509
529
|
|
|
510
530
|
**Kind**: static method of [<code>objectHelpers</code>](#module_objectHelpers)
|
|
511
531
|
|
|
@@ -513,9 +533,9 @@ have circular references. A high mapLimit may lead to heavy memory usage and slo
|
|
|
513
533
|
| --- | --- | --- | --- |
|
|
514
534
|
| object | <code>Object</code> | | The original object that is being cloned |
|
|
515
535
|
| [options] | <code>Object</code> | <code>{}</code> | |
|
|
516
|
-
| [options.mapLimit] | <code>number</code> | <code>100</code> |
|
|
536
|
+
| [options.mapLimit] | <code>number</code> | <code>100</code> | Deprecated and ignored (circular references are handled without trimming). |
|
|
517
537
|
| [options.depthLimit] | <code>number</code> | <code>-1</code> | Control how many nested levels deep will be used, -1 = no limit, >-1 = nth level limited. |
|
|
518
|
-
| [options.relevancyRange] | <code>number</code> | <code>1000</code> |
|
|
538
|
+
| [options.relevancyRange] | <code>number</code> | <code>1000</code> | Deprecated and ignored: see mapLimit. |
|
|
519
539
|
|
|
520
540
|
<a name="module_objectHelpers..handleRetainObjects"></a>
|
|
521
541
|
|
|
@@ -577,31 +597,40 @@ Reduce several numbers to their simplest form / ratio
|
|
|
577
597
|
<a name="module_numberHelpers.randomNumber"></a>
|
|
578
598
|
|
|
579
599
|
### numberHelpers.randomNumber(range, [offset], [interval]) ⇒ <code>number</code>
|
|
580
|
-
Create a single random number
|
|
581
|
-
|
|
600
|
+
Create a single random number from offset up to (but never including) offset + range. With optional offset,
|
|
601
|
+
the distance between the result numbers can be adjusted with interval. Matches randomInteger, which gives the
|
|
602
|
+
whole numbers of the same span.
|
|
582
603
|
|
|
583
604
|
**Kind**: static method of [<code>numberHelpers</code>](#module_numberHelpers)
|
|
584
605
|
|
|
585
606
|
| Param | Type | Default | Description |
|
|
586
607
|
| --- | --- | --- | --- |
|
|
587
|
-
| range | <code>number</code> | | Choose the breadth of the random number (0
|
|
588
|
-
| [offset] | <code>number</code> | <code>0</code> | Choose the starting number (1
|
|
589
|
-
| [interval] | <code>number</code> | <code>1</code> | Choose the
|
|
608
|
+
| range | <code>number</code> | | Choose the breadth of the random number (0 up to, but not including, 100 would be 100 for range) |
|
|
609
|
+
| [offset] | <code>number</code> | <code>0</code> | Choose the starting number (1 up to, but not including, 10 would be 1 for offset, 9 for range) |
|
|
610
|
+
| [interval] | <code>number</code> | <code>1</code> | Choose the multiplier applied to the result (~5, ~10, ~15 would be 5 for interval, 1 for offset, 2 for range) |
|
|
590
611
|
|
|
591
612
|
<a name="module_numberHelpers.randomInteger"></a>
|
|
592
613
|
|
|
593
614
|
### numberHelpers.randomInteger(range, [offset], [interval]) ⇒ <code>number</code>
|
|
594
|
-
Create a single random integer
|
|
595
|
-
|
|
615
|
+
Create a single random integer from a set of `range` possible values, starting at the optional offset.
|
|
616
|
+
With no offset the result is 0 to range - 1 (so range is the number of possible values, the same as an array length
|
|
617
|
+
when choosing an index). The distance between the result numbers can be adjusted with interval.
|
|
596
618
|
|
|
597
619
|
**Kind**: static method of [<code>numberHelpers</code>](#module_numberHelpers)
|
|
598
620
|
|
|
599
621
|
| Param | Type | Default | Description |
|
|
600
622
|
| --- | --- | --- | --- |
|
|
601
|
-
| range | <code>number</code> | |
|
|
602
|
-
| [offset] | <code>number</code> | <code>0</code> | Choose the starting number (1-10 would be 1 for offset,
|
|
603
|
-
| [interval] | <code>number</code> | <code>1</code> | Choose the distance between numbers (5, 10, 15 would be 5 for interval, 1 for offset,
|
|
623
|
+
| range | <code>number</code> | | The number of possible values (0-99 would be 100 for range) |
|
|
624
|
+
| [offset] | <code>number</code> | <code>0</code> | Choose the starting number (1-10 would be 1 for offset, 10 for range) |
|
|
625
|
+
| [interval] | <code>number</code> | <code>1</code> | Choose the distance between numbers (5, 10, 15 would be 5 for interval, 1 for offset, 3 for range) |
|
|
604
626
|
|
|
627
|
+
**Example**
|
|
628
|
+
```js
|
|
629
|
+
randomInteger(1) // always 0 (one possible value)
|
|
630
|
+
randomInteger(2) // 0 or 1
|
|
631
|
+
randomInteger(3, 1, 5) // 5, 10 or 15
|
|
632
|
+
items[randomInteger(items.length)] // a random valid index
|
|
633
|
+
```
|
|
605
634
|
<a name="module_numberHelpers.lowestCommonDenominator"></a>
|
|
606
635
|
|
|
607
636
|
### numberHelpers.lowestCommonDenominator(...numbers) ⇒ <code>number</code>
|
package/browser/siFunciona.js
CHANGED
|
@@ -1707,13 +1707,19 @@
|
|
|
1707
1707
|
})
|
|
1708
1708
|
exports.default = void 0
|
|
1709
1709
|
/**
|
|
1710
|
-
* Create a single random integer
|
|
1711
|
-
*
|
|
1710
|
+
* Create a single random integer from a set of `range` possible values, starting at the optional offset.
|
|
1711
|
+
* With no offset the result is 0 to range - 1 (so range is the number of possible values, the same as an array length
|
|
1712
|
+
* when choosing an index). The distance between the result numbers can be adjusted with interval.
|
|
1713
|
+
* @example
|
|
1714
|
+
* randomInteger(1) // always 0 (one possible value)
|
|
1715
|
+
* randomInteger(2) // 0 or 1
|
|
1716
|
+
* randomInteger(3, 1, 5) // 5, 10 or 15
|
|
1717
|
+
* items[randomInteger(items.length)] // a random valid index
|
|
1712
1718
|
* @memberOf module:numberHelpers
|
|
1713
|
-
* @param {number} range -
|
|
1714
|
-
* @param {number} [offset=0] - Choose the starting number (1-10 would be 1 for offset,
|
|
1719
|
+
* @param {number} range - The number of possible values (0-99 would be 100 for range)
|
|
1720
|
+
* @param {number} [offset=0] - Choose the starting number (1-10 would be 1 for offset, 10 for range)
|
|
1715
1721
|
* @param {number} [interval=1] - Choose the distance between numbers (5, 10, 15 would be 5 for interval, 1 for
|
|
1716
|
-
* offset,
|
|
1722
|
+
* offset, 3 for range)
|
|
1717
1723
|
* @returns {number}
|
|
1718
1724
|
*/
|
|
1719
1725
|
const randomInteger = (range, offset = 0, interval = 1) => (Math.floor(Math.random() * range) + offset) * interval
|
|
@@ -1727,13 +1733,14 @@
|
|
|
1727
1733
|
})
|
|
1728
1734
|
exports.default = void 0
|
|
1729
1735
|
/**
|
|
1730
|
-
* Create a single random number
|
|
1731
|
-
*
|
|
1736
|
+
* Create a single random number from offset up to (but never including) offset + range. With optional offset,
|
|
1737
|
+
* the distance between the result numbers can be adjusted with interval. Matches randomInteger, which gives the
|
|
1738
|
+
* whole numbers of the same span.
|
|
1732
1739
|
* @memberOf module:numberHelpers
|
|
1733
|
-
* @param {number} range - Choose the breadth of the random number (0
|
|
1734
|
-
* @param {number} [offset=0] - Choose the starting number (1
|
|
1735
|
-
* @param {number} [interval=1] - Choose the
|
|
1736
|
-
* offset, 2 for range)
|
|
1740
|
+
* @param {number} range - Choose the breadth of the random number (0 up to, but not including, 100 would be 100 for range)
|
|
1741
|
+
* @param {number} [offset=0] - Choose the starting number (1 up to, but not including, 10 would be 1 for offset, 9 for range)
|
|
1742
|
+
* @param {number} [interval=1] - Choose the multiplier applied to the result (~5, ~10, ~15 would be 5 for interval,
|
|
1743
|
+
* 1 for offset, 2 for range)
|
|
1737
1744
|
* @returns {number}
|
|
1738
1745
|
*/
|
|
1739
1746
|
const randomNumber = (range, offset = 0, interval = 1) => (Math.random() * range + offset) * interval
|
|
@@ -1959,14 +1966,12 @@
|
|
|
1959
1966
|
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
1960
1967
|
/**
|
|
1961
1968
|
* Clone objects for manipulation without data corruption, returns a copy of the provided object.
|
|
1962
|
-
* NOTE: Use the mapLimit and relevancyRange to resolve "too much recursion" when the object is large and is known to
|
|
1963
|
-
* have circular references. A high mapLimit may lead to heavy memory usage and slow performance.
|
|
1964
1969
|
* @memberOf module:objectHelpers
|
|
1965
1970
|
* @param {Object} object - The original object that is being cloned
|
|
1966
1971
|
* @param {Object} [options={}]
|
|
1967
|
-
* @param {number} [options.mapLimit=100] -
|
|
1972
|
+
* @param {number} [options.mapLimit=100] - Deprecated and ignored (circular references are handled without trimming).
|
|
1968
1973
|
* @param {number} [options.depthLimit=-1] - Control how many nested levels deep will be used, -1 = no limit, >-1 = nth level limited.
|
|
1969
|
-
* @param {number} [options.relevancyRange=1000] -
|
|
1974
|
+
* @param {number} [options.relevancyRange=1000] - Deprecated and ignored: see mapLimit.
|
|
1970
1975
|
* @returns {Object}
|
|
1971
1976
|
*/
|
|
1972
1977
|
const cloneObject = (object, {
|
|
@@ -2506,91 +2511,89 @@
|
|
|
2506
2511
|
})
|
|
2507
2512
|
exports.default = void 0
|
|
2508
2513
|
require('core-js/modules/esnext.iterator.constructor.js')
|
|
2509
|
-
require('core-js/modules/esnext.iterator.find.js')
|
|
2510
2514
|
require('core-js/modules/esnext.iterator.map.js')
|
|
2511
2515
|
require('core-js/modules/esnext.iterator.reduce.js')
|
|
2516
|
+
require('core-js/modules/esnext.map.delete-all.js')
|
|
2517
|
+
require('core-js/modules/esnext.map.every.js')
|
|
2518
|
+
require('core-js/modules/esnext.map.filter.js')
|
|
2519
|
+
require('core-js/modules/esnext.map.find.js')
|
|
2520
|
+
require('core-js/modules/esnext.map.find-key.js')
|
|
2521
|
+
require('core-js/modules/esnext.map.includes.js')
|
|
2522
|
+
require('core-js/modules/esnext.map.key-of.js')
|
|
2523
|
+
require('core-js/modules/esnext.map.map-keys.js')
|
|
2524
|
+
require('core-js/modules/esnext.map.map-values.js')
|
|
2525
|
+
require('core-js/modules/esnext.map.merge.js')
|
|
2526
|
+
require('core-js/modules/esnext.map.reduce.js')
|
|
2527
|
+
require('core-js/modules/esnext.map.some.js')
|
|
2528
|
+
require('core-js/modules/esnext.map.update.js')
|
|
2512
2529
|
const _isCloneable = _interopRequireDefault(require('./isCloneable'))
|
|
2513
2530
|
const _reduceObject = _interopRequireDefault(require('./reduceObject'))
|
|
2514
|
-
const _relevancyFilter = _interopRequireDefault(require('../functions/relevancyFilter'))
|
|
2515
2531
|
const _setValue = _interopRequireDefault(require('./setValue'))
|
|
2516
2532
|
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
2517
2533
|
/**
|
|
2518
2534
|
* Perform a deep merge of objects. This will return a function that will combine all objects and sub-objects.
|
|
2519
2535
|
* Objects having the same attributes will overwrite from last object to first.
|
|
2520
|
-
*
|
|
2521
|
-
*
|
|
2536
|
+
* Every call of the returned function keeps its own record of the objects it has already visited (so circular
|
|
2537
|
+
* references are followed only once, and an object which is referenced in several places is merged once), and nothing
|
|
2538
|
+
* is remembered between calls: the results of separate calls never share state or go stale.
|
|
2522
2539
|
* @memberOf module:objectHelpers
|
|
2523
2540
|
* @param {Object} [options={}]
|
|
2524
|
-
* @param {number} [options.mapLimit=100] -
|
|
2541
|
+
* @param {number} [options.mapLimit=100] - Deprecated and ignored: the record of visited objects is now scoped to a
|
|
2542
|
+
* single call, so it does not need trimming.
|
|
2525
2543
|
* @param {number} [options.depthLimit=-1] - Control how many nested levels deep will be used, -1 = no limit, >-1 = nth level limited.
|
|
2526
|
-
* @param {number} [options.relevancyRange=1000] -
|
|
2527
|
-
* @param {Iterable|array} [options.map=[]] - A predetermined list of references
|
|
2544
|
+
* @param {number} [options.relevancyRange=1000] - Deprecated and ignored: see mapLimit.
|
|
2545
|
+
* @param {Iterable|array} [options.map=[]] - A predetermined list of references (source and the object it should
|
|
2546
|
+
* resolve to) which every call starts from. It is only read, never added to.
|
|
2528
2547
|
* @param {boolean} [options.useClone=false]
|
|
2529
2548
|
* @returns {module:objectHelpers~mergeObjectsCallback|mergeObjectsCallback}
|
|
2530
2549
|
*/
|
|
2531
2550
|
const mergeObjectsBase = ({
|
|
2532
|
-
mapLimit = 100,
|
|
2533
2551
|
depthLimit = -1,
|
|
2534
|
-
relevancyRange = 1000,
|
|
2535
2552
|
map = [],
|
|
2536
2553
|
useClone = false
|
|
2537
|
-
} = {}) =>
|
|
2538
|
-
const
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
if (depthLimit === 0) {
|
|
2543
|
-
return firstObject
|
|
2544
|
-
}
|
|
2545
|
-
return objects.reduce((newObj, arg) => {
|
|
2546
|
-
if (!arg) {
|
|
2547
|
-
return newObj
|
|
2554
|
+
} = {}) => {
|
|
2555
|
+
const merge = (visited, depth, objects) => {
|
|
2556
|
+
const firstObject = useClone ? Array.isArray(objects[0]) ? [] : {} : objects.shift()
|
|
2557
|
+
if (objects.length < 1) {
|
|
2558
|
+
return firstObject
|
|
2548
2559
|
}
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
mapLimit,
|
|
2556
|
-
relevancyRange
|
|
2557
|
-
})
|
|
2558
|
-
return (0, _reduceObject.default)(arg, (returnObj, value, key) => {
|
|
2559
|
-
if ((0, _isCloneable.default)(value)) {
|
|
2560
|
-
let objectValue = newObj[key]
|
|
2561
|
-
const exists = map.find(existing => existing.source === value)
|
|
2562
|
-
if (exists) {
|
|
2563
|
-
exists.relevance = map.length + 1
|
|
2564
|
-
return (0, _setValue.default)(key, exists.object, returnObj)
|
|
2565
|
-
}
|
|
2566
|
-
if (!(0, _isCloneable.default)(objectValue) || !objectValue) {
|
|
2567
|
-
objectValue = useClone ? Array.isArray(value) ? [] : {} : value
|
|
2568
|
-
}
|
|
2569
|
-
if ((0, _isCloneable.default)(objectValue)) {
|
|
2570
|
-
return (0, _setValue.default)(key, mergeObjectsBase({
|
|
2571
|
-
mapLimit,
|
|
2572
|
-
depthLimit: depthLimit - 1,
|
|
2573
|
-
relevancyRange,
|
|
2574
|
-
map,
|
|
2575
|
-
useClone
|
|
2576
|
-
})(objectValue, value), returnObj)
|
|
2577
|
-
}
|
|
2578
|
-
map.push({
|
|
2579
|
-
source: value,
|
|
2580
|
-
object: objectValue,
|
|
2581
|
-
relevance: map.length
|
|
2582
|
-
})
|
|
2583
|
-
map = (0, _relevancyFilter.default)(map, {
|
|
2584
|
-
mapLimit,
|
|
2585
|
-
relevancyRange
|
|
2586
|
-
})
|
|
2560
|
+
if (depth === 0) {
|
|
2561
|
+
return firstObject
|
|
2562
|
+
}
|
|
2563
|
+
return objects.reduce((newObj, arg) => {
|
|
2564
|
+
if (!arg) {
|
|
2565
|
+
return newObj
|
|
2587
2566
|
}
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2567
|
+
if (!visited.has(arg)) {
|
|
2568
|
+
visited.set(arg, newObj)
|
|
2569
|
+
}
|
|
2570
|
+
return (0, _reduceObject.default)(arg, (returnObj, value, key) => {
|
|
2571
|
+
if ((0, _isCloneable.default)(value)) {
|
|
2572
|
+
if (visited.has(value)) {
|
|
2573
|
+
return (0, _setValue.default)(key, visited.get(value), returnObj)
|
|
2574
|
+
}
|
|
2575
|
+
let objectValue = newObj[key]
|
|
2576
|
+
if (!(0, _isCloneable.default)(objectValue) || !objectValue) {
|
|
2577
|
+
if (!useClone) {
|
|
2578
|
+
// Merging by reference: the source object is used as it is, there is nothing to merge it into.
|
|
2579
|
+
visited.set(value, value)
|
|
2580
|
+
return (0, _setValue.default)(key, value, returnObj)
|
|
2581
|
+
}
|
|
2582
|
+
objectValue = Array.isArray(value) ? [] : {}
|
|
2583
|
+
}
|
|
2584
|
+
return (0, _setValue.default)(key, merge(visited, depth - 1, [objectValue, value]), returnObj)
|
|
2585
|
+
}
|
|
2586
|
+
return (0, _setValue.default)(key, value, returnObj)
|
|
2587
|
+
}, newObj)
|
|
2588
|
+
}, firstObject || {})
|
|
2589
|
+
}
|
|
2590
|
+
return (...objects) => merge(new Map(map.map(({
|
|
2591
|
+
source,
|
|
2592
|
+
object
|
|
2593
|
+
}) => [source, object])), depthLimit, objects)
|
|
2591
2594
|
}
|
|
2592
2595
|
const _default = exports.default = mergeObjectsBase
|
|
2593
|
-
}, { '
|
|
2596
|
+
}, { './isCloneable': 52, './reduceObject': 62, './setValue': 64, 'core-js/modules/esnext.iterator.constructor.js': 214, 'core-js/modules/esnext.iterator.map.js': 219, 'core-js/modules/esnext.iterator.reduce.js': 220, 'core-js/modules/esnext.map.delete-all.js': 222, 'core-js/modules/esnext.map.every.js': 223, 'core-js/modules/esnext.map.filter.js': 224, 'core-js/modules/esnext.map.find-key.js': 225, 'core-js/modules/esnext.map.find.js': 226, 'core-js/modules/esnext.map.includes.js': 227, 'core-js/modules/esnext.map.key-of.js': 228, 'core-js/modules/esnext.map.map-keys.js': 229, 'core-js/modules/esnext.map.map-values.js': 230, 'core-js/modules/esnext.map.merge.js': 231, 'core-js/modules/esnext.map.reduce.js': 232, 'core-js/modules/esnext.map.some.js': 233, 'core-js/modules/esnext.map.update.js': 234 }],
|
|
2594
2597
|
59: [function (require, module, exports) {
|
|
2595
2598
|
'use strict'
|
|
2596
2599
|
|