mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-05-19 21:36:37 +00:00
66 lines
2.0 KiB
JavaScript
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; |