UNPKG

orbit-db

Version:

Distributed p2p database on IPFS

106 lines (74 loc) 3.37 kB
'use strict'; var _from = require('babel-runtime/core-js/array/from'); var _from2 = _interopRequireDefault(_from); var _set = require('babel-runtime/core-js/set'); var _set2 = _interopRequireDefault(_set); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var path = require('path'); var AccessController = require('./access-controller'); var OrbitDBAccessController = function (_AccessController) { (0, _inherits3.default)(OrbitDBAccessController, _AccessController); function OrbitDBAccessController(orbitdb) { (0, _classCallCheck3.default)(this, OrbitDBAccessController); var _this = (0, _possibleConstructorReturn3.default)(this, (OrbitDBAccessController.__proto__ || (0, _getPrototypeOf2.default)(OrbitDBAccessController)).call(this)); _this._orbitdb = orbitdb; _this._db = null; return _this; } (0, _createClass3.default)(OrbitDBAccessController, [{ key: 'load', value: async function load(address) { var addr = path.join(address, '/_access' // Create a key-value database that the creator can write to );this._db = await this._orbitdb.keyvalue(addr, { write: [this._orbitdb.key.getPublic('hex')], replicate: false // TODO: remove } // Get values from the database );this._access = { admin: this._db.get('admin') || [], read: this._db.get('read') || [], write: this._db.get('write') || [] }; } }, { key: 'save', value: async function save() { if (!this._db) { this._db = await this._orbitdb.keyvalue(addr, { write: [this._orbitdb.key.getPublic('hex')], replicate: false // TODO: remove }); } return _promise2.default.resolve(this._db.address.toString()); } /* Public Methods */ }, { key: 'add', value: async function add(accessLevel, key) { if (!(0, _keys2.default)(this._access).includes(accessLevel)) throw new Error('Unknown access level: ' + accessLevel); if (!this._access[accessLevel].includes(key)) { var accessKeys = new _set2.default(this._db.get(accessLevel)); accessKeys.add(key); await this._db.put(accessLevel, (0, _from2.default)(accessKeys)); this._access[accessLevel] = this._db.get(accessLevel); } } }]); return OrbitDBAccessController; }(AccessController); module.exports = OrbitDBAccessController;