Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

dodos

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dodos - npm Package Compare versions

Comparing version 2.5.0 to 2.5.1

12

lib/dodo.js

@@ -246,2 +246,7 @@ 'use strict';

(0, _invariant2.default)(methods && methods.length, 'Dodo#stats(...methods) - at least one method is required');
methods.forEach(function (m) {
return (0, _invariant2.default)(typeof m == 'string' && m in _helpers.REDUCERS, 'Dodo#stats(...methods) - method ' + m + ' is not implemented');
});
var _zip = _zip4.default.apply(undefined, _toConsumableArray(methods.map(function (m) {

@@ -440,4 +445,5 @@ return _helpers.REDUCERS[m];

var entries = [].concat(_toConsumableArray(this.entries()));
var i = this.size;
while (i--) {
var len = this.size;
var i = -1;
while (++i < len) {
var entry = entries[i];

@@ -448,2 +454,2 @@ entries[i] = fn(entry[1], entry[0], this);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kb2RvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUEsSUFBTSxTQUFTLE9BQU8sUUFBUCxDQUFUO0FBQ04sSUFBTSxRQUFRLE9BQU8sT0FBUCxDQUFSO0FBQ04sSUFBTSxRQUFRLE9BQU8sT0FBUCxDQUFSO0FBQ04sSUFBTSxPQUFPLE9BQU8sTUFBUCxDQUFQO0FBQ04sSUFBTSxpQkFBaUIsT0FBTyxnQkFBUCxDQUFqQjtBQUNOLElBQU0sWUFBWSxFQUFaOztBQUVOLElBQU0sU0FBUyxJQUFJLE9BQUosRUFBVDtBQUNOLElBQU0sV0FBVyxJQUFJLE9BQUosRUFBWDs7QUFFTixJQUFNLGVBQWUsU0FBZixZQUFlO1NBQ25CLEVBQUUsUUFBRixHQUFhLFFBQWIsQ0FBc0IsVUFBdEIsS0FBcUMsRUFBRSxRQUFGLEdBQWEsUUFBYixDQUFzQixVQUF0QixDQUFyQztDQURtQjs7SUFHQTtBQUNuQixXQURtQixJQUNuQixDQUFZLEtBQVosRUFBbUIsS0FBbkIsRUFBNkM7UUFBbkIsZ0VBQVEseUJBQVc7OzBCQUQxQixNQUMwQjs7QUFDM0MsUUFBSSxNQUFNLE9BQU4sQ0FBYyxLQUFkLENBQUosRUFDRSxRQUFRLDJCQUFhLEtBQWIsQ0FBUixDQURGOztBQUdBLDZCQUFVLE1BQU0sT0FBTixDQUFjLEtBQWQsQ0FBViw0Q0FKMkM7QUFLM0MsNkJBQVUsU0FBUyxPQUFPLElBQVAsQ0FBWSxLQUFaLEVBQW1CLE1BQW5CLElBQTZCLE1BQU0sQ0FBTixFQUFTLE1BQVQsd0RBQWhELEVBTDJDOztBQVEzQyxXQUFPLEdBQVAsQ0FBVyxJQUFYLEVBQWlCLEtBQWpCLEVBUjJDO0FBUzNDLFFBQUksQ0FBQyxTQUFTLEdBQVQsQ0FBYSxLQUFiLENBQUQsRUFDRixTQUFTLEdBQVQsQ0FBYSxLQUFiLEVBQW9CO0FBQ2xCLGFBQU8sS0FBUDtBQUNBLGVBQVMsSUFBSSxHQUFKLENBQVEsT0FBTyxJQUFQLENBQVksS0FBWixDQUFSLENBQVQ7S0FGRixFQURGO0FBS0EsU0FBSyxPQUFMLEdBQWUsT0FBZixDQWQyQztHQUE3Qzs7ZUFEbUI7U0FrQ2xCLE9BQU8sUUFBUDs0QkFBbUI7QUFBRSxhQUFPLEtBQUssT0FBTCxHQUFlLE1BQWYsRUFBUCxDQUFGOzs7OzhCQUVWO0FBQ1IsVUFBSSxLQUFLLE9BQUwsQ0FBYSxNQUFiLEVBQ0YsT0FBTyxDQUFDLEtBQUssT0FBTCxDQUFhLElBQWIsQ0FBa0IsWUFBbEIsdURBQUQsQ0FDTCxPQUFPLEdBQVAsQ0FBVyxJQUFYLENBREssRUFFTCxzQkFBUSxLQUFLLE9BQUwsQ0FGSCx5QkFJTCxFQUpLLENBQVAsQ0FERixLQVFFLE9BQU8sT0FBTyxHQUFQLENBQVcsSUFBWCxDQUFQLENBUkY7Ozs7MkJBYUs7QUFBRSwwQ0FBVyxJQUFJLEdBQUosQ0FBUSxJQUFSLEdBQVgsQ0FBRjs7O1NBRU47MEJBQVEsUUFBUTtBQUNmLGFBQU8sSUFBSSxJQUFKLENBQ0wsT0FBTyxHQUFQLENBQVcsSUFBWCxDQURLLEVBQ2EsS0FBSyxJQUFMLEVBQVcsS0FBWCwrQkFBc0IsS0FBSyxPQUFMLElBQWMsUUFEakQsQ0FBUCxDQURlOzs7OzJCQUtWLElBQUk7OztBQUNULCtCQUFVLHFCQUFPLEVBQVAsQ0FBVix5Q0FEUztBQUVULFVBQUksS0FBSyxLQUFMLEVBQVksTUFBWixJQUFzQixDQUF0QixFQUF5QjtBQUMzQixlQUFPLEtBQUssTUFBTCxFQUFhLHlCQUFPLEVBQVAsQ0FBYixDQUFQLENBRDJCO09BQTdCLE1BRU87O0FBQ0wsY0FBTSxJQUFJLE1BQUssS0FBTCxDQUFKO0FBQ047ZUFBTyxNQUFLLE1BQUwsRUFBYSx5QkFBTztxQkFBTyxHQUFHLEdBQUgsRUFBUSxDQUFSO2FBQVAsQ0FBcEI7V0FBUDtZQUZLOzs7T0FGUDs7Ozs2QkFRTyxNQUFNLElBQUk7QUFDakIsK0JBQVUsSUFBViwrQ0FEaUI7QUFFakIsK0JBQVUscUJBQU8sRUFBUCxDQUFWLGlEQUZpQjtBQUdqQixVQUFNLE1BQU0sS0FBSyxLQUFMLEVBQVksSUFBWixDQUFOLENBSFc7QUFJakIsYUFBTyxLQUFLLE1BQUwsRUFBYyx5QkFBTztlQUFPLEdBQUcsSUFBSSxHQUFKLENBQUg7T0FBUCxDQUFyQixDQUFQLENBSmlCOzs7O3dCQU9mLElBQUk7OztBQUNOLCtCQUFVLHFCQUFPLEVBQVAsQ0FBVixzQ0FETTtBQUVOLFVBQUksS0FBSyxLQUFMLEVBQVksTUFBWixJQUFzQixDQUF0QixFQUF5QjtBQUMzQixlQUFPLEtBQUssTUFBTCxFQUFhLHNCQUFJLEVBQUosQ0FBYixDQUFQLENBRDJCO09BQTdCLE1BRU87O0FBQ0wsY0FBTSxJQUFJLE9BQUssS0FBTCxDQUFKO0FBQ047ZUFBTyxPQUFLLE1BQUwsRUFBYSxzQkFBSTtxQkFBTyxHQUFHLEdBQUgsRUFBUSxDQUFSO2FBQVAsQ0FBakI7V0FBUDtZQUZLOzs7T0FGUDs7Ozt3QkFRRSxNQUFNO0FBQ1IsK0JBQVUsSUFBViwrQ0FEUTtBQUVSLCtCQUFVLEtBQUssSUFBTCxFQUFXLE9BQVgsQ0FBbUIsR0FBbkIsQ0FBdUIsSUFBdkIsQ0FBViw2QkFDMkIsc0JBRDNCLEVBRlE7QUFJUixVQUFNLE1BQU0sS0FBSyxLQUFMLEVBQVksSUFBWixDQUFOLENBSkU7QUFLUixVQUFNLEtBQUssc0JBQUk7ZUFBTyxJQUFJLEdBQUo7T0FBUCxDQUFULENBTEU7QUFNUixTQUFHLENBQUgsR0FBTywyQkFBYSxDQUFDLElBQUQsQ0FBYixDQUFQLENBTlE7QUFPUixhQUFPLEtBQUssTUFBTCxFQUFhLEVBQWIsQ0FBUCxDQVBROzs7OzJCQVVLOzs7d0NBQVA7O09BQU87O0FBQ2IsY0FBUSxNQUFNLE1BQU4sR0FBZSx1QkFBUSxLQUFSLENBQWYsR0FBZ0MsU0FBaEMsQ0FESztBQUViLCtCQUFVLEtBQVYsMENBRmE7QUFHYixZQUFNLE9BQU4sQ0FBYztlQUFLLHlCQUNqQixPQUFLLElBQUwsRUFBVyxPQUFYLENBQW1CLEdBQW5CLENBQXVCLENBQXZCLENBRGlCLCtCQUNxQyxtQkFEckM7T0FBTCxDQUFkLENBSGE7O0FBTWIsVUFBTSxVQUFVLE1BQU0sR0FBTixDQUFVO2VBQVEsT0FBSyxLQUFMLEVBQVksSUFBWjtPQUFSLENBQXBCLENBTk87QUFPYixVQUFNLFFBQVEsSUFBSSxRQUFKLENBQWEsS0FBYix1QkFDRixRQUFRLEdBQVIsQ0FBWTt3QkFBWTtPQUFaLENBQVosQ0FBOEIsSUFBOUIsQ0FBbUMsR0FBbkMsYUFERSxDQUFSLENBUE87QUFVYixVQUFNLEtBQUssc0JBQUksS0FBSixDQUFMLENBVk87QUFXYixTQUFHLENBQUgsR0FBTywyQkFBYSxLQUFiLENBQVAsQ0FYYTtBQVliLGFBQU8sS0FBSyxNQUFMLEVBQWEsRUFBYixDQUFQLENBWmE7Ozs7eUJBZVYsUUFBUTtBQUNYLCtCQUFVLE1BQVYsNENBRFc7QUFFWCwrQkFBVSxTQUFTLENBQVQsNkNBQVYsRUFGVztBQUdYLGFBQU8sS0FBSyxNQUFMLEVBQWEsdUJBQUssTUFBTCxDQUFiLENBQVAsQ0FIVzs7Ozt5QkFNUixRQUFRO0FBQ1gsK0JBQVUsTUFBViw0Q0FEVztBQUVYLCtCQUFVLFNBQVMsQ0FBVCw2Q0FBVixFQUZXO0FBR1gsYUFBTyxLQUFLLE1BQUwsRUFBYSx1QkFBSyxNQUFMLENBQWIsQ0FBUCxDQUhXOzs7U0FNWjswQkFBZ0IsSUFBSSxhQUFhLE9BQU87QUFDdkMsVUFBSSxLQUFLLEtBQUwsRUFBWSxNQUFaLElBQXNCLENBQXRCLEVBQ0YsT0FBTyxLQUFLLE1BQUwsQ0FBWSxFQUFaLEVBQWdCLGFBQWhCLEVBQStCLEtBQS9CLENBQVAsQ0FERixLQUdFLE9BQU8sS0FBSyxVQUFMLENBQWdCLEVBQWhCLEVBQW9CLFdBQXBCLEVBQWlDLEtBQWpDLENBQVAsQ0FIRjs7OzsyQkFNSyxJQUFJLE1BQXNCOzs7VUFBaEIsK0ZBQWdCOztBQUMvQiwrQkFBVSxRQUFRLElBQVIsbURBQVYsRUFEK0I7QUFFL0IsK0JBQVUscUJBQU8sRUFBUCxDQUFWLHNEQUYrQjtBQUcvQiwrQkFBVSxxQkFBTyxLQUFQLENBQVYseURBSCtCO0FBSy9CLGFBQU8sQ0FBQyxLQUFLLE9BQUwsQ0FBYSxJQUFiLENBQWtCLFlBQWxCLHVEQUFELENBQ0wsT0FBTyxHQUFQLENBQVcsSUFBWCxDQURLLEVBRUwsc0JBQVEsS0FBSyxPQUFMLENBRkgsb0NBSUYscUJBQXNCLDJCQUN0Qix1QkFBd0IsYUFMdEIsRUFPTCxJQVBLLENBQVAsQ0FMK0I7Ozs7K0JBZ0J0QixJQUFJLGFBQTZCO1VBQWhCLCtGQUFnQjs7QUFDMUMsK0JBQVUscUJBQU8sV0FBUCxDQUFWLDBFQUQwQztBQUcxQywrQkFBVSxxQkFBTyxFQUFQLENBQVYsMERBSDBDO0FBSzFDLCtCQUFVLHFCQUFPLEtBQVAsQ0FBViw2REFMMEM7O21CQU9iLHFCQUMzQixLQUFLLEtBQUwsRUFBWSxHQUFaLENBQWdCO2VBQU0sQ0FBQyxFQUFELEVBQUssYUFBTCxFQUFvQixLQUFwQjtPQUFOLENBRFcsRUFQYTs7OztVQU9uQyxpQkFQbUM7VUFPOUIsbUJBUDhCO1VBT3ZCLG9CQVB1Qjs7QUFVMUMsYUFBTyx5QkFDTCxLQUFLLEtBQUwsQ0FESyxFQUVMLEtBQUssTUFBTCxDQUFZLDhCQUFnQixHQUFoQixFQUFxQixJQUFyQixDQUFaLEVBQXdDLEtBQXhDLEVBQStDLHFCQUFPLE1BQVAsQ0FBL0MsQ0FGSyxDQUFQLENBVjBDOzs7OzRCQWdCMUI7eUNBQVQ7O09BQVM7O2lCQUNhLGtEQUFPLFFBQVEsR0FBUixDQUFZO2VBQUssa0JBQVMsQ0FBVDtPQUFMLEVBQW5CLEVBRGI7Ozs7VUFDVCxlQURTO1VBQ0osaUJBREk7VUFDRyxrQkFESDs7QUFFaEIsYUFBTyxLQUFLLGNBQUwsRUFDTCw4QkFBZ0IsR0FBaEIsQ0FESyxFQUVMO2VBQU0sTUFBTSxHQUFOLENBQVU7aUJBQUs7U0FBTDtPQUFoQixFQUNBLHFCQUFPLE1BQVAsQ0FISyxDQUFQLENBRmdCOzs7OzRCQVNWO0FBQUUsYUFBTyxLQUFLLGVBQUwsZ0NBQXdCLGtCQUFTLEtBQVQsQ0FBeEIsQ0FBUCxDQUFGOzs7OzBCQUVGO0FBQUUsYUFBTyxLQUFLLGVBQUwsZ0NBQXdCLGtCQUFTLEdBQVQsQ0FBeEIsQ0FBUCxDQUFGOzs7OzBCQUVBO0FBQUUsYUFBTyxLQUFLLGVBQUwsZ0NBQXdCLGtCQUFTLEdBQVQsQ0FBeEIsQ0FBUCxDQUFGOzs7OzBCQUVBO0FBQUUsYUFBTyxLQUFLLGVBQUwsZ0NBQXdCLGtCQUFTLEdBQVQsQ0FBeEIsQ0FBUCxDQUFGOzs7O2dDQUVNO0FBQUUsYUFBTyxLQUFLLGVBQUwsZ0NBQXdCLGtCQUFTLFNBQVQsQ0FBeEIsQ0FBUCxDQUFGOzs7OzJCQUVMO0FBQUUsYUFBTyxLQUFLLGVBQUwsZ0NBQXdCLGtCQUFTLElBQVQsQ0FBeEIsQ0FBUCxDQUFGOzs7OzRCQUVDLE1BQU0sSUFBSTtBQUNoQiwrQkFBVSxJQUFWLCtDQURnQjtBQUVoQiwrQkFBVSxLQUFLLElBQUwsRUFBVyxPQUFYLENBQW1CLEdBQW5CLENBQXVCLElBQXZCLENBQVYsK0JBQzZCLHNCQUQ3QixFQUZnQjs7QUFLaEIsVUFBTSxNQUFNLElBQUksR0FBSixFQUFOLENBTFU7QUFNaEIsVUFBTSxVQUFVLDRCQUFjLEdBQWQsRUFBbUIsRUFBbkIsRUFBdUIsS0FBSyxLQUFMLEVBQVksSUFBWixDQUF2QixDQUFWLENBTlU7QUFPaEIsVUFBTSxRQUFRLEtBQUssT0FBTCxFQUFSLENBUFU7QUFRaEIsVUFBTSxNQUFNLE1BQU0sTUFBTixDQVJJO0FBU2hCLFVBQUksSUFBSSxDQUFDLENBQUQsQ0FUUTtBQVVoQixhQUFPLEVBQUUsQ0FBRixHQUFNLEdBQU4sRUFBVztBQUNoQixnQkFBUSxNQUFNLENBQU4sQ0FBUixFQURnQjtPQUFsQjtBQUdBLFVBQUksT0FBSixDQUFZLFlBQVksS0FBSyxLQUFMLENBQVosQ0FBWixFQWJnQjtBQWNoQixhQUFPLE1BQU0sR0FBTixDQUFQLENBZGdCOzs7OzBCQWlCWixJQUFJO0FBQ1IsK0JBQVUscUJBQU8sRUFBUCxDQUFWLHdDQURRO0FBRVIsYUFBTyxNQUFNLEdBQUcsSUFBSCxDQUFOLENBQVAsQ0FGUTs7O1NBcExMO3dCQUFRO0FBQUUsYUFBTyxTQUFTLEdBQVQsQ0FBYSxPQUFPLEdBQVAsQ0FBVyxJQUFYLENBQWIsQ0FBUCxDQUFGOzs7U0FFUjt3QkFBUztBQUNaLFVBQU0sbUJBQW1CLEtBQUssT0FBTCxDQUFhLE1BQWIsQ0FBb0I7ZUFBTyxDQUFDLENBQUMsSUFBSSxDQUFKO09BQVQsQ0FBcEIsQ0FBb0MsS0FBcEMsQ0FBMEMsQ0FBQyxDQUFELENBQTdELENBRE07O0FBR1osVUFBSSxpQkFBaUIsTUFBakIsRUFDRixPQUFPLGlCQUFpQixDQUFqQixFQUFvQixDQUFwQixDQURULEtBR0UsT0FBTyxLQUFLLElBQUwsRUFBVyxLQUFYLENBSFQ7OztTQU1HO3dCQUFTO0FBQ1osVUFBTSxJQUFJLEtBQUssS0FBTCxDQUFKLENBRE07QUFFWixhQUFPLE9BQU8sSUFBUCxDQUFZLENBQVosRUFBZSxJQUFmLENBQW9CLFVBQUMsQ0FBRCxFQUFJLENBQUo7ZUFBVSxFQUFFLENBQUYsSUFBTyxFQUFFLENBQUYsQ0FBUDtPQUFWLENBQTNCLENBRlk7Ozs7d0JBbUJEO0FBQUUsYUFBTyxLQUFLLE9BQUwsR0FBZSxNQUFmLENBQVQ7Ozs7U0FoRE07Ozs7OztBQTRNckIsU0FBUyxXQUFULENBQXFCLEtBQXJCLEVBQTRCO0FBQzFCLFNBQU8sVUFBUyxLQUFULEVBQWdCLEdBQWhCLEVBQXFCLEdBQXJCLEVBQTBCO0FBQy9CLFFBQUksR0FBSixDQUFRLEdBQVIsRUFBYSxJQUFJLElBQUosQ0FBUyxLQUFULEVBQWdCLEtBQWhCLENBQWIsRUFEK0I7R0FBMUIsQ0FEbUI7Q0FBNUI7O0FBTUEsS0FBSyxTQUFMLENBQWUsSUFBZixHQUFzQixLQUFLLFNBQUwsQ0FBZSxJQUFmOztBQUV0QixJQUFNLGNBQWMsT0FBTyxtQkFBUCxDQUEyQixLQUFLLFNBQUwsQ0FBekM7QUFDTixZQUFZLE1BQVosQ0FBbUI7U0FBVSxVQUFVLGFBQVY7Q0FBVixDQUFuQjs7QUFFQSxTQUFTLEtBQVQsQ0FBZSxHQUFmLEVBQW9CLE1BQXBCLEVBQTRCLElBQTVCLEVBQWtDO0FBQ2hDLFFBQU0sSUFBSSxHQUFKLENBQVEsR0FBUixDQUFOOzs7QUFEZ0MsTUFJNUIsTUFBSjs7Ozs7O0FBQ0UsMkJBQTBCLElBQUksT0FBSiw0QkFBMUI7OztZQUFZO1lBQUs7O0FBQ2YsWUFBSSxHQUFKLENBQVEsR0FBUixFQUFhLEtBQUssT0FBTCxnQ0FBZ0IsS0FBaEIsQ0FBYjtPQURGOzs7Ozs7Ozs7Ozs7Ozs7R0FERjtBQUpnQyxNQVM1QixJQUFJLE1BQUosR0FBYSxJQUFiLEdBQW9CLEtBQXBCLFlBQXFDLElBQXJDOzs7Ozs7O1lBQ1M7O0FBQ1QsWUFBSSxNQUFKLElBQWM7NkNBQUk7Ozs7aUJBQVMsTUFBTSxHQUFOLEVBQVcsTUFBWCxFQUFtQixJQUFuQjtTQUFiOzs7QUFEaEIsNEJBQXFCLHNDQUFyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FERjtBQVRnQyxLQWNoQyxDQUFJLFVBQUosR0FBaUIsVUFBakIsQ0FkZ0M7O0FBZ0JoQyxTQUFPLEdBQVAsQ0FoQmdDO0NBQWxDOztBQW1CQSxTQUFTLFVBQVQsQ0FBb0IsRUFBcEIsRUFBd0I7QUFDdEIsTUFBTSx1Q0FBYyxLQUFLLE9BQUwsSUFBZCxDQURnQjtBQUV0QixNQUFJLElBQUksS0FBSyxJQUFMLENBRmM7QUFHdEIsU0FBTyxHQUFQLEVBQVk7QUFDVixRQUFJLFFBQVEsUUFBUSxDQUFSLENBQVIsQ0FETTtBQUVWLFlBQVEsQ0FBUixJQUFhLEdBQUcsTUFBTSxDQUFOLENBQUgsRUFBYSxNQUFNLENBQU4sQ0FBYixFQUF1QixJQUF2QixDQUFiLENBRlU7R0FBWjtBQUlBLFNBQU8sT0FBUCxDQVBzQjtDQUF4QiIsImZpbGUiOiJkb2RvLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnXG5pbXBvcnQgemlwIGZyb20gJ2xvZGFzaC96aXAnXG5pbXBvcnQgemlwT2JqZWN0IGZyb20gJ2xvZGFzaC96aXBPYmplY3QnXG5pbXBvcnQgdW56aXAgZnJvbSAnbG9kYXNoL3VuemlwJ1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nXG5pbXBvcnQge21hcCwgZmlsdGVyLCBkcm9wLCB0YWtlLCB0cmFuc2R1Y2V9IGZyb20gJ3RyYW5zZHVjZXJzLmpzJ1xuXG5pbXBvcnQge1xuICBpZGVudGl0eSwgY29tYmluZVJlZHVjZXJzLCBSRURVQ0VSUywgc3ByZWFkLCBjcmVhdGVHcm91cGVyLCBpc2Z1bmMsXG4gIGFycmF5VG9JbmRleCwgY29tcG9zZSwgdHJhbnNkdWNlTm9CcmVhaywgYXJyYXlSZWR1Y2VyXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgYWN0aW9uID0gU3ltYm9sKCdhY3Rpb24nKVxuY29uc3QgaW5kZXggPSBTeW1ib2woJ2luZGV4JylcbmNvbnN0IG5hbWVzID0gU3ltYm9sKCduYW1lcycpXG5jb25zdCBtZXRhID0gU3ltYm9sKCdtZXRhJylcbmNvbnN0IGRpc3BhdGNoUmVkdWNlID0gU3ltYm9sKCdkaXNwYXRjaFJlZHVjZScpXG5jb25zdCBub0FjdGlvbnMgPSBbXVxuXG5jb25zdCBBcnJheXMgPSBuZXcgV2Vha01hcCgpXG5jb25zdCBNZXRhZGF0YSA9IG5ldyBXZWFrTWFwKClcblxuY29uc3QgbmVlZFNsb3dDYXNlID0gYSA9PlxuICBhLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ25ldyBUYWtlJykgfHwgYS50b1N0cmluZygpLmluY2x1ZGVzKCduZXcgRHJvcCcpXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERvZG8ge1xuICBjb25zdHJ1Y3RvcihhcnJheSwgaW5kZXgsIGFjdGlvbnM9bm9BY3Rpb25zKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5kZXgpKVxuICAgICAgaW5kZXggPSBhcnJheVRvSW5kZXgoaW5kZXgpXG5cbiAgICBpbnZhcmlhbnQoQXJyYXkuaXNBcnJheShhcnJheSksIGBuZXcgRG9kbyhhcnIsIGluZGV4KSAtIGFyciBpcyByZXF1aXJlZGApXG4gICAgaW52YXJpYW50KGluZGV4ICYmIE9iamVjdC5rZXlzKGluZGV4KS5sZW5ndGggPT0gYXJyYXlbMF0ubGVuZ3RoLFxuICAgICAgYG5ldyBEb2RvKGFyciwgaW5kZXgpIC0gaW5kZXggaXMgbWlzc2luZyBvciBtYWxmb3JtZWRgKVxuXG4gICAgQXJyYXlzLnNldCh0aGlzLCBhcnJheSlcbiAgICBpZiAoIU1ldGFkYXRhLmhhcyhhcnJheSkpXG4gICAgICBNZXRhZGF0YS5zZXQoYXJyYXksIHtcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBjb2x1bW5zOiBuZXcgU2V0KE9iamVjdC5rZXlzKGluZGV4KSksXG4gICAgICB9KVxuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnNcbiAgfVxuXG4gIGdldCBbbWV0YV0oKSB7IHJldHVybiBNZXRhZGF0YS5nZXQoQXJyYXlzLmdldCh0aGlzKSkgfVxuXG4gIGdldCBbaW5kZXhdKCkge1xuICAgIGNvbnN0IGxhc3RNYXBXaXRoSW5kZXggPSB0aGlzLmFjdGlvbnMuZmlsdGVyKGFjdCA9PiAhIWFjdC5JKS5zbGljZSgtMSlcblxuICAgIGlmIChsYXN0TWFwV2l0aEluZGV4Lmxlbmd0aClcbiAgICAgIHJldHVybiBsYXN0TWFwV2l0aEluZGV4WzBdLklcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpc1ttZXRhXS5pbmRleFxuICB9XG5cbiAgZ2V0IFtuYW1lc10oKSB7XG4gICAgY29uc3QgSSA9IHRoaXNbaW5kZXhdXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKEkpLnNvcnQoKGEsIGIpID0+IElbYV0gLSBJW2JdKVxuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzLnRvQXJyYXkoKS52YWx1ZXMoKSB9XG5cbiAgdG9BcnJheSgpIHtcbiAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aClcbiAgICAgIHJldHVybiAodGhpcy5hY3Rpb25zLnNvbWUobmVlZFNsb3dDYXNlKSA/IHRyYW5zZHVjZSA6IHRyYW5zZHVjZU5vQnJlYWspKFxuICAgICAgICBBcnJheXMuZ2V0KHRoaXMpLFxuICAgICAgICBjb21wb3NlKHRoaXMuYWN0aW9ucyksXG4gICAgICAgIGFycmF5UmVkdWNlcixcbiAgICAgICAgW11cbiAgICAgIClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gQXJyYXlzLmdldCh0aGlzKVxuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHsgcmV0dXJuIHRoaXMudG9BcnJheSgpLmxlbmd0aCB9XG5cbiAgdW5pcSgpIHsgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMpXSB9XG5cbiAgW2FjdGlvbl0oYWN0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBEb2RvKFxuICAgICAgQXJyYXlzLmdldCh0aGlzKSwgdGhpc1ttZXRhXS5pbmRleCwgWy4uLnRoaXMuYWN0aW9ucywgYWN0aW9uXSlcbiAgfVxuXG4gIGZpbHRlcihmbikge1xuICAgIGludmFyaWFudChpc2Z1bmMoZm4pLCBgRG9kbyNmaWx0ZXIoZm4pIOKAlCBmbiBub3QgYSBmdW5jdGlvbmApXG4gICAgaWYgKHRoaXNbbmFtZXNdLmxlbmd0aCA9PSAxKSB7XG4gICAgICByZXR1cm4gdGhpc1thY3Rpb25dKGZpbHRlcihmbikpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IEkgPSB0aGlzW2luZGV4XVxuICAgICAgcmV0dXJuIHRoaXNbYWN0aW9uXShmaWx0ZXIocm93ID0+IGZuKHJvdywgSSkpKVxuICAgIH1cbiAgfVxuXG4gIGZpbHRlckJ5KG5hbWUsIGZuKSB7XG4gICAgaW52YXJpYW50KG5hbWUsIGBEb2RvI2ZpbHRlckJ5KG5hbWUsIGZuKSAtIGNvbCBpcyByZXF1aXJlZGApXG4gICAgaW52YXJpYW50KGlzZnVuYyhmbiksIGBEb2RvI2ZpbHRlckJ5KG5hbWUsIGZuKSAtIGZuIG5vdCBhIGZ1bmN0aW9uYClcbiAgICBjb25zdCBjb2wgPSB0aGlzW2luZGV4XVtuYW1lXVxuICAgIHJldHVybiB0aGlzW2FjdGlvbl0oIGZpbHRlcihyb3cgPT4gZm4ocm93W2NvbF0pKSApXG4gIH1cblxuICBtYXAoZm4pIHtcbiAgICBpbnZhcmlhbnQoaXNmdW5jKGZuKSwgYERvZG8jbWFwKGZuKSDigJQgZm4gbm90IGEgZnVuY3Rpb25gKVxuICAgIGlmICh0aGlzW25hbWVzXS5sZW5ndGggPT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXNbYWN0aW9uXShtYXAoZm4pKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBJID0gdGhpc1tpbmRleF1cbiAgICAgIHJldHVybiB0aGlzW2FjdGlvbl0obWFwKHJvdyA9PiBmbihyb3csIEkpKSlcbiAgICB9XG4gIH1cblxuICBjb2wobmFtZSkge1xuICAgIGludmFyaWFudChuYW1lLCBgRG9kbyNmaWx0ZXJCeShuYW1lLCBmbikgLSBjb2wgaXMgcmVxdWlyZWRgKVxuICAgIGludmFyaWFudCh0aGlzW21ldGFdLmNvbHVtbnMuaGFzKG5hbWUpLFxuICAgICAgYERvZG8jY29sKG5hbWUpIOKAlCBuYW1lICR7bmFtZX0gbm90IGluIGluZGV4YClcbiAgICBjb25zdCBjb2wgPSB0aGlzW2luZGV4XVtuYW1lXVxuICAgIGNvbnN0IGZuID0gbWFwKHJvdyA9PiByb3dbY29sXSlcbiAgICBmbi5JID0gYXJyYXlUb0luZGV4KFtuYW1lXSlcbiAgICByZXR1cm4gdGhpc1thY3Rpb25dKGZuKVxuICB9XG5cbiAgY29scyguLi5uYW1lcykge1xuICAgIG5hbWVzID0gbmFtZXMubGVuZ3RoID8gZmxhdHRlbihuYW1lcykgOiB1bmRlZmluZWRcbiAgICBpbnZhcmlhbnQobmFtZXMsIGBEb2RvI2NvbHMobmFtZXMpIC0gbmFtZXMgaXMgcmVxdWlyZWRgKVxuICAgIG5hbWVzLmZvckVhY2gobiA9PiBpbnZhcmlhbnQoXG4gICAgICB0aGlzW21ldGFdLmNvbHVtbnMuaGFzKG4pLCBgRG9kbyNjb2xzKG5hbWVzKSAtIG5hbWUgJHtufSBub3QgaW4gaW5kZXhgKSlcblxuICAgIGNvbnN0IGluZGljZXMgPSBuYW1lcy5tYXAobmFtZSA9PiB0aGlzW2luZGV4XVtuYW1lXSlcbiAgICBjb25zdCBpbm5lciA9IG5ldyBGdW5jdGlvbigncm93JywgYFxuICAgICAgcmV0dXJuIFske2luZGljZXMubWFwKGkgPT4gYHJvd1ske2l9XWApLmpvaW4oJywnKX1dXG4gICAgYClcbiAgICBjb25zdCBmbiA9IG1hcChpbm5lcilcbiAgICBmbi5JID0gYXJyYXlUb0luZGV4KG5hbWVzKVxuICAgIHJldHVybiB0aGlzW2FjdGlvbl0oZm4pXG4gIH1cblxuICBza2lwKGFtb3VudCkge1xuICAgIGludmFyaWFudChhbW91bnQsIGBEb2RvI3NraXAoYW1vdW50KSAtIGFtb3VudCBpcyByZXF1aXJlZGApXG4gICAgaW52YXJpYW50KGFtb3VudCA+IDAsIGBEb2RvI3NraXAoYW1vdW50KSDigJQgYW1vdW50IHNtYWxsZXIgdGhhbiAwYClcbiAgICByZXR1cm4gdGhpc1thY3Rpb25dKGRyb3AoYW1vdW50KSlcbiAgfVxuXG4gIHRha2UoYW1vdW50KSB7XG4gICAgaW52YXJpYW50KGFtb3VudCwgYERvZG8jdGFrZShhbW91bnQpIC0gYW1vdW50IGlzIHJlcXVpcmVkYClcbiAgICBpbnZhcmlhbnQoYW1vdW50ID4gMCwgYERvZG8jdGFrZShhbW91bnQpIOKAlCBhbW91bnQgc21hbGxlciB0aGFuIDBgKVxuICAgIHJldHVybiB0aGlzW2FjdGlvbl0odGFrZShhbW91bnQpKVxuICB9XG5cbiAgW2Rpc3BhdGNoUmVkdWNlXShmbiwgaW5pdEZhY3RvcnksIGZpbmFsKSB7XG4gICAgaWYgKHRoaXNbbmFtZXNdLmxlbmd0aCA9PSAxKVxuICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZuLCBpbml0RmFjdG9yeSgpLCBmaW5hbClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5yZWR1Y2VFYWNoKGZuLCBpbml0RmFjdG9yeSwgZmluYWwpXG4gIH1cblxuICByZWR1Y2UoZm4sIGluaXQsIGZpbmFsPWlkZW50aXR5KSB7XG4gICAgaW52YXJpYW50KGluaXQgIT0gbnVsbCwgYERvZG8jcmVkdWNlKGZuLCBpbml0LCBmaW5hbCkgLSBpbml0IGlzIHJlcXVpcmVkYClcbiAgICBpbnZhcmlhbnQoaXNmdW5jKGZuKSwgYERvZG8jcmVkdWNlKGZuLCBpbml0LCBmaW5hbCkg4oCUIGZuIG5vdCBhIGZ1bmN0aW9uYClcbiAgICBpbnZhcmlhbnQoaXNmdW5jKGZpbmFsKSxcbiAgICAgIGBEb2RvI3JlZHVjZShmbiwgaW5pdCwgZmluYWwpIOKAlCBmaW5hbCBub3QgYSBmdW5jdGlvbmApXG4gICAgcmV0dXJuICh0aGlzLmFjdGlvbnMuc29tZShuZWVkU2xvd0Nhc2UpID8gdHJhbnNkdWNlIDogdHJhbnNkdWNlTm9CcmVhaykoXG4gICAgICBBcnJheXMuZ2V0KHRoaXMpLFxuICAgICAgY29tcG9zZSh0aGlzLmFjdGlvbnMpLFxuICAgICAge1xuICAgICAgICBbJ0BAdHJhbnNkdWNlci9zdGVwJ106IGZuLFxuICAgICAgICBbJ0BAdHJhbnNkdWNlci9yZXN1bHQnXTogZmluYWxcbiAgICAgIH0sXG4gICAgICBpbml0XG4gICAgKVxuICB9XG5cbiAgcmVkdWNlRWFjaChmbiwgaW5pdEZhY3RvcnksIGZpbmFsPWlkZW50aXR5KSB7XG4gICAgaW52YXJpYW50KGlzZnVuYyhpbml0RmFjdG9yeSksXG4gICAgICBgRG9kbyNyZWR1Y2VFYWNoKGZuLCBpbml0RmFjdG9yeSwgZmluYWwpIC0gaW5pdEZhY3Rvcnkgbm90IGEgZnVuY3Rpb25gKVxuICAgIGludmFyaWFudChpc2Z1bmMoZm4pLFxuICAgICAgYERvZG8jcmVkdWNlRWFjaChmbiwgaW5pdCwgZmluYWwpIOKAlCBmbiBub3QgYSBmdW5jdGlvbmApXG4gICAgaW52YXJpYW50KGlzZnVuYyhmaW5hbCksXG4gICAgICBgRG9kbyNyZWR1Y2VFYWNoKGZuLCBpbml0LCBmaW5hbCkg4oCUIGZpbmFsIG5vdCBhIGZ1bmN0aW9uYClcbiAgICBjb25zdCBbZm5zLCBpbml0cywgZmluYWxzXSA9IHVuemlwKFxuICAgICAgdGhpc1tuYW1lc10ubWFwKCgpID0+IFtmbiwgaW5pdEZhY3RvcnkoKSwgZmluYWxdKVxuICAgIClcbiAgICByZXR1cm4gemlwT2JqZWN0KFxuICAgICAgdGhpc1tuYW1lc10sXG4gICAgICB0aGlzLnJlZHVjZShjb21iaW5lUmVkdWNlcnMoZm5zLCB0cnVlKSwgaW5pdHMsIHNwcmVhZChmaW5hbHMpKVxuICAgIClcbiAgfVxuXG4gIHN0YXRzKC4uLm1ldGhvZHMpIHtcbiAgICBjb25zdCBbZm5zLCBpbml0cywgZmluYWxzXSA9IHppcCguLi5tZXRob2RzLm1hcChtID0+IFJFRFVDRVJTW21dKSlcbiAgICByZXR1cm4gdGhpc1tkaXNwYXRjaFJlZHVjZV0oXG4gICAgICBjb21iaW5lUmVkdWNlcnMoZm5zKSxcbiAgICAgICgpID0+IGluaXRzLm1hcChpID0+IGkoKSksXG4gICAgICBzcHJlYWQoZmluYWxzKVxuICAgIClcbiAgfVxuXG4gIGNvdW50KCkgeyByZXR1cm4gdGhpc1tkaXNwYXRjaFJlZHVjZV0oLi4uUkVEVUNFUlMuY291bnQpIH1cblxuICBzdW0oKSB7IHJldHVybiB0aGlzW2Rpc3BhdGNoUmVkdWNlXSguLi5SRURVQ0VSUy5zdW0pIH1cblxuICBtaW4oKSB7IHJldHVybiB0aGlzW2Rpc3BhdGNoUmVkdWNlXSguLi5SRURVQ0VSUy5taW4pIH1cblxuICBtYXgoKSB7IHJldHVybiB0aGlzW2Rpc3BhdGNoUmVkdWNlXSguLi5SRURVQ0VSUy5tYXgpIH1cblxuICBjb3VudFVuaXEoKSB7IHJldHVybiB0aGlzW2Rpc3BhdGNoUmVkdWNlXSguLi5SRURVQ0VSUy5jb3VudFVuaXEpIH1cblxuICBtZWFuKCkgeyByZXR1cm4gdGhpc1tkaXNwYXRjaFJlZHVjZV0oLi4uUkVEVUNFUlMubWVhbikgfVxuXG4gIGdyb3VwQnkobmFtZSwgZm4pIHtcbiAgICBpbnZhcmlhbnQobmFtZSwgYERvZG8jZ3JvdXBCeShuYW1lLCBmbikgLSBuYW1lIGlzIHJlcXVpcmVkYClcbiAgICBpbnZhcmlhbnQodGhpc1ttZXRhXS5jb2x1bW5zLmhhcyhuYW1lKSxcbiAgICAgIGBEb2RvI2dyb3VwKG5hbWUpIOKAlCBuYW1lICR7bmFtZX0gbm90IGluIGluZGV4YClcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKVxuICAgIGNvbnN0IGdyb3VwZXIgPSBjcmVhdGVHcm91cGVyKG1hcCwgZm4sIHRoaXNbaW5kZXhdW25hbWVdKVxuICAgIGNvbnN0IGFycmF5ID0gdGhpcy50b0FycmF5KClcbiAgICBjb25zdCBsZW4gPSBhcnJheS5sZW5ndGhcbiAgICBsZXQgaSA9IC0xXG4gICAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgICAgZ3JvdXBlcihhcnJheVtpXSlcbiAgICB9XG4gICAgbWFwLmZvckVhY2goYXJyYXlUb0RvZG8odGhpc1tpbmRleF0pKVxuICAgIHJldHVybiBGbG9jayhtYXApXG4gIH1cblxuICBmbG9jayhmbikge1xuICAgIGludmFyaWFudChpc2Z1bmMoZm4pLCBgRG9kbyNmbG9jayhmbikg4oCUIGZuIG5vdCBhIGZ1bmN0aW9uYClcbiAgICByZXR1cm4gRmxvY2soZm4odGhpcykpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXJyYXlUb0RvZG8oSW5kZXgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFycmF5LCBrZXksIG1hcCkge1xuICAgIG1hcC5zZXQoa2V5LCBuZXcgRG9kbyhhcnJheSwgSW5kZXgpKVxuICB9XG59XG5cbkRvZG8ucHJvdG90eXBlLmRyb3AgPSBEb2RvLnByb3RvdHlwZS5za2lwXG5cbmNvbnN0IGRvZG9NZXRob2RzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoRG9kby5wcm90b3R5cGUpXG5kb2RvTWV0aG9kcy5maWx0ZXIobWV0aG9kID0+IG1ldGhvZCAhPSAnY29uc3RydWN0b3InKVxuXG5mdW5jdGlvbiBGbG9jayhtYXAsIG1ldGhvZCwgYXJncykge1xuICBtYXAgPSBuZXcgTWFwKG1hcClcblxuICAvLyBpZiBjYWxsZWQgd2l0aCBtZXRob2QgYXJnIGNhbGwgdGhhdCBtZXRob2Qgb24gYWxsIERvZG9zXG4gIGlmIChtZXRob2QpXG4gICAgZm9yIChjb25zdCBba2V5LCBkb2RvXSBvZiBtYXAuZW50cmllcygpKVxuICAgICAgbWFwLnNldChrZXksIGRvZG9bbWV0aG9kXSguLi5hcmdzKSlcblxuICAvLyBpZiB0aGUgdmFsdWVzIGFyZSBEb2RvcyBhZGQgdGhlIERvZG8gbWV0aG9kcyB0byB0aGUgcmV0dXJuZWQgTWFwXG4gIGlmIChtYXAudmFsdWVzKCkubmV4dCgpLnZhbHVlIGluc3RhbmNlb2YgRG9kbylcbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBkb2RvTWV0aG9kcylcbiAgICAgIG1hcFttZXRob2RdID0gKC4uLmFyZ3MpID0+IEZsb2NrKG1hcCwgbWV0aG9kLCBhcmdzKVxuXG4gIC8vIG1hcEVudHJpZXMgbWV0aG9kIHdpdGggc2FtZSBzaWduYXR1cmUgYXMgbmF0aXZlIE1hcCNmb3JFYWNoKClcbiAgbWFwLm1hcEVudHJpZXMgPSBtYXBFbnRyaWVzXG5cbiAgcmV0dXJuIG1hcFxufVxuXG5mdW5jdGlvbiBtYXBFbnRyaWVzKGZuKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzKCldXG4gIGxldCBpID0gdGhpcy5zaXplXG4gIHdoaWxlIChpLS0pIHtcbiAgICBsZXQgZW50cnkgPSBlbnRyaWVzW2ldXG4gICAgZW50cmllc1tpXSA9IGZuKGVudHJ5WzFdLCBlbnRyeVswXSwgdGhpcylcbiAgfVxuICByZXR1cm4gZW50cmllc1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,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bnRlbnQiOlsiaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnXG5pbXBvcnQgemlwIGZyb20gJ2xvZGFzaC96aXAnXG5pbXBvcnQgemlwT2JqZWN0IGZyb20gJ2xvZGFzaC96aXBPYmplY3QnXG5pbXBvcnQgdW56aXAgZnJvbSAnbG9kYXNoL3VuemlwJ1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nXG5pbXBvcnQge21hcCwgZmlsdGVyLCBkcm9wLCB0YWtlLCB0cmFuc2R1Y2V9IGZyb20gJ3RyYW5zZHVjZXJzLmpzJ1xuXG5pbXBvcnQge1xuICBpZGVudGl0eSwgY29tYmluZVJlZHVjZXJzLCBSRURVQ0VSUywgc3ByZWFkLCBjcmVhdGVHcm91cGVyLCBpc2Z1bmMsXG4gIGFycmF5VG9JbmRleCwgY29tcG9zZSwgdHJhbnNkdWNlTm9CcmVhaywgYXJyYXlSZWR1Y2VyXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgYWN0aW9uID0gU3ltYm9sKCdhY3Rpb24nKVxuY29uc3QgaW5kZXggPSBTeW1ib2woJ2luZGV4JylcbmNvbnN0IG5hbWVzID0gU3ltYm9sKCduYW1lcycpXG5jb25zdCBtZXRhID0gU3ltYm9sKCdtZXRhJylcbmNvbnN0IGRpc3BhdGNoUmVkdWNlID0gU3ltYm9sKCdkaXNwYXRjaFJlZHVjZScpXG5jb25zdCBub0FjdGlvbnMgPSBbXVxuXG5jb25zdCBBcnJheXMgPSBuZXcgV2Vha01hcCgpXG5jb25zdCBNZXRhZGF0YSA9IG5ldyBXZWFrTWFwKClcblxuY29uc3QgbmVlZFNsb3dDYXNlID0gYSA9PlxuICBhLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ25ldyBUYWtlJykgfHwgYS50b1N0cmluZygpLmluY2x1ZGVzKCduZXcgRHJvcCcpXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERvZG8ge1xuICBjb25zdHJ1Y3RvcihhcnJheSwgaW5kZXgsIGFjdGlvbnM9bm9BY3Rpb25zKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5kZXgpKVxuICAgICAgaW5kZXggPSBhcnJheVRvSW5kZXgoaW5kZXgpXG5cbiAgICBpbnZhcmlhbnQoQXJyYXkuaXNBcnJheShhcnJheSksIGBuZXcgRG9kbyhhcnIsIGluZGV4KSAtIGFyciBpcyByZXF1aXJlZGApXG4gICAgaW52YXJpYW50KGluZGV4ICYmIE9iamVjdC5rZXlzKGluZGV4KS5sZW5ndGggPT0gYXJyYXlbMF0ubGVuZ3RoLFxuICAgICAgYG5ldyBEb2RvKGFyciwgaW5kZXgpIC0gaW5kZXggaXMgbWlzc2luZyBvciBtYWxmb3JtZWRgKVxuXG4gICAgQXJyYXlzLnNldCh0aGlzLCBhcnJheSlcbiAgICBpZiAoIU1ldGFkYXRhLmhhcyhhcnJheSkpXG4gICAgICBNZXRhZGF0YS5zZXQoYXJyYXksIHtcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBjb2x1bW5zOiBuZXcgU2V0KE9iamVjdC5rZXlzKGluZGV4KSksXG4gICAgICB9KVxuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnNcbiAgfVxuXG4gIGdldCBbbWV0YV0oKSB7IHJldHVybiBNZXRhZGF0YS5nZXQoQXJyYXlzLmdldCh0aGlzKSkgfVxuXG4gIGdldCBbaW5kZXhdKCkge1xuICAgIGNvbnN0IGxhc3RNYXBXaXRoSW5kZXggPSB0aGlzLmFjdGlvbnMuZmlsdGVyKGFjdCA9PiAhIWFjdC5JKS5zbGljZSgtMSlcblxuICAgIGlmIChsYXN0TWFwV2l0aEluZGV4Lmxlbmd0aClcbiAgICAgIHJldHVybiBsYXN0TWFwV2l0aEluZGV4WzBdLklcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpc1ttZXRhXS5pbmRleFxuICB9XG5cbiAgZ2V0IFtuYW1lc10oKSB7XG4gICAgY29uc3QgSSA9IHRoaXNbaW5kZXhdXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKEkpLnNvcnQoKGEsIGIpID0+IElbYV0gLSBJW2JdKVxuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzLnRvQXJyYXkoKS52YWx1ZXMoKSB9XG5cbiAgdG9BcnJheSgpIHtcbiAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aClcbiAgICAgIHJldHVybiAodGhpcy5hY3Rpb25zLnNvbWUobmVlZFNsb3dDYXNlKSA/IHRyYW5zZHVjZSA6IHRyYW5zZHVjZU5vQnJlYWspKFxuICAgICAgICBBcnJheXMuZ2V0KHRoaXMpLFxuICAgICAgICBjb21wb3NlKHRoaXMuYWN0aW9ucyksXG4gICAgICAgIGFycmF5UmVkdWNlcixcbiAgICAgICAgW11cbiAgICAgIClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gQXJyYXlzLmdldCh0aGlzKVxuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHsgcmV0dXJuIHRoaXMudG9BcnJheSgpLmxlbmd0aCB9XG5cbiAgdW5pcSgpIHsgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMpXSB9XG5cbiAgW2FjdGlvbl0oYWN0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBEb2RvKFxuICAgICAgQXJyYXlzLmdldCh0aGlzKSwgdGhpc1ttZXRhXS5pbmRleCwgWy4uLnRoaXMuYWN0aW9ucywgYWN0aW9uXSlcbiAgfVxuXG4gIGZpbHRlcihmbikge1xuICAgIGludmFyaWFudChpc2Z1bmMoZm4pLCBgRG9kbyNmaWx0ZXIoZm4pIOKAlCBmbiBub3QgYSBmdW5jdGlvbmApXG4gICAgaWYgKHRoaXNbbmFtZXNdLmxlbmd0aCA9PSAxKSB7XG4gICAgICByZXR1cm4gdGhpc1thY3Rpb25dKGZpbHRlcihmbikpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IEkgPSB0aGlzW2luZGV4XVxuICAgICAgcmV0dXJuIHRoaXNbYWN0aW9uXShmaWx0ZXIocm93ID0+IGZuKHJvdywgSSkpKVxuICAgIH1cbiAgfVxuXG4gIGZpbHRlckJ5KG5hbWUsIGZuKSB7XG4gICAgaW52YXJpYW50KG5hbWUsIGBEb2RvI2ZpbHRlckJ5KG5hbWUsIGZuKSAtIGNvbCBpcyByZXF1aXJlZGApXG4gICAgaW52YXJpYW50KGlzZnVuYyhmbiksIGBEb2RvI2ZpbHRlckJ5KG5hbWUsIGZuKSAtIGZuIG5vdCBhIGZ1bmN0aW9uYClcbiAgICBjb25zdCBjb2wgPSB0aGlzW2luZGV4XVtuYW1lXVxuICAgIHJldHVybiB0aGlzW2FjdGlvbl0oIGZpbHRlcihyb3cgPT4gZm4ocm93W2NvbF0pKSApXG4gIH1cblxuICBtYXAoZm4pIHtcbiAgICBpbnZhcmlhbnQoaXNmdW5jKGZuKSwgYERvZG8jbWFwKGZuKSDigJQgZm4gbm90IGEgZnVuY3Rpb25gKVxuICAgIGlmICh0aGlzW25hbWVzXS5sZW5ndGggPT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXNbYWN0aW9uXShtYXAoZm4pKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBJID0gdGhpc1tpbmRleF1cbiAgICAgIHJldHVybiB0aGlzW2FjdGlvbl0obWFwKHJvdyA9PiBmbihyb3csIEkpKSlcbiAgICB9XG4gIH1cblxuICBjb2wobmFtZSkge1xuICAgIGludmFyaWFudChuYW1lLCBgRG9kbyNmaWx0ZXJCeShuYW1lLCBmbikgLSBjb2wgaXMgcmVxdWlyZWRgKVxuICAgIGludmFyaWFudCh0aGlzW21ldGFdLmNvbHVtbnMuaGFzKG5hbWUpLFxuICAgICAgYERvZG8jY29sKG5hbWUpIOKAlCBuYW1lICR7bmFtZX0gbm90IGluIGluZGV4YClcbiAgICBjb25zdCBjb2wgPSB0aGlzW2luZGV4XVtuYW1lXVxuICAgIGNvbnN0IGZuID0gbWFwKHJvdyA9PiByb3dbY29sXSlcbiAgICBmbi5JID0gYXJyYXlUb0luZGV4KFtuYW1lXSlcbiAgICByZXR1cm4gdGhpc1thY3Rpb25dKGZuKVxuICB9XG5cbiAgY29scyguLi5uYW1lcykge1xuICAgIG5hbWVzID0gbmFtZXMubGVuZ3RoID8gZmxhdHRlbihuYW1lcykgOiB1bmRlZmluZWRcbiAgICBpbnZhcmlhbnQobmFtZXMsIGBEb2RvI2NvbHMobmFtZXMpIC0gbmFtZXMgaXMgcmVxdWlyZWRgKVxuICAgIG5hbWVzLmZvckVhY2gobiA9PiBpbnZhcmlhbnQodGhpc1ttZXRhXS5jb2x1bW5zLmhhcyhuKSxcbiAgICAgIGBEb2RvI2NvbHMobmFtZXMpIC0gbmFtZSAke259IG5vdCBpbiBpbmRleGApKVxuXG4gICAgY29uc3QgaW5kaWNlcyA9IG5hbWVzLm1hcChuYW1lID0+IHRoaXNbaW5kZXhdW25hbWVdKVxuICAgIGNvbnN0IGlubmVyID0gbmV3IEZ1bmN0aW9uKCdyb3cnLCBgXG4gICAgICByZXR1cm4gWyR7aW5kaWNlcy5tYXAoaSA9PiBgcm93WyR7aX1dYCkuam9pbignLCcpfV1cbiAgICBgKVxuICAgIGNvbnN0IGZuID0gbWFwKGlubmVyKVxuICAgIGZuLkkgPSBhcnJheVRvSW5kZXgobmFtZXMpXG4gICAgcmV0dXJuIHRoaXNbYWN0aW9uXShmbilcbiAgfVxuXG4gIHNraXAoYW1vdW50KSB7XG4gICAgaW52YXJpYW50KGFtb3VudCwgYERvZG8jc2tpcChhbW91bnQpIC0gYW1vdW50IGlzIHJlcXVpcmVkYClcbiAgICBpbnZhcmlhbnQoYW1vdW50ID4gMCwgYERvZG8jc2tpcChhbW91bnQpIOKAlCBhbW91bnQgc21hbGxlciB0aGFuIDBgKVxuICAgIHJldHVybiB0aGlzW2FjdGlvbl0oZHJvcChhbW91bnQpKVxuICB9XG5cbiAgdGFrZShhbW91bnQpIHtcbiAgICBpbnZhcmlhbnQoYW1vdW50LCBgRG9kbyN0YWtlKGFtb3VudCkgLSBhbW91bnQgaXMgcmVxdWlyZWRgKVxuICAgIGludmFyaWFudChhbW91bnQgPiAwLCBgRG9kbyN0YWtlKGFtb3VudCkg4oCUIGFtb3VudCBzbWFsbGVyIHRoYW4gMGApXG4gICAgcmV0dXJuIHRoaXNbYWN0aW9uXSh0YWtlKGFtb3VudCkpXG4gIH1cblxuICBbZGlzcGF0Y2hSZWR1Y2VdKGZuLCBpbml0RmFjdG9yeSwgZmluYWwpIHtcbiAgICBpZiAodGhpc1tuYW1lc10ubGVuZ3RoID09IDEpXG4gICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoZm4sIGluaXRGYWN0b3J5KCksIGZpbmFsKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnJlZHVjZUVhY2goZm4sIGluaXRGYWN0b3J5LCBmaW5hbClcbiAgfVxuXG4gIHJlZHVjZShmbiwgaW5pdCwgZmluYWw9aWRlbnRpdHkpIHtcbiAgICBpbnZhcmlhbnQoaW5pdCAhPSBudWxsLCBgRG9kbyNyZWR1Y2UoZm4sIGluaXQsIGZpbmFsKSAtIGluaXQgaXMgcmVxdWlyZWRgKVxuICAgIGludmFyaWFudChpc2Z1bmMoZm4pLCBgRG9kbyNyZWR1Y2UoZm4sIGluaXQsIGZpbmFsKSDigJQgZm4gbm90IGEgZnVuY3Rpb25gKVxuICAgIGludmFyaWFudChpc2Z1bmMoZmluYWwpLFxuICAgICAgYERvZG8jcmVkdWNlKGZuLCBpbml0LCBmaW5hbCkg4oCUIGZpbmFsIG5vdCBhIGZ1bmN0aW9uYClcbiAgICByZXR1cm4gKHRoaXMuYWN0aW9ucy5zb21lKG5lZWRTbG93Q2FzZSkgPyB0cmFuc2R1Y2UgOiB0cmFuc2R1Y2VOb0JyZWFrKShcbiAgICAgIEFycmF5cy5nZXQodGhpcyksXG4gICAgICBjb21wb3NlKHRoaXMuYWN0aW9ucyksXG4gICAgICB7XG4gICAgICAgIFsnQEB0cmFuc2R1Y2VyL3N0ZXAnXTogZm4sXG4gICAgICAgIFsnQEB0cmFuc2R1Y2VyL3Jlc3VsdCddOiBmaW5hbFxuICAgICAgfSxcbiAgICAgIGluaXRcbiAgICApXG4gIH1cblxuICByZWR1Y2VFYWNoKGZuLCBpbml0RmFjdG9yeSwgZmluYWw9aWRlbnRpdHkpIHtcbiAgICBpbnZhcmlhbnQoaXNmdW5jKGluaXRGYWN0b3J5KSxcbiAgICAgIGBEb2RvI3JlZHVjZUVhY2goZm4sIGluaXRGYWN0b3J5LCBmaW5hbCkgLSBpbml0RmFjdG9yeSBub3QgYSBmdW5jdGlvbmApXG4gICAgaW52YXJpYW50KGlzZnVuYyhmbiksXG4gICAgICBgRG9kbyNyZWR1Y2VFYWNoKGZuLCBpbml0LCBmaW5hbCkg4oCUIGZuIG5vdCBhIGZ1bmN0aW9uYClcbiAgICBpbnZhcmlhbnQoaXNmdW5jKGZpbmFsKSxcbiAgICAgIGBEb2RvI3JlZHVjZUVhY2goZm4sIGluaXQsIGZpbmFsKSDigJQgZmluYWwgbm90IGEgZnVuY3Rpb25gKVxuICAgIGNvbnN0IFtmbnMsIGluaXRzLCBmaW5hbHNdID0gdW56aXAoXG4gICAgICB0aGlzW25hbWVzXS5tYXAoKCkgPT4gW2ZuLCBpbml0RmFjdG9yeSgpLCBmaW5hbF0pXG4gICAgKVxuICAgIHJldHVybiB6aXBPYmplY3QoXG4gICAgICB0aGlzW25hbWVzXSxcbiAgICAgIHRoaXMucmVkdWNlKGNvbWJpbmVSZWR1Y2VycyhmbnMsIHRydWUpLCBpbml0cywgc3ByZWFkKGZpbmFscykpXG4gICAgKVxuICB9XG5cbiAgc3RhdHMoLi4ubWV0aG9kcykge1xuICAgIGludmFyaWFudChtZXRob2RzICYmIG1ldGhvZHMubGVuZ3RoLFxuICAgICAgYERvZG8jc3RhdHMoLi4ubWV0aG9kcykgLSBhdCBsZWFzdCBvbmUgbWV0aG9kIGlzIHJlcXVpcmVkYClcbiAgICBtZXRob2RzLmZvckVhY2gobSA9PiBpbnZhcmlhbnQodHlwZW9mIG0gPT0gJ3N0cmluZycgJiYgbSBpbiBSRURVQ0VSUyxcbiAgICAgIGBEb2RvI3N0YXRzKC4uLm1ldGhvZHMpIC0gbWV0aG9kICR7bX0gaXMgbm90IGltcGxlbWVudGVkYCkpXG4gICAgY29uc3QgW2ZucywgaW5pdHMsIGZpbmFsc10gPSB6aXAoLi4ubWV0aG9kcy5tYXAobSA9PiBSRURVQ0VSU1ttXSkpXG4gICAgcmV0dXJuIHRoaXNbZGlzcGF0Y2hSZWR1Y2VdKFxuICAgICAgY29tYmluZVJlZHVjZXJzKGZucyksXG4gICAgICAoKSA9PiBpbml0cy5tYXAoaSA9PiBpKCkpLFxuICAgICAgc3ByZWFkKGZpbmFscylcbiAgICApXG4gIH1cblxuICBjb3VudCgpIHsgcmV0dXJuIHRoaXNbZGlzcGF0Y2hSZWR1Y2VdKC4uLlJFRFVDRVJTLmNvdW50KSB9XG5cbiAgc3VtKCkgeyByZXR1cm4gdGhpc1tkaXNwYXRjaFJlZHVjZV0oLi4uUkVEVUNFUlMuc3VtKSB9XG5cbiAgbWluKCkgeyByZXR1cm4gdGhpc1tkaXNwYXRjaFJlZHVjZV0oLi4uUkVEVUNFUlMubWluKSB9XG5cbiAgbWF4KCkgeyByZXR1cm4gdGhpc1tkaXNwYXRjaFJlZHVjZV0oLi4uUkVEVUNFUlMubWF4KSB9XG5cbiAgY291bnRVbmlxKCkgeyByZXR1cm4gdGhpc1tkaXNwYXRjaFJlZHVjZV0oLi4uUkVEVUNFUlMuY291bnRVbmlxKSB9XG5cbiAgbWVhbigpIHsgcmV0dXJuIHRoaXNbZGlzcGF0Y2hSZWR1Y2VdKC4uLlJFRFVDRVJTLm1lYW4pIH1cblxuICBncm91cEJ5KG5hbWUsIGZuKSB7XG4gICAgaW52YXJpYW50KG5hbWUsIGBEb2RvI2dyb3VwQnkobmFtZSwgZm4pIC0gbmFtZSBpcyByZXF1aXJlZGApXG4gICAgaW52YXJpYW50KHRoaXNbbWV0YV0uY29sdW1ucy5oYXMobmFtZSksXG4gICAgICBgRG9kbyNncm91cChuYW1lKSDigJQgbmFtZSAke25hbWV9IG5vdCBpbiBpbmRleGApXG5cbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwKClcbiAgICBjb25zdCBncm91cGVyID0gY3JlYXRlR3JvdXBlcihtYXAsIGZuLCB0aGlzW2luZGV4XVtuYW1lXSlcbiAgICBjb25zdCBhcnJheSA9IHRoaXMudG9BcnJheSgpXG4gICAgY29uc3QgbGVuID0gYXJyYXkubGVuZ3RoXG4gICAgbGV0IGkgPSAtMVxuICAgIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICAgIGdyb3VwZXIoYXJyYXlbaV0pXG4gICAgfVxuICAgIG1hcC5mb3JFYWNoKGFycmF5VG9Eb2RvKHRoaXNbaW5kZXhdKSlcbiAgICByZXR1cm4gRmxvY2sobWFwKVxuICB9XG5cbiAgZmxvY2soZm4pIHtcbiAgICBpbnZhcmlhbnQoaXNmdW5jKGZuKSwgYERvZG8jZmxvY2soZm4pIOKAlCBmbiBub3QgYSBmdW5jdGlvbmApXG4gICAgcmV0dXJuIEZsb2NrKGZuKHRoaXMpKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFycmF5VG9Eb2RvKEluZGV4KSB7XG4gIHJldHVybiBmdW5jdGlvbihhcnJheSwga2V5LCBtYXApIHtcbiAgICBtYXAuc2V0KGtleSwgbmV3IERvZG8oYXJyYXksIEluZGV4KSlcbiAgfVxufVxuXG5Eb2RvLnByb3RvdHlwZS5kcm9wID0gRG9kby5wcm90b3R5cGUuc2tpcFxuXG5jb25zdCBkb2RvTWV0aG9kcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKERvZG8ucHJvdG90eXBlKVxuZG9kb01ldGhvZHMuZmlsdGVyKG1ldGhvZCA9PiBtZXRob2QgIT0gJ2NvbnN0cnVjdG9yJylcblxuZnVuY3Rpb24gRmxvY2sobWFwLCBtZXRob2QsIGFyZ3MpIHtcbiAgbWFwID0gbmV3IE1hcChtYXApXG5cbiAgLy8gaWYgY2FsbGVkIHdpdGggbWV0aG9kIGFyZyBjYWxsIHRoYXQgbWV0aG9kIG9uIGFsbCBEb2Rvc1xuICBpZiAobWV0aG9kKVxuICAgIGZvciAoY29uc3QgW2tleSwgZG9kb10gb2YgbWFwLmVudHJpZXMoKSlcbiAgICAgIG1hcC5zZXQoa2V5LCBkb2RvW21ldGhvZF0oLi4uYXJncykpXG5cbiAgLy8gaWYgdGhlIHZhbHVlcyBhcmUgRG9kb3MgYWRkIHRoZSBEb2RvIG1ldGhvZHMgdG8gdGhlIHJldHVybmVkIE1hcFxuICBpZiAobWFwLnZhbHVlcygpLm5leHQoKS52YWx1ZSBpbnN0YW5jZW9mIERvZG8pXG4gICAgZm9yIChjb25zdCBtZXRob2Qgb2YgZG9kb01ldGhvZHMpXG4gICAgICBtYXBbbWV0aG9kXSA9ICguLi5hcmdzKSA9PiBGbG9jayhtYXAsIG1ldGhvZCwgYXJncylcblxuICAvLyBtYXBFbnRyaWVzIG1ldGhvZCB3aXRoIHNhbWUgc2lnbmF0dXJlIGFzIG5hdGl2ZSBNYXAjZm9yRWFjaCgpXG4gIG1hcC5tYXBFbnRyaWVzID0gbWFwRW50cmllc1xuXG4gIHJldHVybiBtYXBcbn1cblxuZnVuY3Rpb24gbWFwRW50cmllcyhmbikge1xuICBjb25zdCBlbnRyaWVzID0gWy4uLnRoaXMuZW50cmllcygpXVxuICBjb25zdCBsZW4gPSB0aGlzLnNpemVcbiAgbGV0IGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgbGV0IGVudHJ5ID0gZW50cmllc1tpXVxuICAgIGVudHJpZXNbaV0gPSBmbihlbnRyeVsxXSwgZW50cnlbMF0sIHRoaXMpXG4gIH1cbiAgcmV0dXJuIGVudHJpZXNcbn1cbiJdfQ==
{
"name": "dodos",
"version": "2.5.0",
"version": "2.5.1",
"description": "Pandas-inspired iterator-based data wrangling library for js",

@@ -14,2 +14,4 @@ "main": "lib/dodo.js",

"test:cov": "nyc ava",
"test:covreport": "nyc report --reporter=html && open coverage/index.html",
"coverage": "npm run test:cov && npm run test:covreport",
"prepush": "npm test",

@@ -16,0 +18,0 @@ "prepublish": "npm test && npm run clean && npm run build"

@@ -123,4 +123,4 @@ import invariant from 'invariant'

invariant(names, `Dodo#cols(names) - names is required`)
names.forEach(n => invariant(
this[meta].columns.has(n), `Dodo#cols(names) - name ${n} not in index`))
names.forEach(n => invariant(this[meta].columns.has(n),
`Dodo#cols(names) - name ${n} not in index`))

@@ -188,2 +188,6 @@ const indices = names.map(name => this[index][name])

stats(...methods) {
invariant(methods && methods.length,
`Dodo#stats(...methods) - at least one method is required`)
methods.forEach(m => invariant(typeof m == 'string' && m in REDUCERS,
`Dodo#stats(...methods) - method ${m} is not implemented`))
const [fns, inits, finals] = zip(...methods.map(m => REDUCERS[m]))

@@ -264,4 +268,5 @@ return this[dispatchReduce](

const entries = [...this.entries()]
let i = this.size
while (i--) {
const len = this.size
let i = -1
while (++i < len) {
let entry = entries[i]

@@ -268,0 +273,0 @@ entries[i] = fn(entry[1], entry[0], this)

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc