UNPKG

@colony/colony-js-contract-client

Version:

Method-like interface for Smart Contracts

184 lines (138 loc) 5.84 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _lodash = require('lodash.isplainobject'); var _lodash2 = _interopRequireDefault(_lodash); var _ContractClient = require('./ContractClient'); var _ContractClient2 = _interopRequireDefault(_ContractClient); var _ContractMethod2 = require('./ContractMethod'); var _ContractMethod3 = _interopRequireDefault(_ContractMethod2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ContractMethodCaller = function (_ContractMethod) { (0, _inherits3.default)(ContractMethodCaller, _ContractMethod); (0, _createClass3.default)(ContractMethodCaller, null, [{ key: 'containsNullValues', value: function containsNullValues(values) { if ((0, _lodash2.default)(values)) return Object.values(values || {}).some(function (value) { return value === null; }); return false; } }]); function ContractMethodCaller() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, client = _ref.client, functionName = _ref.functionName, input = _ref.input, output = _ref.output, name = _ref.name, validateEmpty = _ref.validateEmpty; (0, _classCallCheck3.default)(this, ContractMethodCaller); var _this = (0, _possibleConstructorReturn3.default)(this, (ContractMethodCaller.__proto__ || Object.getPrototypeOf(ContractMethodCaller)).call(this, { client: client, name: name, functionName: functionName, input: input, output: output })); if (validateEmpty) _this._validateEmpty = validateEmpty; return _this; } (0, _createClass3.default)(ContractMethodCaller, [{ key: 'validateEmpty', value: function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(inputValues, outputValues) { var isValid, reason; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!this._validateEmpty) { _context.next = 14; break; } isValid = false; reason = void 0; _context.prev = 3; _context.next = 6; return this._validateEmpty(inputValues, outputValues); case 6: isValid = _context.sent; _context.next = 12; break; case 9: _context.prev = 9; _context.t0 = _context['catch'](3); reason = _context.t0.message || _context.t0.toString(); case 12: if (isValid) { _context.next = 14; break; } throw new Error('Empty response' + (reason ? ' (' + reason + ')' : '')); case 14: return _context.abrupt('return', true); case 15: case 'end': return _context.stop(); } } }, _callee, this, [[3, 9]]); })); function validateEmpty(_x2, _x3) { return _ref2.apply(this, arguments); } return validateEmpty; }() /** * Given named input values, perform a call on the method's * contract function, and get named output values from the result. */ }, { key: 'call', value: function () { var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(inputValues) { var args, callResult, outputValues; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: args = this.getValidatedArgs(inputValues); _context2.next = 3; return this.client.call(this.functionName, args); case 3: callResult = _context2.sent; outputValues = this.convertOutputValues(callResult, inputValues); if (!this.constructor.containsNullValues(outputValues)) { _context2.next = 8; break; } _context2.next = 8; return this.validateEmpty(inputValues, outputValues); case 8: return _context2.abrupt('return', outputValues); case 9: case 'end': return _context2.stop(); } } }, _callee2, this); })); function call(_x4) { return _ref3.apply(this, arguments); } return call; }() }]); return ContractMethodCaller; }(_ContractMethod3.default); /* eslint-disable import/no-cycle */ exports.default = ContractMethodCaller; //# sourceMappingURL=ContractMethodCaller.js.map