@colony/colony-js-contract-client
Version:
Method-like interface for Smart Contracts
184 lines (138 loc) • 5.84 kB
JavaScript
;
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