UNPKG

verusd-web

Version:

A Verus Blockchain library that enables a bi-directional communication with the Verus and other Verus PBaas chains.

111 lines 9.11 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RpcService = void 0; class RpcService { static init(url, apiToken, maxRetry) { RpcService.url = RpcService.setProtocol(url); RpcService.maxRetry = maxRetry !== null && maxRetry !== void 0 ? maxRetry : 5; RpcService.apiToken = apiToken !== null && apiToken !== void 0 ? apiToken : ''; } static sendChainRequest(method, params) { return __awaiter(this, void 0, void 0, function* () { const payload = { "jsonrpc": "1.0", "id": "verusdWeb", "method": method, "params": params }; try { const response = yield RpcService.sendRequest(this.url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': RpcService.apiToken }, body: JSON.stringify(payload), }, RpcService.maxRetry); return JSON.parse(yield RpcService.processStreamResponse(response.body)); } catch (e) { console.log("❗️Failed to send the RPC request!"); throw e; } }); } static setProtocol(host) { const h = host.trim(); if (h.startsWith('http://') || h.startsWith('https://')) { return h; } return `http://${host}`; } static sendRequest(url_1) { return __awaiter(this, arguments, void 0, function* (url, options = {}, retries = 3, delayInMs = 1000) { return new Promise((resolve, reject) => { const attemptFetch = (attempt) => { fetch(url, options) .then((response) => { if (!response.ok) { throw new Error(`HTTP error!` + `\nStatus: ${response.status}` + `\nResponse: ${JSON.stringify(response)}`); } resolve(response); }) .catch((error) => { if (attempt < retries) { console.log(`Retry attempt ${attempt + 1} failed. Retrying request to ${url}...`); setTimeout(() => attemptFetch(attempt + 1), delayInMs); } else { reject(error); } }); }; attemptFetch(0); }); }); } static processStreamResponse(stream) { return __awaiter(this, void 0, void 0, function* () { const reader = stream.getReader(); const chunks = []; try { while (true) { const { done, value } = yield reader.read(); if (done) { break; } if (value) { chunks.push(value); } } const combined = new Uint8Array(chunks.reduce((acc, chunk) => acc + chunk.length, 0)); var offset = 0; for (const chunk of chunks) { combined.set(chunk, offset); offset += chunk.length; } const text = new TextDecoder().decode(combined); return text; } catch (error) { console.error(RpcService.code, 'Error processing the stream.', error.toString(), 'Check the service and try again.'); throw error; } finally { reader.releaseLock(); } }); } } exports.RpcService = RpcService; RpcService.code = 'HttpService'; RpcService.url = 'localhost'; RpcService.apiToken = 'authToken'; RpcService.maxRetry = 5; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvUnBjU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFNQSxNQUFhLFVBQVU7SUFNbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFXLEVBQUUsUUFBaUIsRUFBRSxRQUFpQjtRQUN6RCxVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsVUFBVSxDQUFDLFFBQVEsR0FBRyxRQUFRLGFBQVIsUUFBUSxjQUFSLFFBQVEsR0FBSSxDQUFDLENBQUM7UUFDcEMsVUFBVSxDQUFDLFFBQVEsR0FBRyxRQUFRLGFBQVIsUUFBUSxjQUFSLFFBQVEsR0FBSSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBTyxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsTUFBYzs7WUFDeEQsTUFBTSxPQUFPLEdBQUcsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLENBQUE7WUFDeEYsSUFBSSxDQUFDO2dCQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLFdBQVcsQ0FDekMsSUFBSSxDQUFDLEdBQUcsRUFDUjtvQkFDSSxNQUFNLEVBQUUsTUFBTTtvQkFDZCxPQUFPLEVBQUU7d0JBQ0wsY0FBYyxFQUFFLGtCQUFrQjt3QkFDbEMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxRQUFRO3FCQUN2QztvQkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7aUJBQ2hDLEVBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FDdEIsQ0FBQztnQkFZRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxD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