PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@near-js/providers/lib/commonjs
Просмотр файла: fetch_json.cjs
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchJsonRpc = exports.ProviderError = exports.retryConfig = void 0;
const types_1 = require("@near-js/types");
const exponential_backoff_1 = require("exponential-backoff");
const BACKOFF_MULTIPLIER = 1.5;
const RETRY_NUMBER = 10;
const RETRY_DELAY = 0;
function retryConfig(numOfAttempts = RETRY_NUMBER, timeMultiple = BACKOFF_MULTIPLIER, startingDelay = RETRY_DELAY) {
return {
numOfAttempts: numOfAttempts,
timeMultiple: timeMultiple,
startingDelay: startingDelay,
retry: (e) => {
if ([503, 500, 408].includes(e.cause)) {
return true;
}
if (e.toString().includes('FetchError') || e.toString().includes('Failed to fetch')) {
return true;
}
return false;
}
};
}
exports.retryConfig = retryConfig;
class ProviderError extends Error {
cause;
constructor(message, options) {
super(message, options);
if (options.cause) {
this.cause = options.cause;
}
}
}
exports.ProviderError = ProviderError;
/**
* Performs an HTTP request to an RPC endpoint
* @param url URL for the HTTP request
* @param json Request body
* @param headers HTTP headers to include with the request
* @returns Promise<any> }arsed JSON response from the HTTP request.
*/
async function fetchJsonRpc(url, json, headers, retryConfig) {
const response = await (0, exponential_backoff_1.backOff)(async () => {
const res = await fetch(url, {
method: 'POST',
body: JSON.stringify(json),
headers: { ...headers, 'Content-Type': 'application/json' }
});
const { ok, status } = res;
if (status === 500) {
throw new ProviderError('Internal server error', { cause: status });
}
else if (status === 408) {
throw new ProviderError('Timeout error', { cause: status });
}
else if (status === 400) {
throw new ProviderError('Request validation error', { cause: status });
}
else if (status === 503) {
throw new ProviderError(`${url} unavailable`, { cause: status });
}
if (!ok) {
throw new ProviderError(await res.text(), { cause: status });
}
return res;
}, retryConfig);
if (!response) {
throw new types_1.TypedError(`Exceeded ${RETRY_NUMBER} attempts for ${url}.`, 'RetriesExceeded');
}
return await response.json();
}
exports.fetchJsonRpc = fetchJsonRpc;
Выполнить команду
Для локальной разработки. Не используйте в интернете!