evtjs
Version:
Javascript API Bindings for the everiToken blockchain.
336 lines (257 loc) • 12.1 kB
JavaScript
;
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;