From b18ee8b5bf3ae7cdf893e2392085a0a51d8d6eac Mon Sep 17 00:00:00 2001 From: Roger Qiu Date: Wed, 31 Jan 2018 16:11:27 +1100 Subject: [PATCH] Updated resource-counter to 1.2.2 with memory fix, and documentation to cover * exports --- dist/index.browser.umd.js | 3988 +++++++++++++++++++++++++++---------- doc/assets/anchor.js | 12 +- doc/assets/site.js | 11 +- doc/index.html | 3508 ++++++++++++++++++-------------- package-lock.json | 2090 ++++++++----------- package.json | 4 +- 6 files changed, 5725 insertions(+), 3888 deletions(-) diff --git a/dist/index.browser.umd.js b/dist/index.browser.umd.js index bc59637..748c025 100644 --- a/dist/index.browser.umd.js +++ b/dist/index.browser.umd.js @@ -5514,1381 +5514,3265 @@ exports.default = function (subClass, superClass) { var _inherits = unwrapExports(inherits); -var CounterBrowser = createCommonjsModule(function (module, exports) { +var index_browser_umd$1 = createCommonjsModule(function (module, exports) { (function (global, factory) { - module.exports = factory(); -}(commonjsGlobal, (function () { var commonjsGlobal$$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - + factory(exports); +}(commonjsGlobal, (function (exports) { var commonjsGlobal$$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +function unwrapExports$$1 (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} function createCommonjsModule$$1(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } -var bitset = createCommonjsModule$$1(function (module, exports) { -/** - * @license BitSet.js v4.0.1 14/08/2015 - * http://www.xarg.org/2014/03/javascript-bit-array/ - * - * Copyright (c) 2016, Robert Eisele (robert@xarg.org) - * Dual licensed under the MIT or GPL Version 2 licenses. - **/ -(function(root) { - - var WORD_LENGTH = 32; - - /** - * The log base 2 of WORD_LENGTH - * @const - * @type number - */ - var WORD_LOG = 5; - - /** - * Calculates the number of set bits - * - * @param {number} v - * @returns {number} - */ - function popCount(v) { - - // Warren, H. (2009). Hacker`s Delight. New York, NY: Addison-Wesley - - v -= ((v >>> 1) & 0x55555555); - v = (v & 0x33333333) + ((v >>> 2) & 0x33333333); - return (((v + (v >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24); - } - - /** - * Divide a number in base two by B - * - * @param {Array} arr - * @param {number} B - * @returns {number} - */ - function divide(arr, B) { - - var r = 0; - var d; - var i = 0; +var _iterStep = function(done, value){ + return {value: value, done: !!done}; +}; - for (; i < arr.length; i++) { - r *= 2; - d = (arr[i] + r) / B | 0; - r = (arr[i] + r) % B; - arr[i] = d; - } - return r; - } +var _iterators = {}; - /** - * Parses the parameters and set variable P - * - * @param {Object} P - * @param {string|BitSet|Array|Uint8Array|number=} val - */ - function parse(P, val) { +var toString = {}.toString; - if (val == null) { - P['data'] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - P['_'] = 0; - return; - } +var _cof = function(it){ + return toString.call(it).slice(8, -1); +}; - if (val instanceof BitSet) { - P['data'] = val['data']; - P['_'] = val['_']; - return; - } +// fallback for non-array-like ES3 and non-enumerable old V8 strings - switch (typeof val) { +var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function(it){ + return _cof(it) == 'String' ? it.split('') : Object(it); +}; - case 'number': - P['data'] = [val | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - P['_'] = 0; - break; +// 7.2.1 RequireObjectCoercible(argument) +var _defined = function(it){ + if(it == undefined)throw TypeError("Can't call method on " + it); + return it; +}; - case 'string': +// to indexed object, toObject with fallback for non-array-like ES3 strings - var base = 2; - var len = WORD_LENGTH; +var _toIobject = function(it){ + return _iobject(_defined(it)); +}; - if (val.indexOf('0b') === 0) { - val = val.substr(2); - } else if (val.indexOf('0x') === 0) { - val = val.substr(2); - base = 16; - len = 8; - } +var _library = true; - P['data'] = []; - P['_'] = 0; +var _global = createCommonjsModule$$1(function (module) { +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); +if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef +}); - var a = val.length - len; - var b = val.length; +var _core = createCommonjsModule$$1(function (module) { +var core = module.exports = {version: '2.4.0'}; +if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef +}); - do { +var _core_1 = _core.version; - var num = parseInt(val.slice(a > 0 ? a : 0, b), base); +var _aFunction = function(it){ + if(typeof it != 'function')throw TypeError(it + ' is not a function!'); + return it; +}; - if (isNaN(num)) { - throw SyntaxError('Invalid param'); - } +// optional / simple context binding - P['data'].push(num |  0); +var _ctx = function(fn, that, length){ + _aFunction(fn); + if(that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } + return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; - if (a <= 0) - break; +var _isObject = function(it){ + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; - a -= len; - b -= len; - } while (1); +var _anObject = function(it){ + if(!_isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; - break; +var _fails = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; - default: - - P['data'] = [0]; - var data = P['data']; +// Thank's IE8 for his funny defineProperty +var _descriptors = !_fails(function(){ + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; +}); - if (val instanceof Array) { +var document$1 = _global.document; +var is = _isObject(document$1) && _isObject(document$1.createElement); +var _domCreate = function(it){ + return is ? document$1.createElement(it) : {}; +}; - for (var i = val.length - 1; i >= 0; i--) { - - var ndx = val[i]; +var _ie8DomDefine = !_descriptors && !_fails(function(){ + return Object.defineProperty(_domCreate('div'), 'a', {get: function(){ return 7; }}).a != 7; +}); - if (ndx === Infinity) { - P['_'] = -1; - } else { - scale(P, ndx); - data[ndx >>> WORD_LOG] |= 1 << ndx; - } - } - break; - } +// 7.1.1 ToPrimitive(input [, PreferredType]) - if (Uint8Array && val instanceof Uint8Array) { +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +var _toPrimitive = function(it, S){ + if(!_isObject(it))return it; + var fn, val; + if(S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it)))return val; + if(typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it)))return val; + if(!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it)))return val; + throw TypeError("Can't convert object to primitive value"); +}; - var bits = 8; +var dP = Object.defineProperty; - scale(P, val.length * bits); +var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes){ + _anObject(O); + P = _toPrimitive(P, true); + _anObject(Attributes); + if(_ie8DomDefine)try { + return dP(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)O[P] = Attributes.value; + return O; +}; - for (var i = 0; i < val.length; i++) { +var _objectDp = { + f: f +}; - var n = val[i]; +var _propertyDesc = function(bitmap, value){ + return { + enumerable : !(bitmap & 1), + configurable: !(bitmap & 2), + writable : !(bitmap & 4), + value : value + }; +}; - for (var j = 0; j < bits; j++) { +var _hide = _descriptors ? function(object, key, value){ + return _objectDp.f(object, key, _propertyDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; - var k = i * bits + j; +var PROTOTYPE = 'prototype'; - data[k >>> WORD_LOG] |= (n >> j & 1) << k; - } - } - break; - } +var $export = function(type, name, source){ + var IS_FORCED = type & $export.F + , IS_GLOBAL = type & $export.G + , IS_STATIC = type & $export.S + , IS_PROTO = type & $export.P + , IS_BIND = type & $export.B + , IS_WRAP = type & $export.W + , exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}) + , expProto = exports[PROTOTYPE] + , target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] : (_global[name] || {})[PROTOTYPE] + , key, own, out; + if(IS_GLOBAL)source = name; + for(key in source){ + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if(own && key in exports)continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? _ctx(out, _global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function(C){ + var F = function(a, b, c){ + if(this instanceof C){ + switch(arguments.length){ + case 0: return new C; + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if(IS_PROTO){ + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if(type & $export.R && expProto && !expProto[key])_hide(expProto, key, out); + } + } +}; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +var _export = $export; + +var _redefine = _hide; + +var hasOwnProperty = {}.hasOwnProperty; +var _has = function(it, key){ + return hasOwnProperty.call(it, key); +}; + +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +var _toInteger = function(it){ + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + +// 7.1.15 ToLength +var min = Math.min; +var _toLength = function(it){ + return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + +var max = Math.max; +var min$1 = Math.min; +var _toIndex = function(index, length){ + index = _toInteger(index); + return index < 0 ? max(index + length, 0) : min$1(index, length); +}; + +// false -> Array#indexOf +// true -> Array#includes + +var _arrayIncludes = function(IS_INCLUDES){ + return function($this, el, fromIndex){ + var O = _toIobject($this) + , length = _toLength(O.length) + , index = _toIndex(fromIndex, length) + , value; + // Array#includes uses SameValueZero equality algorithm + if(IS_INCLUDES && el != el)while(length > index){ + value = O[index++]; + if(value != value)return true; + // Array#toIndex ignores holes, Array#includes - not + } else for(;length > index; index++)if(IS_INCLUDES || index in O){ + if(O[index] === el)return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +var SHARED = '__core-js_shared__'; +var store = _global[SHARED] || (_global[SHARED] = {}); +var _shared = function(key){ + return store[key] || (store[key] = {}); +}; + +var id = 0; +var px = Math.random(); +var _uid = function(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + +var shared = _shared('keys'); +var _sharedKey = function(key){ + return shared[key] || (shared[key] = _uid(key)); +}; + +var arrayIndexOf = _arrayIncludes(false); +var IE_PROTO$1 = _sharedKey('IE_PROTO'); + +var _objectKeysInternal = function(object, names){ + var O = _toIobject(object) + , i = 0 + , result = [] + , key; + for(key in O)if(key != IE_PROTO$1)_has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while(names.length > i)if(_has(O, key = names[i++])){ + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + +// IE 8- don't enum bug keys +var _enumBugKeys = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) + + +var _objectKeys = Object.keys || function keys(O){ + return _objectKeysInternal(O, _enumBugKeys); +}; + +var _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties){ + _anObject(O); + var keys = _objectKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)_objectDp.f(O, P = keys[i++], Properties[P]); + return O; +}; + +var _html = _global.document && document.documentElement; + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var IE_PROTO = _sharedKey('IE_PROTO'); +var Empty = function(){ /* empty */ }; +var PROTOTYPE$1 = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = _domCreate('iframe') + , i = _enumBugKeys.length + , lt = '<' + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + _html.appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while(i--)delete createDict[PROTOTYPE$1][_enumBugKeys[i]]; + return createDict(); +}; + +var _objectCreate = Object.create || function create(O, Properties){ + var result; + if(O !== null){ + Empty[PROTOTYPE$1] = _anObject(O); + result = new Empty; + Empty[PROTOTYPE$1] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : _objectDps(result, Properties); +}; + +var _wks = createCommonjsModule$$1(function (module) { +var store = _shared('wks') + , Symbol = _global.Symbol + , USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function(name){ + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : _uid)('Symbol.' + name)); +}; + +$exports.store = store; +}); + +var def = _objectDp.f; +var TAG = _wks('toStringTag'); + +var _setToStringTag = function(it, tag, stat){ + if(it && !_has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); +}; + +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +_hide(IteratorPrototype, _wks('iterator'), function(){ return this; }); + +var _iterCreate = function(Constructor, NAME, next){ + Constructor.prototype = _objectCreate(IteratorPrototype, {next: _propertyDesc(1, next)}); + _setToStringTag(Constructor, NAME + ' Iterator'); +}; + +// 7.1.13 ToObject(argument) + +var _toObject = function(it){ + return Object(_defined(it)); +}; + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var IE_PROTO$2 = _sharedKey('IE_PROTO'); +var ObjectProto = Object.prototype; + +var _objectGpo = Object.getPrototypeOf || function(O){ + O = _toObject(O); + if(_has(O, IE_PROTO$2))return O[IE_PROTO$2]; + if(typeof O.constructor == 'function' && O instanceof O.constructor){ + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + +var ITERATOR = _wks('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function(){ return this; }; + +var _iterDefine = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ + _iterCreate(Constructor, NAME, next); + var getMethod = function(kind){ + if(!BUGGY && kind in proto)return proto[kind]; + switch(kind){ + case KEYS: return function keys(){ return new Constructor(this, kind); }; + case VALUES: return function values(){ return new Constructor(this, kind); }; + } return function entries(){ return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator' + , DEF_VALUES = DEFAULT == VALUES + , VALUES_BUG = false + , proto = Base.prototype + , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] + , $default = $native || getMethod(DEFAULT) + , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined + , $anyNative = NAME == 'Array' ? proto.entries || $native : $native + , methods, key, IteratorPrototype; + // Fix native + if($anyNative){ + IteratorPrototype = _objectGpo($anyNative.call(new Base)); + if(IteratorPrototype !== Object.prototype){ + // Set @@toStringTag to native iterators + _setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if(!_library && !_has(IteratorPrototype, ITERATOR))_hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if(DEF_VALUES && $native && $native.name !== VALUES){ + VALUES_BUG = true; + $default = function values(){ return $native.call(this); }; + } + // Define iterator + if((!_library || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ + _hide(proto, ITERATOR, $default); + } + // Plug for library + _iterators[NAME] = $default; + _iterators[TAG] = returnThis; + if(DEFAULT){ + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if(FORCED)for(key in methods){ + if(!(key in proto))_redefine(proto, key, methods[key]); + } else _export(_export.P + _export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +var es6_array_iterator = _iterDefine(Array, 'Array', function(iterated, kind){ + this._t = _toIobject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function(){ + var O = this._t + , kind = this._k + , index = this._i++; + if(!O || index >= O.length){ + this._t = undefined; + return _iterStep(1); + } + if(kind == 'keys' )return _iterStep(0, index); + if(kind == 'values')return _iterStep(0, O[index]); + return _iterStep(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +_iterators.Arguments = _iterators.Array; + +var TO_STRING_TAG = _wks('toStringTag'); + +for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ + var NAME = collections[i] + , Collection = _global[NAME] + , proto = Collection && Collection.prototype; + if(proto && !proto[TO_STRING_TAG])_hide(proto, TO_STRING_TAG, NAME); + _iterators[NAME] = _iterators.Array; +} + +// true -> String#at +// false -> String#codePointAt +var _stringAt = function(TO_STRING){ + return function(that, pos){ + var s = String(_defined(that)) + , i = _toInteger(pos) + , l = s.length + , a, b; + if(i < 0 || i >= l)return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + +var $at = _stringAt(true); + +// 21.1.3.27 String.prototype[@@iterator]() +_iterDefine(String, 'String', function(iterated){ + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function(){ + var O = this._t + , index = this._i + , point; + if(index >= O.length)return {value: undefined, done: true}; + point = $at(O, index); + this._i += point.length; + return {value: point, done: false}; +}); + +// getting tag from 19.1.3.6 Object.prototype.toString() +var TAG$1 = _wks('toStringTag'); +var ARG = _cof(function(){ return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function(it, key){ + try { + return it[key]; + } catch(e){ /* empty */ } +}; + +var _classof = function(it){ + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG$1)) == 'string' ? T + // builtinTag case + : ARG ? _cof(O) + // ES3 arguments fallback + : (B = _cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + +var ITERATOR$1 = _wks('iterator'); +var core_isIterable = _core.isIterable = function(it){ + var O = Object(it); + return O[ITERATOR$1] !== undefined + || '@@iterator' in O + || _iterators.hasOwnProperty(_classof(O)); +}; + +var isIterable$2 = core_isIterable; + +var isIterable = createCommonjsModule$$1(function (module) { +module.exports = { "default": isIterable$2, __esModule: true }; +}); + +unwrapExports$$1(isIterable); + +var ITERATOR$2 = _wks('iterator'); +var core_getIteratorMethod = _core.getIteratorMethod = function(it){ + if(it != undefined)return it[ITERATOR$2] + || it['@@iterator'] + || _iterators[_classof(it)]; +}; + +var core_getIterator = _core.getIterator = function(it){ + var iterFn = core_getIteratorMethod(it); + if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!'); + return _anObject(iterFn.call(it)); +}; + +var getIterator$2 = core_getIterator; + +var getIterator = createCommonjsModule$$1(function (module) { +module.exports = { "default": getIterator$2, __esModule: true }; +}); + +unwrapExports$$1(getIterator); + +var slicedToArray = createCommonjsModule$$1(function (module, exports) { +exports.__esModule = true; + + + +var _isIterable3 = _interopRequireDefault(isIterable); + + + +var _getIterator3 = _interopRequireDefault(getIterator); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = (_getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((_isIterable3.default)(Object(arr))) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; +}(); +}); + +var _slicedToArray = unwrapExports$$1(slicedToArray); + +var classCallCheck = createCommonjsModule$$1(function (module, exports) { +exports.__esModule = true; + +exports.default = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; +}); + +var _classCallCheck = unwrapExports$$1(classCallCheck); + +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +_export(_export.S + _export.F * !_descriptors, 'Object', {defineProperty: _objectDp.f}); + +var $Object = _core.Object; +var defineProperty$2 = function defineProperty(it, key, desc){ + return $Object.defineProperty(it, key, desc); +}; + +var defineProperty = createCommonjsModule$$1(function (module) { +module.exports = { "default": defineProperty$2, __esModule: true }; +}); + +unwrapExports$$1(defineProperty); + +var createClass = createCommonjsModule$$1(function (module, exports) { +exports.__esModule = true; + + + +var _defineProperty2 = _interopRequireDefault(defineProperty); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + (_defineProperty2.default)(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); +}); + +var _createClass = unwrapExports$$1(createClass); + +function allocate(tree, counter, snapshot) { + var changed = void 0; + var treeNew = void 0; + tree.allocate(counter, function (_ref) { + var counter_ = _ref.counter, + changed_ = _ref.changed, + tree_ = _ref.tree; + + counter = counter_; + changed = changed_; + treeNew = tree_; + }, snapshot); + // $FlowFixMe: changed is initialised + return [counter, changed, treeNew]; +} +/** @module counterUtil */ + +function deallocate(tree, counter, snapshot) { + var changed = void 0; + var treeNew = void 0; + tree.deallocate(counter, function (_ref2) { + var changed_ = _ref2.changed, + tree_ = _ref2.tree; + + changed = changed_; + treeNew = tree_; + }, snapshot); + // $FlowFixMe: changed is initialised + return [changed, treeNew]; +} + +function check(tree, counter) { + var set = void 0; + tree.check(counter, function (set_) { + set = set_; + }); + return !!set; +} + +// most Object methods by ES6 should accept primitives + +var _objectSap = function(KEY, exec){ + var fn = (_core.Object || {})[KEY] || Object[KEY] + , exp = {}; + exp[KEY] = exec(fn); + _export(_export.S + _export.F * _fails(function(){ fn(1); }), 'Object', exp); +}; + +// 19.1.2.14 Object.keys(O) + + +_objectSap('keys', function(){ + return function keys(it){ + return _objectKeys(_toObject(it)); + }; +}); + +var keys$1 = _core.Object.keys; + +var keys = createCommonjsModule$$1(function (module) { +module.exports = { "default": keys$1, __esModule: true }; +}); + +var _Object$keys = unwrapExports$$1(keys); + +// 19.1.2.9 Object.getPrototypeOf(O) + + +_objectSap('getPrototypeOf', function(){ + return function getPrototypeOf(it){ + return _objectGpo(_toObject(it)); + }; +}); + +var getPrototypeOf$1 = _core.Object.getPrototypeOf; + +var getPrototypeOf = createCommonjsModule$$1(function (module) { +module.exports = { "default": getPrototypeOf$1, __esModule: true }; +}); + +var _Object$getPrototypeOf = unwrapExports$$1(getPrototypeOf); + +var f$1 = _wks; + +var _wksExt = { + f: f$1 +}; + +var iterator$2 = _wksExt.f('iterator'); + +var iterator = createCommonjsModule$$1(function (module) { +module.exports = { "default": iterator$2, __esModule: true }; +}); + +unwrapExports$$1(iterator); + +var _meta = createCommonjsModule$$1(function (module) { +var META = _uid('meta') + , setDesc = _objectDp.f + , id = 0; +var isExtensible = Object.isExtensible || function(){ + return true; +}; +var FREEZE = !_fails(function(){ + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function(it){ + setDesc(it, META, {value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + }}); +}; +var fastKey = function(it, create){ + // return primitive with prefix + if(!_isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if(!_has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return 'F'; + // not necessary to add metadata + if(!create)return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function(it, create){ + if(!_has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return true; + // not necessary to add metadata + if(!create)return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function(it){ + if(FREEZE && meta.NEED && isExtensible(it) && !_has(it, META))setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; +}); + +var _meta_1 = _meta.KEY; +var _meta_2 = _meta.NEED; +var _meta_3 = _meta.fastKey; +var _meta_4 = _meta.getWeak; +var _meta_5 = _meta.onFreeze; + +var defineProperty$4 = _objectDp.f; +var _wksDefine = function(name){ + var $Symbol = _core.Symbol || (_core.Symbol = _library ? {} : _global.Symbol || {}); + if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty$4($Symbol, name, {value: _wksExt.f(name)}); +}; + +var _keyof = function(object, el){ + var O = _toIobject(object) + , keys = _objectKeys(O) + , length = keys.length + , index = 0 + , key; + while(length > index)if(O[key = keys[index++]] === el)return key; +}; + +var f$2 = Object.getOwnPropertySymbols; + +var _objectGops = { + f: f$2 +}; + +var f$3 = {}.propertyIsEnumerable; + +var _objectPie = { + f: f$3 +}; + +// all enumerable object keys, includes symbols + +var _enumKeys = function(it){ + var result = _objectKeys(it) + , getSymbols = _objectGops.f; + if(getSymbols){ + var symbols = getSymbols(it) + , isEnum = _objectPie.f + , i = 0 + , key; + while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key); + } return result; +}; + +// 7.2.2 IsArray(argument) + +var _isArray = Array.isArray || function isArray(arg){ + return _cof(arg) == 'Array'; +}; + +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); + +var f$5 = Object.getOwnPropertyNames || function getOwnPropertyNames(O){ + return _objectKeysInternal(O, hiddenKeys); +}; + +var _objectGopn = { + f: f$5 +}; + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var gOPN$1 = _objectGopn.f; +var toString$1 = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function(it){ + try { + return gOPN$1(it); + } catch(e){ + return windowNames.slice(); + } +}; + +var f$4 = function getOwnPropertyNames(it){ + return windowNames && toString$1.call(it) == '[object Window]' ? getWindowNames(it) : gOPN$1(_toIobject(it)); +}; + +var _objectGopnExt = { + f: f$4 +}; + +var gOPD$1 = Object.getOwnPropertyDescriptor; + +var f$6 = _descriptors ? gOPD$1 : function getOwnPropertyDescriptor(O, P){ + O = _toIobject(O); + P = _toPrimitive(P, true); + if(_ie8DomDefine)try { + return gOPD$1(O, P); + } catch(e){ /* empty */ } + if(_has(O, P))return _propertyDesc(!_objectPie.f.call(O, P), O[P]); +}; + +var _objectGopd = { + f: f$6 +}; + +// ECMAScript 6 symbols shim +var META = _meta.KEY; +var gOPD = _objectGopd.f; +var dP$1 = _objectDp.f; +var gOPN = _objectGopnExt.f; +var $Symbol = _global.Symbol; +var $JSON = _global.JSON; +var _stringify = $JSON && $JSON.stringify; +var PROTOTYPE$2 = 'prototype'; +var HIDDEN = _wks('_hidden'); +var TO_PRIMITIVE = _wks('toPrimitive'); +var isEnum = {}.propertyIsEnumerable; +var SymbolRegistry = _shared('symbol-registry'); +var AllSymbols = _shared('symbols'); +var OPSymbols = _shared('op-symbols'); +var ObjectProto$1 = Object[PROTOTYPE$2]; +var USE_NATIVE = typeof $Symbol == 'function'; +var QObject = _global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var setter = !QObject || !QObject[PROTOTYPE$2] || !QObject[PROTOTYPE$2].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDesc = _descriptors && _fails(function(){ + return _objectCreate(dP$1({}, 'a', { + get: function(){ return dP$1(this, 'a', {value: 7}).a; } + })).a != 7; +}) ? function(it, key, D){ + var protoDesc = gOPD(ObjectProto$1, key); + if(protoDesc)delete ObjectProto$1[key]; + dP$1(it, key, D); + if(protoDesc && it !== ObjectProto$1)dP$1(ObjectProto$1, key, protoDesc); +} : dP$1; + +var wrap = function(tag){ + var sym = AllSymbols[tag] = _objectCreate($Symbol[PROTOTYPE$2]); + sym._k = tag; + return sym; +}; + +var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){ + return typeof it == 'symbol'; +} : function(it){ + return it instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(it, key, D){ + if(it === ObjectProto$1)$defineProperty(OPSymbols, key, D); + _anObject(it); + key = _toPrimitive(key, true); + _anObject(D); + if(_has(AllSymbols, key)){ + if(!D.enumerable){ + if(!_has(it, HIDDEN))dP$1(it, HIDDEN, _propertyDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if(_has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false; + D = _objectCreate(D, {enumerable: _propertyDesc(0, false)}); + } return setSymbolDesc(it, key, D); + } return dP$1(it, key, D); +}; +var $defineProperties = function defineProperties(it, P){ + _anObject(it); + var keys = _enumKeys(P = _toIobject(P)) + , i = 0 + , l = keys.length + , key; + while(l > i)$defineProperty(it, key = keys[i++], P[key]); + return it; +}; +var $create = function create(it, P){ + return P === undefined ? _objectCreate(it) : $defineProperties(_objectCreate(it), P); +}; +var $propertyIsEnumerable = function propertyIsEnumerable(key){ + var E = isEnum.call(this, key = _toPrimitive(key, true)); + if(this === ObjectProto$1 && _has(AllSymbols, key) && !_has(OPSymbols, key))return false; + return E || !_has(this, key) || !_has(AllSymbols, key) || _has(this, HIDDEN) && this[HIDDEN][key] ? E : true; +}; +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){ + it = _toIobject(it); + key = _toPrimitive(key, true); + if(it === ObjectProto$1 && _has(AllSymbols, key) && !_has(OPSymbols, key))return; + var D = gOPD(it, key); + if(D && _has(AllSymbols, key) && !(_has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true; + return D; +}; +var $getOwnPropertyNames = function getOwnPropertyNames(it){ + var names = gOPN(_toIobject(it)) + , result = [] + , i = 0 + , key; + while(names.length > i){ + if(!_has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key); + } return result; +}; +var $getOwnPropertySymbols = function getOwnPropertySymbols(it){ + var IS_OP = it === ObjectProto$1 + , names = gOPN(IS_OP ? OPSymbols : _toIobject(it)) + , result = [] + , i = 0 + , key; + while(names.length > i){ + if(_has(AllSymbols, key = names[i++]) && (IS_OP ? _has(ObjectProto$1, key) : true))result.push(AllSymbols[key]); + } return result; +}; + +// 19.4.1.1 Symbol([description]) +if(!USE_NATIVE){ + $Symbol = function Symbol(){ + if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!'); + var tag = _uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function(value){ + if(this === ObjectProto$1)$set.call(OPSymbols, value); + if(_has(this, HIDDEN) && _has(this[HIDDEN], tag))this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, _propertyDesc(1, value)); + }; + if(_descriptors && setter)setSymbolDesc(ObjectProto$1, tag, {configurable: true, set: $set}); + return wrap(tag); + }; + _redefine($Symbol[PROTOTYPE$2], 'toString', function toString(){ + return this._k; + }); + + _objectGopd.f = $getOwnPropertyDescriptor; + _objectDp.f = $defineProperty; + _objectGopn.f = _objectGopnExt.f = $getOwnPropertyNames; + _objectPie.f = $propertyIsEnumerable; + _objectGops.f = $getOwnPropertySymbols; + + if(_descriptors && !_library){ + _redefine(ObjectProto$1, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + _wksExt.f = function(name){ + return wrap(_wks(name)); + }; +} + +_export(_export.G + _export.W + _export.F * !USE_NATIVE, {Symbol: $Symbol}); + +for(var symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' +).split(','), i$1 = 0; symbols.length > i$1; )_wks(symbols[i$1++]); + +for(var symbols = _objectKeys(_wks.store), i$1 = 0; symbols.length > i$1; )_wksDefine(symbols[i$1++]); + +_export(_export.S + _export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function(key){ + return _has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(key){ + if(isSymbol(key))return _keyof(SymbolRegistry, key); + throw TypeError(key + ' is not a symbol!'); + }, + useSetter: function(){ setter = true; }, + useSimple: function(){ setter = false; } +}); + +_export(_export.S + _export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// 24.3.2 JSON.stringify(value [, replacer [, space]]) +$JSON && _export(_export.S + _export.F * (!USE_NATIVE || _fails(function(){ + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}'; +})), 'JSON', { + stringify: function stringify(it){ + if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined + var args = [it] + , i = 1 + , replacer, $replacer; + while(arguments.length > i)args.push(arguments[i++]); + replacer = args[1]; + if(typeof replacer == 'function')$replacer = replacer; + if($replacer || !_isArray(replacer))replacer = function(key, value){ + if($replacer)value = $replacer.call(this, key, value); + if(!isSymbol(value))return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } +}); + +// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) +$Symbol[PROTOTYPE$2][TO_PRIMITIVE] || _hide($Symbol[PROTOTYPE$2], TO_PRIMITIVE, $Symbol[PROTOTYPE$2].valueOf); +// 19.4.3.5 Symbol.prototype[@@toStringTag] +_setToStringTag($Symbol, 'Symbol'); +// 20.2.1.9 Math[@@toStringTag] +_setToStringTag(Math, 'Math', true); +// 24.3.3 JSON[@@toStringTag] +_setToStringTag(_global.JSON, 'JSON', true); + +_wksDefine('asyncIterator'); + +_wksDefine('observable'); + +var symbol$2 = _core.Symbol; + +var symbol = createCommonjsModule$$1(function (module) { +module.exports = { "default": symbol$2, __esModule: true }; +}); + +unwrapExports$$1(symbol); + +var _typeof_1 = createCommonjsModule$$1(function (module, exports) { +exports.__esModule = true; + + + +var _iterator2 = _interopRequireDefault(iterator); + + + +var _symbol2 = _interopRequireDefault(symbol); + +var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { + return typeof obj === "undefined" ? "undefined" : _typeof(obj); +} : function (obj) { + return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); +}; +}); + +unwrapExports$$1(_typeof_1); + +var possibleConstructorReturn = createCommonjsModule$$1(function (module, exports) { +exports.__esModule = true; + + + +var _typeof3 = _interopRequireDefault(_typeof_1); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function (self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && ((typeof call === "undefined" ? "undefined" : (_typeof3.default)(call)) === "object" || typeof call === "function") ? call : self; +}; +}); + +var _possibleConstructorReturn = unwrapExports$$1(possibleConstructorReturn); + +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ + +var check$1 = function(O, proto){ + _anObject(O); + if(!_isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); +}; +var _setProto = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function(test, buggy, set){ + try { + set = _ctx(Function.call, _objectGopd.f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch(e){ buggy = true; } + return function setPrototypeOf(O, proto){ + check$1(O, proto); + if(buggy)O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check$1 +}; + +// 19.1.3.19 Object.setPrototypeOf(O, proto) + +_export(_export.S, 'Object', {setPrototypeOf: _setProto.set}); + +var setPrototypeOf$2 = _core.Object.setPrototypeOf; + +var setPrototypeOf = createCommonjsModule$$1(function (module) { +module.exports = { "default": setPrototypeOf$2, __esModule: true }; +}); + +unwrapExports$$1(setPrototypeOf); + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +_export(_export.S, 'Object', {create: _objectCreate}); + +var $Object$1 = _core.Object; +var create$2 = function create(P, D){ + return $Object$1.create(P, D); +}; + +var create = createCommonjsModule$$1(function (module) { +module.exports = { "default": create$2, __esModule: true }; +}); + +unwrapExports$$1(create); + +var inherits = createCommonjsModule$$1(function (module, exports) { +exports.__esModule = true; + + + +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf); + + + +var _create2 = _interopRequireDefault(create); + + + +var _typeof3 = _interopRequireDefault(_typeof_1); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function (subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (_typeof3.default)(superClass))); + } + + subClass.prototype = (_create2.default)(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) _setPrototypeOf2.default ? (_setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass; +}; +}); + +var _inherits = unwrapExports$$1(inherits); + +var bitset = createCommonjsModule$$1(function (module, exports) { +/** + * @license BitSet.js v4.0.1 14/08/2015 + * http://www.xarg.org/2014/03/javascript-bit-array/ + * + * Copyright (c) 2016, Robert Eisele (robert@xarg.org) + * Dual licensed under the MIT or GPL Version 2 licenses. + **/ +(function(root) { + + var WORD_LENGTH = 32; + + /** + * The log base 2 of WORD_LENGTH + * @const + * @type number + */ + var WORD_LOG = 5; + + /** + * Calculates the number of set bits + * + * @param {number} v + * @returns {number} + */ + function popCount(v) { + + // Warren, H. (2009). Hacker`s Delight. New York, NY: Addison-Wesley + + v -= ((v >>> 1) & 0x55555555); + v = (v & 0x33333333) + ((v >>> 2) & 0x33333333); + return (((v + (v >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24); + } + + /** + * Divide a number in base two by B + * + * @param {Array} arr + * @param {number} B + * @returns {number} + */ + function divide(arr, B) { + + var r = 0; + var d; + var i = 0; + + for (; i < arr.length; i++) { + r *= 2; + d = (arr[i] + r) / B | 0; + r = (arr[i] + r) % B; + arr[i] = d; + } + return r; + } + + /** + * Parses the parameters and set variable P + * + * @param {Object} P + * @param {string|BitSet|Array|Uint8Array|number=} val + */ + function parse(P, val) { + + if (val == null) { + P['data'] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + P['_'] = 0; + return; + } + + if (val instanceof BitSet) { + P['data'] = val['data']; + P['_'] = val['_']; + return; + } + + switch (typeof val) { + + case 'number': + P['data'] = [val | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + P['_'] = 0; + break; + + case 'string': + + var base = 2; + var len = WORD_LENGTH; + + if (val.indexOf('0b') === 0) { + val = val.substr(2); + } else if (val.indexOf('0x') === 0) { + val = val.substr(2); + base = 16; + len = 8; + } + + P['data'] = []; + P['_'] = 0; + + var a = val.length - len; + var b = val.length; + + do { + + var num = parseInt(val.slice(a > 0 ? a : 0, b), base); + + if (isNaN(num)) { + throw SyntaxError('Invalid param'); + } + + P['data'].push(num |  0); + + if (a <= 0) + break; + + a -= len; + b -= len; + } while (1); + + break; + + default: + + P['data'] = [0]; + var data = P['data']; + + if (val instanceof Array) { + + for (var i = val.length - 1; i >= 0; i--) { + + var ndx = val[i]; + + if (ndx === Infinity) { + P['_'] = -1; + } else { + scale(P, ndx); + data[ndx >>> WORD_LOG] |= 1 << ndx; + } + } + break; + } + + if (Uint8Array && val instanceof Uint8Array) { + + var bits = 8; + + scale(P, val.length * bits); + + for (var i = 0; i < val.length; i++) { + + var n = val[i]; + + for (var j = 0; j < bits; j++) { + + var k = i * bits + j; + + data[k >>> WORD_LOG] |= (n >> j & 1) << k; + } + } + break; + } throw SyntaxError('Invalid param'); } } - /** - * Module entry point - * - * @constructor - * @param {string|BitSet|number=} param - * @returns {BitSet} - */ - function BitSet(param) { + /** + * Module entry point + * + * @constructor + * @param {string|BitSet|number=} param + * @returns {BitSet} + */ + function BitSet(param) { + + if (!(this instanceof BitSet)) { + return new BitSet(param); + } + parse(this, param); + this['data'] = this['data'].slice(); + } + + function scale(dst, ndx) { + + var l = ndx >>> WORD_LOG; + var d = dst['data']; + var v = dst['_']; + + for (var i = d.length; l >= i; l--) { + d[l] = v; + } + } + + var P = { + 'data': [], + '_': 0 + }; + + BitSet.prototype = { + 'data': [], + '_': 0, + /** + * Set a single bit flag + * + * Ex: + * bs1 = new BitSet(10); + * + * bs1.set(3, 1); + * + * @param {number} ndx The index of the bit to be set + * @param {number=} value Optional value that should be set on the index (0 or 1) + * @returns {BitSet} this + */ + 'set': function(ndx, value) { + + ndx |= 0; + + scale(this, ndx); + + if (value === undefined || value) { + this['data'][ndx >>> WORD_LOG] |= (1 << ndx); + } else { + this['data'][ndx >>> WORD_LOG] &= ~(1 << ndx); + } + return this; + }, + /** + * Get a single bit flag of a certain bit position + * + * Ex: + * bs1 = new BitSet(); + * var isValid = bs1.get(12); + * + * @param {number} ndx the index to be fetched + * @returns {number|null} The binary flag + */ + 'get': function(ndx) { + + ndx |= 0; + + var d = this['data']; + var n = ndx >>> WORD_LOG; + + if (n > d.length) { + return this['_'] & 1; + } + return (d[n] >>> ndx) & 1; + }, + /** + * Creates the bitwise AND of two sets. The result is stored in-place. + * + * Ex: + * bs1 = new BitSet(10); + * bs2 = new BitSet(10); + * + * bs1.and(bs2); + * + * @param {BitSet} value A bitset object + * @returns {BitSet} this + */ + 'and': function(value) {// intersection + + parse(P, value); + + var t = this['data']; + var p = P['data']; + + var p_ = P['_']; + + var pl = p.length - 1; + var tl = t.length - 1; + + if (p_ == 0) { + // clear any bits set: + for (var i = tl; i > pl; i--) { + t[i] = 0; + } + } + + for (; i >= 0; i--) { + t[i] &= p[i]; + } + + this['_'] &= P['_']; + + return this; + }, + /** + * Creates the bitwise OR of two sets. The result is stored in-place. + * + * Ex: + * bs1 = new BitSet(10); + * bs2 = new BitSet(10); + * + * bs1.or(bs2); + * + * @param {BitSet} val A bitset object + * @returns {BitSet} this + */ + 'or': function(val) { // union + + parse(P, val); + + var t = this['data']; + var p = P['data']; + + var pl = p.length - 1; + var tl = t.length - 1; + + var minLength = Math.min(tl, pl); - if (!(this instanceof BitSet)) { - return new BitSet(param); - } - parse(this, param); - this['data'] = this['data'].slice(); - } + // Append backwards, extend array only once + for (var i = pl; i > minLength; i--) { + t[i] = p[i]; + } - function scale(dst, ndx) { + for (; i >= 0; i--) { + t[i] |= p[i]; + } - var l = ndx >>> WORD_LOG; - var d = dst['data']; - var v = dst['_']; + this['_'] |= P['_']; - for (var i = d.length; l >= i; l--) { - d[l] = v; - } - } + return this; + }, + /** + * Creates the bitwise NOT of a set. The result is stored in-place. + * + * Ex: + * bs1 = new BitSet(10); + * + * bs1.not(); + * + * @returns {BitSet} this + */ + 'not': function() { // invert() - var P = { - 'data': [], - '_': 0 - }; + var d = this['data']; + for (var i = 0; i < d.length; i++) { + d[i] = ~d[i]; + } - BitSet.prototype = { - 'data': [], - '_': 0, + this['_'] = ~this['_']; + + return this; + }, /** - * Set a single bit flag + * Creates the bitwise XOR of two sets. The result is stored in-place. * * Ex: * bs1 = new BitSet(10); + * bs2 = new BitSet(10); * - * bs1.set(3, 1); + * bs1.xor(bs2); * - * @param {number} ndx The index of the bit to be set - * @param {number=} value Optional value that should be set on the index (0 or 1) + * @param {BitSet} val A bitset object * @returns {BitSet} this */ - 'set': function(ndx, value) { + 'xor': function(val) { // symmetric difference - ndx |= 0; + parse(P, val); - scale(this, ndx); + var t = this['data']; + var p = P['data']; - if (value === undefined || value) { - this['data'][ndx >>> WORD_LOG] |= (1 << ndx); - } else { - this['data'][ndx >>> WORD_LOG] &= ~(1 << ndx); + var t_ = this['_']; + var p_ = P['_']; + + var i = 0; + + var tl = t.length - 1; + var pl = p.length - 1; + + // Cut if tl > pl + for (i = tl; i > pl; i--) { + t[i] ^= p_; + } + + // Cut if pl > tl + for (i = pl; i > tl; i--) { + t[i] = t_ ^ p[i]; + } + + // XOR the rest + for (; i >= 0; i--) { + t[i] ^= p[i]; } + + // XOR infinity + this['_'] ^= p_; + return this; }, /** - * Get a single bit flag of a certain bit position + * Flip/Invert a range of bits by setting + * + * Ex: + * bs1 = new BitSet(); + * bs1.flip(); // Flip entire set + * bs1.flip(5); // Flip single bit + * bs1.flip(3,10); // Flip a bit range + * + * @param {number=} from The start index of the range to be flipped + * @param {number=} to The end index of the range to be flipped + * @returns {BitSet} this + */ + 'flip': function(from, to) { + + if (from === undefined) { + + return this['not'](); + + } else if (to === undefined) { + + from |= 0; + + scale(this, from); + + this['data'][from >>> WORD_LOG] ^= (1 << from); + + } else if (from <= to && 0 <= from) { + + scale(this, to); + + for (var i = from; i <= to; i++) { + this['data'][i >>> WORD_LOG] ^= (1 << i); + } + } + return this; + }, + /** + * Creates the bitwise AND NOT (not confuse with NAND!) of two sets. The result is stored in-place. + * + * Ex: + * bs1 = new BitSet(10); + * bs2 = new BitSet(10); + * + * bs1.notAnd(bs2); + * + * @param {BitSet} val A bitset object + * @returns {BitSet} this + */ + 'andNot': function(val) { // difference + + parse(P, val); + + var t = this['data']; + var p = P['data']; + + var t_ = this['_']; + var p_ = P['_']; + + var l = Math.min(t.length, p.length); + + for (var k = 0; k < l; k++) { + t[k] &= ~p[k]; + } + this['_'] &= ~p_; + + return this; + }, + /** + * Clear a range of bits by setting it to 0 + * + * Ex: + * bs1 = new BitSet(); + * bs1.clear(); // Clear entire set + * bs1.clear(5); // Clear single bit + * bs1.clar(3,10); // Clear a bit range + * + * @param {number=} from The start index of the range to be cleared + * @param {number=} to The end index of the range to be cleared + * @returns {BitSet} this + */ + 'clear': function(from, to) { + + var data = this['data']; + + if (from === undefined) { + + for (var i = data.length - 1; i >= 0; i--) { + data[i] = 0; + } + this['_'] = 0; + + } else if (to === undefined) { + + from |= 0; + + scale(this, from); + + data[from >>> WORD_LOG] &= ~(1 << from); + + } else if (from <= to) { + + scale(this, to); + + for (var i = from; i <= to; i++) { + data[i >>> WORD_LOG] &= ~(1 << i); + } + } + return this; + }, + /** + * Gets an entire range as a new bitset object + * + * Ex: + * bs1 = new BitSet(); + * bs1.slice(4, 8); + * + * @param {number=} from The start index of the range to be get + * @param {number=} to The end index of the range to be get + * @returns {BitSet|Object} A new smaller bitset object, containing the extracted range + */ + 'slice': function(from, to) { + + if (from === undefined) { + return this['clone'](); + } else if (to === undefined) { + + to = this['data'].length * WORD_LENGTH; + + var im = Object.create(BitSet.prototype); + + im['_'] = this['_']; + im['data'] = [0]; + + for (var i = from; i <= to; i++) { + im['set'](i - from, this['get'](i)); + } + return im; + + } else if (from <= to && 0 <= from) { + + var im = Object.create(BitSet.prototype); + im['data'] = [0]; + + for (var i = from; i <= to; i++) { + im['set'](i - from, this['get'](i)); + } + return im; + } + return null; + }, + /** + * Set a range of bits * * Ex: * bs1 = new BitSet(); - * var isValid = bs1.get(12); * - * @param {number} ndx the index to be fetched - * @returns {number|null} The binary flag + * bs1.setRange(10, 15, 1); + * + * @param {number} from The start index of the range to be set + * @param {number} to The end index of the range to be set + * @param {number} value Optional value that should be set on the index (0 or 1) + * @returns {BitSet} this */ - 'get': function(ndx) { - - ndx |= 0; - - var d = this['data']; - var n = ndx >>> WORD_LOG; + 'setRange': function(from, to, value) { - if (n > d.length) { - return this['_'] & 1; + for (var i = from; i <= to; i++) { + this['set'](i, value); } - return (d[n] >>> ndx) & 1; + return this; }, /** - * Creates the bitwise AND of two sets. The result is stored in-place. + * Clones the actual object * * Ex: * bs1 = new BitSet(10); - * bs2 = new BitSet(10); - * - * bs1.and(bs2); + * bs2 = bs1.clone(); * - * @param {BitSet} value A bitset object - * @returns {BitSet} this + * @returns {BitSet|Object} A new BitSet object, containing a copy of the actual object */ - 'and': function(value) {// intersection + 'clone': function() { - parse(P, value); + var im = Object.create(BitSet.prototype); + im['data'] = this['data'].slice(); + im['_'] = this['_']; - var t = this['data']; - var p = P['data']; + return im; + }, + /** + * Gets a list of set bits + * + * @returns {Array|number} + */ + 'toArray': Math['clz32'] ? + function() { - var p_ = P['_']; + var ret = []; + var data = this['data']; - var pl = p.length - 1; - var tl = t.length - 1; + for (var i = data.length - 1; i >= 0; i--) { - if (p_ == 0) { - // clear any bits set: - for (var i = tl; i > pl; i--) { - t[i] = 0; - } - } + var num = data[i]; - for (; i >= 0; i--) { - t[i] &= p[i]; - } + while (num !== 0) { + var t = 31 - Math['clz32'](num); + num ^= 1 << t; + ret.unshift((i * WORD_LENGTH) + t); + } + } - this['_'] &= P['_']; + if (this['_'] !== 0) + ret.push(Infinity); - return this; - }, + return ret; + } : + function() { + + var ret = []; + var data = this['data']; + + for (var i = 0; i < data.length; i++) { + + var num = data[i]; + + while (num !== 0) { + var t = num & -num; + num ^= t; + ret.push((i * WORD_LENGTH) + popCount(t - 1)); + } + } + + if (this['_'] !== 0) + ret.push(Infinity); + + return ret; + }, /** - * Creates the bitwise OR of two sets. The result is stored in-place. - * - * Ex: - * bs1 = new BitSet(10); - * bs2 = new BitSet(10); - * - * bs1.or(bs2); + * Overrides the toString method to get a binary representation of the BitSet * - * @param {BitSet} val A bitset object - * @returns {BitSet} this + * @param {number=} base + * @returns string A binary string */ - 'or': function(val) { // union + 'toString': function(base) { - parse(P, val); + var data = this['data']; - var t = this['data']; - var p = P['data']; + if (!base) + base = 2; - var pl = p.length - 1; - var tl = t.length - 1; + // If base is power of two + if ((base & (base - 1)) === 0 && base < 36) { - var minLength = Math.min(tl, pl); + var ret = ''; + var len = 2 + Math.log(4294967295/*Math.pow(2, WORD_LENGTH)-1*/) / Math.log(base) | 0; - // Append backwards, extend array only once - for (var i = pl; i > minLength; i--) { - t[i] = p[i]; - } + for (var i = data.length - 1; i >= 0; i--) { - for (; i >= 0; i--) { - t[i] |= p[i]; - } + var cur = data[i]; - this['_'] |= P['_']; + // Make the number unsigned + if (cur < 0) + cur += 4294967296 /*Math.pow(2, WORD_LENGTH)*/; - return this; + var tmp = cur.toString(base); + + if (ret !== '') { + // Fill small positive numbers with leading zeros. The +1 for array creation is added outside already + ret += new Array(len - tmp.length).join('0'); + } + ret += tmp; + } + + if (this['_'] === 0) { + + ret = ret.replace(/^0+/, ''); + + if (ret === '') + ret = '0'; + return ret; + + } else { + // Pad the string with ones + ret = '1111' + ret; + return ret.replace(/^1+/, '...1111'); + } + + } else { + + if ((2 > base || base > 36)) + throw 'Invalid base'; + + var ret = []; + var arr = []; + + // Copy every single bit to a new array + for (var i = data.length; i--; ) { + + for (var j = WORD_LENGTH; j--; ) { + + arr.push(data[i] >>> j & 1); + } + } + + do { + ret.unshift(divide(arr, base).toString(base)); + } while (!arr.every(function(x) { + return x === 0; + })); + + return ret.join(''); + } }, /** - * Creates the bitwise NOT of a set. The result is stored in-place. + * Check if the BitSet is empty, means all bits are unset * * Ex: * bs1 = new BitSet(10); * - * bs1.not(); + * bs1.isEmpty() ? 'yes' : 'no' * - * @returns {BitSet} this + * @returns {boolean} Whether the bitset is empty */ - 'not': function() { // invert() + 'isEmpty': function() { - var d = this['data']; - for (var i = 0; i < d.length; i++) { - d[i] = ~d[i]; - } + if (this['_'] !== 0) + return false; - this['_'] = ~this['_']; + var d = this['data']; - return this; + for (var i = d.length - 1; i >= 0; i--) { + if (d[i] !== 0) + return false; + } + return true; }, /** - * Creates the bitwise XOR of two sets. The result is stored in-place. + * Calculates the number of bits set * * Ex: * bs1 = new BitSet(10); - * bs2 = new BitSet(10); * - * bs1.xor(bs2); + * var num = bs1.cardinality(); * - * @param {BitSet} val A bitset object - * @returns {BitSet} this + * @returns {number} The number of bits set */ - 'xor': function(val) { // symmetric difference - - parse(P, val); - - var t = this['data']; - var p = P['data']; - - var t_ = this['_']; - var p_ = P['_']; - - var i = 0; - - var tl = t.length - 1; - var pl = p.length - 1; - - // Cut if tl > pl - for (i = tl; i > pl; i--) { - t[i] ^= p_; - } - - // Cut if pl > tl - for (i = pl; i > tl; i--) { - t[i] = t_ ^ p[i]; - } + 'cardinality': function() { - // XOR the rest - for (; i >= 0; i--) { - t[i] ^= p[i]; + if (this['_'] !== 0) { + return Infinity; } - // XOR infinity - this['_'] ^= p_; - - return this; + var s = 0; + var d = this['data']; + for (var i = 0; i < d.length; i++) { + var n = d[i]; + if (n !== 0) + s += popCount(n); + } + return s; }, /** - * Flip/Invert a range of bits by setting + * Calculates the Most Significant Bit / log base two * * Ex: - * bs1 = new BitSet(); - * bs1.flip(); // Flip entire set - * bs1.flip(5); // Flip single bit - * bs1.flip(3,10); // Flip a bit range + * bs1 = new BitSet(10); * - * @param {number=} from The start index of the range to be flipped - * @param {number=} to The end index of the range to be flipped - * @returns {BitSet} this + * var logbase2 = bs1.msb(); + * + * var truncatedTwo = Math.pow(2, logbase2); // May overflow! + * + * @returns {number} The index of the highest bit set */ - 'flip': function(from, to) { + 'msb': Math['clz32'] ? + function() { - if (from === undefined) { + if (this['_'] !== 0) { + return Infinity; + } - return this['not'](); + var data = this['data']; - } else if (to === undefined) { + for (var i = data.length; i-- > 0; ) { - from |= 0; + var c = Math['clz32'](data[i]); - scale(this, from); + if (c !== WORD_LENGTH) { + return (i * WORD_LENGTH) + WORD_LENGTH - 1 - c; + } + } + return Infinity; + } : + function() { - this['data'][from >>> WORD_LOG] ^= (1 << from); + if (this['_'] !== 0) { + return Infinity; + } - } else if (from <= to && 0 <= from) { + var data = this['data']; - scale(this, to); + for (var i = data.length; i-- > 0; ) { - for (var i = from; i <= to; i++) { - this['data'][i >>> WORD_LOG] ^= (1 << i); - } - } - return this; - }, + var v = data[i]; + var c = 0; + + if (v) { + + for (; (v >>>= 1) > 0; c++) { + } + return (i * WORD_LENGTH) + c; + } + } + return Infinity; + }, /** - * Creates the bitwise AND NOT (not confuse with NAND!) of two sets. The result is stored in-place. + * Calculates the number of trailing zeros * * Ex: * bs1 = new BitSet(10); - * bs2 = new BitSet(10); * - * bs1.notAnd(bs2); + * var ntz = bs1.ntz(); * - * @param {BitSet} val A bitset object - * @returns {BitSet} this + * @returns {number} The index of the lowest bit set */ - 'andNot': function(val) { // difference + 'ntz': function() { - parse(P, val); + var data = this['data']; - var t = this['data']; - var p = P['data']; + for (var j = 0; j < data.length; j++) { + var v = data[j]; - var t_ = this['_']; - var p_ = P['_']; + if (v !== 0) { - var l = Math.min(t.length, p.length); + v = (v ^ (v - 1)) >>> 1; // Set v's trailing 0s to 1s and zero rest - for (var k = 0; k < l; k++) { - t[k] &= ~p[k]; + return (j * WORD_LENGTH) + popCount(v); + } } - this['_'] &= ~p_; - - return this; + return Infinity; }, /** - * Clear a range of bits by setting it to 0 + * Calculates the Least Significant Bit * * Ex: - * bs1 = new BitSet(); - * bs1.clear(); // Clear entire set - * bs1.clear(5); // Clear single bit - * bs1.clar(3,10); // Clear a bit range + * bs1 = new BitSet(10); * - * @param {number=} from The start index of the range to be cleared - * @param {number=} to The end index of the range to be cleared - * @returns {BitSet} this + * var lsb = bs1.lsb(); + * + * @returns {number} The index of the lowest bit set */ - 'clear': function(from, to) { + 'lsb': function() { var data = this['data']; - if (from === undefined) { - - for (var i = data.length - 1; i >= 0; i--) { - data[i] = 0; - } - this['_'] = 0; - - } else if (to === undefined) { - - from |= 0; + for (var i = 0; i < data.length; i++) { - scale(this, from); + var v = data[i]; + var c = 0; - data[from >>> WORD_LOG] &= ~(1 << from); + if (v) { - } else if (from <= to) { + var bit = (v & -v); - scale(this, to); + for (; (bit >>>= 1); c++) { - for (var i = from; i <= to; i++) { - data[i >>> WORD_LOG] &= ~(1 << i); + } + return WORD_LENGTH * i + c; } } - return this; + return this['_'] & 1; }, /** - * Gets an entire range as a new bitset object + * Compares two BitSet objects * * Ex: - * bs1 = new BitSet(); - * bs1.slice(4, 8); + * bs1 = new BitSet(10); + * bs2 = new BitSet(10); * - * @param {number=} from The start index of the range to be get - * @param {number=} to The end index of the range to be get - * @returns {BitSet|Object} A new smaller bitset object, containing the extracted range + * bs1.equals(bs2) ? 'yes' : 'no' + * + * @param {BitSet} val A bitset object + * @returns {boolean} Whether the two BitSets are similar */ - 'slice': function(from, to) { + 'equals': function(val) { - if (from === undefined) { - return this['clone'](); - } else if (to === undefined) { + parse(P, val); - to = this['data'].length * WORD_LENGTH; + var t = this['data']; + var p = P['data']; - var im = Object.create(BitSet.prototype); + var t_ = this['_']; + var p_ = P['_']; - im['_'] = this['_']; - im['data'] = [0]; + var tl = t.length - 1; + var pl = p.length - 1; - for (var i = from; i <= to; i++) { - im['set'](i - from, this['get'](i)); - } - return im; + if (p_ !== t_) { + return false; + } - } else if (from <= to && 0 <= from) { + var minLength = tl < pl ? tl : pl; - var im = Object.create(BitSet.prototype); - im['data'] = [0]; + for (var i = 0; i <= minLength; i++) { + if (t[i] !== p[i]) + return false; + } - for (var i = from; i <= to; i++) { - im['set'](i - from, this['get'](i)); - } - return im; + for (i = tl; i > pl; i--) { + if (t[i] !== p_) + return false; } - return null; - }, - /** - * Set a range of bits - * - * Ex: - * bs1 = new BitSet(); - * - * bs1.setRange(10, 15, 1); - * - * @param {number} from The start index of the range to be set - * @param {number} to The end index of the range to be set - * @param {number} value Optional value that should be set on the index (0 or 1) - * @returns {BitSet} this - */ - 'setRange': function(from, to, value) { - for (var i = from; i <= to; i++) { - this['set'](i, value); + for (i = pl; i > tl; i--) { + if (p[i] !== t_) + return false; } - return this; - }, - /** - * Clones the actual object - * - * Ex: - * bs1 = new BitSet(10); - * bs2 = bs1.clone(); - * - * @returns {BitSet|Object} A new BitSet object, containing a copy of the actual object - */ - 'clone': function() { + return true; + } + }; - var im = Object.create(BitSet.prototype); - im['data'] = this['data'].slice(); - im['_'] = this['_']; + BitSet.fromBinaryString = function(str) { - return im; - }, - /** - * Gets a list of set bits - * - * @returns {Array|number} - */ - 'toArray': Math['clz32'] ? - function() { + return new BitSet('0b' + str); + }; - var ret = []; - var data = this['data']; + BitSet.fromHexString = function(str) { + + return new BitSet('0x' + str); + }; + + if (typeof undefined === 'function' && undefined['amd']) { + undefined([], function() { + return BitSet; + }); + } else { + module['exports'] = BitSet; + } + +})(commonjsGlobal$$1); +}); + +/** @module bitMap */ + +// bitset library uses 32 bits numbers internally +// it preemptively adds an extra number whan it detects it's full +// this is why we use Uint8Array and minus 1 from the blocksize / 8 +// in order to get exactly the right size +// because of the functions supplied by the bitset library +// we invert the notions of set and unset where +// set is 0 and unset is 1 - for (var i = data.length - 1; i >= 0; i--) { +/** + * Creates a new bitmap sized according to the block size + */ +function createBitMap(blockSize) { + return new bitset(new Uint8Array(blockSize / 8 - 1)).flip(0, blockSize - 1); +} - var num = data[i]; +/** + * Set a bit + */ +function setBit(bitMap, i) { + return bitMap.set(i, 0); +} - while (num !== 0) { - var t = 31 - Math['clz32'](num); - num ^= 1 << t; - ret.unshift((i * WORD_LENGTH) + t); - } - } +/** + * Unsets a bit + */ +function unsetBit(bitMap, i) { + return bitMap.set(i, 1); +} - if (this['_'] !== 0) - ret.push(Infinity); +/** + * Checks if the entire bitmap is set + */ +function allSet(bitMap) { + return bitMap.isEmpty(); +} - return ret; - } : - function() { +/** + * Checks if the entire bitmap is unset + */ +function allUnset(bitMap, blockSize) { + return bitMap.cardinality() === blockSize; +} - var ret = []; - var data = this['data']; +/** + * Find first set algorithm + * If null is returned, all items have been set + */ +function firstUnset(bitMap) { + var first = bitMap.ntz(); + if (first === Infinity) { + first = null; + } + return first; +} - for (var i = 0; i < data.length; i++) { +/** + * Checks if a bit is set. + */ +function isSet(bitMap, i) { + return !bitMap.get(i); +} - var num = data[i]; +/** @module BitMapTree */ - while (num !== 0) { - var t = num & -num; - num ^= t; - ret.push((i * WORD_LENGTH) + popCount(t - 1)); - } - } +/** + * Class representing a lazy recursive fully-persistent bitmap tree. + * Only the leaf bitmaps correspond to counters. + * Interior bitmaps index their child bitmaps. + * If an interior bit is set, that means there's no free bits in the child bitmap. + * If an interior bit is not set, that means there's at least 1 free bit in the child bitmap. + * The snapshot parameter for allocate and deallocate controls how the persistence works. + * If a snapshot is passed in to mutation methods and a mutation occurs either by + * changing the current node or leaf, or creating a new parent or child, then these + * will always create new nodes or leafs instead of mutating the current node or leaf. + * If the node or leaf to be copied is already in a snapshot, then it will not bother copying + * unnecessarily. + */ +var BitMapTree = - if (this['_'] !== 0) - ret.push(Infinity); +/** + * Creates a BitMapTree, this is an abstract class. + * It is not meant to by directly instantiated. + */ +function BitMapTree(blockSize, shrink, begin, depth, bitMap) { + _classCallCheck(this, BitMapTree); - return ret; - }, - /** - * Overrides the toString method to get a binary representation of the BitSet - * - * @param {number=} base - * @returns string A binary string - */ - 'toString': function(base) { + this.blockSize = blockSize; + this.shrink = shrink; + this.begin = begin; + this.depth = depth; + this.bitMap = bitMap || createBitMap(blockSize); +}; - var data = this['data']; - if (!base) - base = 2; - // If base is power of two - if ((base & (base - 1)) === 0 && base < 36) { +/** + * Class representing a Leaf of the recursive bitmap tree. + * This represents the base case of the lazy recursive bitmap tree. + */ - var ret = ''; - var len = 2 + Math.log(4294967295/*Math.pow(2, WORD_LENGTH)-1*/) / Math.log(base) | 0; +var Leaf = function (_BitMapTree) { + _inherits(Leaf, _BitMapTree); - for (var i = data.length - 1; i >= 0; i--) { + /** + * Creates a Leaf + */ + function Leaf(blockSize, shrink, begin, bitMap) { + _classCallCheck(this, Leaf); - var cur = data[i]; + return _possibleConstructorReturn(this, (Leaf.__proto__ || _Object$getPrototypeOf(Leaf)).call(this, blockSize, shrink, begin, 0, bitMap)); + } - // Make the number unsigned - if (cur < 0) - cur += 4294967296 /*Math.pow(2, WORD_LENGTH)*/; + /** + * Allocates a counter and sets the corresponding bit for the bitmap. + * It will lazily grow parents. + */ - var tmp = cur.toString(base); - if (ret !== '') { - // Fill small positive numbers with leading zeros. The +1 for array creation is added outside already - ret += new Array(len - tmp.length).join('0'); + _createClass(Leaf, [{ + key: 'allocate', + value: function allocate(counter, callback, snapshot) { + var index = void 0; + if (counter == null) { + index = firstUnset(this.bitMap); + } else { + index = counter - this.begin; + } + if (index !== null && index < this.blockSize) { + if (!isSet(this.bitMap, index)) { + var bitMapNew = void 0; + var treeNew = void 0; + if (!snapshot || snapshot.has(this)) { + bitMapNew = this.bitMap; + setBit(bitMapNew, index); + treeNew = this; + } else { + bitMapNew = this.bitMap.clone(); + setBit(bitMapNew, index); + treeNew = new Leaf(this.blockSize, this.shrink, this.begin, bitMapNew); + snapshot.add(treeNew); } - ret += tmp; + callback({ + counter: this.begin + index, + changed: true, + bitMap: bitMapNew, + tree: treeNew + }); + } else { + callback({ + counter: this.begin + index, + changed: false, + bitMap: this.bitMap, + tree: this + }); } + } else { + // grow the tree upwards + var _treeNew = new Node(this.blockSize, this.shrink, this.begin, this.depth + 1); + if (snapshot) { + snapshot.add(_treeNew); + snapshot.add(_treeNew.bitMap); + } + _treeNew.bitMapTrees[0] = this; + if (allSet(this.bitMap)) { + setBit(_treeNew.bitMap, 0); + } + _treeNew.allocate(counter, callback, snapshot); + } + } - if (this['_'] === 0) { + /** + * Deallocates a counter and unsets the corresponding bit for the bitmap. + */ - ret = ret.replace(/^0+/, ''); + }, { + key: 'deallocate', + value: function deallocate(counter, callback, snapshot) { + var index = counter - this.begin; + if (index >= 0 && index < this.blockSize) { + if (isSet(this.bitMap, index)) { + var bitMapNew = void 0; + var treeNew = void 0; + if (!snapshot || snapshot.has(this)) { + bitMapNew = this.bitMap; + unsetBit(bitMapNew, index); + treeNew = this; + } else { + bitMapNew = this.bitMap.clone(); + unsetBit(bitMapNew, index); + treeNew = new Leaf(this.blockSize, this.shrink, this.begin, bitMapNew); + snapshot.add(treeNew); + } + callback({ + exists: true, + changed: true, + bitMap: bitMapNew, + tree: treeNew + }); + } else { + callback({ + exists: true, + changed: false, + bitMap: this.bitMap, + tree: this + }); + } + } else { + callback({ + exists: false, + changed: false, + bitMap: this.bitMap, + tree: this + }); + } + } - if (ret === '') - ret = '0'; - return ret; + /** + * Checks if the counter has been set + */ + }, { + key: 'check', + value: function check(counter, callback) { + var index = counter - this.begin; + if (index >= 0 && index < this.blockSize) { + if (isSet(this.bitMap, index)) { + callback(true); } else { - // Pad the string with ones - ret = '1111' + ret; - return ret.replace(/^1+/, '...1111'); + callback(false); } - } else { + callback(null); + } + } + }]); - if ((2 > base || base > 36)) - throw 'Invalid base'; + return Leaf; +}(BitMapTree); - var ret = []; - var arr = []; - // Copy every single bit to a new array - for (var i = data.length; i--; ) { - for (var j = WORD_LENGTH; j--; ) { +/** + * Class representing a Node of the recursive bitmap tree. + */ - arr.push(data[i] >>> j & 1); - } - } +var Node = function (_BitMapTree2) { + _inherits(Node, _BitMapTree2); - do { - ret.unshift(divide(arr, base).toString(base)); - } while (!arr.every(function(x) { - return x === 0; - })); + /** + * Creates a Node + */ + function Node(blockSize, shrink, begin, depth, bitMap, bitMapTrees) { + _classCallCheck(this, Node); - return ret.join(''); - } - }, - /** - * Check if the BitSet is empty, means all bits are unset - * - * Ex: - * bs1 = new BitSet(10); - * - * bs1.isEmpty() ? 'yes' : 'no' - * - * @returns {boolean} Whether the bitset is empty - */ - 'isEmpty': function() { + var _this2 = _possibleConstructorReturn(this, (Node.__proto__ || _Object$getPrototypeOf(Node)).call(this, blockSize, shrink, begin, depth, bitMap)); - if (this['_'] !== 0) - return false; + _this2.bitMapTrees = bitMapTrees || []; + return _this2; + } - var d = this['data']; + /** + * Allocates a counter by allocating the corresponding child. + * Passes a continuation to the child allocate that will + * set the current bitmap if the child bitmap is now all set. + * It will also lazily create the children or parents as necessary. + */ - for (var i = d.length - 1; i >= 0; i--) { - if (d[i] !== 0) - return false; + + _createClass(Node, [{ + key: 'allocate', + value: function allocate(counter, callback, snapshot) { + var _this3 = this; + + var index = void 0; + if (counter == null) { + index = firstUnset(this.bitMap); + } else { + index = Math.floor((counter - this.begin) / Math.pow(this.blockSize, this.depth)); + } + if (index != null && this.bitMapTrees[index]) { + var index_ = index; // fix the non-null value + this.bitMapTrees[index].allocate(counter, function (_ref) { + var counter = _ref.counter, + changed = _ref.changed, + bitMapChild = _ref.bitMap, + treeChild = _ref.tree; + + var bitMapNew = _this3.bitMap; + var treeNew = _this3; + if (changed) { + if (!snapshot && allSet(bitMapChild)) { + setBit(bitMapNew, index_); + } else if (snapshot && snapshot.has(_this3)) { + if (allSet(bitMapChild)) { + if (!snapshot.has(_this3.bitMap)) { + bitMapNew = _this3.bitMap.clone(); + snapshot.add(bitMapNew); + _this3.bitMap = bitMapNew; + } + setBit(bitMapNew, index_); + } + treeNew.bitMapTrees[index_] = treeChild; + } else if (snapshot) { + if (allSet(bitMapChild)) { + bitMapNew = _this3.bitMap.clone(); + snapshot.add(bitMapNew); + setBit(bitMapNew, index_); + } + var bitMapTreesNew = _this3.bitMapTrees.slice(); + bitMapTreesNew[index_] = treeChild; + treeNew = new Node(_this3.blockSize, _this3.shrink, _this3.begin, _this3.depth, bitMapNew, bitMapTreesNew); + snapshot.add(treeNew); + } + } + callback({ + counter: counter, + changed: changed, + bitMap: bitMapNew, + tree: treeNew + }); + }, snapshot); + } else if (index === null || index >= this.blockSize) { + // grow the tree upwards + var treeNew = new Node(this.blockSize, this.shrink, this.begin, this.depth + 1); + if (snapshot) { + snapshot.add(treeNew); + snapshot.add(treeNew.bitMap); + } + treeNew.bitMapTrees[0] = this; + if (allSet(this.bitMap)) { + setBit(treeNew.bitMap, 0); + } + treeNew.allocate(counter, callback, snapshot); + } else { + // grow the tree downwards + var beginNew = this.begin + index * Math.pow(this.blockSize, this.depth); + var depthNew = this.depth - 1; + var treeChild = void 0; + if (depthNew === 0) { + treeChild = new Leaf(this.blockSize, this.shrink, beginNew); + } else { + treeChild = new Node(this.blockSize, this.shrink, beginNew, depthNew); + } + if (snapshot) { + snapshot.add(treeChild); + snapshot.add(treeChild.bitMap); + } + var _treeNew2 = void 0; + if (!snapshot || snapshot.has(this)) { + this.bitMapTrees[index] = treeChild; + _treeNew2 = this; + } else { + var bitMapTreesNew = this.bitMapTrees.slice(); + bitMapTreesNew[index] = treeChild; + _treeNew2 = new Node(this.blockSize, this.shrink, this.begin, this.depth, this.bitMap, bitMapTreesNew); + snapshot.add(_treeNew2); + } + var _index_ = index; // fix the non-null value + treeChild.allocate(counter, function (_ref2) { + var counter = _ref2.counter, + changed = _ref2.changed, + bitMapChild = _ref2.bitMap, + treeChild = _ref2.tree; + + var bitMapNew = _this3.bitMap; + if (bitMapChild && allSet(bitMapChild)) { + if (snapshot && !snapshot.has(_this3.bitMap)) { + bitMapNew = _this3.bitMap.clone(); + snapshot.add(bitMapNew); + _treeNew2.bitMap = bitMapNew; + } + setBit(bitMapNew, _index_); + } + callback({ + counter: counter, + changed: changed, + bitMap: bitMapNew, + tree: _treeNew2 + }); + }, snapshot); } - return true; - }, + } + /** - * Calculates the number of bits set - * - * Ex: - * bs1 = new BitSet(10); - * - * var num = bs1.cardinality(); - * - * @returns {number} The number of bits set + * Deallocates a counter by deallocating the corresponding child. + * Passes a continuation to the child deallocate that will + * unset the current bitmap if the child bitmap was previously all set. + * It can also shrink the tree if the child node is compeletely empty + * or if the child leaf is completely unset. */ - 'cardinality': function() { - if (this['_'] !== 0) { - return Infinity; - } + }, { + key: 'deallocate', + value: function deallocate(counter, callback, snapshot) { + var _this4 = this; - var s = 0; - var d = this['data']; - for (var i = 0; i < d.length; i++) { - var n = d[i]; - if (n !== 0) - s += popCount(n); + var index = Math.floor((counter - this.begin) / Math.pow(this.blockSize, this.depth)); + if (this.bitMapTrees[index]) { + var allSetPrior = allSet(this.bitMapTrees[index].bitMap); + this.bitMapTrees[index].deallocate(counter, function (_ref3) { + var exists = _ref3.exists, + changed = _ref3.changed, + bitMapChild = _ref3.bitMap, + treeChild = _ref3.tree; + + var bitMapNew = _this4.bitMap; + var treeNew = _this4; + if (!exists) { + callback({ + exists: exists, + changed: changed, + bitMap: bitMapNew, + tree: treeNew + }); + } else { + if (changed) { + if (!snapshot && allSetPrior) { + unsetBit(bitMapNew, index); + } else if (snapshot && snapshot.has(_this4)) { + if (allSetPrior) { + if (!snapshot.has(_this4.bitMap)) { + bitMapNew = _this4.bitMap.clone(); + snapshot.add(bitMapNew); + _this4.bitMap = bitMapNew; + } + unsetBit(bitMapNew, index); + } + treeNew.bitMapTrees[index] = treeChild; + } else if (snapshot) { + if (allSetPrior) { + bitMapNew = _this4.bitMap.clone(); + snapshot.add(bitMapNew); + unsetBit(bitMapNew, index); + } + var bitMapTreesNew = _this4.bitMapTrees.slice(); + bitMapTreesNew[index] = treeChild; + treeNew = new Node(_this4.blockSize, _this4.shrink, _this4.begin, _this4.depth, bitMapNew, bitMapTreesNew); + snapshot.add(treeNew); + } + if (_this4.shrink && (treeChild instanceof Leaf && allUnset(bitMapChild, _this4.blockSize) || treeChild instanceof Node && _Object$keys(treeChild.bitMapTrees).length === 0)) { + delete treeNew.bitMapTrees[index]; + } + } + callback({ + exists: true, + changed: changed, + bitMap: bitMapNew, + tree: treeNew + }); + } + }, snapshot); + } else { + callback({ + exists: false, + changed: false, + bitMap: this.bitMap, + tree: this + }); } - return s; - }, + } + /** - * Calculates the Most Significant Bit / log base two - * - * Ex: - * bs1 = new BitSet(10); - * - * var logbase2 = bs1.msb(); - * - * var truncatedTwo = Math.pow(2, logbase2); // May overflow! - * - * @returns {number} The index of the highest bit set + * Checks if the counter has been set */ - 'msb': Math['clz32'] ? - function() { - if (this['_'] !== 0) { - return Infinity; - } + }, { + key: 'check', + value: function check(counter, callback) { + var index = Math.floor((counter - this.begin) / Math.pow(this.blockSize, this.depth)); + if (this.bitMapTrees[index]) { + this.bitMapTrees[index].check(counter, function (set) { + callback(set); + }); + } else { + callback(null); + } + } + }]); + + return Node; +}(BitMapTree); + +/** @module Counter */ + +/** + * Class representing allocatable and deallocatable counters. + * Counters are allocated in sequential manner, this applies to deallocated counters. + * Once a counter is deallocated, it will be reused on the next allocation. + * This is a mutable counter, which doesn't use snapshots. + */ - var data = this['data']; +var Counter = function () { - for (var i = data.length; i-- > 0; ) { + /** + * Creates a counter instance. + * @throws {RangeError} - If blockSize is not a multiple of 32. + */ + function Counter() { + var begin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var blockSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32; + var shrink = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var tree = arguments[3]; - var c = Math['clz32'](data[i]); + _classCallCheck(this, Counter); - if (c !== WORD_LENGTH) { - return (i * WORD_LENGTH) + WORD_LENGTH - 1 - c; - } - } - return Infinity; - } : - function() { + if (blockSize % 32 !== 0) { + throw new RangeError('Blocksize for Counter must be a multiple of 32'); + } + this._begin = begin; + this._tree = tree || new Leaf(blockSize, shrink, 0); + } - if (this['_'] !== 0) { - return Infinity; - } + /** + * Allocates a counter sequentially. + * If a counter is specified, it will allocate it explicitly and return a + * changed boolean. + * @throws {RangeError} - If the explicitly allocated counter is out of bounds. + */ - var data = this['data']; - for (var i = data.length; i-- > 0; ) { + _createClass(Counter, [{ + key: 'allocate', + value: function allocate$$1(counter) { + if (counter != null) { + if (counter < this._begin) { + throw new RangeError('counter needs to be greater or equal to the beginning offset'); + } + counter = counter - this._begin; + } - var v = data[i]; - var c = 0; + var _allocate2 = allocate(this._tree, counter), + _allocate3 = _slicedToArray(_allocate2, 3), + counterAssigned = _allocate3[0], + changed = _allocate3[1], + treeNew = _allocate3[2]; - if (v) { + this._tree = treeNew; + if (counter == null) { + return counterAssigned + this._begin; + } else { + return changed; + } + } - for (; (v >>>= 1) > 0; c++) { - } - return (i * WORD_LENGTH) + c; - } - } - return Infinity; - }, /** - * Calculates the number of trailing zeros - * - * Ex: - * bs1 = new BitSet(10); - * - * var ntz = bs1.ntz(); - * - * @returns {number} The index of the lowest bit set + * Deallocates a number, it makes it available for reuse. */ - 'ntz': function() { - - var data = this['data']; - - for (var j = 0; j < data.length; j++) { - var v = data[j]; - if (v !== 0) { + }, { + key: 'deallocate', + value: function deallocate$$1(counter) { + var _deallocate2 = deallocate(this._tree, counter - this._begin), + _deallocate3 = _slicedToArray(_deallocate2, 2), + changed = _deallocate3[0], + treeNew = _deallocate3[1]; - v = (v ^ (v - 1)) >>> 1; // Set v's trailing 0s to 1s and zero rest + this._tree = treeNew; + return changed; + } - return (j * WORD_LENGTH) + popCount(v); - } - } - return Infinity; - }, /** - * Calculates the Least Significant Bit - * - * Ex: - * bs1 = new BitSet(10); - * - * var lsb = bs1.lsb(); - * - * @returns {number} The index of the lowest bit set + * Checks if a number has been allocated or not. */ - 'lsb': function() { - var data = this['data']; + }, { + key: 'check', + value: function check$$1(counter) { + return check(this._tree, counter - this._begin); + } + }]); - for (var i = 0; i < data.length; i++) { + return Counter; +}(); - var v = data[i]; - var c = 0; +var _redefineAll = function(target, src, safe){ + for(var key in src){ + if(safe && target[key])target[key] = src[key]; + else _hide(target, key, src[key]); + } return target; +}; - if (v) { +var _anInstance = function(it, Constructor, name, forbiddenField){ + if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){ + throw TypeError(name + ': incorrect invocation!'); + } return it; +}; - var bit = (v & -v); +// call something on iterator step with safe closing on error - for (; (bit >>>= 1); c++) { +var _iterCall = function(iterator, fn, value, entries){ + try { + return entries ? fn(_anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch(e){ + var ret = iterator['return']; + if(ret !== undefined)_anObject(ret.call(iterator)); + throw e; + } +}; - } - return WORD_LENGTH * i + c; - } - } - return this['_'] & 1; - }, - /** - * Compares two BitSet objects - * - * Ex: - * bs1 = new BitSet(10); - * bs2 = new BitSet(10); - * - * bs1.equals(bs2) ? 'yes' : 'no' - * - * @param {BitSet} val A bitset object - * @returns {boolean} Whether the two BitSets are similar - */ - 'equals': function(val) { +// check on default Array iterator +var ITERATOR$3 = _wks('iterator'); +var ArrayProto = Array.prototype; - parse(P, val); +var _isArrayIter = function(it){ + return it !== undefined && (_iterators.Array === it || ArrayProto[ITERATOR$3] === it); +}; - var t = this['data']; - var p = P['data']; +var _forOf = createCommonjsModule$$1(function (module) { +var BREAK = {} + , RETURN = {}; +var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){ + var iterFn = ITERATOR ? function(){ return iterable; } : core_getIteratorMethod(iterable) + , f = _ctx(fn, that, entries ? 2 : 1) + , index = 0 + , length, step, iterator, result; + if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if(_isArrayIter(iterFn))for(length = _toLength(iterable.length); length > index; index++){ + result = entries ? f(_anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if(result === BREAK || result === RETURN)return result; + } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){ + result = _iterCall(iterator, f, step.value, entries); + if(result === BREAK || result === RETURN)return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; +}); - var t_ = this['_']; - var p_ = P['_']; +var SPECIES = _wks('species'); - var tl = t.length - 1; - var pl = p.length - 1; +var _arraySpeciesConstructor = function(original){ + var C; + if(_isArray(original)){ + C = original.constructor; + // cross-realm fallback + if(typeof C == 'function' && (C === Array || _isArray(C.prototype)))C = undefined; + if(_isObject(C)){ + C = C[SPECIES]; + if(C === null)C = undefined; + } + } return C === undefined ? Array : C; +}; - if (p_ !== t_) { - return false; +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) + + +var _arraySpeciesCreate = function(original, length){ + return new (_arraySpeciesConstructor(original))(length); +}; + +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex + +var _arrayMethods = function(TYPE, $create){ + var IS_MAP = TYPE == 1 + , IS_FILTER = TYPE == 2 + , IS_SOME = TYPE == 3 + , IS_EVERY = TYPE == 4 + , IS_FIND_INDEX = TYPE == 6 + , NO_HOLES = TYPE == 5 || IS_FIND_INDEX + , create = $create || _arraySpeciesCreate; + return function($this, callbackfn, that){ + var O = _toObject($this) + , self = _iobject(O) + , f = _ctx(callbackfn, that, 3) + , length = _toLength(self.length) + , index = 0 + , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined + , val, res; + for(;length > index; index++)if(NO_HOLES || index in self){ + val = self[index]; + res = f(val, index, O); + if(TYPE){ + if(IS_MAP)result[index] = res; // map + else if(res)switch(TYPE){ + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if(IS_EVERY)return false; // every } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; - var minLength = tl < pl ? tl : pl; +var getWeak = _meta.getWeak; +var arrayFind = _arrayMethods(5); +var arrayFindIndex = _arrayMethods(6); +var id$1 = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function(that){ + return that._l || (that._l = new UncaughtFrozenStore); +}; +var UncaughtFrozenStore = function(){ + this.a = []; +}; +var findUncaughtFrozen = function(store, key){ + return arrayFind(store.a, function(it){ + return it[0] === key; + }); +}; +UncaughtFrozenStore.prototype = { + get: function(key){ + var entry = findUncaughtFrozen(this, key); + if(entry)return entry[1]; + }, + has: function(key){ + return !!findUncaughtFrozen(this, key); + }, + set: function(key, value){ + var entry = findUncaughtFrozen(this, key); + if(entry)entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function(key){ + var index = arrayFindIndex(this.a, function(it){ + return it[0] === key; + }); + if(~index)this.a.splice(index, 1); + return !!~index; + } +}; - for (var i = 0; i <= minLength; i++) { - if (t[i] !== p[i]) - return false; +var _collectionWeak = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + _anInstance(that, C, NAME, '_i'); + that._i = id$1++; // collection id + that._l = undefined; // leak store for uncaught frozen objects + if(iterable != undefined)_forOf(iterable, IS_MAP, that[ADDER], that); + }); + _redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function(key){ + if(!_isObject(key))return false; + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this)['delete'](key); + return data && _has(data, this._i) && delete data[this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key){ + if(!_isObject(key))return false; + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this).has(key); + return data && _has(data, this._i); } + }); + return C; + }, + def: function(that, key, value){ + var data = getWeak(_anObject(key), true); + if(data === true)uncaughtFrozenStore(that).set(key, value); + else data[that._i] = value; + return that; + }, + ufstore: uncaughtFrozenStore +}; - for (i = tl; i > pl; i--) { - if (t[i] !== p_) - return false; - } +var dP$2 = _objectDp.f; +var each = _arrayMethods(0); - for (i = pl; i > tl; i--) { - if (p[i] !== t_) - return false; +var _collection = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){ + var Base = _global[NAME] + , C = Base + , ADDER = IS_MAP ? 'set' : 'add' + , proto = C && C.prototype + , O = {}; + if(!_descriptors || typeof C != 'function' || !(IS_WEAK || proto.forEach && !_fails(function(){ + new C().entries().next(); + }))){ + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + _redefineAll(C.prototype, methods); + _meta.NEED = true; + } else { + C = wrapper(function(target, iterable){ + _anInstance(target, C, NAME, '_c'); + target._c = new Base; + if(iterable != undefined)_forOf(iterable, IS_MAP, target[ADDER], target); + }); + each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','),function(KEY){ + var IS_ADDER = KEY == 'add' || KEY == 'set'; + if(KEY in proto && !(IS_WEAK && KEY == 'clear'))_hide(C.prototype, KEY, function(a, b){ + _anInstance(this, C, KEY); + if(!IS_ADDER && IS_WEAK && !_isObject(a))return KEY == 'get' ? undefined : false; + var result = this._c[KEY](a === 0 ? 0 : a, b); + return IS_ADDER ? this : result; + }); + }); + if('size' in proto)dP$2(C.prototype, 'size', { + get: function(){ + return this._c.size; } - return true; - } - }; + }); + } - BitSet.fromBinaryString = function(str) { + _setToStringTag(C, NAME); - return new BitSet('0b' + str); - }; + O[NAME] = C; + _export(_export.G + _export.W + _export.F, O); - BitSet.fromHexString = function(str) { + if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP); - return new BitSet('0x' + str); - }; + return C; +}; - if (typeof undefined === 'function' && undefined['amd']) { - undefined([], function() { - return BitSet; - }); - } else { - module['exports'] = BitSet; +// 23.4 WeakSet Objects +_collection('WeakSet', function(get){ + return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value){ + return _collectionWeak.def(this, value, true); } +}, _collectionWeak, false, true); -})(commonjsGlobal$$1); -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } +var weakSet$1 = _core.WeakSet; -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +var weakSet = createCommonjsModule$$1(function (module) { +module.exports = { "default": weakSet$1, __esModule: true }; +}); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +var _WeakSet = unwrapExports$$1(weakSet); -/** @module Counter */ +/** @module CounterImmutable */ /** - * Parameterises the bitmap tree contructors by the block size - * The block size is the size of each bitmap - * @param {number} blockSize - * @returns {{Leaf: Leaf, Node: Node}} + * Class representing allocatable and deallocatable counters. + * Counters are allocated in sequential manner, this applies to deallocated counters. + * Once a counter is deallocated, it will be reused on the next allocation. + * This is an immutable counter. It will return a new counter on mutation. */ -function setupBitMapConstructors(blockSize) { - - // bitset library uses 32 bits numbers internally - // it preemptively adds an extra number whan it detects it's full - // this is why we use Uint8Array and minus 1 from the blocksize / 8 - // in order to get exactly the right size - // because of the functions supplied by the bitset library - // we invert the notions of set and unset where - // set is 0 and unset is 1 - - /** - * Creates a new bitmap sized according to the block size - * @returns {BitSet} - */ - var createBitMap = function createBitMap() { - return new bitset(new Uint8Array(blockSize / 8 - 1)).flip(0, blockSize - 1); - }; - - /** - * Set a bit - * @param {BitSet} bitMap - * @param {number} i - * @returns {BitSet} - */ - var setBit = function setBit(bitMap, i) { - return bitMap.set(i, 0); - }; - - /** - * Unsets a bit - * @param {BitSet} bitMap - * @param {number} i - * @returns {BitSet} - */ - var unsetBit = function unsetBit(bitMap, i) { - return bitMap.set(i, 1); - }; +var CounterImmutable = function () { /** - * Checks if the entire bitmap is set - * @param {BitSet} bitMap - * @returns {bool} + * Creates a counter instance. + * @throws {RangeError} - If blockSize is not a multiple of 32. */ - var allSet = function allSet(bitMap) { - return bitMap.isEmpty(); - }; + function CounterImmutable() { + var begin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var blockSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32; + var shrink = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var tree = arguments[3]; - /** - * Checks if the entire bitmap is unset - * @param {BitSet} bitMap - * @returns {bool} - */ - var allUnset = function allUnset(bitMap) { - return bitMap.cardinality() === blockSize; - }; + _classCallCheck(this, CounterImmutable); - /** - * Find first set algorithm - * If null is returned, all items have been set - * @param {BitSet} bitMap - * @returns {number|null} - */ - var firstUnset = function firstUnset(bitMap) { - var first = bitMap.ntz(); - if (first === Infinity) { - first = null; + if (blockSize % 32 !== 0) { + throw new RangeError('Blocksize for Counter must be a multiple of 32'); } - return first; - }; + this._begin = begin; + this._blockSize = blockSize; + this._shrink = shrink; + this._tree = tree || new Leaf(blockSize, shrink, 0); + } /** - * Class representing a lazy recursive bitmap tree - * Only the leaf bitmaps correspond to counters - * Interior bitmaps index their child bitmaps - * If an interior bit is set, that means there's no free bits in the child bitmap - * If an interior bit is not set, that means there's at least 1 free bit in the child bitmap + * Allocates a counter sequentially. + * If a counter is specified, it will allocate it explicitly and return a + * changed boolean. + * @throws {RangeError} - If the explicitly allocated counter is out of bounds. */ - var BitMapTree = function () { - - /** - * Creates a BitMapTree, this is an abstract class - * It is not meant to by directly instantiated - * @param {number} begin - * @param {number} depth - */ - function BitMapTree(begin, depth) { - _classCallCheck(this, BitMapTree); - - this.begin = begin; - this.depth = depth; - this.bitMap = createBitMap(); - } - - /** - * Sets a bit to allocated - * @param {number} index - */ - - _createClass(BitMapTree, [{ - key: 'set', - value: function set(index) { - setBit(this.bitMap, index); + _createClass(CounterImmutable, [{ + key: 'allocate', + value: function allocate$$1(counter) { + if (counter != null) { + if (counter < this._begin) { + throw new RangeError('counter needs to be greater or equal to the beginning offset'); + } + counter = counter - this._begin; } - /** - * Unsets a bit so that is free - * @param {number} index - */ + var _allocate2 = allocate(this._tree, counter, new _WeakSet()), + _allocate3 = _slicedToArray(_allocate2, 3), + counterAssigned = _allocate3[0], + changed = _allocate3[1], + treeNew = _allocate3[2]; - }, { - key: 'unset', - value: function unset(index) { - unsetBit(this.bitMap, index); + var counterNew = void 0; + if (changed) { + counterNew = new CounterImmutable(this._begin, this._blockSize, this._shrink, treeNew); + } else { + counterNew = this; + } + if (counter == null) { + return [counterAssigned + this._begin, counterNew]; + } else { + return [changed, counterNew]; } - }]); - - return BitMapTree; - }(); - - - - /** - * Class representing a Leaf of the recursive bitmap tree - * This represents the base case of the lazy recursive bitmap tree - * @extends BitMapTree - */ - - var Leaf = function (_BitMapTree) { - _inherits(Leaf, _BitMapTree); - - /** - * Creates a Leaf - * @param {number} begin - */ - function Leaf(begin) { - _classCallCheck(this, Leaf); - - return _possibleConstructorReturn(this, (Leaf.__proto__ || Object.getPrototypeOf(Leaf)).call(this, begin, 0)); } /** - * Allocates a counter and sets the corresponding bit for the bitmap - * @param {?number} counter - * @param {function} callback + * Deallocates a number, it makes it available for reuse. */ - - _createClass(Leaf, [{ - key: 'allocate', - value: function allocate(counter, callback) { - var index = void 0; - if (counter === null) { - index = firstUnset(this.bitMap); - } else { - index = counter - this.begin; - } - if (index !== null && index >= 0 && index < blockSize) { - setBit(this.bitMap, index); - callback(this.begin + index, this.bitMap); - } else { - callback(null, null); - } - } - - /** - * Deallocates a counter and unsets the corresponding bit for the bitmap - * @param {number} counter - * @param {function} callback - */ - - }, { - key: 'deallocate', - value: function deallocate(counter, callback) { - var index = counter - this.begin; - if (index >= 0 && index < blockSize) { - unsetBit(this.bitMap, index); - callback(this.bitMap); - } else { - callback(null); - } + }, { + key: 'deallocate', + value: function deallocate$$1(counter) { + var _deallocate2 = deallocate(this._tree, counter - this._begin, new _WeakSet()), + _deallocate3 = _slicedToArray(_deallocate2, 2), + changed = _deallocate3[0], + treeNew = _deallocate3[1]; + + var counterNew = void 0; + if (changed) { + counterNew = new CounterImmutable(this._begin, this._blockSize, this._shrink, treeNew); + } else { + counterNew = this; } - }]); - - return Leaf; - }(BitMapTree); - - - - /** - * Class representing a Node of the recursive bitmap tree - * @extends BitMapTree - */ - - var Node = function (_BitMapTree2) { - _inherits(Node, _BitMapTree2); + return [changed, counterNew]; + } /** - * Creates a Node - * @param {number} begin - * @param {number} depth + * Checks if a number has been allocated or not. */ - function Node(begin, depth) { - _classCallCheck(this, Node); - var _this2 = _possibleConstructorReturn(this, (Node.__proto__ || Object.getPrototypeOf(Node)).call(this, begin, depth)); - - _this2.bitMapTrees = []; - return _this2; + }, { + key: 'check', + value: function check$$1(counter) { + return check(this._tree, counter - this._begin); } /** - * Sets a child node or leaf - * If the index is left null, then the child is pushed onto the terminal end - * @param {?number} index - * @param {Leaf|Node} child + * Takes a callback that performs a set of operations. + * And only returns the new immutable counter at the end of all operations. + * This is useful if you want to batch up modfications to the counter. */ + }, { + key: 'transaction', + value: function transaction(callback) { + var _this = this; - _createClass(Node, [{ - key: 'setChild', - value: function setChild(index, child) { - if (index === null) { - index = this.bitMapTrees.push(child) - 1; - } else { - this.bitMapTrees[index] = child; - } - if (allSet(child.bitMap)) setBit(this.bitMap, index); - } - - /** - * Pops the terminal child node or leaf - */ - - }, { - key: 'popChild', - value: function popChild() { - this.bitMapTrees.pop(); - } - - /** - * Allocates a counter by allocating the corresponding child - * Passes a continuation to the child allocate that will - * set the current bitmap if the child bitmap is now all set - * It will also lazily create the child if it doesn't already exist - * @param {?number} counter - * @param {function} callback - */ - - }, { - key: 'allocate', - value: function allocate(counter, callback) { - var _this3 = this; - - var index = void 0; - if (counter === null) { - index = firstUnset(this.bitMap); - } else { - index = Math.floor((counter - this.begin) / Math.pow(blockSize, this.depth)); - } - if (index === null || index < 0 || index >= blockSize) { - callback(null, null); - } else if (this.bitMapTrees[index]) { - this.bitMapTrees[index].allocate(counter, function (counter, bitMap) { - if (bitMap && allSet(bitMap)) { - setBit(_this3.bitMap, index); + var snapshot = new _WeakSet(); + var tree = this._tree; + var changed = false; + var counterTransaction = { + allocate: function allocate$$1(counter) { + if (counter != null) { + if (counter < _this._begin) { + throw new RangeError('counter needs to be greater or equal to the beginning offset'); } - callback(counter, _this3.bitMap); - }); - } else { - var newBegin = this.begin + index * Math.pow(blockSize, this.depth); - var newDepth = this.depth - 1; - var child = void 0; - if (newDepth === 0) { - child = new Leaf(newBegin); - } else { - child = new Node(newBegin, newDepth); + counter = counter - _this._begin; } - this.setChild(index, child); - child.allocate(counter, function (counter, bitMap) { - if (bitMap && allSet(bitMap)) { - setBit(_this3.bitMap, index); - } - callback(counter, _this3.bitMap); - }); - } - } - - /** - * Deallocates a counter by deallocating the corresponding child - * Passes a continuation to the child deallocate that will - * unset the current bitmap if the child bitmap was previously all set - * It will also attempt to shrink the tree if the child is the terminal child - * and it is all unset - * @param {number} counter - * @param {function} callback - */ - - }, { - key: 'deallocate', - value: function deallocate(counter, callback) { - var _this4 = this; - - var index = Math.floor((counter - this.begin) / Math.pow(blockSize, this.depth)); - if (this.bitMapTrees[index]) { - var allSetPrior = allSet(this.bitMapTrees[index].bitMap); - this.bitMapTrees[index].deallocate(counter, function (bitMap) { - if (bitMap && allSetPrior) { - unsetBit(_this4.bitMap, index); - } - if (_this4.bitMapTrees.length - 1 === index && allUnset(bitMap)) { - _this4.popChild(); - } - callback(_this4.bitMap); - }); - } else { - callback(null); - } - } - }]); - - return Node; - }(BitMapTree); - - - - return { - Leaf: Leaf, - Node: Node - }; -} - -/** - * Class representing allocatable and deallocatable counters - * Counters are allocated in sequential manner, this applies to deallocated counters - * Once a counter is deallocated, it will be reused on the next allocation - */ - -var Counter = function () { - /** - * Creates a counter instance - * @param {number} [begin] - Defaults to 0 - * @param {number} [blockSize] - Must be a multiple of 32, defaults to 32 - * @throws {TypeError} - Will throw if blockSize is not a multiple of 32 - */ - function Counter(begin, blockSize) { - _classCallCheck(this, Counter); - - if (typeof begin === 'undefined') begin = 0; - if (blockSize && blockSize % 32 !== 0) { - throw new TypeError('Blocksize for BitMapTree must be a multiple of 32'); - } else { - // JavaScript doesn't yet have 64 bit numbers so we default to 32 - blockSize = 32; - } - this._begin = begin; - this._bitMapConst = setupBitMapConstructors(blockSize); - this._bitMapTree = new this._bitMapConst.Leaf(0); - } + var _allocate4 = allocate(tree, counter, snapshot), + _allocate5 = _slicedToArray(_allocate4, 3), + counterAssigned = _allocate5[0], + changed_ = _allocate5[1], + treeNew = _allocate5[2]; - /** - * Allocates a counter sequentially - * If a counter is specified, it will allocate it explicitly - * But it will skip over intermediate children, and subsequent allocations is still sequential - * @param {number} [counter] - * @returns {number} - * @throws {RangeError} - Will throw if the explicitly allocated counter is out of bounds - */ - - - _createClass(Counter, [{ - key: 'allocate', - value: function allocate(counter) { - var index = null; - if (counter !== undefined) { - if (counter < this._begin) { - throw new RangeError('Counter needs to be greater or equal to the counter beginning offset'); + changed = changed_; + tree = treeNew; + if (counter == null) { + return counterAssigned + _this._begin; + } else { + return changed; + } + }, + deallocate: function deallocate$$1(counter) { + var _deallocate4 = deallocate(tree, counter - _this._begin, snapshot), + _deallocate5 = _slicedToArray(_deallocate4, 2), + changed_ = _deallocate5[0], + treeNew = _deallocate5[1]; + + changed = changed_; + tree = treeNew; + return changed; + }, + check: function check$$1(counter) { + return check(tree, counter - _this._begin); } - index = counter - this._begin; - } - this._bitMapTree.allocate(index, function (index_, bitMap) { - index = index_; - }); - if (index !== null) { - return index + this._begin; + }; + callback(counterTransaction); + if (changed) { + return new CounterImmutable(this._begin, this._blockSize, this._shrink, tree); } else { - var newRoot = new this._bitMapConst.Node(this._bitMapTree.begin, this._bitMapTree.depth + 1); - newRoot.setChild(null, this._bitMapTree); - this._bitMapTree = newRoot; - return this.allocate(counter); + return this; } } - - /** - * Deallocates a number, it makes it available for reuse - * @param {number} counter - */ - - }, { - key: 'deallocate', - value: function deallocate(counter) { - this._bitMapTree.deallocate(counter - this._begin, function () {}); - } }]); - return Counter; + return CounterImmutable; }(); -return Counter; +exports['default'] = Counter; +exports.CounterImmutable = CounterImmutable; + +Object.defineProperty(exports, '__esModule', { value: true }); }))); }); +var Counter = unwrapExports(index_browser_umd$1); + /** @module Devices */ var MAJOR_BITSIZE = 12; @@ -6921,7 +8805,7 @@ var DeviceManager = function () { function DeviceManager() { _classCallCheck(this, DeviceManager); - this._chrCounterMaj = new CounterBrowser(MAJOR_MIN); + this._chrCounterMaj = new Counter(MAJOR_MIN); this._chrDevices = new _Map(); } @@ -6961,7 +8845,7 @@ var DeviceManager = function () { } } if (!devicesMin || !counterMin) { - counterMin = new CounterBrowser(MINOR_MIN); + counterMin = new Counter(MINOR_MIN); devicesMin = new _Map(); } if (minor === undefined) { @@ -7568,7 +9452,7 @@ var INodeManager = function () { function INodeManager(devMgr) { _classCallCheck(this, INodeManager); - this._counter = new CounterBrowser(1); + this._counter = new Counter(1); this._iNodes = new _Map(); this._iNodeRefs = new _WeakMap(); this._devMgr = devMgr; @@ -8424,7 +10308,7 @@ var FileDescriptorManager = function () { function FileDescriptorManager(iNodeMgr) { _classCallCheck(this, FileDescriptorManager); - this._counter = new CounterBrowser(0); + this._counter = new Counter(0); this._fds = new _Map(); this._iNodeMgr = iNodeMgr; } diff --git a/doc/assets/anchor.js b/doc/assets/anchor.js index 0e55b51..5c29527 100644 --- a/doc/assets/anchor.js +++ b/doc/assets/anchor.js @@ -49,7 +49,7 @@ /** * Checks to see if this device supports touch. Uses criteria pulled from Modernizr: * https://github.com/Modernizr/Modernizr/blob/da22eb27631fc4957f67607fe6042e85c0a84656/feature-detects/touchevents.js#L40 - * @return {Boolean} - true if the current device supports touch. + * @returns {Boolean} - true if the current device supports touch. */ this.isTouchDevice = function() { return !!( @@ -62,7 +62,7 @@ * Add anchor links to page elements. * @param {String|Array|Nodelist} selector - A CSS selector for targeting the elements you wish to add anchor links * to. Also accepts an array or nodeList containing the relavant elements. - * @return {this} - The AnchorJS object + * @returns {this} - The AnchorJS object */ this.add = function(selector) { var elements, @@ -191,7 +191,7 @@ * Removes all anchorjs-links from elements targed by the selector. * @param {String|Array|Nodelist} selector - A CSS selector string targeting elements with anchor links, * OR a nodeList / array containing the DOM elements. - * @return {this} - The AnchorJS object + * @returns {this} - The AnchorJS object */ this.remove = function(selector) { var index, @@ -227,7 +227,7 @@ * remove extra hyphens, truncate, trim hyphens, and make lowercase. * * @param {String} text - Any text. Usually pulled from the webpage element we are linking to. - * @return {String} - hyphen-delimited text for use in IDs and URLs. + * @returns {String} - hyphen-delimited text for use in IDs and URLs. */ this.urlify = function(text) { // Regex for finding the nonsafe URL characters (many need escaping): & +$,:;=?@"#{}|^~[`%!'<>]./()*\ @@ -258,7 +258,7 @@ * Determines if this element already has an AnchorJS link on it. * Uses this technique: http://stackoverflow.com/a/5898748/1154642 * @param {HTMLElemnt} el - a DOM node - * @return {Boolean} true/false + * @returns {Boolean} true/false */ this.hasAnchorJSLink = function(el) { var hasLeftAnchor = @@ -276,7 +276,7 @@ * It also throws errors on any other inputs. Used to handle inputs to .add and .remove. * @param {String|Array|Nodelist} input - A CSS selector string targeting elements with anchor links, * OR a nodeList / array containing the DOM elements. - * @return {Array} - An array containing the elements we want. + * @returns {Array} - An array containing the elements we want. */ function _getElements(input) { var elements; diff --git a/doc/assets/site.js b/doc/assets/site.js index 0c4a32f..f86584f 100644 --- a/doc/assets/site.js +++ b/doc/assets/site.js @@ -113,15 +113,6 @@ split_left.style.overflow = 'hidden'; var cw_without_sb = split_left.clientWidth; split_left.style.overflow = ''; -// Need to add: -// - Half of gutterSize (i.e. 10) because gutter will take that much from each. -// - Scrollbar width (cw_with_sb - cw_without_sb), if it takes up existing -// space (Firefox) rather than adding the scrollbar to the side (Chrome) -var percent_left = - (split_left.getBoundingClientRect().width + 10 + cw_without_sb - cw_with_sb) / - split_parent.getBoundingClientRect().width * - 100; - Split(['#split-left', '#split-right'], { elementStyle: function(dimension, size, gutterSize) { return { @@ -134,7 +125,7 @@ Split(['#split-left', '#split-right'], { }; }, gutterSize: 20, - sizes: [percent_left, 100 - percent_left] + sizes: [33, 67] }); // Chrome doesn't remember scroll position properly so do it ourselves. diff --git a/doc/index.html b/doc/index.html index a8b3cf9..3923d10 100644 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ - virtualfs 1.0.0 | Documentation + virtualfs 2.0.2 | Documentation @@ -14,7 +14,7 @@

virtualfs

-
1.0.0
+
2.0.2
virtualfs
+
  • + class=""> VirtualFS - + -
  • + + +
  • + callbackUp - - - - - -
  • +
  • - VirtualFS - - - - +
  • - VirtualFS - - - - +
  • - VirtualFSError - - - - +
  • @@ -740,8 +796,146 @@

    virtualfs

    -

    - FileDescriptors +

    + CurrentDirectory +

    + + +
    + + + + +
    CurrentDirectory
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    + Devices +

    + + +
    + + + + +
    Devices
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + +
    + +

    + Full +

    + + +
    + + + + +
    Full
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + +
    + +

    + Null

    @@ -750,16 +944,715 @@

    -
    FileDescriptors
    - +
    Null
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + + +
    + + +
    + +

    + Random +

    + + +
    + + + + +
    Random
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + +
    + +

    + Tty +

    + + +
    + + + + +
    Tty
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + +
    + +

    + Zero +

    + + +
    + + + + +
    Zero
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + +
    + +

    + FileDescriptors +

    + + +
    + + + + +
    FileDescriptors
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + +
    + +

    + FileDescriptor +

    + + +
    + + +

    Class representing a File Descriptor

    + + +
    new FileDescriptor(iNode: I, flags: number)
    + + + + + + + + + + + +
    Parameters
    +
    + +
    +
    + iNode (I) + +
    + +
    + +
    +
    + flags (number) + +
    + +
    + +
    + + + + + + + + + + + + + +
    Instance Members
    +
    + +
    +
    +
    + + getINode() +
    +
    + +
    + +
    +
    +
    + + getFlags() +
    +
    + +
    + +
    +
    +
    + + setFlags(flags) +
    +
    + +
    + +
    +
    +
    + + getPos() +
    +
    + +
    + +
    +
    +
    + + setPos(pos, flags) +
    +
    + +
    + +
    +
    +
    + + read(buffer, position) +
    +
    + +
    + +
    +
    +
    + + write(buffer, position, extraFlags) +
    +
    + +
    +
    @@ -786,18 +1683,18 @@

    -

    - FileDescriptor +

    + FileDescriptorManager

    -

    Class representing a File Descriptor

    +

    Class that manages all FileDescriptors

    -
    new FileDescriptor(inode: $Subtype<INode>, flags: number)
    +
    new FileDescriptorManager(iNodeMgr: INodeManager)
    @@ -814,15 +1711,7 @@

    - inode ($Subtype<INode>) - -
    - -
    - -
    -
    - flags (number) + iNodeMgr (INodeManager)
    @@ -845,11 +1734,11 @@

    Instance Members
    -
    +
    - constructor(inode, flags) + createFd(iNode, flags)

    + + + + +
    + + +
    + +

    + INodes +

    + + +
    + + -
    getPos(): number
    +
    INodes
    @@ -1111,11 +2043,6 @@

    - -
    Returns
    - number - - @@ -1128,25 +2055,26 @@

    - - - -
    -
    -
    - - setPos(pos) -
    -
    - - - - - - - - - - - - - - -
    Instance Members
    -
    - -
    -
    -
    - - constructor(path, options, fs) -
    -
    - -
    - -
    - - - - - - - - - -
    - - -
    - -

    - VirtualFS -

    - - -
    - - - - -
    VirtualFS
    - - - - - - - - - - - - - - - - - - - - - - - -
    Instance Members
    -
    - -
    -
    -
    - - constructor() -
    -
    - + +
    + +
    +
    + fs (VirtualFS) + +
    + +
    + +
    @@ -4917,12 +5357,8 @@

    -

    -
    - - @@ -4945,10 +5381,9 @@

    -

    Class representing a virtual filesystem.

    - + -
    new VirtualFS()
    +
    VirtualFS
    @@ -4972,41 +5407,90 @@

    -
    Instance Members
    -
    - -
    -
    -
    - - constructor() -
    -
    - -
    -
    @@ -5036,75 +5516,46 @@

    -

    - VirtualFS +

    + callbackUp

    - +

    Asynchronous callback backup.

    -
    VirtualFS
    - - +
    callbackUp
    - - - +

    + Type: + callback +

    - - - - - -
    Instance Members
    -
    - -
    -
    -
    - - constructor() +
    Parameters
    +
    + +
    +
    + err (any) + +
    +
    -
    - @@ -5114,12 +5565,8 @@

    - -

    -
    -
    @@ -5145,13 +5592,13 @@

    Class representing a file system error.

    -
    new VirtualFSError(errorSys: any, path: any, dest: any, syscall: any)
    +
    new VirtualFSError(errnoObj: {errno: number, code: string, description: string}, path: string?, dest: string?, syscall: string?)

    Extends - Error + Error

    @@ -5169,7 +5616,7 @@

    - errorSys (any) + errnoObj ({errno: number, code: string, description: string})
    @@ -5177,8 +5624,7 @@

    - path (any - = null) + path (string?)
    @@ -5186,8 +5632,7 @@

    - dest (any - = null) + dest (string?)
    @@ -5195,8 +5640,7 @@

    - syscall (any - = null) + syscall (string?)
    @@ -5216,79 +5660,83 @@

    -
    Instance Members
    -
    + -
    -
    -
    - - constructor(errorSys, path, dest, syscall) -
    -
    - - -
    -
    - syscall (any - = null) - -
    + -
    - -
    +
    + + +
    + +

    + VirtualFSSingleton +

    + + +
    +
    VirtualFSSingleton
    + + + + + + + + @@ -5300,12 +5748,8 @@

    -

    -
    -

    -

    diff --git a/package-lock.json b/package-lock.json index 08ebf22..e72b34e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,9 +65,9 @@ } }, "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "dev": true, "requires": { "jsonparse": "1.3.1", @@ -75,9 +75,9 @@ } }, "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", "dev": true }, "ansi-align": { @@ -111,6 +111,15 @@ "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" } }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "1.0.0" + } + }, "argparse": { "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", @@ -182,6 +191,12 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "async-each": { "version": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", @@ -849,18 +864,6 @@ "babel-runtime": "6.26.0", "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -896,16 +899,6 @@ "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" }, "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", @@ -1001,18 +994,6 @@ "babel-runtime": "6.26.0", "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-helper-function-name": { @@ -1328,18 +1309,6 @@ "babel-helper-remap-async-to-generator": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", "babel-plugin-syntax-async-generators": "6.13.0", "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-async-to-generator": { @@ -1373,18 +1342,6 @@ "babel-plugin-syntax-class-constructor-call": "6.18.0", "babel-runtime": "6.26.0", "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-class-properties": { @@ -1410,18 +1367,6 @@ "babel-runtime": "6.26.0", "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-decorators-legacy": { @@ -1433,18 +1378,6 @@ "babel-plugin-syntax-decorators": "6.13.0", "babel-runtime": "6.26.0", "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-do-expressions": { @@ -1455,18 +1388,6 @@ "requires": { "babel-plugin-syntax-do-expressions": "6.13.0", "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -1886,18 +1807,6 @@ "requires": { "babel-plugin-syntax-export-extensions": "6.13.0", "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-flow-strip-types": { @@ -1918,18 +1827,6 @@ "requires": { "babel-plugin-syntax-function-bind": "6.13.0", "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-object-rest-spread": { @@ -1949,18 +1846,6 @@ "dev": true, "requires": { "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-react-jsx": { @@ -1972,18 +1857,6 @@ "babel-helper-builder-react-jsx": "6.26.0", "babel-plugin-syntax-jsx": "6.18.0", "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-react-jsx-self": { @@ -1994,18 +1867,6 @@ "requires": { "babel-plugin-syntax-jsx": "6.18.0", "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-react-jsx-source": { @@ -2016,18 +1877,6 @@ "requires": { "babel-plugin-syntax-jsx": "6.18.0", "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-plugin-transform-regenerator": { @@ -2153,43 +2002,6 @@ "babel-plugin-transform-react-jsx-self": "6.22.0", "babel-plugin-transform-react-jsx-source": "6.22.0", "babel-preset-flow": "6.23.0" - }, - "dependencies": { - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "dev": true, - "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.26.0" - } - }, - "babel-preset-flow": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", - "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", - "dev": true, - "requires": { - "babel-plugin-transform-flow-strip-types": "6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-preset-stage-0": { @@ -2224,36 +2036,6 @@ "babel-plugin-transform-class-properties": "6.24.1", "babel-plugin-transform-decorators": "6.24.1", "babel-preset-stage-3": "6.24.1" - }, - "dependencies": { - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true, - "requires": { - "babel-helper-function-name": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-preset-stage-3": { @@ -2267,34 +2049,6 @@ "babel-plugin-transform-async-to-generator": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", "babel-plugin-transform-exponentiation-operator": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", "babel-plugin-transform-object-rest-spread": "6.26.0" - }, - "dependencies": { - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } } }, "babel-register": { @@ -2528,14 +2282,10 @@ } }, "babelify": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", - "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", - "dev": true, - "requires": { - "babel-core": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - } + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-8.0.0.tgz", + "integrity": "sha512-xVr63fKEvMWUrrIbqlHYsMcc5Zdw4FSVesAHgkgajyCE1W8gbm9rbMakqavhxKvikGYMhEcqxTwB/gQmQ6lBtw==", + "dev": true }, "babylon": { "version": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", @@ -2558,11 +2308,11 @@ "dev": true, "requires": { "cache-base": "1.0.1", - "class-utils": "0.3.5", + "class-utils": "0.3.6", "component-emitter": "1.2.1", "define-property": "1.0.0", "isobject": "3.0.1", - "mixin-deep": "1.2.0", + "mixin-deep": "1.3.0", "pascalcase": "0.1.1" }, "dependencies": { @@ -2687,6 +2437,12 @@ "ieee754": "1.1.8" } }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, "buffer-shims": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", @@ -2882,15 +2638,14 @@ "dev": true }, "class-utils": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.5.tgz", - "integrity": "sha1-F+eTEDdQ+WJ7IXbqNM/RtWWQPIA=", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", "isobject": "3.0.1", - "lazy-cache": "2.0.2", "static-extend": "0.1.2" }, "dependencies": { @@ -2903,20 +2658,60 @@ "is-descriptor": "0.1.6" } }, - "is-descriptor": { + "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, @@ -3257,13 +3052,23 @@ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.1" + "is-descriptor": "1.0.2" } }, "defined": { @@ -3275,7 +3080,7 @@ "detab": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.1.tgz", - "integrity": "sha1-Ux9eMmYg4v1PAyZKkF+zvMivTfQ=", + "integrity": "sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ==", "dev": true, "requires": { "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" @@ -3289,12 +3094,12 @@ } }, "detective": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", - "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "dev": true, "requires": { - "acorn": "4.0.13", + "acorn": "5.3.0", "defined": "1.0.0" } }, @@ -3330,9 +3135,9 @@ } }, "documentation": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/documentation/-/documentation-5.3.3.tgz", - "integrity": "sha512-Avfo2uXeavwN/iiQ0djoJbSHAlzIU2MuZeebmDoFs2HmcAf+OHqokWSWZSD/wSuQXuhH7yiIsbM6dWGXb1gruw==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/documentation/-/documentation-5.3.5.tgz", + "integrity": "sha512-VApv5dCFxjD5WZxEYGqZypK7L3l00clw9qbSTYCwdnvsaAhu7/U+FCHvkdtnCtkmLupIF/SxXPfXc4kB3UfXEg==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -3345,7 +3150,7 @@ "babel-preset-stage-0": "6.24.1", "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "babelify": "7.3.0", + "babelify": "8.0.0", "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", "chalk": "2.3.0", "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -3356,39 +3161,39 @@ "git-url-parse": "6.2.2", "github-slugger": "1.2.0", "glob": "7.1.2", - "globals-docs": "2.3.0", + "globals-docs": "2.4.0", "highlight.js": "9.12.0", "js-yaml": "3.10.0", "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "mdast-util-inject": "1.1.0", - "micromatch": "3.1.4", - "mime": "1.4.1", + "micromatch": "3.1.5", + "mime": "1.6.0", "module-deps-sortable": "4.0.6", - "parse-filepath": "1.0.1", + "parse-filepath": "1.0.2", "pify": "3.0.0", - "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "read-pkg-up": "3.0.0", "remark": "8.0.0", - "remark-html": "6.0.1", + "remark-html": "7.0.0", "remark-toc": "4.0.1", "remote-origin-url": "0.4.0", "shelljs": "0.7.8", "stream-array": "1.1.2", "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "tiny-lr": "1.0.5", + "tiny-lr": "1.1.0", "unist-builder": "1.0.2", - "unist-util-visit": "1.1.3", - "vfile": "2.2.0", + "unist-util-visit": "1.3.0", + "vfile": "2.3.0", "vfile-reporter": "4.0.0", "vfile-sort": "2.1.0", "vinyl": "2.1.0", - "vinyl-fs": "2.4.4", + "vinyl-fs": "3.0.2", "yargs": "9.0.1" }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" @@ -3409,609 +3214,8 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" - } - } - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "0.10.1" - } - }, - "babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "babel-plugin-syntax-trailing-function-commas": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "babel-plugin-transform-async-to-generator": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "babel-plugin-transform-es2015-sticky-regex": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "babel-plugin-transform-exponentiation-operator": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.8.0", - "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "braces": { "version": "2.3.0", @@ -4028,7 +3232,7 @@ "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", "snapdragon": "0.8.1", "snapdragon-node": "2.1.1", - "split-string": "3.0.2", + "split-string": "3.1.0", "to-regex": "3.0.1" } }, @@ -4079,9 +3283,9 @@ } }, "extglob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.2.tgz", - "integrity": "sha512-I0+eZBH+jFGL8F5BnIz2ON2nKCjTS3AS3H/5PeSmCp7UVC70Ym8IhdRiQly2juKYQ//f7z1aj1BRpQniFJoU1w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { "array-unique": "0.3.2", @@ -4106,10 +3310,50 @@ "to-regex-range": "2.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -4152,15 +3396,27 @@ "dev": true }, "kind-of": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.0.tgz", - "integrity": "sha512-sUd5AnFyOPh+RW+ZIHd1FHuwM4OFvhKCPVxxhamLxWLpmv1xQ394lzRMmhLQOiMpXvnB64YRLezWaJi5xGk7Dg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + } + }, "micromatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.4.tgz", - "integrity": "sha512-kFRtviKYoAJT+t7HggMl0tBFGNAKLw/S7N+CO9qfEQyisob1Oy4pao+geRbkyeEd+V9aOkvZ4mhuyPvI/q9Sfg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -4168,10 +3424,10 @@ "braces": "2.3.0", "define-property": "1.0.0", "extend-shallow": "2.0.1", - "extglob": "2.0.2", + "extglob": "2.0.4", "fragment-cache": "0.2.1", - "kind-of": "6.0.0", - "nanomatch": "1.2.5", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", "object.pick": "1.3.0", "regex-not": "1.0.0", "snapdragon": "0.8.1", @@ -4184,33 +3440,50 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "json-parse-better-errors": "1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "private": "https://registry.npmjs.org/private/-/private-0.1.7.tgz" - }, - "dependencies": { - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.0" - } - } + "load-json-file": "4.0.0", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "read-pkg": "3.0.0" } }, "supports-color": { @@ -4252,12 +3525,12 @@ "dev": true }, "duplexify": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", - "integrity": "sha1-ThUWvmiDi8kKSZlPCzmm5ZYL780=", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", + "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", "dev": true, "requires": { - "end-of-stream": "1.4.0", + "end-of-stream": "1.4.1", "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "stream-shift": "1.0.0" @@ -4285,9 +3558,9 @@ } }, "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -4485,11 +3758,15 @@ "locate-path": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" } }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" + } }, "fn-name": { "version": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", @@ -4509,6 +3786,12 @@ "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -4518,6 +3801,16 @@ "map-cache": "0.2.2" } }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz" + } + }, "fs-readdir-recursive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", @@ -4529,6 +3822,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -4569,9 +3868,9 @@ "dev": true }, "git-up": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-2.0.9.tgz", - "integrity": "sha1-IZv9J8gtrurYSVvrOG3Bjq5jY20=", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-2.0.10.tgz", + "integrity": "sha512-2v4UN3qV2RGypD9QpmUjpk+4+RlYpW8GFuiZqQnKmvei08HsFPd0RfbDvEhnE4wBvnYs8ORVtYpOFuuCEmBVBw==", "dev": true, "requires": { "is-ssh": "1.3.0", @@ -4584,7 +3883,7 @@ "integrity": "sha1-vkkCThS4SHVTQ2tFcri0OVMvqHE=", "dev": true, "requires": { - "git-up": "2.0.9" + "git-up": "2.0.10" } }, "github-slugger": { @@ -4628,34 +3927,23 @@ } }, "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", "dev": true, "requires": { "extend": "3.0.1", - "glob": "5.0.15", + "glob": "7.1.2", "glob-parent": "3.1.0", - "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", + "is-negated-glob": "1.0.0", + "ordered-read-streams": "1.0.1", + "pumpify": "1.4.0", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "to-absolute-glob": "2.0.2", "unique-stream": "2.2.1" }, "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - } - }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -4680,34 +3968,6 @@ "requires": { "is-extglob": "2.1.1" } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } } } }, @@ -4732,9 +3992,9 @@ "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=" }, "globals-docs": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.3.0.tgz", - "integrity": "sha1-3KQIivGW94APTrp4Pq7/M1y2dZw=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.0.tgz", + "integrity": "sha512-B69mWcqCmT3jNYmSxRxxOXWfzu3Go8NQXPfl2o0qPd1EEFhwW0dFUg9ztTu915zPQzqwIhWAlw6hmfIcCK4kkQ==", "dev": true }, "globby": { @@ -4794,59 +4054,6 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "gulp-sourcemaps": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", - "dev": true, - "requires": { - "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "strip-bom": "2.0.0", - "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "vinyl": "1.2.0" - }, - "dependencies": { - "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - } - } - }, "has-ansi": { "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", @@ -4865,6 +4072,12 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -5079,9 +4292,9 @@ "dev": true }, "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "invariant": { @@ -5103,22 +4316,30 @@ "dev": true }, "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, "requires": { - "is-relative": "0.2.1", - "is-windows": "0.2.0" + "is-relative": "1.0.0", + "is-windows": "1.0.1" } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "is-alphabetical": { @@ -5178,12 +4399,20 @@ } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "is-decimal": { @@ -5193,20 +4422,20 @@ "dev": true }, "is-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.1.tgz", - "integrity": "sha1-LGAjWZveLenV0si5qdlAggNrbvI=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } @@ -5275,6 +4504,12 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, "is-npm": { "version": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", @@ -5329,7 +4564,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "3.0.1" @@ -5364,12 +4599,12 @@ "dev": true }, "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, "requires": { - "is-unc-path": "0.1.2" + "is-unc-path": "1.0.0" } }, "is-retry-allowed": { @@ -5392,9 +4627,9 @@ "dev": true }, "is-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, "requires": { "unc-path-regex": "0.1.2" @@ -5411,9 +4646,9 @@ "dev": true }, "is-valid-glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", - "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", "dev": true }, "is-whitespace-character": { @@ -5423,9 +4658,9 @@ "dev": true }, "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", "dev": true }, "is-word-character": { @@ -5556,6 +4791,12 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", @@ -5638,15 +4879,24 @@ "invert-kv": "1.0.0" } }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "1.0.2" + } + }, "leven": { "version": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", "dev": true }, "livereload-js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", - "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", + "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==", "dev": true }, "load-json-file": { @@ -5714,9 +4964,9 @@ "dev": true }, "longest-streak": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.1.tgz", - "integrity": "sha1-QtKRtUEeQDZcAOYxk0l+IkcxbjU=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", + "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==", "dev": true }, "loose-envify": { @@ -5826,16 +5076,16 @@ "dev": true, "requires": { "unist-util-modify-children": "1.1.1", - "unist-util-visit": "1.1.3" + "unist-util-visit": "1.3.0" } }, "mdast-util-definitions": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz", - "integrity": "sha1-Zz9Dd8PiPT3nr3pP4iFMDiIcWsc=", + "integrity": "sha512-9NloPSwaB9f1PKcGqaScfqRf6zKOEjTIXVIbPOmgWI/JKxznlgVXC5C+8qgl3AjYg2vJBRgLYfLICaNiac89iA==", "dev": true, "requires": { - "unist-util-visit": "1.1.3" + "unist-util-visit": "1.3.0" } }, "mdast-util-inject": { @@ -5848,9 +5098,9 @@ } }, "mdast-util-to-hast": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-2.5.0.tgz", - "integrity": "sha1-8IeETSVcdUDzaQbaMLoQbA7l7i8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.0.tgz", + "integrity": "sha512-zvEXH2AUevWfKuBqtEPNcDUPI8UC6yIVvgEgNi1v1dLnzb5Pfm+PZjnZn0FhW1WmHcrGMX059MAoqicEauzjcw==", "dev": true, "requires": { "collapse-white-space": "1.0.3", @@ -5862,7 +5112,7 @@ "unist-builder": "1.0.2", "unist-util-generated": "1.1.1", "unist-util-position": "3.0.0", - "unist-util-visit": "1.1.3", + "unist-util-visit": "1.3.0", "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" } }, @@ -5880,7 +5130,7 @@ "requires": { "github-slugger": "1.2.0", "mdast-util-to-string": "1.0.4", - "unist-util-visit": "1.1.3" + "unist-util-visit": "1.3.0" } }, "mdurl": { @@ -5983,15 +5233,6 @@ } } }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" - } - }, "micromatch": { "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", @@ -6013,9 +5254,9 @@ } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mimic-fn": { @@ -6044,13 +5285,24 @@ "dev": true }, "mixin-deep": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.2.0.tgz", - "integrity": "sha1-0CuMb4ttS49ZgtP9AJxJGYUcP+I=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", "dev": true, "requires": { "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, "mkdirp": { @@ -6072,11 +5324,11 @@ "integrity": "sha1-ElGkuixEqS32mJvQKdoSGk8hCbA=", "dev": true, "requires": { - "JSONStream": "1.3.1", + "JSONStream": "1.3.2", "browser-resolve": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "concat-stream": "1.5.2", "defined": "1.0.0", - "detective": "4.5.0", + "detective": "4.7.1", "duplexer2": "0.1.4", "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "parents": "1.0.1", @@ -6133,9 +5385,9 @@ } }, "nanomatch": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.5.tgz", - "integrity": "sha512-ZHJamn1utzcUvW8Bais+Kk7pobp6dKmUEKOSQ/HI2glGwOMA/GvjRRKlLyORBUrdRXnwTU/6LIBcW7jYSlutgg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -6195,6 +5447,15 @@ "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz" } }, + "now-and-later": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", + "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } + }, "npm-run-path": { "version": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", @@ -6232,10 +5493,28 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -6253,6 +5532,12 @@ } } }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -6270,6 +5555,18 @@ } } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" + } + }, "object.omit": { "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", @@ -6337,12 +5634,11 @@ } }, "ordered-read-streams": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", - "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", "dev": true, "requires": { - "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" } }, @@ -6475,12 +5771,12 @@ } }, "parse-filepath": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", - "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", "dev": true, "requires": { - "is-absolute": "0.2.6", + "is-absolute": "1.0.0", "map-cache": "0.2.2", "path-root": "0.1.1" } @@ -6544,10 +5840,6 @@ "util": "0.10.3" } }, - "path-browserify": { - "version": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -6756,6 +6048,27 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "pump": "2.0.1" + } + }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -6994,30 +6307,30 @@ "remark": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-8.0.0.tgz", - "integrity": "sha1-KHtt8v4RkOJjwdFeSG0/qDVZTW0=", + "integrity": "sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==", "dev": true, "requires": { "remark-parse": "4.0.0", "remark-stringify": "4.0.0", - "unified": "6.1.5" + "unified": "6.1.6" } }, "remark-html": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-6.0.1.tgz", - "integrity": "sha1-UJTSxx95Qf2yroZbrHZid1fOCcE=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-7.0.0.tgz", + "integrity": "sha512-jqRzkZXCkM12gIY2ibMLTW41m7rfanliMTVQCFTezHJFsbH00YaTox/BX4gU+f/zCdzfhFJONtebFByvpMv37w==", "dev": true, "requires": { "hast-util-sanitize": "1.1.2", "hast-util-to-html": "3.1.0", - "mdast-util-to-hast": "2.5.0", + "mdast-util-to-hast": "3.0.0", "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" } }, "remark-parse": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz", - "integrity": "sha1-mfHwSa+sgDgjZuLg0L1VQp3UXYs=", + "integrity": "sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==", "dev": true, "requires": { "collapse-white-space": "1.0.3", @@ -7045,20 +6358,20 @@ "requires": { "github-slugger": "1.2.0", "mdast-util-to-string": "1.0.4", - "unist-util-visit": "1.1.3" + "unist-util-visit": "1.3.0" } }, "remark-stringify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-4.0.0.tgz", - "integrity": "sha1-RDGITAQY8RLaRJkbTjVs/jf6zYc=", + "integrity": "sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==", "dev": true, "requires": { "ccount": "1.0.2", "is-alphanumeric": "1.0.0", "is-decimal": "1.0.1", "is-whitespace-character": "1.0.1", - "longest-streak": "2.0.1", + "longest-streak": "2.0.2", "markdown-escapes": "1.0.1", "markdown-table": "1.1.1", "mdast-util-compact": "1.0.1", @@ -7089,6 +6402,35 @@ "parse-git-config": "0.2.0" } }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "3.0.0", + "safe-buffer": "5.1.1", + "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, "remove-trailing-separator": { "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", @@ -7159,6 +6501,15 @@ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "3.0.0" + } + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -7166,10 +6517,11 @@ "dev": true }, "resource-counter": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/resource-counter/-/resource-counter-0.3.1.tgz", - "integrity": "sha512-0igvwcywDMMKNk8U8ovIV2twfMIZz3SxGOgvcHO+5U1/zIflbDTEvJcslDSwwl3xj/AXbBa1oJn/+cvuUNoMYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/resource-counter/-/resource-counter-1.2.2.tgz", + "integrity": "sha512-9PJyT5BOBlcJcKVoWuEie4LUfrnx8+yZdQ3bWqF0kqX3wLzi9ApMEBrQ84YbKo+MLtDyjgK1yyV/o26Z9Y8Kpg==", "requires": { + "babel-runtime": "6.26.0", "bitset.js": "4.0.1" } }, @@ -7341,7 +6693,7 @@ "extend-shallow": "2.0.1", "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "is-plain-object": "2.0.4", - "split-string": "3.0.2" + "split-string": "3.1.0" } }, "shebang-command": { @@ -7366,7 +6718,7 @@ "dev": true, "requires": { "glob": "7.1.2", - "interpret": "1.0.4", + "interpret": "1.1.0", "rechoir": "0.6.2" } }, @@ -7414,10 +6766,50 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -7436,7 +6828,7 @@ "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "1.0.0", @@ -7455,7 +6847,7 @@ "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" @@ -7535,12 +6927,33 @@ "dev": true }, "split-string": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.0.2.tgz", - "integrity": "sha512-d6myUSfwmBz1izkY4r7r7I0PL41rh21qUDYK1OgclmGHeoqQoujduGxMbzw6BlF3HKmJR4sMpbWVo7/Xzg4YBQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, "sprintf-js": { @@ -7578,10 +6991,50 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -7707,27 +7160,6 @@ "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" } }, - "strip-bom-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", - "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", - "dev": true, - "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - } - } - }, "strip-eof": { "version": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", @@ -7882,15 +7314,15 @@ "dev": true }, "tiny-lr": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.0.5.tgz", - "integrity": "sha1-IfQL+E69H4UwVmgDde7xZwwzQRI=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.0.tgz", + "integrity": "sha512-f4X68a6KHcCx/XJcZUKAa92APjY9EHxuGOzRFmPRjf+fOp1E7fi4dGJaHMxvRBxwZrHrIvn/AwkFaDS7O1WZDQ==", "dev": true, "requires": { "body": "5.1.0", "debug": "2.6.9", "faye-websocket": "0.10.0", - "livereload-js": "2.2.2", + "livereload-js": "2.3.0", "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "qs": "6.5.1" }, @@ -7913,12 +7345,13 @@ } }, "to-absolute-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", - "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "is-absolute": "1.0.0", + "is-negated-glob": "1.0.0" } }, "to-fast-properties": { @@ -7954,10 +7387,50 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -7994,6 +7467,15 @@ } } }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz" + } + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -8055,16 +7537,16 @@ } }, "unified": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-6.1.5.tgz", - "integrity": "sha1-cWk3hyYhpjE15iztLzrGoGPG+4c=", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.1.6.tgz", + "integrity": "sha512-pW2f82bCIo2ifuIGYcV12fL96kMMYgw7JKVEgh7ODlrM9rj6vXSY3BV+H6lCcv1ksxynFf582hwWLnA1qRFy4w==", "dev": true, "requires": { "bail": "1.0.2", "extend": "3.0.1", "is-plain-obj": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "trough": "1.0.1", - "vfile": "2.2.0", + "vfile": "2.3.0", "x-is-function": "1.0.4", "x-is-string": "0.1.0" } @@ -8165,7 +7647,7 @@ "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=", "dev": true, "requires": { - "unist-util-visit": "1.1.3" + "unist-util-visit": "1.3.0" } }, "unist-util-stringify-position": { @@ -8175,10 +7657,13 @@ "dev": true }, "unist-util-visit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.1.3.tgz", - "integrity": "sha1-7CaOcxudJ3p5pbWqBkOZDkBdYAs=", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.0.tgz", + "integrity": "sha512-9ntYcxPFtl44gnwXrQKZ5bMqXMY0ZHzUpqMFiU4zcc8mmf/jzYm8GhYgezuUlX4cJIM1zIDYaO6fG/fI+L6iiQ==", + "dev": true, + "requires": { + "unist-util-is": "2.1.1" + } }, "unset-value": { "version": "1.0.0", @@ -8280,10 +7765,50 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -8341,12 +7866,6 @@ "user-home": "1.1.1" } }, - "vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", - "dev": true - }, "validate-npm-package-license": { "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", @@ -8356,15 +7875,22 @@ "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" } }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, "vfile": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.2.0.tgz", - "integrity": "sha1-zkek+zNZIrIz5TXbD32BIdj87U4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", "dev": true, "requires": { "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", "replace-ext": "1.0.0", - "unist-util-stringify-position": "1.1.1" + "unist-util-stringify-position": "1.1.1", + "vfile-message": "1.0.0" } }, "vfile-location": { @@ -8373,6 +7899,15 @@ "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU=", "dev": true }, + "vfile-message": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.0.tgz", + "integrity": "sha512-HPREhzTOB/sNDc9/Mxf8w0FmHnThg5CRSJdR9VRFkD2riqYWs+fuXlj5z8mIpv2LrD7uU41+oPWFOL4Mjlf+dw==", + "dev": true, + "requires": { + "unist-util-stringify-position": "1.1.1" + } + }, "vfile-reporter": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-4.0.0.tgz", @@ -8444,67 +7979,50 @@ } }, "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.2.tgz", + "integrity": "sha512-AUSFda1OukBwuLPBTbyuO4IRWgfXmqC4UTW0f8xrCa8Hkv9oyIU+NSqBlgfOLZRoUt7cHdo75hKQghCywpIyIw==", "dev": true, "requires": { - "duplexify": "3.5.1", - "glob-stream": "5.3.5", + "fs-mkdirp-stream": "1.0.0", + "glob-stream": "6.1.0", "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", + "is-valid-glob": "1.0.0", "lazystream": "1.0.0", - "lodash.isequal": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "merge-stream": "1.0.1", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "lead": "1.0.0", + "object.assign": "4.1.0", + "pumpify": "1.4.0", "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", + "remove-bom-buffer": "3.0.0", + "remove-bom-stream": "1.2.0", + "resolve-options": "1.1.0", "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" + "to-through": "2.0.0", + "value-or-function": "3.0.0", + "vinyl": "2.1.0", + "vinyl-sourcemap": "1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "1.0.2", + "convert-source-map": "1.5.1", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "now-and-later": "2.0.0", + "remove-bom-buffer": "3.0.0", + "vinyl": "2.1.0" }, "dependencies": { - "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } } } }, @@ -8521,13 +8039,13 @@ "dev": true, "requires": { "http-parser-js": "0.4.9", - "websocket-extensions": "0.1.2" + "websocket-extensions": "0.1.3" } }, "websocket-extensions": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz", - "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, "which": { diff --git a/package.json b/package.json index 6a460de..7318219 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "babel-register": "^6.26.0", "bl": "^1.0.0", "buffer": "^5.0.8", - "documentation": "^5.3.3", + "documentation": "^5.3.5", "events": "^1.1.1", "path": "^0.12.7", "process": "^0.11.10", @@ -54,7 +54,7 @@ "errno": "^0.1.4", "permaproxy": "0.0.2", "readable-stream": "^2.3.3", - "resource-counter": "^0.3.1", + "resource-counter": "^1.2.2", "secure-random-bytes": "^1.0.1" } }