necessary 12.1.2 → 12.1.3
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/lib/utilities/array.js +17 -1
- package/package.json +1 -1
- package/src/utilities/array.js +22 -0
package/lib/utilities/array.js
CHANGED
|
@@ -48,6 +48,9 @@ _export(exports, {
|
|
|
48
48
|
default: function() {
|
|
49
49
|
return _default;
|
|
50
50
|
},
|
|
51
|
+
extract: function() {
|
|
52
|
+
return extract;
|
|
53
|
+
},
|
|
51
54
|
fifth: function() {
|
|
52
55
|
return fifth;
|
|
53
56
|
},
|
|
@@ -292,6 +295,18 @@ function prune(array, callback) {
|
|
|
292
295
|
});
|
|
293
296
|
return prunedElement;
|
|
294
297
|
}
|
|
298
|
+
function extract(array, callback) {
|
|
299
|
+
var extractedElement = undefined;
|
|
300
|
+
array.some(function(element, index) {
|
|
301
|
+
var passed = callback(element, index);
|
|
302
|
+
if (passed) {
|
|
303
|
+
var start = index, deleteCount = 1, deletedElements = array.splice(start, deleteCount), firstDeletedElement = first(deletedElements);
|
|
304
|
+
extractedElement = firstDeletedElement; ///
|
|
305
|
+
return true;
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
return extractedElement;
|
|
309
|
+
}
|
|
295
310
|
function patch(array, element, callback) {
|
|
296
311
|
var found = array.some(function(element, index) {
|
|
297
312
|
var passed = callback(element, index);
|
|
@@ -457,6 +472,7 @@ var _default = {
|
|
|
457
472
|
filter: filter,
|
|
458
473
|
find: find,
|
|
459
474
|
prune: prune,
|
|
475
|
+
extract: extract,
|
|
460
476
|
patch: patch,
|
|
461
477
|
compress: compress,
|
|
462
478
|
combine: combine,
|
|
@@ -474,4 +490,4 @@ var _default = {
|
|
|
474
490
|
backwardsForEach: backwardsForEach
|
|
475
491
|
};
|
|
476
492
|
|
|
477
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgWyBlbGVtZW50T3JBcnJheTIgXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgbGV0IHN0YXJ0O1xuICBcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHN0YXJ0ID0gaW5kZXg7ICAvLy9cbiAgICAgIFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIGlmIChmb3VuZCkge1xuICAgIGNvbnN0IGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgZmlsdGVyZWRFbGVtZW50cy51bnNoaWZ0KGZpcnN0RGVsZXRlZEVsZW1lbnQpOyAgLy8vXG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBmaWx0ZXJlZEVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgZWxlbWVudHMgPSBbXTtcblxuICBmb3J3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IHBydW5lZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gIFxuICBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBwcnVuZWRFbGVtZW50ID0gZmlyc3REZWxldGVkRWxlbWVudDsgIC8vL1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIHBydW5lZEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cblxuICBpZiAoZm91bmQpIHtcbiAgICBhcnJheS5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBpbmRleDEgPSAwLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleDEgPCBsZW5ndGgpIHtcbiAgICBjb25zdCBlbGVtZW50MSA9IGFycmF5W2luZGV4MV07XG5cbiAgICBmb3IgKGxldCBpbmRleDIgPSBsZW5ndGggLSAxOyBpbmRleDIgPiBpbmRleDE7IGluZGV4Mi0tKSB7XG4gICAgICBjb25zdCBlbGVtZW50MiA9IGFycmF5W2luZGV4Ml0sXG4gICAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50MiwgZWxlbWVudDEpO1xuXG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgyLCAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluZGV4MSsrO1xuXG4gICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheSA9IFtcbiAgICAuLi5hcnJheTEsXG4gICAgLi4uYXJyYXkyXG4gIF07XG5cbiAgY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBhcnJheTIuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBhcnJheTEucHVzaChlbGVtZW50KTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGUoYXJyYXksIGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIHBhc3NlZCA/XG4gICAgICBhcnJheTEucHVzaChlbGVtZW50KSA6XG4gICAgICAgIGFycmF5Mi5wdXNoKGVsZW1lbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgICBcbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzUmVkdWNlKGFycmF5LCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaXJzdCxcbiAgc2Vjb25kLFxuICB0aGlyZCxcbiAgZm91cnRoLFxuICBmaWZ0aCxcbiAgZmlmdGhMYXN0LFxuICBmb3VydGhMYXN0LFxuICB0aGlyZExhc3QsXG4gIHNlY29uZExhc3QsXG4gIGZpcnN0TGFzdCxcbiAgbGFzdCxcbiAgaGVhZCxcbiAgdGFpbCxcbiAgYmFjayxcbiAgZnJvbnQsXG4gIHB1c2gsXG4gIHVuc2hpZnQsXG4gIGNvbmNhdCxcbiAgY2xlYXIsXG4gIGNvcHksXG4gIG1lcmdlLFxuICBzcGxpY2UsXG4gIHJlcGxhY2UsXG4gIGZpbHRlcixcbiAgZmluZCxcbiAgcHJ1bmUsXG4gIHBhdGNoLFxuICBjb21wcmVzcyxcbiAgY29tYmluZSxcbiAgYXVnbWVudCxcbiAgc2VwYXJhdGUsXG4gIGZvcndhcmRzRmluZCxcbiAgYmFja3dhcmRzRmluZCxcbiAgZm9yd2FyZHNTb21lLFxuICBiYWNrd2FyZHNTb21lLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNSZWR1Y2UsXG4gIGJhY2t3YXJkc1JlZHVjZSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoXG59O1xuIl0sIm5hbWVzIjpbImF1Z21lbnQiLCJiYWNrIiwiYmFja3dhcmRzRXZlcnkiLCJiYWNrd2FyZHNGaW5kIiwiYmFja3dhcmRzRm9yRWFjaCIsImJhY2t3YXJkc1JlZHVjZSIsImJhY2t3YXJkc1NvbWUiLCJjbGVhciIsImNvbWJpbmUiLCJjb21wcmVzcyIsImNvbmNhdCIsImNvcHkiLCJmaWZ0aCIsImZpZnRoTGFzdCIsImZpbHRlciIsImZpbmQiLCJmaXJzdCIsImZpcnN0TGFzdCIsImZvcndhcmRzRXZlcnkiLCJmb3J3YXJkc0ZpbmQiLCJmb3J3YXJkc0ZvckVhY2giLCJmb3J3YXJkc1JlZHVjZSIsImZvcndhcmRzU29tZSIsImZvdXJ0aCIsImZvdXJ0aExhc3QiLCJmcm9udCIsImhlYWQiLCJsYXN0IiwibWVyZ2UiLCJwYXRjaCIsInBydW5lIiwicHVzaCIsInJlcGxhY2UiLCJzZWNvbmQiLCJzZWNvbmRMYXN0Iiwic2VwYXJhdGUiLCJzcGxpY2UiLCJ0YWlsIiwidGhpcmQiLCJ0aGlyZExhc3QiLCJ1bnNoaWZ0IiwiYXJyYXkiLCJsZW5ndGgiLCJzbGljZSIsIk1hdGgiLCJtYXgiLCJhcnJheTEiLCJhcnJheTIiLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiZWxlbWVudE9yQXJyYXkyIiwic3RhcnQiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYXJncyIsImRlbGV0ZWRJdGVtc0FycmF5IiwiZWxlbWVudCIsImNhbGxiYWNrIiwiZm91bmQiLCJzb21lIiwiaW5kZXgiLCJwYXNzZWQiLCJmaWx0ZXJlZEVsZW1lbnRzIiwiZGVsZXRlZEVsZW1lbnRzIiwiZmlyc3REZWxldGVkRWxlbWVudCIsImVsZW1lbnRzIiwicHJ1bmVkRWxlbWVudCIsInVuZGVmaW5lZCIsImluZGV4MSIsImVsZW1lbnQxIiwiaW5kZXgyIiwiZWxlbWVudDIiLCJmb3JFYWNoIiwiYXJyYXlMZW5ndGgiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBbU1nQkEsT0FBTztlQUFQQTs7SUF2S0FDLElBQUk7ZUFBSkE7O0lBc1FBQyxjQUFjO2VBQWRBOztJQTVEQUMsYUFBYTtlQUFiQTs7SUFpSEFDLGdCQUFnQjtlQUFoQkE7O0lBeEJBQyxlQUFlO2VBQWZBOztJQTNEQUMsYUFBYTtlQUFiQTs7SUF4TkFDLEtBQUs7ZUFBTEE7O0lBNElBQyxPQUFPO2VBQVBBOztJQXpCQUMsUUFBUTtlQUFSQTs7SUEzSEFDLE1BQU07ZUFBTkE7O0lBY0FDLElBQUk7ZUFBSkE7O0lBK1NoQixPQTBDRTtlQTFDRjs7SUF2VmdCQyxLQUFLO2VBQUxBOztJQUVBQyxTQUFTO2VBQVRBOztJQTRFQUMsTUFBTTtlQUFOQTs7SUFtQkFDLElBQUk7ZUFBSkE7O0lBekdBQyxLQUFLO2VBQUxBOztJQWtCQUMsU0FBUztlQUFUQTs7SUErUEFDLGFBQWE7ZUFBYkE7O0lBNURBQyxZQUFZO2VBQVpBOztJQXNIQUMsZUFBZTtlQUFmQTs7SUE1QkFDLGNBQWM7ZUFBZEE7O0lBNURBQyxZ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
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgWyBlbGVtZW50T3JBcnJheTIgXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgbGV0IHN0YXJ0O1xuICBcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHN0YXJ0ID0gaW5kZXg7ICAvLy9cbiAgICAgIFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIGlmIChmb3VuZCkge1xuICAgIGNvbnN0IGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgZmlsdGVyZWRFbGVtZW50cy51bnNoaWZ0KGZpcnN0RGVsZXRlZEVsZW1lbnQpOyAgLy8vXG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBmaWx0ZXJlZEVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgZWxlbWVudHMgPSBbXTtcblxuICBmb3J3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IHBydW5lZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gIFxuICBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBwcnVuZWRFbGVtZW50ID0gZmlyc3REZWxldGVkRWxlbWVudDsgIC8vL1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIHBydW5lZEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0KGFycmF5LCBjYWxsYmFjaykge1xuICBsZXQgZXh0cmFjdGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcblxuICBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG5cbiAgICAgIGV4dHJhY3RlZEVsZW1lbnQgPSBmaXJzdERlbGV0ZWRFbGVtZW50OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGV4dHJhY3RlZEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cblxuICBpZiAoZm91bmQpIHtcbiAgICBhcnJheS5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBpbmRleDEgPSAwLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleDEgPCBsZW5ndGgpIHtcbiAgICBjb25zdCBlbGVtZW50MSA9IGFycmF5W2luZGV4MV07XG5cbiAgICBmb3IgKGxldCBpbmRleDIgPSBsZW5ndGggLSAxOyBpbmRleDIgPiBpbmRleDE7IGluZGV4Mi0tKSB7XG4gICAgICBjb25zdCBlbGVtZW50MiA9IGFycmF5W2luZGV4Ml0sXG4gICAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50MiwgZWxlbWVudDEpO1xuXG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgyLCAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluZGV4MSsrO1xuXG4gICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheSA9IFtcbiAgICAuLi5hcnJheTEsXG4gICAgLi4uYXJyYXkyXG4gIF07XG5cbiAgY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBhcnJheTIuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBhcnJheTEucHVzaChlbGVtZW50KTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGUoYXJyYXksIGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIHBhc3NlZCA/XG4gICAgICBhcnJheTEucHVzaChlbGVtZW50KSA6XG4gICAgICAgIGFycmF5Mi5wdXNoKGVsZW1lbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgICBcbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzUmVkdWNlKGFycmF5LCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaXJzdCxcbiAgc2Vjb25kLFxuICB0aGlyZCxcbiAgZm91cnRoLFxuICBmaWZ0aCxcbiAgZmlmdGhMYXN0LFxuICBmb3VydGhMYXN0LFxuICB0aGlyZExhc3QsXG4gIHNlY29uZExhc3QsXG4gIGZpcnN0TGFzdCxcbiAgbGFzdCxcbiAgaGVhZCxcbiAgdGFpbCxcbiAgYmFjayxcbiAgZnJvbnQsXG4gIHB1c2gsXG4gIHVuc2hpZnQsXG4gIGNvbmNhdCxcbiAgY2xlYXIsXG4gIGNvcHksXG4gIG1lcmdlLFxuICBzcGxpY2UsXG4gIHJlcGxhY2UsXG4gIGZpbHRlcixcbiAgZmluZCxcbiAgcHJ1bmUsXG4gIGV4dHJhY3QsXG4gIHBhdGNoLFxuICBjb21wcmVzcyxcbiAgY29tYmluZSxcbiAgYXVnbWVudCxcbiAgc2VwYXJhdGUsXG4gIGZvcndhcmRzRmluZCxcbiAgYmFja3dhcmRzRmluZCxcbiAgZm9yd2FyZHNTb21lLFxuICBiYWNrd2FyZHNTb21lLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNSZWR1Y2UsXG4gIGJhY2t3YXJkc1JlZHVjZSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoXG59O1xuIl0sIm5hbWVzIjpbImF1Z21lbnQiLCJiYWNrIiwiYmFja3dhcmRzRXZlcnkiLCJiYWNrd2FyZHNGaW5kIiwiYmFja3dhcmRzRm9yRWFjaCIsImJhY2t3YXJkc1JlZHVjZSIsImJhY2t3YXJkc1NvbWUiLCJjbGVhciIsImNvbWJpbmUiLCJjb21wcmVzcyIsImNvbmNhdCIsImNvcHkiLCJleHRyYWN0IiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJmaWx0ZXIiLCJmaW5kIiwiZmlyc3QiLCJmaXJzdExhc3QiLCJmb3J3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNGaW5kIiwiZm9yd2FyZHNGb3JFYWNoIiwiZm9yd2FyZHNSZWR1Y2UiLCJmb3J3YXJkc1NvbWUiLCJmb3VydGgiLCJmb3VydGhMYXN0IiwiZnJvbnQiLCJoZWFkIiwibGFzdCIsIm1lcmdlIiwicGF0Y2giLCJwcnVuZSIsInB1c2giLCJyZXBsYWNlIiwic2Vjb25kIiwic2Vjb25kTGFzdCIsInNlcGFyYXRlIiwic3BsaWNlIiwidGFpbCIsInRoaXJkIiwidGhpcmRMYXN0IiwidW5zaGlmdCIsImFycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJNYXRoIiwibWF4IiwiYXJyYXkxIiwiYXJyYXkyIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImVsZW1lbnRPckFycmF5MiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFyZ3MiLCJkZWxldGVkSXRlbXNBcnJheSIsImVsZW1lbnQiLCJjYWxsYmFjayIsImZvdW5kIiwic29tZSIsImluZGV4IiwicGFzc2VkIiwiZmlsdGVyZWRFbGVtZW50cyIsImRlbGV0ZWRFbGVtZW50cyIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJlbGVtZW50cyIsInBydW5lZEVsZW1lbnQiLCJ1bmRlZmluZWQiLCJleHRyYWN0ZWRFbGVtZW50IiwiaW5kZXgxIiwiZWxlbWVudDEiLCJpbmRleDIiLCJlbGVtZW50MiIsImZvckVhY2giLCJhcnJheUxlbmd0aCIsImluaXRpYWxWYWx1ZSIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUF3TmdCQSxPQUFPO2VBQVBBOztJQTVMQUMsSUFBSTtlQUFKQTs7SUEyUkFDLGNBQWM7ZUFBZEE7O0lBNURBQyxhQUFhO2VBQWJBOztJQWlIQUMsZ0JBQWdCO2VBQWhCQTs7SUF4QkFDLGVBQWU7ZUFBZkE7O0lBM0RBQyxhQUFhO2VBQWJBOztJQTdPQUMsS0FBSztlQUFMQTs7SUFpS0FDLE9BQU87ZUFBUEE7O0lBekJBQyxRQUFRO2VBQVJBOztJQWhKQUMsTUFBTTtlQUFOQTs7SUFjQUMsSUFBSTtlQUFKQTs7SUFvVWhCLE9BMkNFO2VBM0NGOztJQXhPZ0JDLE9BQU87ZUFBUEE7O0lBcElBQyxLQUFLO2VBQUxBOztJQUVBQyxTQUFTO2VBQVRBOztJQTRFQUMsTUFBTTtlQUFOQTs7SUFtQkFDLElBQUk7ZUFBSkE7O0lBekdBQyxLQUFLO2VBQUxBOztJQWtCQUMsU0FBUztlQUFUQTs7SUFvUkFDLGFBQWE7ZUFBYkE7O0lBNURBQyxZQUFZO2VBQVpBOztJQXNIQUMsZUFBZTtlQUFmQTs7SUE1QkFDLGNBQWM7ZUFBZEE7O0lBNURBQyxZQUFZO2VBQVpBOztJQWxRQUMsTUFBTTtlQUFOQTs7SUFNQUMsVUFBVTtlQUFWQTs7SUFnQkFDLEtBQUs7ZUFBTEE7O0lBTkFDLElBQUk7ZUFBSkE7O0lBRkFDLElBQUk7ZUFBSkE7O0lBbUNBQyxLQUFLO2VBQUxBOztJQTBHQUMsS0FBSztlQUFMQTs7SUExQ0FDLEtBQUs7ZUFBTEE7O0lBekZBQyxJQUFJO2VBQUpBOztJQWtDQUMsT0FBTztlQUFQQTs7SUE5REFDLE1BQU07ZUFBTkE7O0lBY0FDLFVBQVU7ZUFBVkE7O0lBZ05BQyxRQUFRO2VBQVJBOztJQXZLQUMsTUFBTTtlQUFOQTs7SUFqQ0FDLElBQUk7ZUFBSkE7O0lBcEJBQyxLQUFLO2VBQUxBOztJQVVBQyxTQUFTO2VBQVRBOztJQWtCQUMsT0FBTztl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
|
package/package.json
CHANGED
package/src/utilities/array.js
CHANGED
|
@@ -140,6 +140,27 @@ export function prune(array, callback) {
|
|
|
140
140
|
return prunedElement;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
export function extract(array, callback) {
|
|
144
|
+
let extractedElement = undefined;
|
|
145
|
+
|
|
146
|
+
array.some((element, index) => {
|
|
147
|
+
const passed = callback(element, index);
|
|
148
|
+
|
|
149
|
+
if (passed) {
|
|
150
|
+
const start = index, ///
|
|
151
|
+
deleteCount = 1,
|
|
152
|
+
deletedElements = array.splice(start, deleteCount),
|
|
153
|
+
firstDeletedElement = first(deletedElements);
|
|
154
|
+
|
|
155
|
+
extractedElement = firstDeletedElement; ///
|
|
156
|
+
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
return extractedElement;
|
|
162
|
+
}
|
|
163
|
+
|
|
143
164
|
export function patch(array, element, callback) {
|
|
144
165
|
const found = array.some((element, index) => {
|
|
145
166
|
const passed = callback(element, index);
|
|
@@ -378,6 +399,7 @@ export default {
|
|
|
378
399
|
filter,
|
|
379
400
|
find,
|
|
380
401
|
prune,
|
|
402
|
+
extract,
|
|
381
403
|
patch,
|
|
382
404
|
compress,
|
|
383
405
|
combine,
|