orbitdb/dist/es5/orbit-db-address.js
2017-11-28 14:25:27 +01:00

66 lines
2.0 KiB
JavaScript

'use strict';
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;