UNPKG

bitcoin-cli-ts

Version:

Auto-generated Bitcoin client library for bitcoind JSON-RPC API

53 lines (52 loc) 2.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var undici_1 = require("undici"); var json_bigint_1 = tslib_1.__importDefault(require("json-bigint")); var json_rpc_2_0_1 = require("json-rpc-2.0"); var parseJson = (0, json_bigint_1.default)({ storeAsString: true }).parse; var sendRequest = function (payload, clientParams) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var url, authHeader, reqHeaders, _a, body, statusCode, headers, responseText, contentType, response; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: url = clientParams.url, authHeader = clientParams.authHeader; reqHeaders = { Authorization: authHeader, 'Content-Type': 'application/json', }; return [4 /*yield*/, (0, undici_1.request)(url, { method: 'POST', headers: reqHeaders, body: JSON.stringify(payload), })]; case 1: _a = _b.sent(), body = _a.body, statusCode = _a.statusCode, headers = _a.headers; return [4 /*yield*/, body.text()]; case 2: responseText = _b.sent(); if (statusCode !== 200) { if (statusCode === 401) return [2 /*return*/, Promise.reject(new Error('Invalid credentials'))]; contentType = headers['content-type']; response = contentType === 'application/json' ? parseJson(responseText) : responseText; return [2 /*return*/, Promise.reject(response.error || new Error(response))]; } client.receive(parseJson(responseText)); return [2 /*return*/]; } }); }); }; var client = new json_rpc_2_0_1.JSONRPCClient(sendRequest); function default_1(cmd, settings) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, client .timeout(settings.timeout || 15000) .request(cmd.method, cmd.params, settings)]; }); }); } exports.default = default_1;