@snap/camera-kit
Version:
Camera Kit Web
33 lines • 1.45 kB
JavaScript
import { __awaiter } from "tslib";
import { getLogger } from "../logger/logger";
import { ensureClonedRequest } from "./retryingHandler";
const logger = getLogger("noCorsRetryingFetchHandler");
const logRetry = (error) => {
logger.warn(`NoCorsRetrying handler got failed response:`, error, `Retrying request with {mode: "no-cors"}.`);
};
export const createNoCorsRetryingFetchHandler = () => {
const noCorsRequests = new Map();
return (next) => (input, init = {}) => __awaiter(void 0, void 0, void 0, function* () {
var _a;
let requestKey = typeof input === "string" ? input : input.url;
try {
requestKey = new URL(requestKey, location.origin).host;
}
catch (_) {
}
try {
return yield next(ensureClonedRequest(input), init);
}
catch (error) {
if (error instanceof Error && error.name === "AbortError")
throw error;
logRetry(error);
const noCorsRequest = (_a = noCorsRequests.get(requestKey)) !== null && _a !== void 0 ? _a : next(ensureClonedRequest(input), Object.assign(Object.assign({}, init), { mode: "no-cors" }));
noCorsRequests.set(requestKey, noCorsRequest);
yield noCorsRequest;
noCorsRequests.delete(requestKey);
return next(ensureClonedRequest(input), init);
}
});
};
//# sourceMappingURL=noCorsRetryingFetchHandler.js.map