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
JavaScript
;
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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