UNPKG

@walletpack/core

Version:

> TODO: description

139 lines (116 loc) 4.78 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _Blockchains = require("./Blockchains"); var _IdGenerator = _interopRequireDefault(require("../util/IdGenerator")); var _Token = _interopRequireDefault(require("./Token")); var _PluginRepository = _interopRequireDefault(require("../plugins/PluginRepository")); var _StoreService = _interopRequireDefault(require("../services/utility/StoreService")); var Network = /*#__PURE__*/ function () { function Network() { var _name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var _protocol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'https'; var _host = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; var _port = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; var blockchain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; var chainId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : ''; var _path = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : ''; (0, _classCallCheck2["default"])(this, Network); this.id = _IdGenerator["default"].numeric(12); this.name = _name; this.protocol = _protocol; this.host = _host; this.port = _port; this.path = _path; this.blockchain = blockchain; this.chainId = chainId.toString(); this.fromOrigin = null; this.createdAt = +new Date(); this.token = null; } (0, _createClass2["default"])(Network, [{ key: "unique", value: function unique() { return ("".concat(this.blockchain, ":") + (this.chainId.length ? "chain:".concat(this.chainId) : "".concat(this.host, ":").concat(this.port))).toLowerCase(); } }, { key: "fullhost", value: function fullhost() { return "".concat(this.protocol, "://").concat(this.host).concat(this.port ? ':' : '').concat(this.port).concat(this.path ? this.path : ''); } }, { key: "clone", value: function clone() { return Network.fromJson(JSON.parse(JSON.stringify(this))); } }, { key: "isValid", value: function isValid() { if (!_Blockchains.BlockchainsArray.map(function (x) { return x.value; }).includes(this.blockchain)) return false; return this.host.length && this.port.toString().length && this.chainId.length; } }, { key: "setPort", value: function setPort() { if (!this.port) this.port = 80; if (![80, 443].includes(parseInt(this.port))) return; this.port = this.protocol === 'http' ? 80 : 443; } }, { key: "systemToken", value: function systemToken() { if (this.token) return this.token; var token = _PluginRepository["default"].plugin(this.blockchain).defaultToken(); token.chainId = this.chainId; return token; } }, { key: "accounts", value: function accounts() { var _this = this; var unique = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var accounts = _StoreService["default"].get().state.scatter.keychain.accounts.filter(function (x) { return x.networkUnique === _this.unique(); }); if (!unique) return accounts; return accounts.reduce(function (acc, account) { if (!acc.find(function (x) { return account.network().unique() === x.network().unique() && account.sendable() === x.sendable(); })) acc.push(account); return acc; }, []); } }], [{ key: "placeholder", value: function placeholder() { return new Network(); } }, { key: "fromJson", value: function fromJson(json) { var p = Object.assign(Network.placeholder(), json); p.chainId = p.chainId ? p.chainId.toString() : ''; p.token = json.hasOwnProperty('token') && json.token ? _Token["default"].fromJson(json.token) : null; return p; } }, { key: "fromUnique", value: function fromUnique(netString) { var blockchain = netString.split(':')[0]; if (netString.indexOf(':chain:') > -1) return new Network('', '', '', '', blockchain, netString.replace("".concat(blockchain, ":chain:"), '')); var splits = netString.replace("".concat(blockchain, ":"), '').split(':'); return new Network('', '', splits[0], parseInt(splits[1] || 80), blockchain); } }]); return Network; }(); exports["default"] = Network;