UNPKG

@walletpack/core

Version:

> TODO: description

218 lines (185 loc) 7.14 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _Meta = _interopRequireDefault(require("./Meta")); var _Keychain = _interopRequireDefault(require("./Keychain")); var _Settings = _interopRequireDefault(require("./Settings")); var _aesOop = _interopRequireDefault(require("aes-oop")); var _Hasher = _interopRequireDefault(require("../util/Hasher")); var _IdGenerator = _interopRequireDefault(require("../util/IdGenerator")); var _PluginRepository = _interopRequireDefault(require("../plugins/PluginRepository")); var _Identity = _interopRequireWildcard(require("./Identity")); var _Contact = _interopRequireDefault(require("./Contact")); var Scatter = /*#__PURE__*/ function () { function Scatter() { (0, _classCallCheck2["default"])(this, Scatter); this.meta = _Meta["default"].placeholder(); this.keychain = _Keychain["default"].placeholder(); this.settings = _Settings["default"].placeholder(); this.contacts = []; this.hash = _Hasher["default"].unsaltedQuickHash(_IdGenerator["default"].text(2048)); this.onboarded = false; this.pin = null; this.pinForAll = false; } (0, _createClass2["default"])(Scatter, [{ key: "clone", value: function clone() { return Scatter.fromJson(JSON.parse(JSON.stringify(this))); } }, { key: "isEncrypted", value: function isEncrypted() { return (0, _typeof2["default"])(this.keychain) !== 'object'; } /*** * Encrypts the entire keychain * @param seed - The seed to encrypt with */ }, { key: "decrypt", value: function decrypt(seed) { if (this.isEncrypted()) this.keychain = _Keychain["default"].fromJson(_aesOop["default"].decrypt(this.keychain, seed)); } /*** * Decrypts the entire keychain * @param seed - The seed to decrypt with */ }, { key: "encrypt", value: function encrypt(seed) { if (!this.isEncrypted()) this.keychain = _aesOop["default"].encrypt(this.keychain, seed); } }, { key: "savable", value: function savable(seed) { // Encrypting in-place. this.keychain.cards.map(function (card) { return card.encrypt(seed); }); this.keychain.keypairs.map(function (keypair) { return keypair.encrypt(seed); }); this.keychain.identities.map(function (id) { return id.encrypt(seed); }); // Encrypting clone var clone = this.clone(); clone.encrypt(seed); return clone; } /*************************************/ /************ HELPERS *************/ /*************************************/ }, { key: "networkTokens", value: function networkTokens() { return this.settings.networks.map(function (x) { var token = x.systemToken(); token.chainId = x.chainId; return token; }).reduce(function (acc, token) { var exists = acc.find(function (x) { return x.unique() === token.unique() && x.chainId === token.chainId; }); if (!exists) acc.push(token); return acc; }, []); } }, { key: "allTokens", value: function allTokens() { return this.networkTokens().concat(this.settings.tokens); } }], [{ key: "create", value: function () { var _create = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee2() { var scatter, firstIdentity; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: scatter = new Scatter(); _context2.next = 3; return Promise.all(_PluginRepository["default"].signatureProviders().map( /*#__PURE__*/ function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee(plugin) { var network; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: network = plugin.getEndorsedNetwork(); scatter.settings.networks.push(network); case 2: case "end": return _context.stop(); } } }, _callee); })); return function (_x) { return _ref.apply(this, arguments); }; }())); case 3: firstIdentity = _Identity["default"].placeholder(); _context2.next = 6; return firstIdentity.initialize(scatter.hash); case 6: firstIdentity.name = 'MyFirstIdentity'; scatter.keychain.locations = [_Identity.LocationInformation.fromJson({ name: 'Home' })]; firstIdentity.location = scatter.keychain.locations[0]; scatter.keychain.updateOrPushIdentity(firstIdentity); return _context2.abrupt("return", scatter); case 11: case "end": return _context2.stop(); } } }, _callee2); })); function create() { return _create.apply(this, arguments); } return create; }() }, { key: "placeholder", value: function placeholder() { return new Scatter(); } }, { key: "fromJson", value: function fromJson(json) { var p = Object.assign(this.placeholder(), json); if (json.hasOwnProperty('meta')) p.meta = _Meta["default"].fromJson(json.meta); if (json.hasOwnProperty('settings')) p.settings = _Settings["default"].fromJson(json.settings); if (json.hasOwnProperty('keychain')) p.keychain = typeof json.keychain === 'string' ? json.keychain : _Keychain["default"].fromJson(json.keychain); if (json.hasOwnProperty('contacts')) p.contacts = json.contacts.map(function (x) { return _Contact["default"].fromJson(x); }); return p; } }]); return Scatter; }(); exports["default"] = Scatter;