// AbortSignal.timeout polyfill
// Temporary fix from https://github.com/mo/abortcontroller-polyfill/issues/73#issuecomment-1541180943
// Incorrect implementation, but should be good enough for now
if ('AbortSignal' in window) {
  AbortSignal.timeout =
    AbortSignal.timeout ||
    ((duration) => {
      const controller = new AbortController();
      setTimeout(() => controller.abort(), duration);
      return controller.signal;
    });
}

// URL.parse() polyfill
if ('URL' in window && typeof URL.parse !== 'function') {
  URL.parse = function (url, base) {
    if (!url) return null;
    try {
      return base ? new URL(url, base) : new URL(url);
    } catch (e) {
      return null;
    }
  };
}