UNPKG

@ton.js/core

Version:

TonWeb - JavaScript API for TON blockchain

87 lines 2.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpProviderUtils = void 0; const bn_js_1 = __importDefault(require("bn.js")); const cell_1 = require("../boc/cell"); const base64_1 = require("../utils/base64"); /** * @todo: extract all the static methods as individual functions * there is no need to use class for this */ class HttpProviderUtils { /** * @todo: improve typing */ static parseObject(obj) { const typeName = obj['@type']; switch (typeName) { case 'tvm.list': case 'tvm.tuple': return obj.elements.map(HttpProviderUtils.parseObject); case 'tvm.stackEntryTuple': return HttpProviderUtils.parseObject(obj.tuple); case 'tvm.stackEntryNumber': return HttpProviderUtils.parseObject(obj.number); case 'tvm.numberDecimal': return new bn_js_1.default(obj.number, 10); default: throw new Error('unknown type ' + typeName); } } /** * @todo: improve typing */ static parseResponseStack(pair) { const typeName = pair[0]; const value = pair[1]; switch (typeName) { case 'num': return new bn_js_1.default(value.replace(/0x/, ''), 16); case 'list': case 'tuple': return HttpProviderUtils.parseObject(value); case 'cell': const contentBytes = (0, base64_1.base64ToBytes)(value.bytes); return cell_1.Cell.oneFromBoc(contentBytes); default: throw new Error(`Failed to parse response stack, ` + `unknown type: ${typeName}`); } } /** * @todo: improve typing */ static parseResponse(result) { if (result.exit_code !== 0) { // @todo: use custom error class const error = new Error('Failed to parse response'); error.result = result; throw error; } const arr = (result.stack .map(HttpProviderUtils.parseResponseStack)); return (arr.length === 1 ? arr[0] : arr); } /** * @todo: function is unused: use or remove it */ static makeArg(arg) { if (bn_js_1.default.isBN(arg) || typeof arg === 'number') { return ['num', arg]; } else { throw new Error(`Unknown argument type: ${arg}`); } } /** * @todo: function is unused: use or remove it */ static makeArgs(args) { return args.map(this.makeArg); } } exports.HttpProviderUtils = HttpProviderUtils; //# sourceMappingURL=http-provider-utils.js.map