UNPKG

@polkadot/api-provider

Version:
43 lines (33 loc) 1.56 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = decodeResponse; var _assert = _interopRequireDefault(require("@polkadot/util/assert")); var _number = _interopRequireDefault(require("@polkadot/util/is/number")); var _undefined = _interopRequireDefault(require("@polkadot/util/is/undefined")); // Copyright 2017-2018 @polkadot/api-provider authors & contributors // This software may be modified and distributed under the terms // of the ISC license. See the LICENSE file for details. function checkError(error) { if (!error) { return; } const code = error.code, message = error.message; throw new Error(`[${code}]: ${message}`); } function decodeResponse(self, response) { (0, _assert.default)(response, 'Empty response object received'); (0, _assert.default)(response.jsonrpc === '2.0', 'Invalid jsonrpc field in decoded object'); const isSubscription = !(0, _undefined.default)(response.params) && !(0, _undefined.default)(response.method); (0, _assert.default)((0, _number.default)(response.id) || isSubscription && (0, _number.default)(response.params.subscription), 'Invalid id field in decoded object'); checkError(response.error); (0, _assert.default)(!(0, _undefined.default)(response.result) || isSubscription, 'No result found in JsonRpc response'); if (isSubscription) { checkError(response.params.error); return response.params.result; } return response.result; }