Socket
Socket
Sign inDemoInstall

ipfs-block-service

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ipfs-block-service - npm Package Compare versions

Comparing version 0.8.3 to 0.9.0

2345

dist/index.js

@@ -67,3 +67,3 @@ var IpfsBlockService =

/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 75);
/******/ return __webpack_require__(__webpack_require__.s = 1);
/******/ })

@@ -78,484 +78,14 @@ /************************************************************************/

module.exports = function drain (op, done) {
var read, abort
function sink (_read) {
read = _read
if(abort) return sink.abort()
//this function is much simpler to write if you
//just use recursion, but by using a while loop
//we do not blow the stack if the stream happens to be sync.
;(function next() {
var loop = true, cbed = false
while(loop) {
cbed = false
read(null, function (end, data) {
cbed = true
if(end = end || abort) {
loop = false
if(done) done(end === true ? null : end)
else if(end && end !== true)
throw end
}
else if(op && false === op(data) || abort) {
loop = false
read(abort || true, done || function () {})
}
else if(!loop){
next()
}
})
if(!cbed) {
loop = false
return
}
}
})()
}
sink.abort = function (err, cb) {
if('function' == typeof err)
cb = err, err = true
abort = err || true
if(read) return read(abort, cb || function () {})
}
return sink
}
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = function prop (key) {
return key && (
'string' == typeof key
? function (data) { return data[key] }
: 'object' === typeof key && 'function' === typeof key.exec //regexp
? function (data) { var v = key.exec(data); return v && v[0] }
: key
)
}
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
var Symbol = __webpack_require__(8),
getRawTag = __webpack_require__(35),
objectToString = __webpack_require__(40);
/** `Object#toString` result references. */
var nullTag = '[object Null]',
undefinedTag = '[object Undefined]';
/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
/**
* The base implementation of `getTag` without fallbacks for buggy environments.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
* BlockService is a hybrid block datastore. It stores data in a local
* datastore and may retrieve data from a remote Exchange.
* It uses an internal `datastore.Datastore` instance to store values.
*/
function baseGetTag(value) {
if (value == null) {
return value === undefined ? undefinedTag : nullTag;
}
return (symToStringTag && symToStringTag in Object(value))
? getRawTag(value)
: objectToString(value);
}
module.exports = baseGetTag;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var isFunction = __webpack_require__(47),
isLength = __webpack_require__(11);
/**
* Checks if `value` is array-like. A value is considered array-like if it's
* not a function and has a `value.length` that's an integer greater than or
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
* @example
*
* _.isArrayLike([1, 2, 3]);
* // => true
*
* _.isArrayLike(document.body.children);
* // => true
*
* _.isArrayLike('abc');
* // => true
*
* _.isArrayLike(_.noop);
* // => false
*/
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
module.exports = isArrayLike;
/***/ }),
/* 4 */
/***/ (function(module, exports) {
/**
* Checks if `value` is object-like. A value is object-like if it's not `null`
* and has a `typeof` result of "object".
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
* @example
*
* _.isObjectLike({});
* // => true
*
* _.isObjectLike([1, 2, 3]);
* // => true
*
* _.isObjectLike(_.noop);
* // => false
*
* _.isObjectLike(null);
* // => false
*/
function isObjectLike(value) {
return value != null && typeof value == 'object';
}
module.exports = isObjectLike;
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var drain = __webpack_require__(0)
module.exports = function reduce (reducer, acc, cb ) {
if(!cb) cb = acc, acc = null
var sink = drain(function (data) {
acc = reducer(acc, data)
}, function (err) {
cb(err, acc)
})
if (arguments.length === 2)
return function (source) {
source(null, function (end, data) {
//if ended immediately, and no initial...
if(end) return cb(end === true ? null : end)
acc = data; sink(source)
})
}
else
return sink
}
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var abortCb = __webpack_require__(15)
module.exports = function values (array, onAbort) {
if(!array)
return function (abort, cb) {
if(abort) return abortCb(cb, abort, onAbort)
return cb(true)
}
if(!Array.isArray(array))
array = Object.keys(array).map(function (k) {
return array[k]
})
var i = 0
return function (abort, cb) {
if(abort)
return abortCb(cb, abort, onAbort)
if(i >= array.length)
cb(true)
else
cb(null, array[i++])
}
}
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var tester = __webpack_require__(16)
module.exports = function filter (test) {
//regexp
test = tester(test)
return function (read) {
return function next (end, cb) {
var sync, loop = true
while(loop) {
loop = false
sync = true
read(end, function (end, data) {
if(!end && !test(data))
return sync ? loop = true : next(end, cb)
cb(end, data)
})
sync = false
}
}
}
}
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
var root = __webpack_require__(10);
/** Built-in value references. */
var Symbol = root.Symbol;
module.exports = Symbol;
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
module.exports = freeGlobal;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(74)))
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
var freeGlobal = __webpack_require__(9);
/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function('return this')();
module.exports = root;
/***/ }),
/* 11 */
/***/ (function(module, exports) {
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;
/**
* Checks if `value` is a valid array-like length.
*
* **Note:** This method is loosely based on
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
* // => true
*
* _.isLength(Number.MIN_VALUE);
* // => false
*
* _.isLength(Infinity);
* // => false
*
* _.isLength('3');
* // => false
*/
function isLength(value) {
return typeof value == 'number' &&
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
module.exports = isLength;
/***/ }),
/* 12 */
/***/ (function(module, exports) {
/**
* This method returns `undefined`.
*
* @static
* @memberOf _
* @since 2.3.0
* @category Util
* @example
*
* _.times(2, _.noop);
* // => [undefined, undefined]
*/
function noop() {
// No operation performed.
}
module.exports = noop;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var abortCb = __webpack_require__(15)
module.exports = function once (value, onAbort) {
return function (abort, cb) {
if(abort)
return abortCb(cb, abort, onAbort)
if(value != null) {
var _value = value; value = null
cb(null, _value)
} else
cb(true)
}
}
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function id (e) { return e }
var prop = __webpack_require__(1)
var filter = __webpack_require__(7)
//drop items you have already seen.
module.exports = function unique (field, invert) {
field = prop(field) || id
var seen = {}
return filter(function (data) {
var key = field(data)
if(seen[key]) return !!invert //false, by default
else seen[key] = true
return !invert //true by default
})
}
/***/ }),
/* 15 */
/***/ (function(module, exports) {
module.exports = function abortCb(cb, abort, onAbort) {
cb(abort)
onAbort && onAbort(abort === true ? null: abort)
return
}
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
var prop = __webpack_require__(1)
function id (e) { return e }
module.exports = function tester (test) {
return (
'object' === typeof test && 'function' === typeof test.test //regexp
? function (data) { return test.test(data) }
: prop (test) || id
)
}
/***/ }),
/* 17 */
/***/ (function(module, exports) {
module.exports = function(module) {
if(!module.webpackPolyfill) {
module.deprecate = function() {};
module.paths = [];
// module.parent = undefined by default
if(!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
const parallelLimit = __webpack_require__(27)
const pull = __webpack_require__(52)
// BlockService is a hybrid block datastore. It stores data in a local
// datastore and may retrieve data from a remote Exchange.
// It uses an internal `datastore.Datastore` instance to store values.
module.exports = class BlockService {
class BlockService {
/**
* Create a new BlockService
*
* @param {IPFSRepo} ipfsRepo
* @returns {BlockService}
*/
constructor (ipfsRepo) {

@@ -566,2 +96,12 @@ this._repo = ipfsRepo

/**
* Add a bitswap instance that communicates with the
* network to retreive blocks that are not in the local store.
*
* If the node is online all requests for blocks first
* check locally and afterwards ask the network for the blocks.
*
* @param {Bitswap} bitswap
* @returns {void}
*/
goOnline (bitswap) {

@@ -571,2 +111,7 @@ this._bitswap = bitswap

/**
* Go offline, i.e. drop the reference to bitswap.
*
* @returns {void}
*/
goOffline () {

@@ -576,2 +121,7 @@ this._bitswap = null

/**
* Is the blockservice online, i.e. is bitswap present.
*
* @returns {bool}
*/
isOnline () {

@@ -581,1818 +131,71 @@ return this._bitswap != null

// Note: we have to pass the CID, so that bitswap can then use it for
// the smart selectors. For now, passing the CID is used so that we know
// the right multihash, this means that now we have multiple hashes official
// support \o/
put (blockAndCID, callback) {
callback = callback || (() => {})
if (!blockAndCID) {
return callback(new Error('Missing block and CID'))
/**
* Put a block to the underlying datastore.
*
* @param {Block} block
* @param {function(Error)} callback
* @returns {void}
*/
put (block, callback) {
if (this.isOnline()) {
return this._bitswap.put(block, callback)
}
pull(
pull.values([
blockAndCID
]),
this.putStream(),
pull.onEnd(callback)
)
this._repo.blockstore.put(block, callback)
}
putStream () {
/**
* Put a multiple blocks to the underlying datastore.
*
* @param {Array<Block>} blocks
* @param {function(Error)} callback
* @returns {void}
*/
putMany (blocks, callback) {
if (this.isOnline()) {
return this._bitswap.putStream()
} else {
return pull(
pull.map((blockAndCID) => {
return {
data: blockAndCID.block.data,
key: blockAndCID.cid.multihash
}
}),
this._repo.blockstore.putStream()
)
return this._bitswap.putMany(blocks, callback)
}
this._repo.blockstore.putMany(blocks, callback)
}
/**
* Get a block by cid.
*
* @param {CID} cid
* @param {function(Error, Block)} callback
* @returns {void}
*/
get (cid, callback) {
pull(
this.getStream(cid),
pull.collect((err, result) => {
if (err) {
return callback(err)
}
callback(null, result[0])
})
)
}
getStream (cid) {
if (this.isOnline()) {
return this._bitswap.getStream(cid)
return this._bitswap.get(cid, callback)
}
return this._repo.blockstore.getStream(cid.multihash)
return this._repo.blockstore.get(cid, callback)
}
delete (cids, callback) {
if (!Array.isArray(cids)) {
cids = [cids]
}
parallelLimit(cids.map((cid) => (next) => {
this._repo.blockstore.delete(cid.multihash, next)
}), 100, callback)
/**
* Delete a block from the blockstore.
*
* @param {CID} cid
* @param {function(Error)} callback
* @return {void}
*/
delete (cid, callback) {
this._repo.blockstore.delete(cid, callback)
}
}
module.exports = BlockService
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
// A temporary value used to identify if the loop should be broken.
// See #1064, #1293
exports.default = {};
module.exports = exports["default"];
/***/ }),
/* 20 */
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = __webpack_require__(0);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _eachOfLimit;
var _noop = __webpack_require__(12);
var _noop2 = _interopRequireDefault(_noop);
var _once = __webpack_require__(23);
var _once2 = _interopRequireDefault(_once);
var _iterator = __webpack_require__(22);
var _iterator2 = _interopRequireDefault(_iterator);
var _onlyOnce = __webpack_require__(24);
var _onlyOnce2 = _interopRequireDefault(_onlyOnce);
var _breakLoop = __webpack_require__(19);
var _breakLoop2 = _interopRequireDefault(_breakLoop);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _eachOfLimit(limit) {
return function (obj, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
if (limit <= 0 || !obj) {
return callback(null);
}
var nextElem = (0, _iterator2.default)(obj);
var done = false;
var running = 0;
function iterateeCallback(err, value) {
running -= 1;
if (err) {
done = true;
callback(err);
} else if (value === _breakLoop2.default || done && running <= 0) {
done = true;
return callback(null);
} else {
replenish();
}
}
function replenish() {
while (running < limit && !done) {
var elem = nextElem();
if (elem === null) {
done = true;
if (running <= 0) {
callback(null);
}
return;
}
running += 1;
iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback));
}
}
replenish();
};
}
module.exports = exports['default'];
/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (coll) {
return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol]();
};
var iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator;
module.exports = exports['default'];
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = iterator;
var _isArrayLike = __webpack_require__(3);
var _isArrayLike2 = _interopRequireDefault(_isArrayLike);
var _getIterator = __webpack_require__(21);
var _getIterator2 = _interopRequireDefault(_getIterator);
var _keys = __webpack_require__(50);
var _keys2 = _interopRequireDefault(_keys);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createArrayIterator(coll) {
var i = -1;
var len = coll.length;
return function next() {
return ++i < len ? { value: coll[i], key: i } : null;
};
}
function createES2015Iterator(iterator) {
var i = -1;
return function next() {
var item = iterator.next();
if (item.done) return null;
i++;
return { value: item.value, key: i };
};
}
function createObjectIterator(obj) {
var okeys = (0, _keys2.default)(obj);
var i = -1;
var len = okeys.length;
return function next() {
var key = okeys[++i];
return i < len ? { value: obj[key], key: key } : null;
};
}
function iterator(coll) {
if ((0, _isArrayLike2.default)(coll)) {
return createArrayIterator(coll);
}
var iterator = (0, _getIterator2.default)(coll);
return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);
}
module.exports = exports['default'];
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = once;
function once(fn) {
return function () {
if (fn === null) return;
var callFn = fn;
fn = null;
callFn.apply(this, arguments);
};
}
module.exports = exports["default"];
/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = onlyOnce;
function onlyOnce(fn) {
return function () {
if (fn === null) throw new Error("Callback was already called.");
var callFn = fn;
fn = null;
callFn.apply(this, arguments);
};
}
module.exports = exports["default"];
/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _parallel;
var _noop = __webpack_require__(12);
var _noop2 = _interopRequireDefault(_noop);
var _isArrayLike = __webpack_require__(3);
var _isArrayLike2 = _interopRequireDefault(_isArrayLike);
var _rest = __webpack_require__(26);
var _rest2 = _interopRequireDefault(_rest);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _parallel(eachfn, tasks, callback) {
callback = callback || _noop2.default;
var results = (0, _isArrayLike2.default)(tasks) ? [] : {};
eachfn(tasks, function (task, key, callback) {
task((0, _rest2.default)(function (err, args) {
if (args.length <= 1) {
args = args[0];
}
results[key] = args;
callback(err);
}));
}, function (err) {
callback(err, results);
});
}
module.exports = exports['default'];
/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = rest;
var _overRest2 = __webpack_require__(42);
var _overRest3 = _interopRequireDefault(_overRest2);
var _identity = __webpack_require__(43);
var _identity2 = _interopRequireDefault(_identity);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Lodash rest function without function.toString()
// remappings
function rest(func, start) {
return (0, _overRest3.default)(func, start, _identity2.default);
}
module.exports = exports['default'];
/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = parallelLimit;
var _eachOfLimit = __webpack_require__(20);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _parallel = __webpack_require__(25);
var _parallel2 = _interopRequireDefault(_parallel);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a
* time.
*
* @name parallelLimit
* @static
* @memberOf module:ControlFlow
* @method
* @see [async.parallel]{@link module:ControlFlow.parallel}
* @category Control Flow
* @param {Array|Collection} tasks - A collection containing functions to run.
* Each function is passed a `callback(err, result)` which it must call on
* completion with an error `err` (which can be `null`) and an optional `result`
* value.
* @param {number} limit - The maximum number of async operations at a time.
* @param {Function} [callback] - An optional callback to run once all the
* functions have completed successfully. This function gets a results array
* (or object) containing all the result arguments passed to the task callbacks.
* Invoked with (err, results).
*/
function parallelLimit(tasks, limit, callback) {
(0, _parallel2.default)((0, _eachOfLimit2.default)(limit), tasks, callback);
}
module.exports = exports['default'];
/***/ }),
/* 28 */
/***/ (function(module, exports) {
/**
* A faster alternative to `Function#apply`, this function invokes `func`
* with the `this` binding of `thisArg` and the arguments of `args`.
*
* @private
* @param {Function} func The function to invoke.
* @param {*} thisArg The `this` binding of `func`.
* @param {Array} args The arguments to invoke `func` with.
* @returns {*} Returns the result of `func`.
*/
function apply(func, thisArg, args) {
switch (args.length) {
case 0: return func.call(thisArg);
case 1: return func.call(thisArg, args[0]);
case 2: return func.call(thisArg, args[0], args[1]);
case 3: return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
module.exports = apply;
/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {
var baseTimes = __webpack_require__(33),
isArguments = __webpack_require__(44),
isArray = __webpack_require__(45),
isBuffer = __webpack_require__(46),
isIndex = __webpack_require__(36),
isTypedArray = __webpack_require__(49);
/** Used for built-in method references. */
var objectProto = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;
/**
* Creates an array of the enumerable property names of the array-like `value`.
*
* @private
* @param {*} value The value to query.
* @param {boolean} inherited Specify returning inherited property names.
* @returns {Array} Returns the array of property names.
*/
function arrayLikeKeys(value, inherited) {
var isArr = isArray(value),
isArg = !isArr && isArguments(value),
isBuff = !isArr && !isArg && isBuffer(value),
isType = !isArr && !isArg && !isBuff && isTypedArray(value),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? baseTimes(value.length, String) : [],
length = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) &&
!(skipIndexes && (
// Safari 9 has enumerable `arguments.length` in strict mode.
key == 'length' ||
// Node.js 0.10 has enumerable non-index properties on buffers.
(isBuff && (key == 'offset' || key == 'parent')) ||
// PhantomJS 2 has enumerable non-index properties on typed arrays.
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
// Skip index properties.
isIndex(key, length)
))) {
result.push(key);
}
}
return result;
}
module.exports = arrayLikeKeys;
/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {
var baseGetTag = __webpack_require__(2),
isObjectLike = __webpack_require__(4);
/** `Object#toString` result references. */
var argsTag = '[object Arguments]';
/**
* The base implementation of `_.isArguments`.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
*/
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag;
}
module.exports = baseIsArguments;
/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {
var baseGetTag = __webpack_require__(2),
isLength = __webpack_require__(11),
isObjectLike = __webpack_require__(4);
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
boolTag = '[object Boolean]',
dateTag = '[object Date]',
errorTag = '[object Error]',
funcTag = '[object Function]',
mapTag = '[object Map]',
numberTag = '[object Number]',
objectTag = '[object Object]',
regexpTag = '[object RegExp]',
setTag = '[object Set]',
stringTag = '[object String]',
weakMapTag = '[object WeakMap]';
var arrayBufferTag = '[object ArrayBuffer]',
dataViewTag = '[object DataView]',
float32Tag = '[object Float32Array]',
float64Tag = '[object Float64Array]',
int8Tag = '[object Int8Array]',
int16Tag = '[object Int16Array]',
int32Tag = '[object Int32Array]',
uint8Tag = '[object Uint8Array]',
uint8ClampedTag = '[object Uint8ClampedArray]',
uint16Tag = '[object Uint16Array]',
uint32Tag = '[object Uint32Array]';
/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;
/**
* The base implementation of `_.isTypedArray` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
*/
function baseIsTypedArray(value) {
return isObjectLike(value) &&
isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
module.exports = baseIsTypedArray;
/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {
var isPrototype = __webpack_require__(37),
nativeKeys = __webpack_require__(38);
/** Used for built-in method references. */
var objectProto = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;
/**
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeys(object) {
if (!isPrototype(object)) {
return nativeKeys(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty.call(object, key) && key != 'constructor') {
result.push(key);
}
}
return result;
}
module.exports = baseKeys;
/***/ }),
/* 33 */
/***/ (function(module, exports) {
/**
* The base implementation of `_.times` without support for iteratee shorthands
* or max array length checks.
*
* @private
* @param {number} n The number of times to invoke `iteratee`.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the array of results.
*/
function baseTimes(n, iteratee) {
var index = -1,
result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
module.exports = baseTimes;
/***/ }),
/* 34 */
/***/ (function(module, exports) {
/**
* The base implementation of `_.unary` without support for storing metadata.
*
* @private
* @param {Function} func The function to cap arguments for.
* @returns {Function} Returns the new capped function.
*/
function baseUnary(func) {
return function(value) {
return func(value);
};
}
module.exports = baseUnary;
/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {
var Symbol = __webpack_require__(8);
/** Used for built-in method references. */
var objectProto = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString = objectProto.toString;
/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
/**
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the raw `toStringTag`.
*/
function getRawTag(value) {
var isOwn = hasOwnProperty.call(value, symToStringTag),
tag = value[symToStringTag];
try {
value[symToStringTag] = undefined;
var unmasked = true;
} catch (e) {}
var result = nativeObjectToString.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag] = tag;
} else {
delete value[symToStringTag];
}
}
return result;
}
module.exports = getRawTag;
/***/ }),
/* 36 */
/***/ (function(module, exports) {
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;
/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;
/**
* Checks if `value` is a valid array-like index.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
*/
function isIndex(value, length) {
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length &&
(typeof value == 'number' || reIsUint.test(value)) &&
(value > -1 && value % 1 == 0 && value < length);
}
module.exports = isIndex;
/***/ }),
/* 37 */
/***/ (function(module, exports) {
/** Used for built-in method references. */
var objectProto = Object.prototype;
/**
* Checks if `value` is likely a prototype object.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
*/
function isPrototype(value) {
var Ctor = value && value.constructor,
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
return value === proto;
}
module.exports = isPrototype;
/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {
var overArg = __webpack_require__(41);
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeKeys = overArg(Object.keys, Object);
module.exports = nativeKeys;
/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(9);
/** Detect free variable `exports`. */
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports && freeGlobal.process;
/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
try {
return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {}
}());
module.exports = nodeUtil;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(17)(module)))
/***/ }),
/* 40 */
/***/ (function(module, exports) {
/** Used for built-in method references. */
var objectProto = Object.prototype;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString = objectProto.toString;
/**
* Converts `value` to a string using `Object.prototype.toString`.
*
* @private
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
*/
function objectToString(value) {
return nativeObjectToString.call(value);
}
module.exports = objectToString;
/***/ }),
/* 41 */
/***/ (function(module, exports) {
/**
* Creates a unary function that invokes `func` with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
module.exports = overArg;
/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {
var apply = __webpack_require__(28);
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax = Math.max;
/**
* A specialized version of `baseRest` which transforms the rest array.
*
* @private
* @param {Function} func The function to apply a rest parameter to.
* @param {number} [start=func.length-1] The start position of the rest parameter.
* @param {Function} transform The rest array transform.
* @returns {Function} Returns the new function.
*/
function overRest(func, start, transform) {
start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
return function() {
var args = arguments,
index = -1,
length = nativeMax(args.length - start, 0),
array = Array(length);
while (++index < length) {
array[index] = args[start + index];
}
index = -1;
var otherArgs = Array(start + 1);
while (++index < start) {
otherArgs[index] = args[index];
}
otherArgs[start] = transform(array);
return apply(func, this, otherArgs);
};
}
module.exports = overRest;
/***/ }),
/* 43 */
/***/ (function(module, exports) {
/**
* This method returns the first argument it receives.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Util
* @param {*} value Any value.
* @returns {*} Returns `value`.
* @example
*
* var object = { 'a': 1 };
*
* console.log(_.identity(object) === object);
* // => true
*/
function identity(value) {
return value;
}
module.exports = identity;
/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {
var baseIsArguments = __webpack_require__(30),
isObjectLike = __webpack_require__(4);
/** Used for built-in method references. */
var objectProto = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;
/** Built-in value references. */
var propertyIsEnumerable = objectProto.propertyIsEnumerable;
/**
* Checks if `value` is likely an `arguments` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
* else `false`.
* @example
*
* _.isArguments(function() { return arguments; }());
* // => true
*
* _.isArguments([1, 2, 3]);
* // => false
*/
var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
!propertyIsEnumerable.call(value, 'callee');
};
module.exports = isArguments;
/***/ }),
/* 45 */
/***/ (function(module, exports) {
/**
* Checks if `value` is classified as an `Array` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
* @example
*
* _.isArray([1, 2, 3]);
* // => true
*
* _.isArray(document.body.children);
* // => false
*
* _.isArray('abc');
* // => false
*
* _.isArray(_.noop);
* // => false
*/
var isArray = Array.isArray;
module.exports = isArray;
/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(10),
stubFalse = __webpack_require__(51);
/** Detect free variable `exports`. */
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Built-in value references. */
var Buffer = moduleExports ? root.Buffer : undefined;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
/**
* Checks if `value` is a buffer.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
* @example
*
* _.isBuffer(new Buffer(2));
* // => true
*
* _.isBuffer(new Uint8Array(2));
* // => false
*/
var isBuffer = nativeIsBuffer || stubFalse;
module.exports = isBuffer;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(17)(module)))
/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {
var baseGetTag = __webpack_require__(2),
isObject = __webpack_require__(48);
/** `Object#toString` result references. */
var asyncTag = '[object AsyncFunction]',
funcTag = '[object Function]',
genTag = '[object GeneratorFunction]',
proxyTag = '[object Proxy]';
/**
* Checks if `value` is classified as a `Function` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
* @example
*
* _.isFunction(_);
* // => true
*
* _.isFunction(/abc/);
* // => false
*/
function isFunction(value) {
if (!isObject(value)) {
return false;
}
// The use of `Object#toString` avoids issues with the `typeof` operator
// in Safari 9 which returns 'object' for typed arrays and other constructors.
var tag = baseGetTag(value);
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}
module.exports = isFunction;
/***/ }),
/* 48 */
/***/ (function(module, exports) {
/**
* Checks if `value` is the
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(_.noop);
* // => true
*
* _.isObject(null);
* // => false
*/
function isObject(value) {
var type = typeof value;
return value != null && (type == 'object' || type == 'function');
}
module.exports = isObject;
/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {
var baseIsTypedArray = __webpack_require__(31),
baseUnary = __webpack_require__(34),
nodeUtil = __webpack_require__(39);
/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
/**
* Checks if `value` is classified as a typed array.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
* @example
*
* _.isTypedArray(new Uint8Array);
* // => true
*
* _.isTypedArray([]);
* // => false
*/
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
module.exports = isTypedArray;
/***/ }),
/* 50 */
/***/ (function(module, exports, __webpack_require__) {
var arrayLikeKeys = __webpack_require__(29),
baseKeys = __webpack_require__(32),
isArrayLike = __webpack_require__(3);
/**
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keys(new Foo);
* // => ['a', 'b'] (iteration order is not guaranteed)
*
* _.keys('hi');
* // => ['0', '1']
*/
function keys(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
module.exports = keys;
/***/ }),
/* 51 */
/***/ (function(module, exports) {
/**
* This method returns `false`.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {boolean} Returns `false`.
* @example
*
* _.times(2, _.stubFalse);
* // => [false, false]
*/
function stubFalse() {
return false;
}
module.exports = stubFalse;
/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var sources = __webpack_require__(63)
var sinks = __webpack_require__(57)
var throughs = __webpack_require__(69)
exports = module.exports = __webpack_require__(53)
for(var k in sources)
exports[k] = sources[k]
for(var k in throughs)
exports[k] = throughs[k]
for(var k in sinks)
exports[k] = sinks[k]
/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function pull (a) {
var length = arguments.length
if (typeof a === 'function' && a.length === 1) {
var args = new Array(length)
for(var i = 0; i < length; i++)
args[i] = arguments[i]
return function (read) {
if (args == null) {
throw new TypeError("partial sink should only be called once!")
}
// Grab the reference after the check, because it's always an array now
// (engines like that kind of consistency).
var ref = args
args = null
// Prioritize common case of small number of pulls.
switch (length) {
case 1: return pull(read, ref[0])
case 2: return pull(read, ref[0], ref[1])
case 3: return pull(read, ref[0], ref[1], ref[2])
case 4: return pull(read, ref[0], ref[1], ref[2], ref[3])
default:
ref.unshift(read)
return pull.apply(null, ref)
}
}
}
var read = a
if (read && typeof read.source === 'function') {
read = read.source
}
for (var i = 1; i < length; i++) {
var s = arguments[i]
if (typeof s === 'function') {
read = s(read)
} else if (s && typeof s === 'object') {
s.sink(read)
read = s.source
}
}
return read
}
/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var reduce = __webpack_require__(5)
module.exports = function collect (cb) {
return reduce(function (arr, item) {
arr.push(item)
return arr
}, [], cb)
}
/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var reduce = __webpack_require__(5)
module.exports = function concat (cb) {
return reduce(function (a, b) {
return a + b
}, '', cb)
}
/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function id (e) { return e }
var prop = __webpack_require__(1)
var drain = __webpack_require__(0)
module.exports = function find (test, cb) {
var ended = false
if(!cb)
cb = test, test = id
else
test = prop(test) || id
return drain(function (data) {
if(test(data)) {
ended = true
cb(null, data)
return false
}
}, function (err) {
if(ended) return //already called back
cb(err === true ? null : err, null)
})
}
/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = {
drain: __webpack_require__(0),
onEnd: __webpack_require__(59),
log: __webpack_require__(58),
find: __webpack_require__(56),
reduce: __webpack_require__(5),
collect: __webpack_require__(54),
concat: __webpack_require__(55)
}
/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var drain = __webpack_require__(0)
module.exports = function log (done) {
return drain(function (data) {
console.log(data)
}, done)
}
/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var drain = __webpack_require__(0)
module.exports = function onEnd (done) {
return drain(null, done)
}
/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function count (max) {
var i = 0; max = max || Infinity
return function (end, cb) {
if(end) return cb && cb(end)
if(i > max)
return cb(true)
cb(null, i++)
}
}
/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
//a stream that ends immediately.
module.exports = function empty () {
return function (abort, cb) {
cb(true)
}
}
/***/ }),
/* 62 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
//a stream that errors immediately.
module.exports = function error (err) {
return function (abort, cb) {
cb(err)
}
}
/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = {
keys: __webpack_require__(65),
once: __webpack_require__(13),
values: __webpack_require__(6),
count: __webpack_require__(60),
infinite: __webpack_require__(64),
empty: __webpack_require__(61),
error: __webpack_require__(62)
}
/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function infinite (generate) {
generate = generate || Math.random
return function (end, cb) {
if(end) return cb && cb(end)
return cb(null, generate())
}
}
/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var values = __webpack_require__(6)
module.exports = function (object) {
return values(Object.keys(object))
}
/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function id (e) { return e }
var prop = __webpack_require__(1)
module.exports = function asyncMap (map) {
if(!map) return id
map = prop(map)
var busy = false, abortCb, aborted
return function (read) {
return function next (abort, cb) {
if(aborted) return cb(aborted)
if(abort) {
aborted = abort
if(!busy) read(abort, cb)
else read(abort, function () {
//if we are still busy, wait for the mapper to complete.
if(busy) abortCb = cb
else cb(abort)
})
}
else
read(null, function (end, data) {
if(end) cb(end)
else if(aborted) cb(aborted)
else {
busy = true
map(data, function (err, data) {
busy = false
if(aborted) {
cb(aborted)
abortCb(aborted)
}
else if(err) next (err, cb)
else cb(null, data)
})
}
})
}
}
}
/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var tester = __webpack_require__(16)
var filter = __webpack_require__(7)
module.exports = function filterNot (test) {
test = tester(test)
return filter(function (data) { return !test(data) })
}
/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var values = __webpack_require__(6)
var once = __webpack_require__(13)
//convert a stream of arrays or streams into just a stream.
module.exports = function flatten () {
return function (read) {
var _read
return function (abort, cb) {
if (abort) { //abort the current stream, and then stream of streams.
_read ? _read(abort, function(err) {
read(err || abort, cb)
}) : read(abort, cb)
}
else if(_read) nextChunk()
else nextStream()
function nextChunk () {
_read(null, function (err, data) {
if (err === true) nextStream()
else if (err) {
read(true, function(abortErr) {
// TODO: what do we do with the abortErr?
cb(err)
})
}
else cb(null, data)
})
}
function nextStream () {
_read = null
read(null, function (end, stream) {
if(end)
return cb(end)
if(Array.isArray(stream) || stream && 'object' === typeof stream)
stream = values(stream)
else if('function' != typeof stream)
stream = once(stream)
_read = stream
nextChunk()
})
}
}
}
}
/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = {
map: __webpack_require__(70),
asyncMap: __webpack_require__(66),
filter: __webpack_require__(7),
filterNot: __webpack_require__(67),
through: __webpack_require__(73),
take: __webpack_require__(72),
unique: __webpack_require__(14),
nonUnique: __webpack_require__(71),
flatten: __webpack_require__(68)
}
/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function id (e) { return e }
var prop = __webpack_require__(1)
module.exports = function map (mapper) {
if(!mapper) return id
mapper = prop(mapper)
return function (read) {
return function (abort, cb) {
read(abort, function (end, data) {
try {
data = !end ? mapper(data) : null
} catch (err) {
return read(err, function () {
return cb(err)
})
}
cb(end, data)
})
}
}
}
/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var unique = __webpack_require__(14)
//passes an item through when you see it for the second time.
module.exports = function nonUnique (field) {
return unique(field, true)
}
/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
//read a number of items and then stop.
module.exports = function take (test, opts) {
opts = opts || {}
var last = opts.last || false // whether the first item for which !test(item) should still pass
var ended = false
if('number' === typeof test) {
last = true
var n = test; test = function () {
return --n
}
}
return function (read) {
function terminate (cb) {
read(true, function (err) {
last = false; cb(err || true)
})
}
return function (end, cb) {
if(ended) last ? terminate(cb) : cb(ended)
else if(ended = end) read(ended, cb)
else
read(null, function (end, data) {
if(ended = ended || end) {
//last ? terminate(cb) :
cb(ended)
}
else if(!test(data)) {
ended = true
last ? cb(null, data) : terminate(cb)
}
else
cb(null, data)
})
}
}
}
/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
//a pass through stream that doesn't change the value.
module.exports = function through (op, onEnd) {
var a = false
function once (abort) {
if(a || !onEnd) return
a = true
onEnd(abort === true ? null : abort)
}
return function (read) {
return function (end, cb) {
if(end) once(end)
return read(end, function (end, data) {
if(!end) op && op(data)
else once(end)
cb(end, data)
})
}
}
}
/***/ }),
/* 74 */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || Function("return this")() || (1,eval)("this");
} catch(e) {
// This works if the window reference is available
if(typeof window === "object")
g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/* 75 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(18);
/***/ })
/******/ ]);
//# sourceMappingURL=index.js.map

2

dist/index.min.js

@@ -1,1 +0,1 @@

var IpfsBlockService=function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.i=function(value){return value},__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=75)}([function(module,exports,__webpack_require__){"use strict";module.exports=function(op,done){function sink(_read){return read=_read,abort?sink.abort():void function next(){for(var loop=!0,cbed=!1;loop;)if(cbed=!1,read(null,function(end,data){if(cbed=!0,end=end||abort){if(loop=!1,done)done(end===!0?null:end);else if(end&&end!==!0)throw end}else op&&!1===op(data)||abort?(loop=!1,read(abort||!0,done||function(){})):loop||next()}),!cbed)return void(loop=!1)}()}var read,abort;return sink.abort=function(err,cb){if("function"==typeof err&&(cb=err,err=!0),abort=err||!0,read)return read(abort,cb||function(){})},sink}},function(module,exports){module.exports=function(key){return key&&("string"==typeof key?function(data){return data[key]}:"object"==typeof key&&"function"==typeof key.exec?function(data){var v=key.exec(data);return v&&v[0]}:key)}},function(module,exports,__webpack_require__){function baseGetTag(value){return null==value?void 0===value?undefinedTag:nullTag:symToStringTag&&symToStringTag in Object(value)?getRawTag(value):objectToString(value)}var Symbol=__webpack_require__(8),getRawTag=__webpack_require__(35),objectToString=__webpack_require__(40),nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag=Symbol?Symbol.toStringTag:void 0;module.exports=baseGetTag},function(module,exports,__webpack_require__){function isArrayLike(value){return null!=value&&isLength(value.length)&&!isFunction(value)}var isFunction=__webpack_require__(47),isLength=__webpack_require__(11);module.exports=isArrayLike},function(module,exports){function isObjectLike(value){return null!=value&&"object"==typeof value}module.exports=isObjectLike},function(module,exports,__webpack_require__){"use strict";var drain=__webpack_require__(0);module.exports=function(reducer,acc,cb){cb||(cb=acc,acc=null);var sink=drain(function(data){acc=reducer(acc,data)},function(err){cb(err,acc)});return 2===arguments.length?function(source){source(null,function(end,data){return end?cb(end===!0?null:end):(acc=data,void sink(source))})}:sink}},function(module,exports,__webpack_require__){"use strict";var abortCb=__webpack_require__(15);module.exports=function(array,onAbort){if(!array)return function(abort,cb){return abort?abortCb(cb,abort,onAbort):cb(!0)};Array.isArray(array)||(array=Object.keys(array).map(function(k){return array[k]}));var i=0;return function(abort,cb){return abort?abortCb(cb,abort,onAbort):void(i>=array.length?cb(!0):cb(null,array[i++]))}}},function(module,exports,__webpack_require__){"use strict";var tester=__webpack_require__(16);module.exports=function(test){return test=tester(test),function(read){return function next(end,cb){for(var sync,loop=!0;loop;)loop=!1,sync=!0,read(end,function(end,data){return end||test(data)?void cb(end,data):sync?loop=!0:next(end,cb)}),sync=!1}}}},function(module,exports,__webpack_require__){var root=__webpack_require__(10),Symbol=root.Symbol;module.exports=Symbol},function(module,exports,__webpack_require__){(function(global){var freeGlobal="object"==typeof global&&global&&global.Object===Object&&global;module.exports=freeGlobal}).call(exports,__webpack_require__(74))},function(module,exports,__webpack_require__){var freeGlobal=__webpack_require__(9),freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")();module.exports=root},function(module,exports){function isLength(value){return"number"==typeof value&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER}var MAX_SAFE_INTEGER=9007199254740991;module.exports=isLength},function(module,exports){function noop(){}module.exports=noop},function(module,exports,__webpack_require__){"use strict";var abortCb=__webpack_require__(15);module.exports=function(value,onAbort){return function(abort,cb){if(abort)return abortCb(cb,abort,onAbort);if(null!=value){var _value=value;value=null,cb(null,_value)}else cb(!0)}}},function(module,exports,__webpack_require__){"use strict";function id(e){return e}var prop=__webpack_require__(1),filter=__webpack_require__(7);module.exports=function(field,invert){field=prop(field)||id;var seen={};return filter(function(data){var key=field(data);return seen[key]?!!invert:(seen[key]=!0,!invert)})}},function(module,exports){module.exports=function(cb,abort,onAbort){cb(abort),onAbort&&onAbort(abort===!0?null:abort)}},function(module,exports,__webpack_require__){function id(e){return e}var prop=__webpack_require__(1);module.exports=function(test){return"object"==typeof test&&"function"==typeof test.test?function(data){return test.test(data)}:prop(test)||id}},function(module,exports){module.exports=function(module){return module.webpackPolyfill||(module.deprecate=function(){},module.paths=[],module.children||(module.children=[]),Object.defineProperty(module,"loaded",{enumerable:!0,get:function(){return module.l}}),Object.defineProperty(module,"id",{enumerable:!0,get:function(){return module.i}}),module.webpackPolyfill=1),module}},function(module,exports,__webpack_require__){"use strict";const parallelLimit=__webpack_require__(27),pull=__webpack_require__(52);module.exports=class BlockService{constructor(ipfsRepo){this._repo=ipfsRepo,this._bitswap=null}goOnline(bitswap){this._bitswap=bitswap}goOffline(){this._bitswap=null}isOnline(){return null!=this._bitswap}put(blockAndCID,callback){return callback=callback||(()=>{}),blockAndCID?void pull(pull.values([blockAndCID]),this.putStream(),pull.onEnd(callback)):callback(new Error("Missing block and CID"))}putStream(){return this.isOnline()?this._bitswap.putStream():pull(pull.map(blockAndCID=>{return{data:blockAndCID.block.data,key:blockAndCID.cid.multihash}}),this._repo.blockstore.putStream())}get(cid,callback){pull(this.getStream(cid),pull.collect((err,result)=>{return err?callback(err):void callback(null,result[0])}))}getStream(cid){return this.isOnline()?this._bitswap.getStream(cid):this._repo.blockstore.getStream(cid.multihash)}delete(cids,callback){Array.isArray(cids)||(cids=[cids]),parallelLimit(cids.map(cid=>next=>{this._repo.blockstore.delete(cid.multihash,next)}),100,callback)}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default={},module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _eachOfLimit(limit){return function(obj,iteratee,callback){function iterateeCallback(err,value){if(running-=1,err)done=!0,callback(err);else{if(value===_breakLoop2.default||done&&running<=0)return done=!0,callback(null);replenish()}}function replenish(){for(;running<limit&&!done;){var elem=nextElem();if(null===elem)return done=!0,void(running<=0&&callback(null));running+=1,iteratee(elem.value,elem.key,(0,_onlyOnce2.default)(iterateeCallback))}}if(callback=(0,_once2.default)(callback||_noop2.default),limit<=0||!obj)return callback(null);var nextElem=(0,_iterator2.default)(obj),done=!1,running=0;replenish()}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=_eachOfLimit;var _noop=__webpack_require__(12),_noop2=_interopRequireDefault(_noop),_once=__webpack_require__(23),_once2=_interopRequireDefault(_once),_iterator=__webpack_require__(22),_iterator2=_interopRequireDefault(_iterator),_onlyOnce=__webpack_require__(24),_onlyOnce2=_interopRequireDefault(_onlyOnce),_breakLoop=__webpack_require__(19),_breakLoop2=_interopRequireDefault(_breakLoop);module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(coll){return iteratorSymbol&&coll[iteratorSymbol]&&coll[iteratorSymbol]()};var iteratorSymbol="function"==typeof Symbol&&Symbol.iterator;module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function createArrayIterator(coll){var i=-1,len=coll.length;return function(){return++i<len?{value:coll[i],key:i}:null}}function createES2015Iterator(iterator){var i=-1;return function(){var item=iterator.next();return item.done?null:(i++,{value:item.value,key:i})}}function createObjectIterator(obj){var okeys=(0,_keys2.default)(obj),i=-1,len=okeys.length;return function(){var key=okeys[++i];return i<len?{value:obj[key],key:key}:null}}function iterator(coll){if((0,_isArrayLike2.default)(coll))return createArrayIterator(coll);var iterator=(0,_getIterator2.default)(coll);return iterator?createES2015Iterator(iterator):createObjectIterator(coll)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=iterator;var _isArrayLike=__webpack_require__(3),_isArrayLike2=_interopRequireDefault(_isArrayLike),_getIterator=__webpack_require__(21),_getIterator2=_interopRequireDefault(_getIterator),_keys=__webpack_require__(50),_keys2=_interopRequireDefault(_keys);module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function once(fn){return function(){if(null!==fn){var callFn=fn;fn=null,callFn.apply(this,arguments)}}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=once,module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function onlyOnce(fn){return function(){if(null===fn)throw new Error("Callback was already called.");var callFn=fn;fn=null,callFn.apply(this,arguments)}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=onlyOnce,module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _parallel(eachfn,tasks,callback){callback=callback||_noop2.default;var results=(0,_isArrayLike2.default)(tasks)?[]:{};eachfn(tasks,function(task,key,callback){task((0,_rest2.default)(function(err,args){args.length<=1&&(args=args[0]),results[key]=args,callback(err)}))},function(err){callback(err,results)})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=_parallel;var _noop=__webpack_require__(12),_noop2=_interopRequireDefault(_noop),_isArrayLike=__webpack_require__(3),_isArrayLike2=_interopRequireDefault(_isArrayLike),_rest=__webpack_require__(26),_rest2=_interopRequireDefault(_rest);module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function rest(func,start){return(0,_overRest3.default)(func,start,_identity2.default)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=rest;var _overRest2=__webpack_require__(42),_overRest3=_interopRequireDefault(_overRest2),_identity=__webpack_require__(43),_identity2=_interopRequireDefault(_identity);module.exports=exports.default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function parallelLimit(tasks,limit,callback){(0,_parallel2.default)((0,_eachOfLimit2.default)(limit),tasks,callback)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=parallelLimit;var _eachOfLimit=__webpack_require__(20),_eachOfLimit2=_interopRequireDefault(_eachOfLimit),_parallel=__webpack_require__(25),_parallel2=_interopRequireDefault(_parallel);module.exports=exports.default},function(module,exports){function apply(func,thisArg,args){switch(args.length){case 0:return func.call(thisArg);case 1:return func.call(thisArg,args[0]);case 2:return func.call(thisArg,args[0],args[1]);case 3:return func.call(thisArg,args[0],args[1],args[2])}return func.apply(thisArg,args)}module.exports=apply},function(module,exports,__webpack_require__){function arrayLikeKeys(value,inherited){var isArr=isArray(value),isArg=!isArr&&isArguments(value),isBuff=!isArr&&!isArg&&isBuffer(value),isType=!isArr&&!isArg&&!isBuff&&isTypedArray(value),skipIndexes=isArr||isArg||isBuff||isType,result=skipIndexes?baseTimes(value.length,String):[],length=result.length;for(var key in value)!inherited&&!hasOwnProperty.call(value,key)||skipIndexes&&("length"==key||isBuff&&("offset"==key||"parent"==key)||isType&&("buffer"==key||"byteLength"==key||"byteOffset"==key)||isIndex(key,length))||result.push(key);return result}var baseTimes=__webpack_require__(33),isArguments=__webpack_require__(44),isArray=__webpack_require__(45),isBuffer=__webpack_require__(46),isIndex=__webpack_require__(36),isTypedArray=__webpack_require__(49),objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty;module.exports=arrayLikeKeys},function(module,exports,__webpack_require__){function baseIsArguments(value){return isObjectLike(value)&&baseGetTag(value)==argsTag}var baseGetTag=__webpack_require__(2),isObjectLike=__webpack_require__(4),argsTag="[object Arguments]";module.exports=baseIsArguments},function(module,exports,__webpack_require__){function baseIsTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[baseGetTag(value)]}var baseGetTag=__webpack_require__(2),isLength=__webpack_require__(11),isObjectLike=__webpack_require__(4),argsTag="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",mapTag="[object Map]",numberTag="[object Number]",objectTag="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1,module.exports=baseIsTypedArray},function(module,exports,__webpack_require__){function baseKeys(object){if(!isPrototype(object))return nativeKeys(object);var result=[];for(var key in Object(object))hasOwnProperty.call(object,key)&&"constructor"!=key&&result.push(key);return result}var isPrototype=__webpack_require__(37),nativeKeys=__webpack_require__(38),objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty;module.exports=baseKeys},function(module,exports){function baseTimes(n,iteratee){for(var index=-1,result=Array(n);++index<n;)result[index]=iteratee(index);return result}module.exports=baseTimes},function(module,exports){function baseUnary(func){return function(value){return func(value)}}module.exports=baseUnary},function(module,exports,__webpack_require__){function getRawTag(value){var isOwn=hasOwnProperty.call(value,symToStringTag),tag=value[symToStringTag];try{value[symToStringTag]=void 0;var unmasked=!0}catch(e){}var result=nativeObjectToString.call(value);return unmasked&&(isOwn?value[symToStringTag]=tag:delete value[symToStringTag]),result}var Symbol=__webpack_require__(8),objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol?Symbol.toStringTag:void 0;module.exports=getRawTag},function(module,exports){function isIndex(value,length){return length=null==length?MAX_SAFE_INTEGER:length,!!length&&("number"==typeof value||reIsUint.test(value))&&value>-1&&value%1==0&&value<length}var MAX_SAFE_INTEGER=9007199254740991,reIsUint=/^(?:0|[1-9]\d*)$/;module.exports=isIndex},function(module,exports){function isPrototype(value){var Ctor=value&&value.constructor,proto="function"==typeof Ctor&&Ctor.prototype||objectProto;return value===proto}var objectProto=Object.prototype;module.exports=isPrototype},function(module,exports,__webpack_require__){var overArg=__webpack_require__(41),nativeKeys=overArg(Object.keys,Object);module.exports=nativeKeys},function(module,exports,__webpack_require__){(function(module){var freeGlobal=__webpack_require__(9),freeExports="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule=freeExports&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports=freeModule&&freeModule.exports===freeExports,freeProcess=moduleExports&&freeGlobal.process,nodeUtil=function(){try{return freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(e){}}();module.exports=nodeUtil}).call(exports,__webpack_require__(17)(module))},function(module,exports){function objectToString(value){return nativeObjectToString.call(value)}var objectProto=Object.prototype,nativeObjectToString=objectProto.toString;module.exports=objectToString},function(module,exports){function overArg(func,transform){return function(arg){return func(transform(arg))}}module.exports=overArg},function(module,exports,__webpack_require__){function overRest(func,start,transform){return start=nativeMax(void 0===start?func.length-1:start,0),function(){for(var args=arguments,index=-1,length=nativeMax(args.length-start,0),array=Array(length);++index<length;)array[index]=args[start+index];index=-1;for(var otherArgs=Array(start+1);++index<start;)otherArgs[index]=args[index];return otherArgs[start]=transform(array),apply(func,this,otherArgs)}}var apply=__webpack_require__(28),nativeMax=Math.max;module.exports=overRest},function(module,exports){function identity(value){return value}module.exports=identity},function(module,exports,__webpack_require__){var baseIsArguments=__webpack_require__(30),isObjectLike=__webpack_require__(4),objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,propertyIsEnumerable=objectProto.propertyIsEnumerable,isArguments=baseIsArguments(function(){return arguments}())?baseIsArguments:function(value){return isObjectLike(value)&&hasOwnProperty.call(value,"callee")&&!propertyIsEnumerable.call(value,"callee")};module.exports=isArguments},function(module,exports){var isArray=Array.isArray;module.exports=isArray},function(module,exports,__webpack_require__){(function(module){var root=__webpack_require__(10),stubFalse=__webpack_require__(51),freeExports="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule=freeExports&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports=freeModule&&freeModule.exports===freeExports,Buffer=moduleExports?root.Buffer:void 0,nativeIsBuffer=Buffer?Buffer.isBuffer:void 0,isBuffer=nativeIsBuffer||stubFalse;module.exports=isBuffer}).call(exports,__webpack_require__(17)(module))},function(module,exports,__webpack_require__){function isFunction(value){if(!isObject(value))return!1;var tag=baseGetTag(value);return tag==funcTag||tag==genTag||tag==asyncTag||tag==proxyTag}var baseGetTag=__webpack_require__(2),isObject=__webpack_require__(48),asyncTag="[object AsyncFunction]",funcTag="[object Function]",genTag="[object GeneratorFunction]",proxyTag="[object Proxy]";module.exports=isFunction},function(module,exports){function isObject(value){var type=typeof value;return null!=value&&("object"==type||"function"==type)}module.exports=isObject},function(module,exports,__webpack_require__){var baseIsTypedArray=__webpack_require__(31),baseUnary=__webpack_require__(34),nodeUtil=__webpack_require__(39),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;module.exports=isTypedArray},function(module,exports,__webpack_require__){function keys(object){return isArrayLike(object)?arrayLikeKeys(object):baseKeys(object)}var arrayLikeKeys=__webpack_require__(29),baseKeys=__webpack_require__(32),isArrayLike=__webpack_require__(3);module.exports=keys},function(module,exports){function stubFalse(){return!1}module.exports=stubFalse},function(module,exports,__webpack_require__){"use strict";var sources=__webpack_require__(63),sinks=__webpack_require__(57),throughs=__webpack_require__(69);exports=module.exports=__webpack_require__(53);for(var k in sources)exports[k]=sources[k];for(var k in throughs)exports[k]=throughs[k];for(var k in sinks)exports[k]=sinks[k]},function(module,exports,__webpack_require__){"use strict";module.exports=function pull(a){var length=arguments.length;if("function"==typeof a&&1===a.length){for(var args=new Array(length),i=0;i<length;i++)args[i]=arguments[i];return function(read){if(null==args)throw new TypeError("partial sink should only be called once!");var ref=args;switch(args=null,length){case 1:return pull(read,ref[0]);case 2:return pull(read,ref[0],ref[1]);case 3:return pull(read,ref[0],ref[1],ref[2]);case 4:return pull(read,ref[0],ref[1],ref[2],ref[3]);default:return ref.unshift(read),pull.apply(null,ref)}}}var read=a;read&&"function"==typeof read.source&&(read=read.source);for(var i=1;i<length;i++){var s=arguments[i];"function"==typeof s?read=s(read):s&&"object"==typeof s&&(s.sink(read),read=s.source)}return read}},function(module,exports,__webpack_require__){"use strict";var reduce=__webpack_require__(5);module.exports=function(cb){return reduce(function(arr,item){return arr.push(item),arr},[],cb)}},function(module,exports,__webpack_require__){"use strict";var reduce=__webpack_require__(5);module.exports=function(cb){return reduce(function(a,b){return a+b},"",cb)}},function(module,exports,__webpack_require__){"use strict";function id(e){return e}var prop=__webpack_require__(1),drain=__webpack_require__(0);module.exports=function(test,cb){var ended=!1;return cb?test=prop(test)||id:(cb=test,test=id),drain(function(data){if(test(data))return ended=!0,cb(null,data),!1},function(err){ended||cb(err===!0?null:err,null)})}},function(module,exports,__webpack_require__){"use strict";module.exports={drain:__webpack_require__(0),onEnd:__webpack_require__(59),log:__webpack_require__(58),find:__webpack_require__(56),reduce:__webpack_require__(5),collect:__webpack_require__(54),concat:__webpack_require__(55)}},function(module,exports,__webpack_require__){"use strict";var drain=__webpack_require__(0);module.exports=function(done){return drain(function(data){console.log(data)},done)}},function(module,exports,__webpack_require__){"use strict";var drain=__webpack_require__(0);module.exports=function(done){return drain(null,done)}},function(module,exports,__webpack_require__){"use strict";module.exports=function(max){var i=0;return max=max||1/0,function(end,cb){return end?cb&&cb(end):i>max?cb(!0):void cb(null,i++)}}},function(module,exports,__webpack_require__){"use strict";module.exports=function(){return function(abort,cb){cb(!0)}}},function(module,exports,__webpack_require__){"use strict";module.exports=function(err){return function(abort,cb){cb(err)}}},function(module,exports,__webpack_require__){"use strict";module.exports={keys:__webpack_require__(65),once:__webpack_require__(13),values:__webpack_require__(6),count:__webpack_require__(60),infinite:__webpack_require__(64),empty:__webpack_require__(61),error:__webpack_require__(62)}},function(module,exports,__webpack_require__){"use strict";module.exports=function(generate){return generate=generate||Math.random,function(end,cb){return end?cb&&cb(end):cb(null,generate())}}},function(module,exports,__webpack_require__){"use strict";var values=__webpack_require__(6);module.exports=function(object){return values(Object.keys(object))}},function(module,exports,__webpack_require__){"use strict";function id(e){return e}var prop=__webpack_require__(1);module.exports=function(map){if(!map)return id;map=prop(map);var abortCb,aborted,busy=!1;return function(read){return function next(abort,cb){return aborted?cb(aborted):void(abort?(aborted=abort,busy?read(abort,function(){busy?abortCb=cb:cb(abort)}):read(abort,cb)):read(null,function(end,data){end?cb(end):aborted?cb(aborted):(busy=!0,map(data,function(err,data){busy=!1,aborted?(cb(aborted),abortCb(aborted)):err?next(err,cb):cb(null,data)}))}))}}}},function(module,exports,__webpack_require__){"use strict";var tester=__webpack_require__(16),filter=__webpack_require__(7);module.exports=function(test){return test=tester(test),filter(function(data){return!test(data)})}},function(module,exports,__webpack_require__){"use strict";var values=__webpack_require__(6),once=__webpack_require__(13);module.exports=function(){return function(read){var _read;return function(abort,cb){function nextChunk(){_read(null,function(err,data){err===!0?nextStream():err?read(!0,function(abortErr){cb(err)}):cb(null,data)})}function nextStream(){_read=null,read(null,function(end,stream){return end?cb(end):(Array.isArray(stream)||stream&&"object"==typeof stream?stream=values(stream):"function"!=typeof stream&&(stream=once(stream)),_read=stream,void nextChunk())})}abort?_read?_read(abort,function(err){read(err||abort,cb)}):read(abort,cb):_read?nextChunk():nextStream()}}}},function(module,exports,__webpack_require__){"use strict";module.exports={map:__webpack_require__(70),asyncMap:__webpack_require__(66),filter:__webpack_require__(7),filterNot:__webpack_require__(67),through:__webpack_require__(73),take:__webpack_require__(72),unique:__webpack_require__(14),nonUnique:__webpack_require__(71),flatten:__webpack_require__(68)}},function(module,exports,__webpack_require__){"use strict";function id(e){return e}var prop=__webpack_require__(1);module.exports=function(mapper){return mapper?(mapper=prop(mapper),function(read){return function(abort,cb){read(abort,function(end,data){try{data=end?null:mapper(data)}catch(err){return read(err,function(){return cb(err)})}cb(end,data)})}}):id}},function(module,exports,__webpack_require__){"use strict";var unique=__webpack_require__(14);module.exports=function(field){return unique(field,!0)}},function(module,exports,__webpack_require__){"use strict";module.exports=function(test,opts){opts=opts||{};var last=opts.last||!1,ended=!1;if("number"==typeof test){last=!0;var n=test;test=function(){return--n}}return function(read){function terminate(cb){read(!0,function(err){last=!1,cb(err||!0)})}return function(end,cb){ended?last?terminate(cb):cb(ended):(ended=end)?read(ended,cb):read(null,function(end,data){(ended=ended||end)?cb(ended):test(data)?cb(null,data):(ended=!0,last?cb(null,data):terminate(cb))})}}}},function(module,exports,__webpack_require__){"use strict";module.exports=function(op,onEnd){function once(abort){!a&&onEnd&&(a=!0,onEnd(abort===!0?null:abort))}var a=!1;return function(read){return function(end,cb){return end&&once(end),read(end,function(end,data){end?once(end):op&&op(data),cb(end,data)})}}}},function(module,exports){var g;g=function(){return this}();try{g=g||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(g=window)}module.exports=g},function(module,exports,__webpack_require__){module.exports=__webpack_require__(18)}]);
var IpfsBlockService=function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.i=function(value){return value},__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=1)}([function(module,exports,__webpack_require__){"use strict";class BlockService{constructor(ipfsRepo){this._repo=ipfsRepo,this._bitswap=null}goOnline(bitswap){this._bitswap=bitswap}goOffline(){this._bitswap=null}isOnline(){return null!=this._bitswap}put(block,callback){if(this.isOnline())return this._bitswap.put(block,callback);this._repo.blockstore.put(block,callback)}putMany(blocks,callback){if(this.isOnline())return this._bitswap.putMany(blocks,callback);this._repo.blockstore.putMany(blocks,callback)}get(cid,callback){return this.isOnline()?this._bitswap.get(cid,callback):this._repo.blockstore.get(cid,callback)}delete(cid,callback){this._repo.blockstore.delete(cid,callback)}}module.exports=BlockService},function(module,exports,__webpack_require__){module.exports=__webpack_require__(0)}]);
{
"name": "ipfs-block-service",
"version": "0.8.3",
"version": "0.9.0",
"description": "JavaScript Implementation of BlockService",

@@ -12,7 +12,8 @@ "main": "src/index.js",

"test:browser": "aegir-test browser",
"release": "aegir-release",
"release-minor": "aegir-release --type minor",
"release-major": "aegir-release --type major",
"release": "aegir-release --docs",
"release-minor": "aegir-release --type minor --docs",
"release-major": "aegir-release --type major --docs",
"coverage": "aegir-coverage",
"coverage-publish": "aegir-coverage publish"
"coverage-publish": "aegir-coverage publish",
"docs": "aegir-docs"
},

@@ -40,21 +41,20 @@ "pre-commit": [

"devDependencies": {
"aegir": "^10.0.0",
"buffer-loader": "0.0.1",
"aegir": "^11.0.0",
"async": "^2.1.5",
"chai": "^3.5.0",
"fs-pull-blob-store": "~0.4.1",
"idb-pull-blob-store": "~0.5.1",
"ipfs-block": "~0.5.5",
"ipfs-repo": "~0.11.3",
"cids": "^0.4.2",
"dirty-chai": "^1.2.2",
"ipfs-block": "~0.6.0",
"ipfs-repo": "~0.12.0",
"lodash": "^4.17.4",
"multihashing-async": "^0.4.4",
"ncp": "^2.0.0",
"pre-commit": "^1.2.2",
"rimraf": "^2.5.4"
"rimraf": "^2.6.1"
},
"engines": {
"node": ">=4.0.0"
"node": ">=4.0.0",
"npm": ">=3.0.0"
},
"dependencies": {
"async": "^2.1.4",
"cids": "~0.4.1"
},
"dependencies": {},
"contributors": [

@@ -61,0 +61,0 @@ "David Dias <daviddias.p@gmail.com>",

@@ -28,3 +28,2 @@ # IPFS Block Service JavaScript Implementation

└────────────────────┘
┌─────┴─────┐

@@ -46,2 +45,3 @@ ▼ ▼

- [Browser: `<script>` Tag](#browser-script-tag)
- [API](#api)
- [Contribute](#contribute)

@@ -55,3 +55,3 @@ - [License](#license)

```sh
> npm i ipfs-block-service
> npm install ipfs-block-service
```

@@ -74,22 +74,31 @@

const IPFSRepo = require('ipfs-repo') // storage repo
const Store = require('interface-pull-blob-store') // in-memory store
// setup a repo
var repo = new IPFSRepo('example', { stores: Store })
const repo = new IPFSRepo('example')
// create a block
const block = new Block('hello world')
console.log(block.data)
console.log(block.key())
const data = new Buffer('hello world')
multihashing(data, 'sha2-256', (err, multihash) => {
if (err) {
throw err
}
// create a service
const bs = new BlockService(repo)
const cid = new CID(multihash)
const block = new Block(data, cid)
// add the block, then retrieve it
bs.put({
block: block,
cid: cid,
}, function (err) {
bs.get(cid, function (err, b) {
console.log(block.data.toString() === b.data.toString())
// create a service
const bs = new BlockService(repo)
// add the block, then retrieve it
bs.put(block, (err) => {
if (err) {
throw err
}
bs.get(cid, (err, b) => {
if (err) {
throw err
}
console.log(block.data.toString() === b.data.toString())
// => true
})
})

@@ -99,20 +108,4 @@ })

outputs
```
<Buffer 68 65 6c 6c 6f 20 77 61 72 6c 64>
<Buffer 12 20 db 3c 15 23 3f f3 84 8f 42 fe 3b 74 78 90 90 5a 80 7e a6 ef 2b 6d 2f 3c 8b 2c b7 ae be 86 3c 4d>
true
```
### Browser: Browserify, Webpack, other bundlers
The code published to npm that gets loaded on require is in fact a ES5
transpiled version with the right shims added. This means that you can require
it and use with your favourite bundler without having to adjust asset management
process.
```JavaScript

@@ -133,67 +126,6 @@ var BlockService = require('ipfs-block-service')

# API
## API
```js
const BlockService = require('ipfs-block-service')
```
See https://ipfs.github.io/js-ipfs-block-service
### `new BlockService(repo)`
- `repo: Repo`
Creates a new block service backed by [IPFS Repo][repo] `repo` for storage.
### `goOnline(bitswap)`
- `bitswap: Bitswap`
Add a bitswap instance that communicates with the network to retreive blocks
that are not in the local store.
If the node is online all requests for blocks first check locally and
afterwards ask the network for the blocks.
### `goOffline()`
Remove the bitswap instance and fall back to offline mode.
### `isOnline()`
Returns a `Boolean` indicating if the block service is online or not.
### `put(blockAndCID, callback)`
- `blockAndCID: { block: block, cid: cid }`
- `callback: Function`
Asynchronously adds a block instance to the underlying repo.
### `putStream()`
Returns a through pull-stream, which `blockAndCID`s can be written to, and
that emits the meta data about the written block.
### `get(cid [, extension], callback)`
- `cid: CID`
- `extension: String`, defaults to 'data'
- `callback: Function`
Asynchronously returns the block whose content multihash matches `multihash`.
### `getStream(cid [, extension])`
- `cid: CID`
- `extension: String`, defaults to 'data'
Returns a source pull-stream, which emits the requested block.
### `delete(cids, [, extension], callback)`
- `cids: CID | []CID`
- `extension: String`, defaults to 'data' - `extension: String`, defaults to 'data'
- `callback: Function`
Deletes all blocks referenced by multihashes.
## Contribute

@@ -214,3 +146,1 @@

[repo]: https://github.com/ipfs/specs/tree/master/repo
'use strict'
const parallelLimit = require('async/parallelLimit')
const pull = require('pull-stream')
// BlockService is a hybrid block datastore. It stores data in a local
// datastore and may retrieve data from a remote Exchange.
// It uses an internal `datastore.Datastore` instance to store values.
module.exports = class BlockService {
/**
* BlockService is a hybrid block datastore. It stores data in a local
* datastore and may retrieve data from a remote Exchange.
* It uses an internal `datastore.Datastore` instance to store values.
*/
class BlockService {
/**
* Create a new BlockService
*
* @param {IPFSRepo} ipfsRepo
* @returns {BlockService}
*/
constructor (ipfsRepo) {

@@ -15,2 +20,12 @@ this._repo = ipfsRepo

/**
* Add a bitswap instance that communicates with the
* network to retreive blocks that are not in the local store.
*
* If the node is online all requests for blocks first
* check locally and afterwards ask the network for the blocks.
*
* @param {Bitswap} bitswap
* @returns {void}
*/
goOnline (bitswap) {

@@ -20,2 +35,7 @@ this._bitswap = bitswap

/**
* Go offline, i.e. drop the reference to bitswap.
*
* @returns {void}
*/
goOffline () {

@@ -25,2 +45,7 @@ this._bitswap = null

/**
* Is the blockservice online, i.e. is bitswap present.
*
* @returns {bool}
*/
isOnline () {

@@ -30,66 +55,59 @@ return this._bitswap != null

// Note: we have to pass the CID, so that bitswap can then use it for
// the smart selectors. For now, passing the CID is used so that we know
// the right multihash, this means that now we have multiple hashes official
// support \o/
put (blockAndCID, callback) {
callback = callback || (() => {})
if (!blockAndCID) {
return callback(new Error('Missing block and CID'))
/**
* Put a block to the underlying datastore.
*
* @param {Block} block
* @param {function(Error)} callback
* @returns {void}
*/
put (block, callback) {
if (this.isOnline()) {
return this._bitswap.put(block, callback)
}
pull(
pull.values([
blockAndCID
]),
this.putStream(),
pull.onEnd(callback)
)
this._repo.blockstore.put(block, callback)
}
putStream () {
/**
* Put a multiple blocks to the underlying datastore.
*
* @param {Array<Block>} blocks
* @param {function(Error)} callback
* @returns {void}
*/
putMany (blocks, callback) {
if (this.isOnline()) {
return this._bitswap.putStream()
} else {
return pull(
pull.map((blockAndCID) => {
return {
data: blockAndCID.block.data,
key: blockAndCID.cid.multihash
}
}),
this._repo.blockstore.putStream()
)
return this._bitswap.putMany(blocks, callback)
}
this._repo.blockstore.putMany(blocks, callback)
}
/**
* Get a block by cid.
*
* @param {CID} cid
* @param {function(Error, Block)} callback
* @returns {void}
*/
get (cid, callback) {
pull(
this.getStream(cid),
pull.collect((err, result) => {
if (err) {
return callback(err)
}
callback(null, result[0])
})
)
}
getStream (cid) {
if (this.isOnline()) {
return this._bitswap.getStream(cid)
return this._bitswap.get(cid, callback)
}
return this._repo.blockstore.getStream(cid.multihash)
return this._repo.blockstore.get(cid, callback)
}
delete (cids, callback) {
if (!Array.isArray(cids)) {
cids = [cids]
}
parallelLimit(cids.map((cid) => (next) => {
this._repo.blockstore.delete(cid.multihash, next)
}), 100, callback)
/**
* Delete a block from the blockstore.
*
* @param {CID} cid
* @param {function(Error)} callback
* @return {void}
*/
delete (cid, callback) {
this._repo.blockstore.delete(cid, callback)
}
}
module.exports = BlockService

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc