diff --git a/dist/orbitdb.min.js b/dist/orbitdb.js similarity index 93% rename from dist/orbitdb.min.js rename to dist/orbitdb.js index aa5765c..295489a 100644 --- a/dist/orbitdb.min.js +++ b/dist/orbitdb.js @@ -47,31 +47,24 @@ var OrbitDB = 'use strict'; - var _promise = __webpack_require__(1); - - var _promise2 = _interopRequireDefault(_promise); - - var _assign = __webpack_require__(69); - - var _assign2 = _interopRequireDefault(_assign); - - var _classCallCheck2 = __webpack_require__(74); + var _classCallCheck2 = __webpack_require__(1); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(75); + var _createClass2 = __webpack_require__(2); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var EventEmitter = __webpack_require__(79).EventEmitter; - var logger = __webpack_require__(80).create("orbit-db.Client"); - var EventStore = __webpack_require__(87); - var FeedStore = __webpack_require__(103); - var KeyValueStore = __webpack_require__(105); - var CounterStore = __webpack_require__(107); - var PubSub = __webpack_require__(111); + var EventEmitter = __webpack_require__(21).EventEmitter; + var Logger = __webpack_require__(22); + var logger = Logger.create("orbit-db", { color: Logger.Colors.Magenta }); + var EventStore = __webpack_require__(29); + var FeedStore = __webpack_require__(137); + var KeyValueStore = __webpack_require__(139); + var CounterStore = __webpack_require__(141); + var PubSub = __webpack_require__(145); var OrbitDB = function () { function OrbitDB(ipfs) { @@ -119,35 +112,27 @@ var OrbitDB = }, { key: '_createStore', value: function _createStore(Store, dbname, options) { - var _this = this; - if (!options) options = {}; - if (options.subscribe === undefined) (0, _assign2.default)(options, { subscribe: true }); - + var replicate = options.subscribe ? options.subscribe : true; var store = new Store(this._ipfs, this.user.username, dbname, options); - return this._subscribe(store, dbname, options.subscribe).then(function () { - return _this.stores[dbname] = store; - }).then(function () { - return store; - }); + this.stores[dbname] = store; + return this._subscribe(store, dbname, replicate); } }, { key: '_subscribe', value: function _subscribe(store, dbname, subscribe, callback) { - var _this2 = this; - if (subscribe === undefined) subscribe = true; - return store.use(this.user.username).then(function (events) { - events.on('readable', _this2._onSync.bind(_this2)); - events.on('data', _this2._onWrite.bind(_this2)); - events.on('load', _this2._onLoad.bind(_this2)); - events.on('close', _this2._onClose.bind(_this2)); + store.events.on('load', this._onLoad.bind(this)); + store.events.on('ready', this._onReady.bind(this)); + store.events.on('sync', this._onSync.bind(this)); + store.events.on('updated', this._onSynced.bind(this)); + store.events.on('data', this._onWrite.bind(this)); + store.events.on('close', this._onClose.bind(this)); - if (subscribe) _this2._pubsub.subscribe(dbname, '', _this2._onMessage.bind(_this2)); + if (subscribe) this._pubsub.subscribe(dbname, '', this._onMessage.bind(this)); - return; - }); + return store.use(this.user.username); } }, { key: '_onMessage', @@ -160,19 +145,34 @@ var OrbitDB = }, { key: '_onWrite', value: function _onWrite(dbname, hash) { + // console.log(".WRITE", dbname); if (!hash) throw new Error("Hash can't be null!"); this._pubsub.publish(dbname, hash); this.events.emit('data', dbname, hash); } }, { key: '_onSync', - value: function _onSync(dbname, hash) { - this.events.emit('readable', dbname, hash); + value: function _onSync(dbname) { + // console.log(".SYNC", dbname); + this.events.emit('sync', dbname); + } + }, { + key: '_onSynced', + value: function _onSynced(dbname, items) { + // console.log(".SYNCED", dbname); + this.events.emit('synced', dbname, items); } }, { key: '_onLoad', - value: function _onLoad(dbname, hash) { - this.events.emit('load', dbname, hash); + value: function _onLoad(dbname) { + // console.log(".LOAD", dbname); + this.events.emit('load', dbname); + } + }, { + key: '_onReady', + value: function _onReady(dbname) { + // console.log(".READY", dbname); + this.events.emit('ready', this.stores[dbname]); } }, { key: '_onClose', @@ -184,50 +184,35 @@ var OrbitDB = }, { key: '_connect', value: function _connect(hash, username, password, allowOffline) { - var _this3 = this; + var _this = this; if (allowOffline === undefined) allowOffline = false; - - var readNetworkInfo = function readNetworkInfo(hash) { - return new _promise2.default(function (resolve, reject) { - _this3._ipfs.cat(hash).then(function (res) { - var buf = ''; - res.on('error', function (err) { - return reject(err); - }).on('data', function (data) { - return buf += data; - }).on('end', function () { - return resolve(buf); - }); - }); - }); - }; - var host = void 0, port = void 0, name = void 0; - return readNetworkInfo(hash).then(function (network) { - return JSON.parse(network); + return this._ipfs.object.get(hash).then(function (object) { + return JSON.parse(object.Data); }).then(function (network) { - _this3.network = network; + _this.network = network; name = network.name; host = network.publishers[0].split(":")[0]; port = network.publishers[0].split(":")[1]; }).then(function () { - _this3._pubsub = new PubSub(); - return _this3._pubsub.connect(host, port, username, password); + _this._pubsub = new PubSub(); + logger.warn('Connecting to Pubsub at \'' + host + ':' + port + '\''); + return _this._pubsub.connect(host, port, username, password); }).then(function () { logger.debug('Connected to Pubsub at \'' + host + ':' + port + '\''); - _this3.user = { username: username, id: username }; // TODO: user id from ipfs hash + _this.user = { username: username, id: username }; // TODO: user id from ipfs hash return; }).catch(function (e) { logger.warn("Couldn't connect to Pubsub: " + e.message); if (!allowOffline) { logger.debug("'allowOffline' set to false, terminating"); - _this3._pubsub.disconnect(); + _this._pubsub.disconnect(); throw e; } - _this3.user = { username: username, id: username }; // TODO: user id from ipfs hash + _this.user = { username: username, id: username }; // TODO: user id from ipfs hash return; }); } @@ -263,180 +248,82 @@ var OrbitDB = /***/ }, /* 1 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { - module.exports = { "default": __webpack_require__(2), __esModule: true }; + "use strict"; + + exports.__esModule = true; + + exports.default = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { - __webpack_require__(3); - __webpack_require__(4); - __webpack_require__(48); - __webpack_require__(52); - module.exports = __webpack_require__(12).Promise; + "use strict"; + + exports.__esModule = true; + + var _defineProperty = __webpack_require__(3); + + 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; + (0, _defineProperty2.default)(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); /***/ }, /* 3 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { - + module.exports = { "default": __webpack_require__(4), __esModule: true }; /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - var $at = __webpack_require__(5)(true); - - // 21.1.3.27 String.prototype[@@iterator]() - __webpack_require__(8)(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}; - }); + __webpack_require__(5); + var $Object = __webpack_require__(8).Object; + module.exports = function defineProperty(it, key, desc){ + return $Object.defineProperty(it, key, desc); + }; /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { - var toInteger = __webpack_require__(6) - , defined = __webpack_require__(7); - // true -> String#at - // false -> String#codePointAt - module.exports = 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 $export = __webpack_require__(6); + // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) + $export($export.S + $export.F * !__webpack_require__(16), 'Object', {defineProperty: __webpack_require__(12).f}); /***/ }, /* 6 */ -/***/ function(module, exports) { - - // 7.1.4 ToInteger - var ceil = Math.ceil - , floor = Math.floor; - module.exports = function(it){ - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); - }; - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - // 7.2.1 RequireObjectCoercible(argument) - module.exports = function(it){ - if(it == undefined)throw TypeError("Can't call method on " + it); - return it; - }; - -/***/ }, -/* 8 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - var LIBRARY = __webpack_require__(9) - , $export = __webpack_require__(10) - , redefine = __webpack_require__(25) - , hide = __webpack_require__(15) - , has = __webpack_require__(26) - , Iterators = __webpack_require__(27) - , $iterCreate = __webpack_require__(28) - , setToStringTag = __webpack_require__(44) - , getPrototypeOf = __webpack_require__(46) - , ITERATOR = __webpack_require__(45)('iterator') - , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` - , FF_ITERATOR = '@@iterator' - , KEYS = 'keys' - , VALUES = 'values'; - - var returnThis = function(){ return this; }; - - module.exports = 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 = getPrototypeOf($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; - }; - -/***/ }, -/* 9 */ -/***/ function(module, exports) { - - module.exports = true; - -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { - - var global = __webpack_require__(11) - , core = __webpack_require__(12) - , ctx = __webpack_require__(13) - , hide = __webpack_require__(15) + var global = __webpack_require__(7) + , core = __webpack_require__(8) + , ctx = __webpack_require__(9) + , hide = __webpack_require__(11) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ @@ -496,7 +383,7 @@ var OrbitDB = module.exports = $export; /***/ }, -/* 11 */ +/* 7 */ /***/ function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 @@ -505,18 +392,18 @@ var OrbitDB = if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }, -/* 12 */ +/* 8 */ /***/ function(module, exports) { var core = module.exports = {version: '2.4.0'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }, -/* 13 */ +/* 9 */ /***/ function(module, exports, __webpack_require__) { // optional / simple context binding - var aFunction = __webpack_require__(14); + var aFunction = __webpack_require__(10); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; @@ -537,7 +424,7 @@ var OrbitDB = }; /***/ }, -/* 14 */ +/* 10 */ /***/ function(module, exports) { module.exports = function(it){ @@ -546,12 +433,12 @@ var OrbitDB = }; /***/ }, -/* 15 */ +/* 11 */ /***/ function(module, exports, __webpack_require__) { - var dP = __webpack_require__(16) - , createDesc = __webpack_require__(24); - module.exports = __webpack_require__(20) ? function(object, key, value){ + var dP = __webpack_require__(12) + , createDesc = __webpack_require__(20); + module.exports = __webpack_require__(16) ? function(object, key, value){ return dP.f(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; @@ -559,15 +446,15 @@ var OrbitDB = }; /***/ }, -/* 16 */ +/* 12 */ /***/ function(module, exports, __webpack_require__) { - var anObject = __webpack_require__(17) - , IE8_DOM_DEFINE = __webpack_require__(19) - , toPrimitive = __webpack_require__(23) + var anObject = __webpack_require__(13) + , IE8_DOM_DEFINE = __webpack_require__(15) + , toPrimitive = __webpack_require__(19) , dP = Object.defineProperty; - exports.f = __webpack_require__(20) ? Object.defineProperty : function defineProperty(O, P, Attributes){ + exports.f = __webpack_require__(16) ? Object.defineProperty : function defineProperty(O, P, Attributes){ anObject(O); P = toPrimitive(P, true); anObject(Attributes); @@ -580,17 +467,17 @@ var OrbitDB = }; /***/ }, -/* 17 */ +/* 13 */ /***/ function(module, exports, __webpack_require__) { - var isObject = __webpack_require__(18); + var isObject = __webpack_require__(14); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }, -/* 18 */ +/* 14 */ /***/ function(module, exports) { module.exports = function(it){ @@ -598,24 +485,24 @@ var OrbitDB = }; /***/ }, -/* 19 */ +/* 15 */ /***/ function(module, exports, __webpack_require__) { - module.exports = !__webpack_require__(20) && !__webpack_require__(21)(function(){ - return Object.defineProperty(__webpack_require__(22)('div'), 'a', {get: function(){ return 7; }}).a != 7; + module.exports = !__webpack_require__(16) && !__webpack_require__(17)(function(){ + return Object.defineProperty(__webpack_require__(18)('div'), 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, -/* 20 */ +/* 16 */ /***/ function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty - module.exports = !__webpack_require__(21)(function(){ + module.exports = !__webpack_require__(17)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, -/* 21 */ +/* 17 */ /***/ function(module, exports) { module.exports = function(exec){ @@ -627,11 +514,11 @@ var OrbitDB = }; /***/ }, -/* 22 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { - var isObject = __webpack_require__(18) - , document = __webpack_require__(11).document + var isObject = __webpack_require__(14) + , document = __webpack_require__(7).document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); module.exports = function(it){ @@ -639,11 +526,11 @@ var OrbitDB = }; /***/ }, -/* 23 */ +/* 19 */ /***/ function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) - var isObject = __webpack_require__(18); + var isObject = __webpack_require__(14); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ @@ -656,7 +543,7 @@ var OrbitDB = }; /***/ }, -/* 24 */ +/* 20 */ /***/ function(module, exports) { module.exports = function(bitmap, value){ @@ -669,1250 +556,7 @@ var OrbitDB = }; /***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = __webpack_require__(15); - -/***/ }, -/* 26 */ -/***/ function(module, exports) { - - var hasOwnProperty = {}.hasOwnProperty; - module.exports = function(it, key){ - return hasOwnProperty.call(it, key); - }; - -/***/ }, -/* 27 */ -/***/ function(module, exports) { - - module.exports = {}; - -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - var create = __webpack_require__(29) - , descriptor = __webpack_require__(24) - , setToStringTag = __webpack_require__(44) - , IteratorPrototype = {}; - - // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() - __webpack_require__(15)(IteratorPrototype, __webpack_require__(45)('iterator'), function(){ return this; }); - - module.exports = function(Constructor, NAME, next){ - Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); - setToStringTag(Constructor, NAME + ' Iterator'); - }; - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) - var anObject = __webpack_require__(17) - , dPs = __webpack_require__(30) - , enumBugKeys = __webpack_require__(42) - , IE_PROTO = __webpack_require__(39)('IE_PROTO') - , Empty = function(){ /* empty */ } - , PROTOTYPE = '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 = __webpack_require__(22)('iframe') - , i = enumBugKeys.length - , gt = '>' - , iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(43).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(' +