{"version":3,"sources":["jsdelivr-header.js","/npm/ifetch-node@1.2.2/index.js"],"names":[],"mappings":"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","file":"/npm/ifetch-node@1.2.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ifetch-node@1.2.2/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","const { URL } = require('url')\r\nconst fetch = require('node-fetch')\r\nconst util = require('./util')\r\nconst byte0d = Buffer.from('\\r')[0]\r\nconst byte0a = Buffer.from('\\n')[0]\r\nconst HttpAgent = require('agentkeepalive')\r\nconst HttpsAgent = HttpAgent.HttpsAgent\r\nconst defaultAgentOptions = {\r\n  maxSockets: 100,\r\n  maxFreeSockets: 10,\r\n  timeout: 60000, // active socket keepalive for 60 seconds\r\n  freeSocketTimeout: 30000, // free socket keepalive for 30 seconds\r\n}\r\nconst defaultHttpAgent = new HttpAgent(defaultAgentOptions)\r\nconst defaultHttpsAgent = new HttpsAgent(defaultAgentOptions)\r\n\r\nconst DEFAULT_OPTIONS = {\r\n  method: 'GET',\r\n  headers: {\r\n    accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',\r\n    pragma: 'no-cache',\r\n    'accept-language': 'en-US,en;q=0.5',\r\n    'cache-control': 'no-cache',\r\n    'upgrade-insecure-requests': '1',\r\n    'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'\r\n  },\r\n  body: null,\r\n  redirect: 'manual', // set to `manual` to extract redirect headers, `follow` to follow redirect, `error` to reject redirect\r\n\r\n  // The following properties are node-fetch-npm extensions\r\n  follow: 20, // maximum redirect count. 0 to not follow redirect\r\n  timeout: 10000, // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies)\r\n  compress: true, // support gzip/deflate content encoding. false to disable\r\n  size: 0, // maximum response body size in bytes. 0 to disable\r\n  httpAgent: defaultHttpAgent, // httpAgent instance, allows custom proxy, certificate etc.\r\n  httpsAgent: defaultHttpsAgent // httpsAgent instance, allows custom proxy, certificate etc.\r\n}\r\n\r\nfunction parseRawRequest(rawRequest) {\r\n  if (!(rawRequest instanceof Buffer)) rawRequest = Buffer.from(rawRequest)\r\n  let nextEmptyLineFlag = false\r\n  for (let i = 0; i < rawRequest.length; i++) {\r\n    if (rawRequest[i] === byte0d) continue\r\n    if (rawRequest[i] === byte0a) {\r\n      if (nextEmptyLineFlag) {\r\n        // reach \\r\\n\\r\\n\r\n        return [rawRequest.slice(0, i).toString().replace(/[\\r\\n]+$/, ''), rawRequest.slice(i + 1)]\r\n      }\r\n      nextEmptyLineFlag = true\r\n    } else {\r\n      nextEmptyLineFlag = false\r\n    }\r\n  }\r\n  throw new Error('Invalid raw request')\r\n}\r\n\r\n/**\r\n * ifetch - fetch api for node\r\n * @param {String|URL} url URL\r\n * @param {Object} [options]\r\n * @return {Promise}\r\n */\r\nfunction ifetch(url, options) {\r\n  try {\r\n    if (typeof url === 'string') {\r\n      url = new URL(url)\r\n    } else if (!(url instanceof URL)) {\r\n      console.log(url)\r\n      throw new Error('URL must be a string or instance of URL')\r\n    }\r\n\r\n    if (!options) {\r\n      options = {}\r\n    }\r\n\r\n    if (options.headers) {\r\n      for (let k in options.headers) {\r\n        const kl = k.toLowerCase()\r\n        if (k === kl) continue\r\n        options.headers[kl] = options.headers[k]\r\n        delete options.headers[k]\r\n      }\r\n    }\r\n\r\n    if (options.raw) {\r\n      const [rawHeaders, rawBody] = parseRawRequest(options.raw)\r\n      const lines = rawHeaders.split(/\\r?\\n/)\r\n      const httpLine = /([A-Z]+)\\s(.+?)\\sHTTP\\/[\\d\\.]+$/.exec(lines.shift())\r\n      if (!httpLine) throw new Error('Invalid raw request')\r\n      if (!options.method) options.method = httpLine[1]\r\n      url = new URL(httpLine[2], url)\r\n      if (!options.headers) options.headers = {}\r\n      for (const line of lines) {\r\n        let idx = line.indexOf(':')\r\n        if (!~idx) continue\r\n        const k = line.substr(0, idx).toLowerCase()\r\n        if (line[idx + 1] === ' ') idx++\r\n        if (!options.headers[k]) options.headers[k] = line.substr(idx + 1)\r\n      }\r\n      if (options.method && (options.method + '').toUpperCase() !== 'GET') options.body = rawBody\r\n      delete options.headers['content-length']\r\n      delete options.raw\r\n    }\r\n\r\n    if (options.qs) {\r\n      util.appendSearchParams(url, options.qs)\r\n      delete options['qs']\r\n    }\r\n\r\n    const genOptions = {\r\n      headers: {}\r\n    }\r\n\r\n    let noParseJSON\r\n    if (options.hasOwnProperty('noParseJSON')) {\r\n      noParseJSON = options.noParseJSON\r\n      delete options['noParseJSON']\r\n    }\r\n\r\n    // json data\r\n    let json = false\r\n    if (options.hasOwnProperty('json')) {\r\n      genOptions.headers['accept'] = 'application/json'\r\n      if (options.method && (options.method + '').toUpperCase() !== 'GET') {\r\n        if (!options.body) {\r\n          genOptions.headers['content-type'] = 'application/json'\r\n          genOptions.body = JSON.stringify(options.json)\r\n        }\r\n      }\r\n      delete options['json']\r\n      json = true\r\n    }\r\n\r\n    // url encoded data\r\n    if (options.data && util.isPlainObject(options.data)) {\r\n      genOptions.headers['content-type'] = 'application/x-www-form-urlencoded'\r\n      if (!options.body) {\r\n        genOptions.body = util.httpBuildQuery(options.data)\r\n      }\r\n      delete options['data']\r\n    }\r\n\r\n    if ((genOptions.body || options.body) && (!options.method || (options.method + '').toUpperCase() === 'GET')) {\r\n      genOptions.method = 'POST'\r\n    }\r\n\r\n    options.referer = url.href\r\n\r\n    options = util.merge({}, DEFAULT_OPTIONS, genOptions, options)\r\n\r\n    options.agent = url.protocol === 'https:' ? options.httpsAgent : options.httpAgent\r\n    delete options.httpAgent\r\n    delete options.httpsAgent\r\n\r\n    if (json && !noParseJSON) {\r\n      return fetch(url, options).then(util.parseJSON)\r\n    }\r\n    return fetch(url, options)\r\n  } catch (e) {\r\n    return Promise.reject(e)\r\n  }\r\n}\r\n\r\n/**\r\n * Set default ifetch options\r\n * @param {Object} baseOptions default options\r\n * @return {Function} fetch function\r\n */\r\nifetch.defaults = baseOptions => {\r\n  let baseURL\r\n  if (baseOptions.url) {\r\n    baseURL = baseOptions.url\r\n    delete baseOptions['url']\r\n    if (!(baseURL instanceof URL)) {\r\n      baseURL = new URL(baseURL) // it'll throw error if url not valid\r\n    }\r\n  }\r\n\r\n  let baseOptionsFunction\r\n  if (baseOptions.options) {\r\n    baseOptionsFunction = baseOptions.options\r\n    delete baseOptions['options']\r\n  }\r\n\r\n  /**\r\n   * ifetch function\r\n   * @param {String|URL} url\r\n   * @param {Object} [options]\r\n   */\r\n  return (url, options) => {\r\n    // ifetch function\r\n    if (typeof url !== 'string' && !(url instanceof URL)) {\r\n      options = url\r\n      url = '/'\r\n    }\r\n\r\n    if (baseURL) {\r\n      url = util.mergeURL(url, baseURL)\r\n    }\r\n    if (baseOptionsFunction && (typeof (baseOptionsFunction) === 'function')) {\r\n      if (options) {\r\n        options = util.merge({}, baseOptions, baseOptionsFunction(), options)\r\n      } else {\r\n        options = util.merge({}, baseOptions, baseOptionsFunction())\r\n      }\r\n    } else {\r\n      if (options) {\r\n        options = util.merge({}, baseOptions, options)\r\n      } else {\r\n        options = util.merge({}, baseOptions)\r\n      }\r\n    }\r\n    return ifetch(url, options)\r\n  }\r\n}\r\n\r\nifetch.DEFAULT_OPTIONS = DEFAULT_OPTIONS\r\n\r\nexports = module.exports = ifetch\r\n"]}