necessary 13.2.2 → 13.3.1

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 CHANGED
@@ -701,6 +701,7 @@ pathWithoutTopmostDirectoryNameFromPath("root/etc/init.conf"); // returns 'etc/i
701
701
  - `clear()`
702
702
  - `copy()`
703
703
  - `merge()`
704
+ - `match()`
704
705
  - `find()`
705
706
  - `replace()`
706
707
  - `splice()`
@@ -757,6 +758,12 @@ copy([1, 2, 3], [4, 5, 6, 7]); // the first array argument becomes [4, 5, 6, 7]
757
758
  merge([1, 2, 3], [4, 5, 6, 7]); // the first array argument becomes [1, 2, 3, 4, 5, 6, 7]
758
759
  ```
759
760
 
761
+ * The `match()` function compares the first and second array arguments. If they are of the same length and the callback argument supplied returns a truthy value when invoked with each pair of elements then it returns true:
762
+
763
+ ```
764
+ match([1, 2, 3], [-1, -2, -3], (valueA, valueB) => (valueA === -valueB)); // returns true
765
+ ```
766
+
760
767
  * 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:
761
768
 
762
769
  ```
@@ -99,6 +99,9 @@ _export(exports, {
99
99
  last: function() {
100
100
  return last;
101
101
  },
102
+ match: function() {
103
+ return match;
104
+ },
102
105
  merge: function() {
103
106
  return merge;
104
107
  },
@@ -216,28 +219,41 @@ function back(array) {
216
219
  function front(array) {
217
220
  return array.slice(0, Math.max(1, array.length - 1));
218
221
  }
219
- function push(array1, array2) {
220
- Array.prototype.push.apply(array1, array2);
222
+ function push(arrayA, arrayB) {
223
+ Array.prototype.push.apply(arrayA, arrayB);
221
224
  }
222
- function unshift(array1, array2) {
223
- Array.prototype.unshift.apply(array1, array2);
225
+ function unshift(arrayA, arrayB) {
226
+ Array.prototype.unshift.apply(arrayA, arrayB);
224
227
  }
225
- function concat(array1, elementOrArray2) {
226
- var array2 = _instanceof(elementOrArray2, Array) ? elementOrArray2 : [
228
+ function concat(arrayA, elementOrArray2) {
229
+ var arrayB = _instanceof(elementOrArray2, Array) ? elementOrArray2 : [
227
230
  elementOrArray2
228
231
  ];
229
- push(array1, array2);
232
+ push(arrayA, arrayB);
230
233
  }
231
234
  function clear(array) {
232
235
  var start = 0;
233
236
  return array.splice(start);
234
237
  }
235
- function copy(array1, array2) {
236
- var start = 0, deleteCount = array2.length; ///
237
- splice(array1, start, deleteCount, array2);
238
+ function copy(arrayA, arrayB) {
239
+ var start = 0, deleteCount = arrayB.length; ///
240
+ splice(arrayA, start, deleteCount, arrayB);
241
+ }
242
+ function merge(arrayA, arrayB) {
243
+ Array.prototype.push.apply(arrayA, arrayB);
238
244
  }
239
- function merge(array1, array2) {
240
- Array.prototype.push.apply(array1, array2);
245
+ function match(arrayA, arrayB, callback) {
246
+ var matches = false;
247
+ var arrayALength = arrayA.length, arrayBLength = arrayB.length;
248
+ if (arrayALength === arrayBLength) {
249
+ matches = arrayA.every(function(elementA, index) {
250
+ var elementB = arrayB[index], passed = callback(elementA, elementB, index);
251
+ if (passed) {
252
+ return true;
253
+ }
254
+ });
255
+ }
256
+ return matches;
241
257
  }
242
258
  function find(array, callback) {
243
259
  var elements = [];
@@ -264,12 +280,12 @@ function replace(array, element, callback) {
264
280
  }
265
281
  return found;
266
282
  }
267
- function splice(array1, start) {
268
- var deleteCount = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity, array2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : [];
283
+ function splice(arrayA, start) {
284
+ var deleteCount = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity, arrayB = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : [];
269
285
  var args = [
270
286
  start,
271
287
  deleteCount
272
- ].concat(_to_consumable_array(array2)), deletedElements = Array.prototype.splice.apply(array1, args);
288
+ ].concat(_to_consumable_array(arrayB)), deletedElements = Array.prototype.splice.apply(arrayA, args);
273
289
  return deletedElements;
274
290
  }
275
291
  function filter(array, callback) {
@@ -322,9 +338,9 @@ function patch(array, element, callback) {
322
338
  function compress(array, callback) {
323
339
  var index1 = 0, length = array.length;
324
340
  while(index1 < length){
325
- var element1 = array[index1];
341
+ var elementB = array[index1];
326
342
  for(var index2 = length - 1; index2 > index1; index2--){
327
- var element2 = array[index2], passed = callback(element2, element1);
343
+ var elementA = array[index2], passed = callback(elementA, elementB);
328
344
  if (passed) {
329
345
  var start = index2, deleteCount = 1;
330
346
  array.splice(start, deleteCount);
@@ -334,23 +350,23 @@ function compress(array, callback) {
334
350
  length = array.length;
335
351
  }
336
352
  }
337
- function combine(array1, array2, callback) {
338
- var array = _to_consumable_array(array1).concat(_to_consumable_array(array2));
353
+ function combine(arrayA, arrayB, callback) {
354
+ var array = _to_consumable_array(arrayA).concat(_to_consumable_array(arrayB));
339
355
  compress(array, callback);
340
356
  return array;
341
357
  }
342
- function augment(array1, array2, callback) {
343
- array2.forEach(function(element, index) {
358
+ function augment(arrayA, arrayB, callback) {
359
+ arrayB.forEach(function(element, index) {
344
360
  var passed = callback(element, index);
345
361
  if (passed) {
346
- array1.push(element);
362
+ arrayA.push(element);
347
363
  }
348
364
  });
349
365
  }
350
- function separate(array, array1, array2, callback) {
366
+ function separate(array, arrayA, arrayB, callback) {
351
367
  array.forEach(function(element, index) {
352
368
  var passed = callback(element, index);
353
- passed ? array1.push(element) : array2.push(element);
369
+ passed ? arrayA.push(element) : arrayB.push(element);
354
370
  });
355
371
  }
356
372
  function forwardsFind(array, callback) {
@@ -467,6 +483,7 @@ var _default = {
467
483
  clear: clear,
468
484
  copy: copy,
469
485
  merge: merge,
486
+ match: match,
470
487
  find: find,
471
488
  replace: replace,
472
489
  splice: splice,
@@ -490,4 +507,4 @@ var _default = {
490
507
  backwardsForEach: backwardsForEach
491
508
  };
492
509
 
493
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgWyBlbGVtZW50T3JBcnJheTIgXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgbGV0IHN0YXJ0O1xuICBcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHN0YXJ0ID0gaW5kZXg7ICAvLy9cbiAgICAgIFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIGlmIChmb3VuZCkge1xuICAgIGNvbnN0IGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlKGFycmF5MSwgc3RhcnQsIGRlbGV0ZUNvdW50ID0gSW5maW5pdHksIGFycmF5MiA9IFtdKSB7XG4gIGNvbnN0IGFyZ3MgPSBbIHN0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyIF0sXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoYXJyYXkxLCBhcmdzKTtcblxuICByZXR1cm4gZGVsZXRlZEVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBkZWxldGVkRWxlbWVudHMgPSBbXTtcbiAgXG4gIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChmaXJzdERlbGV0ZWRFbGVtZW50KTsgIC8vL1xuICAgIH1cbiAgfSk7XG4gIFxuICByZXR1cm4gZGVsZXRlZEVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG4gICAgICBcbiAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZmlyc3REZWxldGVkRWxlbWVudDsgIC8vL1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIGRlbGV0ZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcblxuICAgICAgZGVsZXRlZEVsZW1lbnQgPSBmaXJzdERlbGV0ZWRFbGVtZW50OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG5cbiAgaWYgKGZvdW5kKSB7XG4gICAgYXJyYXkucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXByZXNzKGFycmF5LCBjYWxsYmFjaykge1xuICBsZXQgaW5kZXgxID0gMCxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgxIDwgbGVuZ3RoKSB7XG4gICAgY29uc3QgZWxlbWVudDEgPSBhcnJheVtpbmRleDFdO1xuXG4gICAgZm9yIChsZXQgaW5kZXgyID0gbGVuZ3RoIC0gMTsgaW5kZXgyID4gaW5kZXgxOyBpbmRleDItLSkge1xuICAgICAgY29uc3QgZWxlbWVudDIgPSBhcnJheVtpbmRleDJdLFxuICAgICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudDIsIGVsZW1lbnQxKTtcblxuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4MiwgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbmRleDErKztcblxuICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZShhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXkgPSBbXG4gICAgLi4uYXJyYXkxLFxuICAgIC4uLmFycmF5MlxuICBdO1xuXG4gIGNvbXByZXNzKGFycmF5LCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXVnbWVudChhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgYXJyYXkyLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgYXJyYXkuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBwYXNzZWQgP1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCkgOlxuICAgICAgICBhcnJheTIucHVzaChlbGVtZW50KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzU29tZShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gICAgXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzU29tZShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzUmVkdWNlKGFycmF5LCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZmlyc3QsXG4gIHNlY29uZCxcbiAgdGhpcmQsXG4gIGZvdXJ0aCxcbiAgZmlmdGgsXG4gIGZpZnRoTGFzdCxcbiAgZm91cnRoTGFzdCxcbiAgdGhpcmRMYXN0LFxuICBzZWNvbmRMYXN0LFxuICBmaXJzdExhc3QsXG4gIGxhc3QsXG4gIGhlYWQsXG4gIHRhaWwsXG4gIGJhY2ssXG4gIGZyb250LFxuICBwdXNoLFxuICB1bnNoaWZ0LFxuICBjb25jYXQsXG4gIGNsZWFyLFxuICBjb3B5LFxuICBtZXJnZSxcbiAgZmluZCxcbiAgcmVwbGFjZSxcbiAgc3BsaWNlLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICBwYXRjaCxcbiAgY29tcHJlc3MsXG4gIGNvbWJpbmUsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJhdWdtZW50IiwiYmFjayIsImJhY2t3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRmluZCIsImJhY2t3YXJkc0ZvckVhY2giLCJiYWNrd2FyZHNSZWR1Y2UiLCJiYWNrd2FyZHNTb21lIiwiY2xlYXIiLCJjb21iaW5lIiwiY29tcHJlc3MiLCJjb25jYXQiLCJjb3B5IiwiZXh0cmFjdCIsImZpZnRoIiwiZmlmdGhMYXN0IiwiZmlsdGVyIiwiZmluZCIsImZpcnN0IiwiZmlyc3RMYXN0IiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRmluZCIsImZvcndhcmRzRm9yRWFjaCIsImZvcndhcmRzUmVkdWNlIiwiZm9yd2FyZHNTb21lIiwiZm91cnRoIiwiZm91cnRoTGFzdCIsImZyb250IiwiaGVhZCIsImxhc3QiLCJtZXJnZSIsInBhdGNoIiwicHJ1bmUiLCJwdXNoIiwicmVwbGFjZSIsInNlY29uZCIsInNlY29uZExhc3QiLCJzZXBhcmF0ZSIsInNwbGljZSIsInRhaWwiLCJ0aGlyZCIsInRoaXJkTGFzdCIsInVuc2hpZnQiLCJhcnJheSIsImxlbmd0aCIsInNsaWNlIiwiTWF0aCIsIm1heCIsImFycmF5MSIsImFycmF5MiIsIkFycmF5IiwicHJvdG90eXBlIiwiYXBwbHkiLCJlbGVtZW50T3JBcnJheTIiLCJzdGFydCIsImRlbGV0ZUNvdW50IiwiY2FsbGJhY2siLCJlbGVtZW50cyIsImVsZW1lbnQiLCJpbmRleCIsInBhc3NlZCIsImZvdW5kIiwic29tZSIsIkluZmluaXR5IiwiYXJncyIsImRlbGV0ZWRFbGVtZW50cyIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJkZWxldGVkRWxlbWVudCIsInVuZGVmaW5lZCIsImluZGV4MSIsImVsZW1lbnQxIiwiaW5kZXgyIiwiZWxlbWVudDIiLCJmb3JFYWNoIiwiYXJyYXlMZW5ndGgiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJt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
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXlBLCBhcnJheUIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXlBLCBhcnJheUIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5QSwgYXJyYXlCKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5QSwgYXJyYXlCKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5QSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5QiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgWyBlbGVtZW50T3JBcnJheTIgXTtcbiAgXG4gIHB1c2goYXJyYXlBLCBhcnJheUIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5QSwgYXJyYXlCKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheUIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXlBLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Qik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheUEsIGFycmF5QikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheUEsIGFycmF5Qik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaykge1xuICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGFycmF5QUxlbmd0aCA9IGFycmF5QS5sZW5ndGgsXG4gICAgICAgIGFycmF5Qkxlbmd0aCA9IGFycmF5Qi5sZW5ndGg7XG5cbiAgaWYgKGFycmF5QUxlbmd0aCA9PT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgbWF0Y2hlcyA9IGFycmF5QS5ldmVyeSgoZWxlbWVudEEsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50QiA9IGFycmF5QltpbmRleF0sXG4gICAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIGluZGV4KTtcblxuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgZWxlbWVudHMgPSBbXTtcblxuICBmb3J3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlKGFycmF5LCBlbGVtZW50LCBjYWxsYmFjaykge1xuICBsZXQgc3RhcnQ7XG4gIFxuICBjb25zdCBmb3VuZCA9IGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgc3RhcnQgPSBpbmRleDsgIC8vL1xuICAgICAgXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBcbiAgaWYgKGZvdW5kKSB7XG4gICAgY29uc3QgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCwgZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpY2UoYXJyYXlBLCBzdGFydCwgZGVsZXRlQ291bnQgPSBJbmZpbml0eSwgYXJyYXlCID0gW10pIHtcbiAgY29uc3QgYXJncyA9IFsgc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5hcnJheUIgXSxcbiAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShhcnJheUEsIGFyZ3MpO1xuXG4gIHJldHVybiBkZWxldGVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGRlbGV0ZWRFbGVtZW50cyA9IFtdO1xuICBcbiAgYmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG4gICAgICBcbiAgICAgIGRlbGV0ZWRFbGVtZW50cy51bnNoaWZ0KGZpcnN0RGVsZXRlZEVsZW1lbnQpOyAgLy8vXG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBkZWxldGVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuICBcbiAgYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgZGVsZXRlZEVsZW1lbnQgPSBmaXJzdERlbGV0ZWRFbGVtZW50OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICByZXR1cm4gZGVsZXRlZEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0KGFycmF5LCBjYWxsYmFjaykge1xuICBsZXQgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuXG4gICAgICBkZWxldGVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVsZXRlZEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cblxuICBpZiAoZm91bmQpIHtcbiAgICBhcnJheS5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBpbmRleDEgPSAwLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleDEgPCBsZW5ndGgpIHtcbiAgICBjb25zdCBlbGVtZW50QiA9IGFycmF5W2luZGV4MV07XG5cbiAgICBmb3IgKGxldCBpbmRleDIgPSBsZW5ndGggLSAxOyBpbmRleDIgPiBpbmRleDE7IGluZGV4Mi0tKSB7XG4gICAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5W2luZGV4Ml0sXG4gICAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIpO1xuXG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgyLCAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluZGV4MSsrO1xuXG4gICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheSA9IFtcbiAgICAuLi5hcnJheUEsXG4gICAgLi4uYXJyYXlCXG4gIF07XG5cbiAgY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaykge1xuICBhcnJheUIuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBhcnJheUEucHVzaChlbGVtZW50KTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGUoYXJyYXksIGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaykge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIHBhc3NlZCA/XG4gICAgICBhcnJheUEucHVzaChlbGVtZW50KSA6XG4gICAgICAgIGFycmF5Qi5wdXNoKGVsZW1lbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgICBcbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzUmVkdWNlKGFycmF5LCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaXJzdCxcbiAgc2Vjb25kLFxuICB0aGlyZCxcbiAgZm91cnRoLFxuICBmaWZ0aCxcbiAgZmlmdGhMYXN0LFxuICBmb3VydGhMYXN0LFxuICB0aGlyZExhc3QsXG4gIHNlY29uZExhc3QsXG4gIGZpcnN0TGFzdCxcbiAgbGFzdCxcbiAgaGVhZCxcbiAgdGFpbCxcbiAgYmFjayxcbiAgZnJvbnQsXG4gIHB1c2gsXG4gIHVuc2hpZnQsXG4gIGNvbmNhdCxcbiAgY2xlYXIsXG4gIGNvcHksXG4gIG1lcmdlLFxuICBtYXRjaCxcbiAgZmluZCxcbiAgcmVwbGFjZSxcbiAgc3BsaWNlLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICBwYXRjaCxcbiAgY29tcHJlc3MsXG4gIGNvbWJpbmUsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJhdWdtZW50IiwiYmFjayIsImJhY2t3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRmluZCIsImJhY2t3YXJkc0ZvckVhY2giLCJiYWNrd2FyZHNSZWR1Y2UiLCJiYWNrd2FyZHNTb21lIiwiY2xlYXIiLCJjb21iaW5lIiwiY29tcHJlc3MiLCJjb25jYXQiLCJjb3B5IiwiZXh0cmFjdCIsImZpZnRoIiwiZmlmdGhMYXN0IiwiZmlsdGVyIiwiZmluZCIsImZpcnN0IiwiZmlyc3RMYXN0IiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRmluZCIsImZvcndhcmRzRm9yRWFjaCIsImZvcndhcmRzUmVkdWNlIiwiZm9yd2FyZHNTb21lIiwiZm91cnRoIiwiZm91cnRoTGFzdCIsImZyb250IiwiaGVhZCIsImxhc3QiLCJtYXRjaCIsIm1lcmdlIiwicGF0Y2giLCJwcnVuZSIsInB1c2giLCJyZXBsYWNlIiwic2Vjb25kIiwic2Vjb25kTGFzdCIsInNlcGFyYXRlIiwic3BsaWNlIiwidGFpbCIsInRoaXJkIiwidGhpcmRMYXN0IiwidW5zaGlmdCIsImFycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJNYXRoIiwibWF4IiwiYXJyYXlBIiwiYXJyYXlCIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImVsZW1lbnRPckFycmF5MiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJjYWxsYmFjayIsIm1hdGNoZXMiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJldmVyeSIsImVsZW1lbnRBIiwiaW5kZXgiLCJlbGVtZW50QiIsInBhc3NlZCIsImVsZW1lbnRzIiwiZWxlbWVudCIsImZvdW5kIiwic29tZSIsIkluZmluaXR5IiwiYXJncyIsImRlbGV0ZWRFbGVtZW50cyIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJkZWxldGVkRWxlbWVudCIsInVuZGVmaW5lZCIsImluZGV4MSIsImluZGV4MiIsImZvckVhY2giLCJhcnJheUxlbmd0aCIsImluaXRpYWxWYWx1ZSIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUE0T2dCQSxPQUFPO2VBQVBBOztJQWhOQUMsSUFBSTtlQUFKQTs7SUErU0FDLGNBQWM7ZUFBZEE7O0lBNURBQyxhQUFhO2VBQWJBOztJQWlIQUMsZ0JBQWdCO2VBQWhCQTs7SUF4QkFDLGVBQWU7ZUFBZkE7O0lBM0RBQyxhQUFhO2VBQWJBOztJQWpRQUMsS0FBSztlQUFMQTs7SUFxTEFDLE9BQU87ZUFBUEE7O0lBekJBQyxRQUFRO2VBQVJBOztJQXBLQUMsTUFBTTtlQUFOQTs7SUFjQUMsSUFBSTtlQUFKQTs7SUF3VmhCLE9BNENFO2VBNUNGOztJQXhPZ0JDLE9BQU87ZUFBUEE7O0lBeEpBQyxLQUFLO2VBQUxBOztJQUVBQyxTQUFTO2VBQVRBOztJQThHQUMsTUFBTTtlQUFOQTs7SUEzQ0FDLElBQUk7ZUFBSkE7O0lBN0VBQyxLQUFLO2VBQUxBOztJQWtC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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "necessary",
3
3
  "author": "James Smith",
4
- "version": "13.2.2",
4
+ "version": "13.3.1",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/necessary",
7
7
  "description": "A collection of utility functions.",
@@ -30,16 +30,16 @@ export function back(array) { return array.slice(array.length - 1); }
30
30
 
31
31
  export function front(array) { return array.slice(0, Math.max(1, array.length - 1)); }
32
32
 
33
- export function push(array1, array2) { Array.prototype.push.apply(array1, array2); }
33
+ export function push(arrayA, arrayB) { Array.prototype.push.apply(arrayA, arrayB); }
34
34
 
35
- export function unshift(array1, array2) { Array.prototype.unshift.apply(array1, array2); }
35
+ export function unshift(arrayA, arrayB) { Array.prototype.unshift.apply(arrayA, arrayB); }
36
36
 
37
- export function concat(array1, elementOrArray2) {
38
- const array2 = (elementOrArray2 instanceof Array) ?
37
+ export function concat(arrayA, elementOrArray2) {
38
+ const arrayB = (elementOrArray2 instanceof Array) ?
39
39
  elementOrArray2 :
40
40
  [ elementOrArray2 ];
41
41
 
42
- push(array1, array2);
42
+ push(arrayA, arrayB);
43
43
  }
44
44
 
45
45
  export function clear(array) {
@@ -48,14 +48,34 @@ export function clear(array) {
48
48
  return array.splice(start);
49
49
  }
50
50
 
51
- export function copy(array1, array2) {
51
+ export function copy(arrayA, arrayB) {
52
52
  const start = 0,
53
- deleteCount = array2.length; ///
53
+ deleteCount = arrayB.length; ///
54
54
 
55
- splice(array1, start, deleteCount, array2);
55
+ splice(arrayA, start, deleteCount, arrayB);
56
56
  }
57
57
 
58
- export function merge(array1, array2) { Array.prototype.push.apply(array1, array2); }
58
+ export function merge(arrayA, arrayB) { Array.prototype.push.apply(arrayA, arrayB); }
59
+
60
+ export function match(arrayA, arrayB, callback) {
61
+ let matches = false;
62
+
63
+ const arrayALength = arrayA.length,
64
+ arrayBLength = arrayB.length;
65
+
66
+ if (arrayALength === arrayBLength) {
67
+ matches = arrayA.every((elementA, index) => {
68
+ const elementB = arrayB[index],
69
+ passed = callback(elementA, elementB, index);
70
+
71
+ if (passed) {
72
+ return true;
73
+ }
74
+ });
75
+ }
76
+
77
+ return matches;
78
+ }
59
79
 
60
80
  export function find(array, callback) {
61
81
  const elements = [];
@@ -93,9 +113,9 @@ export function replace(array, element, callback) {
93
113
  return found;
94
114
  }
95
115
 
96
- export function splice(array1, start, deleteCount = Infinity, array2 = []) {
97
- const args = [ start, deleteCount, ...array2 ],
98
- deletedElements = Array.prototype.splice.apply(array1, args);
116
+ export function splice(arrayA, start, deleteCount = Infinity, arrayB = []) {
117
+ const args = [ start, deleteCount, ...arrayB ],
118
+ deletedElements = Array.prototype.splice.apply(arrayA, args);
99
119
 
100
120
  return deletedElements;
101
121
  }
@@ -183,11 +203,11 @@ export function compress(array, callback) {
183
203
  length = array.length;
184
204
 
185
205
  while (index1 < length) {
186
- const element1 = array[index1];
206
+ const elementB = array[index1];
187
207
 
188
208
  for (let index2 = length - 1; index2 > index1; index2--) {
189
- const element2 = array[index2],
190
- passed = callback(element2, element1);
209
+ const elementA = array[index2],
210
+ passed = callback(elementA, elementB);
191
211
 
192
212
  if (passed) {
193
213
  const start = index2, ///
@@ -203,10 +223,10 @@ export function compress(array, callback) {
203
223
  }
204
224
  }
205
225
 
206
- export function combine(array1, array2, callback) {
226
+ export function combine(arrayA, arrayB, callback) {
207
227
  const array = [
208
- ...array1,
209
- ...array2
228
+ ...arrayA,
229
+ ...arrayB
210
230
  ];
211
231
 
212
232
  compress(array, callback);
@@ -214,23 +234,23 @@ export function combine(array1, array2, callback) {
214
234
  return array;
215
235
  }
216
236
 
217
- export function augment(array1, array2, callback) {
218
- array2.forEach((element, index) => {
237
+ export function augment(arrayA, arrayB, callback) {
238
+ arrayB.forEach((element, index) => {
219
239
  const passed = callback(element, index);
220
240
 
221
241
  if (passed) {
222
- array1.push(element);
242
+ arrayA.push(element);
223
243
  }
224
244
  });
225
245
  }
226
246
 
227
- export function separate(array, array1, array2, callback) {
247
+ export function separate(array, arrayA, arrayB, callback) {
228
248
  array.forEach((element, index) => {
229
249
  const passed = callback(element, index);
230
250
 
231
251
  passed ?
232
- array1.push(element) :
233
- array2.push(element);
252
+ arrayA.push(element) :
253
+ arrayB.push(element);
234
254
  });
235
255
  }
236
256
 
@@ -394,6 +414,7 @@ export default {
394
414
  clear,
395
415
  copy,
396
416
  merge,
417
+ match,
397
418
  find,
398
419
  replace,
399
420
  splice,