@wordpress/upload-media
Version:
Core media upload logic.
74 lines (72 loc) • 2.42 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// packages/upload-media/src/store/utils/retry.ts
var retry_exports = {};
__export(retry_exports, {
calculateRetryDelay: () => calculateRetryDelay,
clearRetryTimer: () => clearRetryTimer,
retryTimers: () => retryTimers,
shouldRetryError: () => shouldRetryError
});
module.exports = __toCommonJS(retry_exports);
function calculateRetryDelay(options) {
const { attempt, initialDelay, maxDelay, multiplier, jitter } = options;
const exponentialDelay = initialDelay * Math.pow(multiplier, attempt - 1);
const cappedDelay = Math.min(exponentialDelay, maxDelay);
const jitterFactor = 1 + (Math.random() * 2 - 1) * jitter;
return Math.floor(cappedDelay * jitterFactor);
}
var RETRYABLE_MESSAGE_PATTERNS = [
/network/i,
/timeout/i,
/ECONNRESET/i,
/fetch failed/i,
/connection/i,
/socket/i,
/ETIMEDOUT/i,
/ENOTFOUND/i,
/Could not get a valid response/i,
/Failed to fetch/i,
/Load failed/i
];
function shouldRetryError(error, retryCount, maxRetries) {
if (retryCount >= maxRetries) {
return false;
}
const message = typeof error === "string" ? error : error?.message || "";
return RETRYABLE_MESSAGE_PATTERNS.some(
(pattern) => pattern.test(message)
);
}
var retryTimers = /* @__PURE__ */ new Map();
function clearRetryTimer(id) {
const pendingTimer = retryTimers.get(id);
if (pendingTimer !== void 0) {
clearTimeout(pendingTimer);
retryTimers.delete(id);
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
calculateRetryDelay,
clearRetryTimer,
retryTimers,
shouldRetryError
});
//# sourceMappingURL=retry.cjs.map