{"version":3,"sources":["jsdelivr-header.js","/npm/wonderful-fetch@2.0.5/dist/index.js"],"names":[],"mappings":"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","file":"/npm/wonderful-fetch@2.0.5/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/wonderful-fetch@2.0.5/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.js\nvar index_exports = {};\n__export(index_exports, {\n  WonderfulFetch: () => WonderfulFetch,\n  default: () => index_default\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/lib/defaults.js\nfunction normalizeOptions(url, options) {\n  url = url || options.url;\n  if (!url) {\n    throw new Error(\"No URL provided.\");\n  }\n  options = options || {};\n  options.timeout = options.timeout || 6e4;\n  options.tries = typeof options.tries === \"undefined\" ? 1 : options.tries;\n  options.log = typeof options.log === \"undefined\" ? false : options.log;\n  options.method = (options.method || \"get\").toLowerCase();\n  options.cacheBreaker = typeof options.cacheBreaker === \"undefined\" ? true : options.cacheBreaker;\n  options.contentType = (typeof options.contentType === \"undefined\" ? \"\" : options.contentType).toLowerCase();\n  options.response = (typeof options.response === \"undefined\" ? \"raw\" : options.response).toLowerCase();\n  options.output = typeof options.output === \"undefined\" ? \"body\" : options.output;\n  options.authorization = typeof options.authorization === \"undefined\" ? false : options.authorization;\n  options.attachResponseHeaders = typeof options.attachResponseHeaders === \"undefined\" ? false : options.attachResponseHeaders;\n  options.download = options.download || false;\n  options.headers = options.headers || {};\n  options.query = options.query || {};\n  options.body = options.body || null;\n  return { url, options };\n}\n\n// src/lib/request.js\nfunction buildRequest(url, options) {\n  const bodyIsObject = options.body && typeof options.body === \"object\";\n  const bodyIsFormData = bodyIsObject && typeof options.body.append === \"function\";\n  const config = {\n    method: options.method.toUpperCase(),\n    headers: { ...options.headers },\n    body: null\n  };\n  if (options.body) {\n    if (bodyIsFormData) {\n      config.body = options.body;\n    } else if (bodyIsObject) {\n      config.body = JSON.stringify(options.body);\n    } else {\n      config.body = options.body;\n    }\n  }\n  if (bodyIsObject && !bodyIsFormData || options.contentType === \"json\") {\n    config.headers[\"Content-Type\"] = \"application/json\";\n  }\n  if (config.method === \"GET\") {\n    delete config.body;\n    delete config.headers[\"Content-Type\"];\n  }\n  if (options.authorization) {\n    const auth = options.authorization;\n    config.headers[\"Authorization\"] = auth.match(/^Bearer |^Basic |^Digest /) ? auth : `Bearer ${auth}`;\n  }\n  const urlObj = new URL(url);\n  Object.keys(options.query).forEach(function(key) {\n    urlObj.searchParams.set(key, options.query[key]);\n  });\n  const cacheBreaker = options.cacheBreaker === true ? Math.floor(Date.now() / 1e3) : options.cacheBreaker;\n  if (cacheBreaker) {\n    urlObj.searchParams.set(\"cb\", cacheBreaker);\n  }\n  if (options.log) {\n    console.log(\"Fetch configuration:\", {\n      bodyIsFormData,\n      bodyIsObject,\n      options,\n      config\n    });\n  }\n  return { url: urlObj.toString(), config };\n}\n\n// src/lib/response.js\nfunction parseHeaders(res) {\n  const headers = {};\n  if (!res || !res.headers) {\n    return headers;\n  }\n  res.headers.forEach(function(value, key) {\n    try {\n      headers[key] = JSON.parse(value);\n    } catch (e) {\n      headers[key] = value;\n    }\n  });\n  return headers;\n}\nasync function parseResponse(res, options) {\n  if (options.response === \"raw\") {\n    return res;\n  }\n  const text = await res.text();\n  if (options.response === \"json\") {\n    try {\n      return JSON.parse(text);\n    } catch (e) {\n      throw new Error(`Response is not JSON: ${e}`);\n    }\n  }\n  return text;\n}\nfunction formatOutput(res, result, options) {\n  if (options.output === \"body\") {\n    return result;\n  }\n  return {\n    status: res.status,\n    headers: parseHeaders(res),\n    body: result\n  };\n}\nfunction buildError(res, options) {\n  const headers = parseHeaders(res);\n  return res.text().then(function(text) {\n    const error = new Error(text || res.statusText || \"Unknown error\");\n    error.status = res.status;\n    if (headers[\"bm-properties\"]) {\n      try {\n        Object.keys(headers[\"bm-properties\"]).forEach(function(key) {\n          error[key] = headers[\"bm-properties\"][key];\n        });\n      } catch (e) {\n        console.warn(\"Failed to add bm-properties to error object\", e);\n      }\n    }\n    if (options.attachResponseHeaders) {\n      Object.keys(headers).forEach(function(key) {\n        if (key !== \"bm-properties\") {\n          error[key] = headers[key];\n        }\n      });\n    }\n    return error;\n  });\n}\n\n// src/lib/retry.js\nfunction sleep(ms) {\n  return new Promise(function(resolve) {\n    setTimeout(resolve, ms);\n  });\n}\nasync function executeWithRetry(fn, options) {\n  const maxTries = options.tries;\n  const infinite = maxTries === 0;\n  let lastError;\n  for (let attempt = 1; infinite || attempt <= maxTries; attempt++) {\n    if (attempt > 1) {\n      const delay = Math.min(3e3 * (attempt - 1), 6e4);\n      await sleep(delay);\n    }\n    if (options.log) {\n      console.log(`Fetch (${attempt}/${options.tries}): attempt`);\n    }\n    let controller;\n    let timeoutId;\n    if (options.timeout > 0) {\n      controller = new AbortController();\n      timeoutId = setTimeout(function() {\n        controller.abort();\n      }, options.timeout);\n    }\n    try {\n      const result = await fn(controller ? controller.signal : void 0);\n      clearTimeout(timeoutId);\n      return result;\n    } catch (e) {\n      clearTimeout(timeoutId);\n      if (e.name === \"AbortError\") {\n        lastError = new Error(\"Request timed out\");\n      } else {\n        lastError = e;\n      }\n      if (!infinite && attempt >= maxTries) {\n        throw lastError;\n      }\n    }\n  }\n}\n\n// src/lib/download.js\nfunction handleDownload(res, options) {\n  const { Readable } = require(\"stream\");\n  const jetpack = require(\"fs-jetpack\");\n  const mime = require(\"mime-types\");\n  const path = require(\"path\");\n  return new Promise(function(resolve, reject) {\n    const type = res.headers.get(\"content-type\");\n    const ext = (mime.extension(type) || \"\").replace(\"jpeg\", \"jpg\");\n    if (!jetpack.exists(options.download)) {\n      const dir = path.dirname(options.download);\n      jetpack.dir(dir);\n    }\n    const existingExt = path.extname(options.download);\n    if (!existingExt) {\n      options.download += `.${ext}`;\n    }\n    const nodeStream = Readable.fromWeb(res.body);\n    const fileStream = jetpack.createWriteStream(options.download);\n    nodeStream.pipe(fileStream);\n    nodeStream.on(\"error\", function(e) {\n      reject(new Error(`Failed to download: ${e}`));\n    });\n    fileStream.on(\"finish\", function() {\n      resolve({\n        res,\n        path: options.download\n      });\n    });\n  });\n}\n\n// src/index.js\nasync function WonderfulFetch(url, options) {\n  const normalized = normalizeOptions(url, options);\n  url = normalized.url;\n  options = normalized.options;\n  const { url: requestUrl, config } = buildRequest(url, options);\n  return executeWithRetry(async function(signal) {\n    const fetchConfig = { ...config };\n    if (signal) {\n      fetchConfig.signal = signal;\n    }\n    const fetchFn = typeof window !== \"undefined\" && window.fetch || globalThis.fetch;\n    if (options.log) {\n      console.log(\"Fetching:\", requestUrl);\n    }\n    const res = await fetchFn(requestUrl, fetchConfig);\n    if (res.ok && options.download) {\n      const result2 = await handleDownload(res, options);\n      return formatOutput(res, result2, options);\n    }\n    if (!res.ok) {\n      const error = await buildError(res, options);\n      throw error;\n    }\n    const result = await parseResponse(res, options);\n    return formatOutput(res, result, options);\n  }, options);\n}\nif (typeof window !== \"undefined\") {\n  window.WonderfulFetch = WonderfulFetch;\n}\nvar index_default = WonderfulFetch;\nmodule.exports=module.exports.default||module.exports;\n"]}