evtjs
Version:
Javascript API Bindings for the everiToken blockchain.
455 lines (349 loc) • 16.4 kB
JavaScript
;
var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of");
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _defineProperty2 = require("babel-runtime/helpers/defineProperty");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
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);
var _domainKeyMappers;
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("When you create EvtAction for action \"" + this.actionName + "\", the parameter \"domain\" and \"key\" of the constructor of EvtAction could not be ignored. See https://www.everitoken.io/developers/apis,_sdks_and_tools/javascript_sdk_reference#pushtransaction-config-actions-promise and look into EvtAction part.");
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 = (_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];
},
"issuefungible": function issuefungible(action, transfered) {
transfered.domain = ".fungible";
// remove precision for `key`
var splited = action.args.number.split("#");
if (splited.length != 2) {
throw new Error("Invalid parameter for number");
}
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";
},
"addmeta": function addmeta(action, transfered) {
/* TO CHECK */
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;
},
"newlock": function newlock(action, transfered) {
transfered.domain = ".lock";
transfered.key = action.args.name;
},
"aprvlock": function aprvlock(action, transfered) {
transfered.domain = ".lock";
transfered.key = action.args.name;
},
"tryunlock": function tryunlock(action, transfered) {
transfered.domain = ".lock";
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:
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;
}(),
"recycleft": function recycleft(action, transfered) {
transfered.domain = ".fungible";
transfered.key = String(action.args.number.split("#")[1]);
if (!transfered.key) {
throw new Error("number is invalid");
}
},
"destroyft": function destroyft(action, transfered) {
transfered.domain = ".fungible";
transfered.key = String(action.args.number.split("#")[1]);
if (!transfered.key) {
throw new Error("number is invalid");
}
}
}, (0, _defineProperty3.default)(_domainKeyMappers, "newlock", function newlock(action, transfered) {
transfered.domain = ".lock";
transfered.key = String(action.args.name);
if (!transfered.key) {
throw new Error("proposal name is invalid");
}
if (!String(action.args.proposer)) {
throw new Error("proposal proposer cannot be empty");
}
}), (0, _defineProperty3.default)(_domainKeyMappers, "aprvlock", function aprvlock(action, transfered) {
transfered.domain = ".lock";
transfered.key = String(action.args.name);
if (!transfered.key) {
throw new Error("proposal name is invalid");
}
if (!String(action.args.approver)) {
throw new Error("proposal approver cannot be empty");
}
}), (0, _defineProperty3.default)(_domainKeyMappers, "tryunlock", function tryunlock(action, transfered) {
transfered.domain = ".lock";
transfered.key = String(action.args.name);
if (!transfered.key) {
throw new Error("proposal name is invalid");
}
if (!String(action.args.executor)) {
throw new Error("proposal executor cannot be empty");
}
}), (0, _defineProperty3.default)(_domainKeyMappers, "setpsvbonus", function setpsvbonus(action, transfered) {
transfered.domain = ".bonus";
transfered.key = String(action.args.sym);
}), (0, _defineProperty3.default)(_domainKeyMappers, "distpsvbonus", function distpsvbonus(action, transfered) {
transfered.domain = ".bonus";
transfered.key = String(action.args.sym);
}), _domainKeyMappers);
var TransferFungibleTokenAction = function (_EvtAction) {
(0, _inherits3.default)(TransferFungibleTokenAction, _EvtAction);
function TransferFungibleTokenAction(options) {
(0, _classCallCheck3.default)(this, TransferFungibleTokenAction);
return (0, _possibleConstructorReturn3.default)(this, (TransferFungibleTokenAction.__proto__ || (0, _getPrototypeOf2.default)(TransferFungibleTokenAction)).call(this, "transferft", { from: options.from, to: options.to, memo: options.memo, number: options.number }));
}
return TransferFungibleTokenAction;
}(EvtAction);
module.exports = {
EvtAction: EvtAction,
EvtActions: {
TransferFungibleTokenAction: TransferFungibleTokenAction
}
};