orbit-db
Version:
Distributed p2p database on IPFS
66 lines (51 loc) • 2.05 kB
JavaScript
;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var path = require('path');
var multihash = require('multihashes');
var OrbitDBAddress = function () {
function OrbitDBAddress(root, path) {
(0, _classCallCheck3.default)(this, OrbitDBAddress);
this.root = root;
this.path = path;
}
(0, _createClass3.default)(OrbitDBAddress, [{
key: 'toString',
value: function toString() {
return path.join('/orbitdb', this.root, this.path);
}
}], [{
key: 'isValid',
value: function isValid(address) {
var parts = address.toString().split('/').filter(function (e, i) {
return !((i === 0 || i === 1) && address.toString().indexOf('/orbit') === 0 && e === 'orbitdb');
}).filter(function (e) {
return e !== '' && e !== ' ';
});
var accessControllerHash = parts[0].indexOf('Qm') > -1 ? multihash.fromB58String(parts[0]) : null;
try {
multihash.validate(accessControllerHash);
} catch (e) {
return false;
}
return accessControllerHash !== null;
}
}, {
key: 'parse',
value: function parse(address) {
if (!address) throw new Error('Not a valid OrbitDB address: ' + address);
if (!OrbitDBAddress.isValid(address)) throw new Error('Not a valid OrbitDB address: ' + address);
var parts = address.toString().split('/').filter(function (e, i) {
return !((i === 0 || i === 1) && address.toString().indexOf('/orbit') === 0 && e === 'orbitdb');
}).filter(function (e) {
return e !== '' && e !== ' ';
});
return new OrbitDBAddress(parts[0], parts.slice(1, parts.length).join('/'));
}
}]);
return OrbitDBAddress;
}();
module.exports = OrbitDBAddress;