bitcoin-cli-ts
Version:
Auto-generated Bitcoin client library for bitcoind JSON-RPC API
53 lines (52 loc) • 2.41 kB
JavaScript
;
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;