necessary 11.1.4 → 11.1.7
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 +7 -7
- package/lib/utilities/array.js +16 -16
- package/package.json +1 -1
- package/src/utilities/array.js +15 -15
package/README.md
CHANGED
|
@@ -640,7 +640,7 @@ splice([1, 2, 3], 1, 2, [4, 5]); // returnsll be [2, 3]
|
|
|
640
640
|
// the first array argument becomes [1, 4, 5]
|
|
641
641
|
```
|
|
642
642
|
|
|
643
|
-
* The `replace()` function will replace an element in the array with the given element the first time that the
|
|
643
|
+
* The `replace()` function will replace an element in the array with the given element the first time that the callback function returns a truthy value:
|
|
644
644
|
|
|
645
645
|
```
|
|
646
646
|
replace([1, 2, 0, -1, -2], 3, (element, index) => {
|
|
@@ -648,7 +648,7 @@ replace([1, 2, 0, -1, -2], 3, (element, index) => {
|
|
|
648
648
|
}); // the first array argument becomes [1, 2, 3, -1, -2]
|
|
649
649
|
```
|
|
650
650
|
|
|
651
|
-
* The `filter()` function is like its native counterpart, however it filters the first array argument *in place*. The second argument should be a
|
|
651
|
+
* The `filter()` function is like its native counterpart, however it filters the first array argument *in place*. The second argument should be a callback function that will be invoked for each element of the array. If it does not return a truthy value, the corresponding element will be removed.
|
|
652
652
|
|
|
653
653
|
```
|
|
654
654
|
filter([1, 2, -1, -2], (element, index) => {
|
|
@@ -657,7 +657,7 @@ filter([1, 2, -1, -2], (element, index) => {
|
|
|
657
657
|
// returns [-1, -2]
|
|
658
658
|
```
|
|
659
659
|
|
|
660
|
-
* The `find()` function is like its native counterpart, however it returns an array of all the elements for which the
|
|
660
|
+
* The `find()` function is like its native counterpart, however it returns an array of all the elements for which the callback function returns a truthy value, rather than just the first:
|
|
661
661
|
|
|
662
662
|
```
|
|
663
663
|
find([1, 2, -1, -2], (element, index) => {
|
|
@@ -665,7 +665,7 @@ find([1, 2, -1, -2], (element, index) => {
|
|
|
665
665
|
}); // returnsll be [1, 2]
|
|
666
666
|
```
|
|
667
667
|
|
|
668
|
-
* The `prune()` function is much like the `filter()` function, however it will terminate the first time that the
|
|
668
|
+
* The `prune()` function is much like the `filter()` function, however it will terminate the first time that the callback function does not return a truthy value:
|
|
669
669
|
|
|
670
670
|
```
|
|
671
671
|
prune([1, 2, -1, -2], (element, index) => {
|
|
@@ -674,7 +674,7 @@ prune([1, 2, -1, -2], (element, index) => {
|
|
|
674
674
|
// returns -1
|
|
675
675
|
```
|
|
676
676
|
|
|
677
|
-
* The `patch()` function will append the given element to the first array argument the first time that the
|
|
677
|
+
* The `patch()` function will append the given element to the first array argument the first time that the callback function returns a truthy value:
|
|
678
678
|
|
|
679
679
|
```
|
|
680
680
|
patch([1, 2, 0, -1, -2], 4, (element, index) => {
|
|
@@ -682,7 +682,7 @@ patch([1, 2, 0, -1, -2], 4, (element, index) => {
|
|
|
682
682
|
}); // the first array argument becomes [1, 2, 0, -1, -2, 4]
|
|
683
683
|
```
|
|
684
684
|
|
|
685
|
-
* The `augment()` function appends each of the elements of the second array argument to the first array argument whenever the
|
|
685
|
+
* The `augment()` function appends each of the elements of the second array argument to the first array argument whenever the callback returns a truthy value:
|
|
686
686
|
|
|
687
687
|
```
|
|
688
688
|
augment([1, 2, 3], [-1, 4, -2, 5], (element, index) => {
|
|
@@ -690,7 +690,7 @@ augment([1, 2, 3], [-1, 4, -2, 5], (element, index) => {
|
|
|
690
690
|
}); // the first array argument becomes [1, 2, 3, 4, 5]
|
|
691
691
|
```
|
|
692
692
|
|
|
693
|
-
* The `separate()` function separates the first array argument, pushing each of its elements onto either the second or the third array argument depending on whether or not the
|
|
693
|
+
* The `separate()` function separates the first array argument, pushing each of its elements onto either the second or the third array argument depending on whether or not the callback returns a truthy value:
|
|
694
694
|
|
|
695
695
|
```
|
|
696
696
|
separate([1, -1, -2, 2, 3, -3], [], [], (element, index) => {
|
package/lib/utilities/array.js
CHANGED
|
@@ -117,7 +117,7 @@ function back(array) {
|
|
|
117
117
|
return array.slice(array.length - 1);
|
|
118
118
|
}
|
|
119
119
|
function front(array) {
|
|
120
|
-
return array.slice(0, array.length - 1);
|
|
120
|
+
return array.slice(0, Math.max(1, array.length - 1));
|
|
121
121
|
}
|
|
122
122
|
function push(array1, array2) {
|
|
123
123
|
Array.prototype.push.apply(array1, array2);
|
|
@@ -150,10 +150,10 @@ function splice(array1, start) {
|
|
|
150
150
|
].concat(_toConsumableArray(array2)), deletedItemsArray = Array.prototype.splice.apply(array1, args);
|
|
151
151
|
return deletedItemsArray;
|
|
152
152
|
}
|
|
153
|
-
function replace(array, element1,
|
|
153
|
+
function replace(array, element1, callback) {
|
|
154
154
|
var start;
|
|
155
155
|
var found = array.some(function(element, index) {
|
|
156
|
-
var passed =
|
|
156
|
+
var passed = callback(element, index);
|
|
157
157
|
if (passed) {
|
|
158
158
|
start = index; ///
|
|
159
159
|
return true;
|
|
@@ -165,10 +165,10 @@ function replace(array, element1, test) {
|
|
|
165
165
|
}
|
|
166
166
|
return found;
|
|
167
167
|
}
|
|
168
|
-
function filter(array,
|
|
168
|
+
function filter(array, callback) {
|
|
169
169
|
var filteredElements = [];
|
|
170
170
|
backwardsForEach(array, function(element, index) {
|
|
171
|
-
var passed =
|
|
171
|
+
var passed = callback(element, index);
|
|
172
172
|
if (!passed) {
|
|
173
173
|
var start = index, deleteCount = 1, deletedElements = array.splice(start, deleteCount), firstDeletedElement = first(deletedElements);
|
|
174
174
|
filteredElements.unshift(firstDeletedElement); ///
|
|
@@ -176,20 +176,20 @@ function filter(array, test) {
|
|
|
176
176
|
});
|
|
177
177
|
return filteredElements;
|
|
178
178
|
}
|
|
179
|
-
function find(array,
|
|
179
|
+
function find(array, callback) {
|
|
180
180
|
var elements = [];
|
|
181
181
|
forwardsForEach(array, function(element, index) {
|
|
182
|
-
var passed =
|
|
182
|
+
var passed = callback(element, index);
|
|
183
183
|
if (passed) {
|
|
184
184
|
elements.push(element);
|
|
185
185
|
}
|
|
186
186
|
});
|
|
187
187
|
return elements;
|
|
188
188
|
}
|
|
189
|
-
function prune(array,
|
|
189
|
+
function prune(array, callback) {
|
|
190
190
|
var prunedElement = undefined;
|
|
191
191
|
array.some(function(element, index) {
|
|
192
|
-
var passed =
|
|
192
|
+
var passed = callback(element, index);
|
|
193
193
|
if (!passed) {
|
|
194
194
|
var start = index, deleteCount = 1, deletedElements = array.splice(start, deleteCount), firstDeletedElement = first(deletedElements);
|
|
195
195
|
prunedElement = firstDeletedElement; ///
|
|
@@ -198,9 +198,9 @@ function prune(array, test) {
|
|
|
198
198
|
});
|
|
199
199
|
return prunedElement;
|
|
200
200
|
}
|
|
201
|
-
function patch(array, element2,
|
|
201
|
+
function patch(array, element2, callback) {
|
|
202
202
|
var found = array.some(function(element, index) {
|
|
203
|
-
var passed =
|
|
203
|
+
var passed = callback(element, index);
|
|
204
204
|
if (passed) {
|
|
205
205
|
return true;
|
|
206
206
|
}
|
|
@@ -210,17 +210,17 @@ function patch(array, element2, test) {
|
|
|
210
210
|
}
|
|
211
211
|
return found;
|
|
212
212
|
}
|
|
213
|
-
function augment(array1, array2,
|
|
213
|
+
function augment(array1, array2, callback) {
|
|
214
214
|
array2.forEach(function(element, index) {
|
|
215
|
-
var passed =
|
|
215
|
+
var passed = callback(element, index);
|
|
216
216
|
if (passed) {
|
|
217
217
|
array1.push(element);
|
|
218
218
|
}
|
|
219
219
|
});
|
|
220
220
|
}
|
|
221
|
-
function separate(array, array1, array2,
|
|
221
|
+
function separate(array, array1, array2, callback) {
|
|
222
222
|
array.forEach(function(element, index) {
|
|
223
|
-
var passed =
|
|
223
|
+
var passed = callback(element, index);
|
|
224
224
|
passed ? array1.push(element) : array2.push(element);
|
|
225
225
|
});
|
|
226
226
|
}
|
|
@@ -359,4 +359,4 @@ var _default = {
|
|
|
359
359
|
};
|
|
360
360
|
exports.default = _default;
|
|
361
361
|
|
|
362
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBhcnJheS5sZW5ndGggLSAxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaChhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2hpZnQoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXQoYXJyYXkxLCBlbGVtZW50T3JBcnJheTIpIHtcbiAgY29uc3QgYXJyYXkyID0gKGVsZW1lbnRPckFycmF5MiBpbnN0YW5jZW9mIEFycmF5KSA/XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRPckFycmF5MiA6XG4gICAgICAgICAgICAgICAgICAgICBbZWxlbWVudE9yQXJyYXkyXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgdGVzdCkge1xuICBsZXQgc3RhcnQ7XG4gIFxuICBjb25zdCBmb3VuZCA9IGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgdGVzdCkge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBmaWx0ZXJlZEVsZW1lbnRzLnVuc2hpZnQoZmlyc3REZWxldGVkRWxlbWVudCk7ICAvLy9cbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCB0ZXN0KSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgdGVzdCkge1xuICBsZXQgcHJ1bmVkRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIHRlc3QpIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuXG4gIGlmIChmb3VuZCkge1xuICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCB0ZXN0KSB7XG4gIGFycmF5Mi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgdGVzdCkge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgcGFzc2VkID9cbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpIDpcbiAgICAgICAgYXJyYXkyLnB1c2goZWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICAgIFxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGZpcnN0LFxuICBzZWNvbmQsXG4gIHRoaXJkLFxuICBmb3VydGgsXG4gIGZpZnRoLFxuICBmaWZ0aExhc3QsXG4gIGZvdXJ0aExhc3QsXG4gIHRoaXJkTGFzdCxcbiAgc2Vjb25kTGFzdCxcbiAgZmlyc3RMYXN0LFxuICBsYXN0LFxuICBoZWFkLFxuICB0YWlsLFxuICBiYWNrLFxuICBmcm9udCxcbiAgcHVzaCxcbiAgdW5zaGlmdCxcbiAgY29uY2F0LFxuICBjbGVhcixcbiAgY29weSxcbiAgbWVyZ2UsXG4gIHNwbGljZSxcbiAgcmVwbGFjZSxcbiAgZmlsdGVyLFxuICBmaW5kLFxuICBwcnVuZSxcbiAgcGF0Y2gsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsInNlY29uZCIsInRoaXJkIiwiZm91cnRoIiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJmb3VydGhMYXN0IiwidGhpcmRMYXN0Iiwic2Vjb25kTGFzdCIsImZpcnN0TGFzdCIsImxhc3QiLCJoZWFkIiwidGFpbCIsImJhY2siLCJmcm9udCIsInB1c2giLCJ1bnNoaWZ0IiwiY29uY2F0IiwiY2xlYXIiLCJjb3B5IiwibWVyZ2UiLCJzcGxpY2UiLCJyZXBsYWNlIiwiZmlsdGVyIiwiZmluZCIsInBydW5lIiwicGF0Y2giLCJhdWdtZW50Iiwic2VwYXJhdGUiLCJmb3J3YXJkc0ZpbmQiLCJiYWNrd2FyZHNGaW5kIiwiZm9yd2FyZHNTb21lIiwiYmFja3dhcmRzU29tZSIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImZvcndhcmRzUmVkdWNlIiwiYmFja3dhcmRzUmVkdWNlIiwiZm9yd2FyZHNGb3JFYWNoIiwiYmFja3dhcmRzRm9yRWFjaCIsImFycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJhcnJheTEiLCJhcnJheTIiLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiZWxlbWVudE9yQXJyYXkyIiwic3RhcnQiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYXJncyIsImRlbGV0ZWRJdGVtc0FycmF5IiwiZWxlbWVudCIsInRlc3QiLCJmb3VuZCIsInNvbWUiLCJpbmRleCIsInBhc3NlZCIsImZpbHRlcmVkRWxlbWVudHMiLCJkZWxldGVkRWxlbWVudHMiLCJmaXJzdERlbGV0ZWRFbGVtZW50IiwiZWxlbWVudHMiLCJwcnVuZWRFbGVtZW50IiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsImNhbGxiYWNrIiwiYXJyYXlMZW5ndGgiLCJyZXN1bHQiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQUVJQSxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBRU5DLEtBQUssR0FBTEEsS0FBSztRQUVMQyxNQUFNLEdBQU5BLE1BQU07UUFFTkMsS0FBSyxHQUFMQSxLQUFLO1FBRUxDLFNBQVMsR0FBVEEsU0FBUztRQUVUQyxVQUFVLEdBQVZBLFVBQVU7UUFFVkMsU0FBUyxHQUFUQSxTQUFTO1FBRVRDLFVBQVUsR0FBVkEsVUFBVTtRQUVWQyxTQUFTLEdBQVRBLFNBQVM7UUFFVEMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLEtBQUssR0FBTEEsS0FBSztRQUVMQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsT0FBTyxHQUFQQSxPQUFPO1FBRVBDLE1BQU0sR0FBTkEsTUFBTTtR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
|
|
362
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRPckFycmF5Ml07XG4gIFxuICBwdXNoKGFycmF5MSwgYXJyYXkyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyKGFycmF5KSB7XG4gIGNvbnN0IHN0YXJ0ID0gMDtcbiAgXG4gIHJldHVybiBhcnJheS5zcGxpY2Uoc3RhcnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weShhcnJheTEsIGFycmF5Mikge1xuICBjb25zdCBzdGFydCA9IDAsXG4gICAgICAgIGRlbGV0ZUNvdW50ID0gYXJyYXkyLmxlbmd0aDsgIC8vL1xuICBcbiAgc3BsaWNlKGFycmF5MSwgc3RhcnQsIGRlbGV0ZUNvdW50LCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQgPSBJbmZpbml0eSwgYXJyYXkyID0gW10pIHtcbiAgY29uc3QgYXJncyA9IFtzdGFydCwgZGVsZXRlQ291bnQsIC4uLmFycmF5Ml0sXG4gICAgICAgIGRlbGV0ZWRJdGVtc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShhcnJheTEsIGFyZ3MpO1xuXG4gIHJldHVybiBkZWxldGVkSXRlbXNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2UoYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGxldCBzdGFydDtcbiAgXG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgZmlsdGVyZWRFbGVtZW50cyA9IFtdO1xuICBcbiAgYmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG4gICAgICBcbiAgICAgIGZpbHRlcmVkRWxlbWVudHMudW5zaGlmdChmaXJzdERlbGV0ZWRFbGVtZW50KTsgIC8vL1xuICAgIH1cbiAgfSk7XG4gIFxuICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBwcnVuZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuICBcbiAgYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG5cbiAgaWYgKGZvdW5kKSB7XG4gICAgYXJyYXkucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1Z21lbnQoYXJyYXkxLCBhcnJheTIsIGNhbGxiYWNrKSB7XG4gIGFycmF5Mi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXBhcmF0ZShhcnJheSwgYXJyYXkxLCBhcnJheTIsIGNhbGxiYWNrKSB7XG4gIGFycmF5LmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgcGFzc2VkID9cbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpIDpcbiAgICAgICAgYXJyYXkyLnB1c2goZWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICAgIFxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGZpcnN0LFxuICBzZWNvbmQsXG4gIHRoaXJkLFxuICBmb3VydGgsXG4gIGZpZnRoLFxuICBmaWZ0aExhc3QsXG4gIGZvdXJ0aExhc3QsXG4gIHRoaXJkTGFzdCxcbiAgc2Vjb25kTGFzdCxcbiAgZmlyc3RMYXN0LFxuICBsYXN0LFxuICBoZWFkLFxuICB0YWlsLFxuICBiYWNrLFxuICBmcm9udCxcbiAgcHVzaCxcbiAgdW5zaGlmdCxcbiAgY29uY2F0LFxuICBjbGVhcixcbiAgY29weSxcbiAgbWVyZ2UsXG4gIHNwbGljZSxcbiAgcmVwbGFjZSxcbiAgZmlsdGVyLFxuICBmaW5kLFxuICBwcnVuZSxcbiAgcGF0Y2gsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsInNlY29uZCIsInRoaXJkIiwiZm91cnRoIiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJmb3VydGhMYXN0IiwidGhpcmRMYXN0Iiwic2Vjb25kTGFzdCIsImZpcnN0TGFzdCIsImxhc3QiLCJoZWFkIiwidGFpbCIsImJhY2siLCJmcm9udCIsInB1c2giLCJ1bnNoaWZ0IiwiY29uY2F0IiwiY2xlYXIiLCJjb3B5IiwibWVyZ2UiLCJzcGxpY2UiLCJyZXBsYWNlIiwiZmlsdGVyIiwiZmluZCIsInBydW5lIiwicGF0Y2giLCJhdWdtZW50Iiwic2VwYXJhdGUiLCJmb3J3YXJkc0ZpbmQiLCJiYWNrd2FyZHNGaW5kIiwiZm9yd2FyZHNTb21lIiwiYmFja3dhcmRzU29tZSIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImZvcndhcmRzUmVkdWNlIiwiYmFja3dhcmRzUmVkdWNlIiwiZm9yd2FyZHNGb3JFYWNoIiwiYmFja3dhcmRzRm9yRWFjaCIsImFycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJNYXRoIiwibWF4IiwiYXJyYXkxIiwiYXJyYXkyIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImVsZW1lbnRPckFycmF5MiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFyZ3MiLCJkZWxldGVkSXRlbXNBcnJheSIsImVsZW1lbnQiLCJjYWxsYmFjayIsImZvdW5kIiwic29tZSIsImluZGV4IiwicGFzc2VkIiwiZmlsdGVyZWRFbGVtZW50cyIsImRlbGV0ZWRFbGVtZW50cyIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJlbGVtZW50cyIsInBydW5lZEVsZW1lbnQiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwiYXJyYXlMZW5ndGgiLCJyZXN1bHQiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQUVJQSxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBRU5DLEtBQUssR0FBTEEsS0FBSztRQUVMQyxNQUFNLEdBQU5BLE1BQU07UUFFTkMsS0FBSyxHQUFMQSxLQUFLO1FBRUxDLFNBQVMsR0FBVEEsU0FBUztRQUVUQyxVQUFVLEdBQVZBLFVBQVU7UUFFVkMsU0FBUyxHQUFUQSxTQUFTO1FBRVRDLFVBQVUsR0FBVkEsVUFBVTtRQUVWQyxTQUFTLEdBQVRBLFNBQVM7UUFFVEMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLEtBQUssR0FB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
|
package/package.json
CHANGED
package/src/utilities/array.js
CHANGED
|
@@ -28,7 +28,7 @@ export function tail(array) { return array.slice(1); }
|
|
|
28
28
|
|
|
29
29
|
export function back(array) { return array.slice(array.length - 1); }
|
|
30
30
|
|
|
31
|
-
export function front(array) { return array.slice(0, array.length - 1); }
|
|
31
|
+
export function front(array) { return array.slice(0, Math.max(1, array.length - 1)); }
|
|
32
32
|
|
|
33
33
|
export function push(array1, array2) { Array.prototype.push.apply(array1, array2); }
|
|
34
34
|
|
|
@@ -64,11 +64,11 @@ export function splice(array1, start, deleteCount = Infinity, array2 = []) {
|
|
|
64
64
|
return deletedItemsArray;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
export function replace(array, element,
|
|
67
|
+
export function replace(array, element, callback) {
|
|
68
68
|
let start;
|
|
69
69
|
|
|
70
70
|
const found = array.some((element, index) => {
|
|
71
|
-
const passed =
|
|
71
|
+
const passed = callback(element, index);
|
|
72
72
|
|
|
73
73
|
if (passed) {
|
|
74
74
|
start = index; ///
|
|
@@ -86,11 +86,11 @@ export function replace(array, element, test) {
|
|
|
86
86
|
return found;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
export function filter(array,
|
|
89
|
+
export function filter(array, callback) {
|
|
90
90
|
const filteredElements = [];
|
|
91
91
|
|
|
92
92
|
backwardsForEach(array, (element, index) => {
|
|
93
|
-
const passed =
|
|
93
|
+
const passed = callback(element, index);
|
|
94
94
|
|
|
95
95
|
if (!passed) {
|
|
96
96
|
const start = index, ///
|
|
@@ -105,11 +105,11 @@ export function filter(array, test) {
|
|
|
105
105
|
return filteredElements;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
export function find(array,
|
|
108
|
+
export function find(array, callback) {
|
|
109
109
|
const elements = [];
|
|
110
110
|
|
|
111
111
|
forwardsForEach(array, (element, index) => {
|
|
112
|
-
const passed =
|
|
112
|
+
const passed = callback(element, index);
|
|
113
113
|
|
|
114
114
|
if (passed) {
|
|
115
115
|
elements.push(element);
|
|
@@ -119,11 +119,11 @@ export function find(array, test) {
|
|
|
119
119
|
return elements;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
export function prune(array,
|
|
122
|
+
export function prune(array, callback) {
|
|
123
123
|
let prunedElement = undefined;
|
|
124
124
|
|
|
125
125
|
array.some((element, index) => {
|
|
126
|
-
const passed =
|
|
126
|
+
const passed = callback(element, index);
|
|
127
127
|
|
|
128
128
|
if (!passed) {
|
|
129
129
|
const start = index, ///
|
|
@@ -140,9 +140,9 @@ export function prune(array, test) {
|
|
|
140
140
|
return prunedElement;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
export function patch(array, element,
|
|
143
|
+
export function patch(array, element, callback) {
|
|
144
144
|
const found = array.some((element, index) => {
|
|
145
|
-
const passed =
|
|
145
|
+
const passed = callback(element, index);
|
|
146
146
|
|
|
147
147
|
if (passed) {
|
|
148
148
|
return true;
|
|
@@ -157,9 +157,9 @@ export function patch(array, element, test) {
|
|
|
157
157
|
return found;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
export function augment(array1, array2,
|
|
160
|
+
export function augment(array1, array2, callback) {
|
|
161
161
|
array2.forEach((element, index) => {
|
|
162
|
-
const passed =
|
|
162
|
+
const passed = callback(element, index);
|
|
163
163
|
|
|
164
164
|
if (passed) {
|
|
165
165
|
array1.push(element);
|
|
@@ -167,9 +167,9 @@ export function augment(array1, array2, test) {
|
|
|
167
167
|
});
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
export function separate(array, array1, array2,
|
|
170
|
+
export function separate(array, array1, array2, callback) {
|
|
171
171
|
array.forEach((element, index) => {
|
|
172
|
-
const passed =
|
|
172
|
+
const passed = callback(element, index);
|
|
173
173
|
|
|
174
174
|
passed ?
|
|
175
175
|
array1.push(element) :
|