@safik/fk-plug-controller
Version:
Internet Computer Plug wallet's controller
48 lines (47 loc) • 1.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.wrappedFetch = void 0;
/* eslint-disable camelcase */
const cross_fetch_1 = __importDefault(require("cross-fetch"));
const constants_1 = require("./constants");
let useICUrl = false;
/* eslint-disable no-param-reassign */
const wrappedFetchInternal = (fetch, resolve, reject, resource, ...initArgs) => {
if (!resource.includes(constants_1.PLUG_PROXY_HOST)) {
fetch(resource, ...initArgs)
.then(resolve)
.catch(reject);
return;
}
if (useICUrl) {
resource = new URL(resource);
resource.host = constants_1.IC_URL_HOST;
}
fetch(resource, ...initArgs)
.then(r => {
if (!useICUrl && r.status === 502) {
useICUrl = true;
wrappedFetchInternal(resolve, reject, resource, initArgs);
return;
}
resolve(r);
})
.catch(e => {
reject(e);
});
};
const wrappedFetch = (fetch = cross_fetch_1.default) => (...args) => {
let reject;
let resolve;
const promise = new Promise((_resolve, _reject) => {
resolve = _resolve;
reject = _reject;
});
wrappedFetchInternal(fetch, resolve, reject, ...args);
return promise;
};
exports.wrappedFetch = wrappedFetch;
exports.default = { wrappedFetch: exports.wrappedFetch };