UNPKG

evtjs

Version:

Javascript API Bindings for the everiToken blockchain.

455 lines (349 loc) 16.4 kB
"use strict"; 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 } };