{"version":3,"file":"middleware.cjs","sources":["../src/middleware/agent/node-agent.ts","../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/util/isBrowserOptions.ts","../src/middleware/mtls.ts","../src/util/global.ts","../src/middleware/observable.ts","../src/middleware/progress/node-progress.ts","../src/middleware/promise.ts","../src/middleware/proxy.ts","../src/util/node-shouldRetry.ts","../src/middleware/retry/shared-retry.ts","../src/middleware/retry/node-retry.ts","../src/middleware/urlEncoded.ts","../src/middleware/keepAlive.ts","../src/middleware.ts"],"sourcesContent":["import {Agent as HttpAgent, AgentOptions} from 'http'\nimport {Agent as HttpsAgent} from 'https'\n\nconst isHttpsProto = /^https:/i\n\n/**\n * Constructs a http.Agent and uses it for all requests.\n * This can be used to override settings such as `maxSockets`, `maxTotalSockets` (to limit concurrency) or change the `timeout`.\n * @public\n */\nexport function agent(opts?: AgentOptions): any {\n  const httpAgent = new HttpAgent(opts)\n  const httpsAgent = new HttpsAgent(opts)\n  const agents = {http: httpAgent, https: httpsAgent}\n\n  return {\n    finalizeOptions: (options: any) => {\n      if (options.agent) {\n        return options\n      }\n\n      // When maxRedirects>0 we're using the follow-redirects package and this supports the `agents` option.\n      if (options.maxRedirects > 0) {\n        return {...options, agents}\n      }\n\n      // ... otherwise we'll have to detect which agent to use:\n      const isHttps = isHttpsProto.test(options.href || options.protocol)\n      return {...options, agent: isHttps ? httpsAgent : httpAgent}\n    },\n  }\n}\n","import type {Middleware} from '../types'\n\nconst leadingSlash = /^\\//\nconst trailingSlash = /\\/$/\n\n/** @public */\nexport function base(baseUrl: string) {\n  const baseUri = baseUrl.replace(trailingSlash, '')\n  return {\n    processOptions: (options) => {\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  } satisfies Middleware\n}\n","import debugIt from 'debug'\n\nimport type {Middleware} from '../types'\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 = {}) {\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) => {\n      options.debug = log\n      options.requestId = options.requestId || ++requestId\n      return options\n    },\n\n    onRequest: (event) => {\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, context) => {\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, context) => {\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  } satisfies Middleware\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","import type {Middleware} from '../types'\n\n/** @public */\nexport function headers(_headers: any, opts: any = {}) {\n  return {\n    processOptions: (options) => {\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  } satisfies Middleware\n}\n","import type {Middleware} from '../types'\n\nclass 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, ctx) => {\n      const isHttpError = res.statusCode >= 400\n      if (!isHttpError) {\n        return res\n      }\n\n      throw new HttpError(res, ctx)\n    },\n  } satisfies Middleware\n}\n","import type {Middleware, MiddlewareHooks, MiddlewareResponse} from '../types'\n\n/** @public */\nexport function injectResponse(\n  opts: {\n    inject: (\n      event: Parameters<MiddlewareHooks['interceptRequest']>[1],\n      prevValue: Parameters<MiddlewareHooks['interceptRequest']>[0],\n    ) => Partial<MiddlewareResponse | undefined | void>\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  } = {} as any,\n) {\n  if (typeof opts.inject !== 'function') {\n    throw new Error('`injectResponse` middleware requires a `inject` function')\n  }\n\n  const inject = function inject(prevValue, event) {\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 {\n      body: '',\n      url: options.url,\n      method: options.method!,\n      headers: {},\n      statusCode: 200,\n      statusMessage: 'OK',\n      ...response,\n    } satisfies MiddlewareResponse\n  } satisfies Middleware['interceptRequest']\n\n  return {interceptRequest: inject} satisfies Middleware\n}\n","export const isBuffer =\n  typeof Buffer === 'undefined' ? () => false : (obj: unknown) => Buffer.isBuffer(obj)\n","import {isPlainObject} from 'is-plain-object'\n\nimport type {Middleware} from '../types'\nimport {isBuffer} from '../util/isBuffer'\n\nconst serializeTypes = ['boolean', 'string', 'number']\n\n/** @public */\nexport function jsonRequest() {\n  return {\n    processOptions: (options) => {\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  } satisfies Middleware\n}\n","import type {Middleware} from '../types'\n\n/** @public */\nexport function jsonResponse(opts?: any) {\n  return {\n    onResponse: (response) => {\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) =>\n      Object.assign({}, options, {\n        headers: Object.assign({Accept: 'application/json'}, options.headers),\n      }),\n  } satisfies Middleware\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","import type {RequestOptions} from '../types'\n\nexport function isBrowserOptions(options: unknown): options is RequestOptions {\n  return typeof options === 'object' && options !== null && !('protocol' in options)\n}\n","import type {Middleware} from '../types'\nimport {isBrowserOptions} from '../util/isBrowserOptions'\n\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) => {\n      if (isBrowserOptions(options)) {\n        return options\n      }\n\n      const mtlsOpts = {\n        cert: config.cert,\n        key: config.key,\n        ca: config.ca,\n      }\n      return Object.assign({}, options, mtlsOpts)\n    },\n  } satisfies Middleware\n}\n","let actualGlobal = {} as typeof globalThis\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}\n\nexport default actualGlobal\n","import type {Middleware} from '../types'\nimport global from '../util/global'\n\n/** @public */\nexport function observable(\n  opts: {\n    implementation?: any\n  } = {},\n) {\n  const Observable =\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any -- @TODO consider dropping checking for a global Observable since it's not on a standards track\n    opts.implementation || (global as any).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, context) =>\n      new Observable((observer: any) => {\n        channels.error.subscribe((err) => observer.error(err))\n        channels.progress.subscribe((event) =>\n          observer.next(Object.assign({type: 'progress'}, event)),\n        )\n        channels.response.subscribe((response) => {\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  } satisfies Middleware\n}\n","import progressStream from 'progress-stream'\n\nimport type {Middleware} from '../../types'\n\nfunction normalizer(stage: 'download' | 'upload') {\n  return (prog: any) => ({\n    stage,\n    percent: prog.percentage,\n    total: prog.length,\n    loaded: prog.transferred,\n    lengthComputable: !(prog.length === 0 && prog.percentage === 0),\n  })\n}\n\n/** @public */\nexport function progress() {\n  return {\n    onHeaders: (response, evt) => {\n      const _progress = progressStream({time: 16})\n      const normalize = normalizer('download')\n\n      // This is supposed to be handled automatically, but it has a bug,\n      // see https://github.com/freeall/progress-stream/pull/22\n      const contentLength = response.headers['content-length']\n      const length = contentLength ? Number(contentLength) : 0\n      if (!isNaN(length) && length > 0) {\n        _progress.setLength(length)\n      }\n\n      _progress.on('progress', (prog) => evt.context.channels.progress.publish(normalize(prog)))\n      return response.pipe(_progress)\n    },\n\n    onRequest: (evt) => {\n      if (!evt.progress) {\n        return\n      }\n\n      const normalize = normalizer('upload')\n      evt.progress.on('progress', (prog: any) =>\n        evt.context.channels.progress.publish(normalize(prog)),\n      )\n    },\n  } satisfies Middleware\n}\n","import type {Middleware} from '../types'\n\n/** @public */\nexport const promise = (\n  options: {onlyBody?: boolean; implementation?: PromiseConstructor} = {},\n) => {\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, context) =>\n      new PromiseImplementation((resolve, reject) => {\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) => {\n          resolve(options.onlyBody ? (response as any).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  } satisfies Middleware\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      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","import type {Middleware} from '../types'\n\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) => Object.assign({proxy: _proxy}, options),\n  } satisfies Middleware\n}\n","import allowed from 'is-retry-allowed'\n\nexport default (err: any, num: number, options: any) => {\n  if (options.method !== 'GET' && options.method !== 'HEAD') {\n    return false\n  }\n\n  // Don't allow retries if we get any http status code by default\n  if (err.response && err.response.statusCode) {\n    return false\n  }\n\n  return allowed(err)\n}\n","import type {Middleware, 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) => {\n  const maxRetries = opts.maxRetries || 5\n  const retryDelay = opts.retryDelay || getRetryDelay\n  const allowRetry = opts.shouldRetry\n\n  return {\n    onError: (err, context) => {\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  } satisfies Middleware\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/node-shouldRetry'\nimport sharedRetry from './shared-retry'\n\n/** @public */\nexport const retry = (opts: Partial<RetryOptions> = {}) =>\n  sharedRetry({shouldRetry: defaultShouldRetry, ...opts})\n\nretry.shouldRetry = defaultShouldRetry\n","import {isPlainObject} from 'is-plain-object'\n\nimport type {Middleware} from '../types'\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() {\n  return {\n    processOptions: (options) => {\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  } satisfies Middleware\n}\n","export function buildKeepAlive(agent: any) {\n  return function keepAlive(config: any = {}): any {\n    const ms = config.ms || 1000\n    const maxFree = config.maxFree || 256\n    const agentOptions = {\n      keepAlive: true,\n      keepAliveMsecs: ms,\n      maxFreeSockets: maxFree,\n    }\n\n    return agent(agentOptions)\n  }\n}\n","export * from './middleware/agent/node-agent'\nexport * from './middleware/base'\nexport * from './middleware/debug'\nexport * from './middleware/defaultOptionsProcessor'\nexport * from './middleware/defaultOptionsValidator'\nexport * from './middleware/headers'\nexport * from './middleware/httpErrors'\nexport * from './middleware/injectResponse'\nexport * from './middleware/jsonRequest'\nexport * from './middleware/jsonResponse'\nexport * from './middleware/mtls'\nexport * from './middleware/observable'\nexport * from './middleware/progress/node-progress'\nexport * from './middleware/promise'\nexport * from './middleware/proxy'\nexport * from './middleware/retry/node-retry'\nexport * from './middleware/urlEncoded'\nexport type * from './types'\n\nimport {agent} from './middleware/agent/node-agent'\nimport {buildKeepAlive} from './middleware/keepAlive'\n/** @public */\nexport const keepAlive = buildKeepAlive(agent)\n"],"names":["HttpAgent","HttpsAgent","debugIt","inject","isPlainObject","global","progressStream","allowed"],"mappings":"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"}