UNPKG

evtjs

Version:

Javascript API Bindings for the everiToken blockchain.

336 lines (257 loc) 12.1 kB
"use strict"; var _regenerator = require("babel-runtime/regenerator"); var _regenerator2 = _interopRequireDefault(_regenerator); var _isInteger = require("babel-runtime/core-js/number/is-integer"); var _isInteger2 = _interopRequireDefault(_isInteger); var _promise = require("babel-runtime/core-js/promise"); var _promise2 = _interopRequireDefault(_promise); var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator"); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _typeof2 = require("babel-runtime/helpers/typeof"); var _typeof3 = _interopRequireDefault(_typeof2); 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 EvtLink = require("./evtLink"); /** * represents a everiToken action */ var EvtAction = function () { /** * initialize a new EvtAction instance * @param {string} actionName abi structure of the action * @param {object} abi abi structure of the action * @param {string} domain the `domain` value of the action * @param {string} key the `key` value of the action */ function EvtAction(actionName, abi) { var domain = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; (0, _classCallCheck3.default)(this, EvtAction); // check parameters if (!actionName || actionName.length > 13) throw new Error("invalid actionName"); if (!abi || (typeof abi === "undefined" ? "undefined" : (0, _typeof3.default)(abi)) !== "object") throw new Error("invalid abi"); this.actionName = actionName; this.abi = abi; this.domain = domain; this.key = key; } (0, _createClass3.default)(EvtAction, [{ key: "calculateDomainAndKey", value: function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { var ret; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(!this.domain || !this.key)) { _context.next = 8; break; } if (domainKeyMappers[this.actionName]) { _context.next = 3; break; } throw new Error("For action \"" + this.actionName + "\", parameter \"domain\" and \"key\" could not be ignored."); case 3: ret = {}; _context.next = 6; return _promise2.default.resolve(domainKeyMappers[this.actionName]({ action: this.actionName, args: this.abi }, ret)); case 6: this.domain = ret.domain; this.key = ret.key; case 8: if (!(!this.domain || typeof this.domain !== "string")) { _context.next = 10; break; } throw new Error("domain is invalid or not provided in EvtAction"); case 10: if ((0, _isInteger2.default)(this.key)) { this.key = String(this.key); } if (!(!this.key || typeof this.key !== "string")) { _context.next = 13; break; } throw new Error("key is invalid or not provided in EvtAction"); case 13: case "end": return _context.stop(); } } }, _callee, this); })); function calculateDomainAndKey() { return _ref.apply(this, arguments); } return calculateDomainAndKey; }() }]); return EvtAction; }(); var domainKeyMappers = { "newdomain": function newdomain(action, transfered) { transfered.domain = action.args.name; transfered.key = ".create"; }, "updatedomain": function updatedomain(action, transfered) { transfered.domain = action.args.name; transfered.key = ".update"; }, "issuetoken": function issuetoken(action, transfered) { transfered.domain = action.args.domain; transfered.key = ".issue"; }, "newgroup": function newgroup(action, transfered) { transfered.domain = ".group"; transfered.key = action.args.name; }, "updategroup": function updategroup(action, transfered) { transfered.domain = ".group"; transfered.key = action.args.name; }, "newfungible": function newfungible(action, transfered) { transfered.domain = ".fungible"; // remove precision for `key` var splited = action.args.sym.split("#"); if (splited.length != 2) { throw new Error("Invalid parameter for sym"); } transfered.key = splited[1]; }, "updfungible": function updfungible(action, transfered) { transfered.domain = ".fungible"; transfered.key = String(action.args.sym_id); if (!transfered.key) { throw new Error("sym_id is needed for action `updfungible`"); } }, "transferft": function transferft(action, transfered) { transfered.domain = ".fungible"; transfered.key = String(action.args.number.split("#")[1]); if (!transfered.key) { throw new Error("number is invalid"); } }, "transfer": function transfer(action, transfered) { transfered.domain = action.args.domain; transfered.key = action.args.name; }, "destroytoken": function destroytoken(action, transfered) { transfered.domain = action.args.domain; transfered.key = action.args.name; }, "evt2pevt": function evt2pevt(action, transfered) { transfered.domain = ".fungible"; transfered.key = "1"; }, "newsuspend": function newsuspend(action, transfered) { transfered.domain = ".suspend"; transfered.key = action.args.name; }, "aprvsuspend": function aprvsuspend(action, transfered) { transfered.domain = ".suspend"; transfered.key = action.args.name; }, "cancelsuspend": function cancelsuspend(action, transfered) { transfered.domain = ".suspend"; transfered.key = action.args.name; }, "execsuspend": function execsuspend(action, transfered) { transfered.domain = ".suspend"; transfered.key = action.args.name; }, "everipass": function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(action, transfered) { var parsed, domainNameSeg, tokenNameSeg; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return EvtLink.parseEvtLink(action.args.link, { recoverPublicKeys: false }); case 2: parsed = _context2.sent; if (!(parsed == null || (parsed.flag & 2) !== 2)) { _context2.next = 5; break; } throw new Error("Invalid EvtLink: This link is not for everiPass"); case 5: domainNameSeg = parsed.segments.find(function (x) { return x.typeKey == 91; }); tokenNameSeg = parsed.segments.find(function (x) { return x.typeKey == 92; }); if (!(domainNameSeg == undefined || tokenNameSeg == undefined)) { _context2.next = 9; break; } throw new Error("Invalid EvtLink: No domainName or / and tokenName in the link"); case 9: transfered.domain = domainNameSeg.value; transfered.key = tokenNameSeg.value; return _context2.abrupt("return", ""); case 12: case "end": return _context2.stop(); } } }, _callee2, undefined); })); function everipass(_x3, _x4) { return _ref2.apply(this, arguments); } return everipass; }(), "everipay": function () { var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(action, transfered) { var parsed, symbolSeg; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return EvtLink.parseEvtLink(action.args.link, { recoverPublicKeys: false }); case 2: parsed = _context3.sent; if (!(parsed == null || (parsed.flag & 4) !== 4)) { _context3.next = 5; break; } throw new Error("Invalid EvtLink: This link is not for everiPay"); case 5: symbolSeg = parsed.segments.find(function (x) { return x.typeKey == 44; }); if (!(symbolSeg == undefined || parseInt(symbolSeg.value).toString() != symbolSeg.value)) { _context3.next = 8; break; } throw new Error("Invalid EvtLink: No symbol in the link (integer)"); case 8: /*if (symbolSeg.value.indexOf(",") > 0) { symbolSeg.value = symbolSeg.value.substr(symbolSeg.value.indexOf(",") + 1); }*/ transfered.domain = ".fungible"; transfered.key = String(symbolSeg.value); return _context3.abrupt("return", ""); case 11: case "end": return _context3.stop(); } } }, _callee3, undefined); })); function everipay(_x5, _x6) { return _ref3.apply(this, arguments); } return everipay; }() }; module.exports = EvtAction;