{"version":3,"file":"middleware.browser.cjs","sources":["../src/middleware/base.ts","../src/middleware/debug.ts","../src/middleware/headers.ts","../src/middleware/httpErrors.ts","../src/middleware/injectResponse.ts","../src/util/isBuffer.ts","../src/middleware/jsonRequest.ts","../src/middleware/jsonResponse.ts","../src/middleware/keepAlive/browser-keepAlive.ts","../src/middleware/mtls.ts","../src/util/global.ts","../src/middleware/observable.ts","../src/middleware/progress/browser-progress.ts","../src/middleware/promise.ts","../src/middleware/proxy.ts","../src/util/browser-shouldRetry.ts","../src/middleware/retry/shared-retry.ts","../src/middleware/retry/browser-retry.ts","../src/middleware/urlEncoded.ts"],"sourcesContent":["const leadingSlash = /^\\//\nconst trailingSlash = /\\/$/\n\n/** @public */\nexport function base(baseUrl: any): any {\n  const baseUri = baseUrl.replace(trailingSlash, '')\n  return {\n    processOptions: (options: any) => {\n      if (/^https?:\\/\\//i.test(options.url)) {\n        return options // Already prefixed\n      }\n\n      const url = [baseUri, options.url.replace(leadingSlash, '')].join('/')\n      return Object.assign({}, options, {url})\n    },\n  }\n}\n","import debugIt from 'debug'\n\nconst SENSITIVE_HEADERS = ['cookie', 'authorization']\n\nconst hasOwn = Object.prototype.hasOwnProperty\nconst redactKeys = (source: any, redacted: any) => {\n  const target: any = {}\n  for (const key in source) {\n    if (hasOwn.call(source, key)) {\n      target[key] = redacted.indexOf(key.toLowerCase()) > -1 ? '<redacted>' : source[key]\n    }\n  }\n  return target\n}\n\n/** @public */\nexport function debug(opts: any = {}): any {\n  const verbose = opts.verbose\n  const namespace = opts.namespace || 'get-it'\n  const defaultLogger = debugIt(namespace)\n  const log = opts.log || defaultLogger\n  const shortCircuit = log === defaultLogger && !debugIt.enabled(namespace)\n  let requestId = 0\n\n  return {\n    processOptions: (options: any) => {\n      options.debug = log\n      options.requestId = options.requestId || ++requestId\n      return options\n    },\n\n    onRequest: (event: any) => {\n      // Short-circuit if not enabled, to save some CPU cycles with formatting stuff\n      if (shortCircuit || !event) {\n        return event\n      }\n\n      const options = event.options\n\n      log('[%s] HTTP %s %s', options.requestId, options.method, options.url)\n\n      if (verbose && options.body && typeof options.body === 'string') {\n        log('[%s] Request body: %s', options.requestId, options.body)\n      }\n\n      if (verbose && options.headers) {\n        const headers =\n          opts.redactSensitiveHeaders === false\n            ? options.headers\n            : redactKeys(options.headers, SENSITIVE_HEADERS)\n\n        log('[%s] Request headers: %s', options.requestId, JSON.stringify(headers, null, 2))\n      }\n\n      return event\n    },\n\n    onResponse: (res: any, context: any) => {\n      // Short-circuit if not enabled, to save some CPU cycles with formatting stuff\n      if (shortCircuit || !res) {\n        return res\n      }\n\n      const reqId = context.options.requestId\n\n      log('[%s] Response code: %s %s', reqId, res.statusCode, res.statusMessage)\n\n      if (verbose && res.body) {\n        log('[%s] Response body: %s', reqId, stringifyBody(res))\n      }\n\n      return res\n    },\n\n    onError: (err: any, context: any) => {\n      const reqId = context.options.requestId\n      if (!err) {\n        log('[%s] Error encountered, but handled by an earlier middleware', reqId)\n        return err\n      }\n\n      log('[%s] ERROR: %s', reqId, err.message)\n      return err\n    },\n  }\n}\n\nfunction stringifyBody(res: any) {\n  const contentType = (res.headers['content-type'] || '').toLowerCase()\n  const isJson = contentType.indexOf('application/json') !== -1\n  return isJson ? tryFormat(res.body) : res.body\n}\n\n// Attempt pretty-formatting JSON\nfunction tryFormat(body: any) {\n  try {\n    const parsed = typeof body === 'string' ? JSON.parse(body) : body\n    return JSON.stringify(parsed, null, 2)\n  } catch (err) {\n    return body\n  }\n}\n","/** @public */\nexport function headers(_headers: any, opts: any = {}): any {\n  return {\n    processOptions: (options: any) => {\n      const existing = options.headers || {}\n      options.headers = opts.override\n        ? Object.assign({}, existing, _headers)\n        : Object.assign({}, _headers, existing)\n\n      return options\n    },\n  }\n}\n","class HttpError extends Error {\n  response: any\n  request: any\n  constructor(res: any, ctx: any) {\n    super()\n    const truncatedUrl = res.url.length > 400 ? `${res.url.slice(0, 399)}…` : res.url\n    let msg = `${res.method}-request to ${truncatedUrl} resulted in `\n    msg += `HTTP ${res.statusCode} ${res.statusMessage}`\n\n    this.message = msg.trim()\n    this.response = res\n    this.request = ctx.options\n  }\n}\n\n/** @public */\nexport function httpErrors() {\n  return {\n    onResponse: (res: any, ctx: any) => {\n      const isHttpError = res.statusCode >= 400\n      if (!isHttpError) {\n        return res\n      }\n\n      throw new HttpError(res, ctx)\n    },\n  }\n}\n","/** @public */\nexport function injectResponse(opts: any = {}) {\n  if (typeof opts.inject !== 'function') {\n    throw new Error('`injectResponse` middleware requires a `inject` function')\n  }\n\n  function inject(prevValue: any, event: any) {\n    const response = opts.inject(event, prevValue)\n    if (!response) {\n      return prevValue\n    }\n\n    // Merge defaults so we don't have to provide the most basic of details unless we want to\n    const options = event.context.options\n    return Object.assign(\n      {},\n      {\n        body: '',\n        url: options.url,\n        method: options.method,\n        headers: {},\n        statusCode: 200,\n        statusMessage: 'OK',\n      },\n      response\n    )\n  }\n\n  return {interceptRequest: inject}\n}\n","export const isBuffer =\n  typeof Buffer === 'undefined' ? () => false : (obj: unknown) => Buffer.isBuffer(obj)\n","import {isPlainObject} from 'is-plain-object'\n\nimport {isBuffer} from '../util/isBuffer'\n\nconst serializeTypes = ['boolean', 'string', 'number']\n\n/** @public */\nexport function jsonRequest() {\n  return {\n    processOptions: (options: any) => {\n      const body = options.body\n      if (!body) {\n        return options\n      }\n\n      const isStream = typeof body.pipe === 'function'\n      const shouldSerialize =\n        !isStream &&\n        !isBuffer(body) &&\n        (serializeTypes.indexOf(typeof body) !== -1 || Array.isArray(body) || isPlainObject(body))\n\n      if (!shouldSerialize) {\n        return options\n      }\n\n      return Object.assign({}, options, {\n        body: JSON.stringify(options.body),\n        headers: Object.assign({}, options.headers, {\n          'Content-Type': 'application/json',\n        }),\n      })\n    },\n  }\n}\n","/** @public */\nexport function jsonResponse(opts?: any) {\n  return {\n    onResponse: (response: any) => {\n      const contentType = response.headers['content-type'] || ''\n      const shouldDecode = (opts && opts.force) || contentType.indexOf('application/json') !== -1\n      if (!response.body || !contentType || !shouldDecode) {\n        return response\n      }\n\n      return Object.assign({}, response, {body: tryParse(response.body)})\n    },\n\n    processOptions: (options: any) =>\n      Object.assign({}, options, {\n        headers: Object.assign({Accept: 'application/json'}, options.headers),\n      }),\n  }\n\n  function tryParse(body: any) {\n    try {\n      return JSON.parse(body)\n    } catch (err: any) {\n      err.message = `Failed to parsed response body as JSON: ${err.message}`\n      throw err\n    }\n  }\n}\n","// not applicable in the browser so we just return a noop function\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function keepAlive(): void {}\n","/** @public */\nexport function mtls(config: any = {}) {\n  if (!config.ca) {\n    throw new Error('Required mtls option \"ca\" is missing')\n  }\n  if (!config.cert) {\n    throw new Error('Required mtls option \"cert\" is missing')\n  }\n  if (!config.key) {\n    throw new Error('Required mtls option \"key\" is missing')\n  }\n\n  return {\n    finalizeOptions: (options: any) => {\n      const mtlsOpts = {\n        cert: config.cert,\n        key: config.key,\n        ca: config.ca,\n      }\n      return Object.assign({}, options, mtlsOpts)\n    },\n  }\n}\n","let actualGlobal: any\n\nif (typeof globalThis !== 'undefined') {\n  actualGlobal = globalThis\n} else if (typeof window !== 'undefined') {\n  actualGlobal = window\n} else if (typeof global !== 'undefined') {\n  actualGlobal = global\n} else if (typeof self !== 'undefined') {\n  actualGlobal = self\n} else {\n  actualGlobal = {} as any\n}\n\nexport default actualGlobal\n","import global from '../util/global'\n\n/** @public */\nexport function observable(opts: any = {}) {\n  const Observable = opts.implementation || global.Observable\n  if (!Observable) {\n    throw new Error(\n      '`Observable` is not available in global scope, and no implementation was passed'\n    )\n  }\n\n  return {\n    onReturn: (channels: any, context: any) =>\n      new Observable((observer: any) => {\n        channels.error.subscribe((err: any) => observer.error(err))\n        channels.progress.subscribe((event: any) =>\n          observer.next(Object.assign({type: 'progress'}, event))\n        )\n        channels.response.subscribe((response: any) => {\n          observer.next(Object.assign({type: 'response'}, response))\n          observer.complete()\n        })\n\n        channels.request.publish(context)\n        return () => channels.abort.publish()\n      }),\n  }\n}\n","import type {RequestAdapter} from '../../types'\n\nexport function progress() {\n  return {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    onRequest: (evt: {adapter: RequestAdapter; [key: string]: any}) => {\n      if (evt.adapter !== 'xhr') {\n        return\n      }\n\n      const xhr = evt.request\n      const context = evt.context\n\n      if ('upload' in xhr && 'onprogress' in xhr.upload) {\n        xhr.upload.onprogress = handleProgress('upload')\n      }\n\n      if ('onprogress' in xhr) {\n        xhr.onprogress = handleProgress('download')\n      }\n\n      function handleProgress(stage: any) {\n        return (event: any) => {\n          const percent = event.lengthComputable ? (event.loaded / event.total) * 100 : -1\n          context.channels.progress.publish({\n            stage,\n            percent,\n            total: event.total,\n            loaded: event.loaded,\n            lengthComputable: event.lengthComputable,\n          })\n        }\n      }\n    },\n  }\n}\n","/** @public */\nexport const promise = (options: any = {}) => {\n  const PromiseImplementation = options.implementation || Promise\n  if (!PromiseImplementation) {\n    throw new Error('`Promise` is not available in global scope, and no implementation was passed')\n  }\n\n  return {\n    onReturn: (channels: any, context: any) =>\n      new PromiseImplementation((resolve: any, reject: any) => {\n        const cancel = context.options.cancelToken\n        if (cancel) {\n          cancel.promise.then((reason: any) => {\n            channels.abort.publish(reason)\n            reject(reason)\n          })\n        }\n\n        channels.error.subscribe(reject)\n        channels.response.subscribe((response: any) => {\n          resolve(options.onlyBody ? response.body : response)\n        })\n\n        // Wait until next tick in case cancel has been performed\n        setTimeout(() => {\n          try {\n            channels.request.publish(context)\n          } catch (err) {\n            reject(err)\n          }\n        }, 0)\n      }),\n  }\n}\n\n/**\n * The cancel token API is based on the [cancelable promises proposal](https://github.com/tc39/proposal-cancelable-promises), which is currently at Stage 1.\n *\n * Code shamelessly stolen/borrowed from MIT-licensed [axios](https://github.com/mzabriskie/axios). Thanks to [Nick Uraltsev](https://github.com/nickuraltsev), [Matt Zabriskie](https://github.com/mzabriskie) and the other contributors of that project!\n */\n/** @public */\nexport class Cancel {\n  __CANCEL__ = true\n\n  message: string | undefined\n\n  constructor(message: string | undefined) {\n    this.message = message\n  }\n\n  toString() {\n    return `Cancel${this.message ? `: ${this.message}` : ''}`\n  }\n}\n\n/** @public */\nexport class CancelToken {\n  promise: Promise<any>\n  reason?: Cancel\n\n  constructor(executor: (cb: (message?: string) => void) => void) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.')\n    }\n\n    let resolvePromise: any = null\n\n    this.promise = new Promise((resolve) => {\n      resolvePromise = resolve\n    })\n\n    executor((message?: string) => {\n      if (this.reason) {\n        // Cancellation has already been requested\n        return\n      }\n\n      this.reason = new Cancel(message)\n      resolvePromise(this.reason)\n    })\n  }\n\n  static source = () => {\n    let cancel: (message?: string) => void\n    const token = new CancelToken((can) => {\n      cancel = can\n    })\n\n    return {\n      token: token,\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- we know from the implementation that it's assigned during `constructor`\n      cancel: cancel!,\n    }\n  }\n}\n\nconst isCancel = (value: any): value is Cancel => !!(value && value?.__CANCEL__)\n\npromise.Cancel = Cancel\npromise.CancelToken = CancelToken\npromise.isCancel = isCancel\n","/** @public */\nexport function proxy(_proxy: any) {\n  if (_proxy !== false && (!_proxy || !_proxy.host)) {\n    throw new Error('Proxy middleware takes an object of host, port and auth properties')\n  }\n\n  return {\n    processOptions: (options: any) => Object.assign({proxy: _proxy}, options),\n  }\n}\n","export default (err: any, attempt: any, options: any) => {\n  if (options.method !== 'GET' && options.method !== 'HEAD') {\n    return false\n  }\n\n  return err.isNetworkError || false\n}\n","import type {RetryOptions} from '../../types'\n\nconst isStream = (stream: any) =>\n  stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function'\n\n/** @public */\nexport default (opts: RetryOptions): any => {\n  const maxRetries = opts.maxRetries || 5\n  const retryDelay = opts.retryDelay || getRetryDelay\n  const allowRetry = opts.shouldRetry\n\n  return {\n    onError: (err: any, context: any) => {\n      const options = context.options\n      const max = options.maxRetries || maxRetries\n      const shouldRetry = options.shouldRetry || allowRetry\n      const attemptNumber = options.attemptNumber || 0\n\n      // We can't retry if body is a stream, since it'll be drained\n      if (isStream(options.body)) {\n        return err\n      }\n\n      // Give up?\n      if (!shouldRetry(err, attemptNumber, options) || attemptNumber >= max) {\n        return err\n      }\n\n      // Create a new context with an increased attempt number, so we can exit if we reach a limit\n      const newContext = Object.assign({}, context, {\n        options: Object.assign({}, options, {attemptNumber: attemptNumber + 1}),\n      })\n\n      // Wait a given amount of time before doing the request again\n      setTimeout(() => context.channels.request.publish(newContext), retryDelay(attemptNumber))\n\n      // Signal that we've handled the error and that it should not propagate further\n      return null\n    },\n  }\n}\n\nfunction getRetryDelay(attemptNum: number) {\n  return 100 * Math.pow(2, attemptNum) + Math.random() * 100\n}\n","import type {RetryOptions} from '../../types'\nimport defaultShouldRetry from '../../util/browser-shouldRetry'\nimport sharedRetry from './shared-retry'\n\n/** @public */\nexport const retry = (opts: Partial<RetryOptions> = {}): any =>\n  sharedRetry({shouldRetry: defaultShouldRetry, ...opts})\n\nretry.shouldRetry = defaultShouldRetry\n","import {isPlainObject} from 'is-plain-object'\n\nimport {isBuffer} from '../util/isBuffer'\n\nfunction encode(data: Record<string, string | Set<number | string>>): string {\n  const query = new URLSearchParams()\n\n  const nest = (name: string, _value: unknown) => {\n    const value = _value instanceof Set ? Array.from(_value) : _value\n    if (Array.isArray(value)) {\n      if (value.length) {\n        for (const index in value) {\n          nest(`${name}[${index}]`, value[index])\n        }\n      } else {\n        query.append(`${name}[]`, '')\n      }\n    } else if (typeof value === 'object' && value !== null) {\n      for (const [key, obj] of Object.entries(value)) {\n        nest(`${name}[${key}]`, obj)\n      }\n    } else {\n      query.append(name, value as string)\n    }\n  }\n\n  for (const [key, value] of Object.entries(data)) {\n    nest(key, value)\n  }\n\n  return query.toString()\n}\n\n/** @public */\nexport function urlEncoded(): any {\n  return {\n    processOptions: (options: any) => {\n      const body = options.body\n      if (!body) {\n        return options\n      }\n\n      const isStream = typeof body.pipe === 'function'\n      const shouldSerialize = !isStream && !isBuffer(body) && isPlainObject(body)\n\n      if (!shouldSerialize) {\n        return options\n      }\n\n      return {\n        ...options,\n        body: encode(options.body),\n        headers: {\n          ...options.headers,\n          'Content-Type': 'application/x-www-form-urlencoded',\n        },\n      }\n    },\n  }\n}\n"],"names":["leadingSlash","trailingSlash","base","baseUrl","baseUri","replace","processOptions","options","test","url","join","Object","assign","SENSITIVE_HEADERS","hasOwn","prototype","hasOwnProperty","redactKeys","source","redacted","target","key","call","indexOf","toLowerCase","debug","opts","arguments","length","undefined","verbose","namespace","defaultLogger","debugIt","log","shortCircuit","enabled","requestId","onRequest","event","method","body","headers","redactSensitiveHeaders","JSON","stringify","onResponse","res","context","reqId","statusCode","statusMessage","stringifyBody","onError","err","message","contentType","isJson","tryFormat","parsed","parse","_headers","existing","override","HttpError","Error","constructor","ctx","truncatedUrl","concat","slice","msg","trim","response","request","httpErrors","isHttpError","injectResponse","inject","prevValue","interceptRequest","isBuffer","Buffer","obj","serializeTypes","jsonRequest","isStream","pipe","shouldSerialize","Array","isArray","isPlainObject","jsonResponse","shouldDecode","force","tryParse","Accept","keepAlive","mtls","config","ca","cert","finalizeOptions","mtlsOpts","actualGlobal","globalThis","window","global","self","global$1","observable","Observable","implementation","onReturn","channels","observer","error","subscribe","progress","next","type","complete","publish","abort","evt","adapter","xhr","upload","onprogress","handleProgress","stage","percent","lengthComputable","loaded","total","promise","PromiseImplementation","Promise","resolve","reject","cancel","cancelToken","then","reason","onlyBody","setTimeout","Cancel","__CANCEL__","toString","_CancelToken","executor","TypeError","resolvePromise","CancelToken","token","can","isCancel","value","proxy","_proxy","host","defaultShouldRetry","attempt","isNetworkError","stream","sharedRetry","maxRetries","retryDelay","getRetryDelay","allowRetry","shouldRetry","max","attemptNumber","newContext","attemptNum","Math","pow","random","retry","encode","data","query","URLSearchParams","nest","name","_value","Set","from","index","append","entries","urlEncoded"],"mappings":"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"}