{"version":3,"file":"http-request-mock.pure.esm.mjs","mappings":"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","sources":["webpack://http-request-mock/webpack/bootstrap","webpack://http-request-mock/webpack/runtime/define property getters","webpack://http-request-mock/webpack/runtime/global","webpack://http-request-mock/webpack/runtime/hasOwnProperty shorthand","webpack://http-request-mock/./src/common/bypass.ts","webpack://http-request-mock/./src/common/utils.ts","webpack://http-request-mock/./src/config.ts","webpack://http-request-mock/./src/interceptor/base.ts","webpack://http-request-mock/./src/interceptor/fetch.ts","webpack://http-request-mock/./src/interceptor/wx-request.ts","webpack://http-request-mock/./src/interceptor/xml-http-request.ts","webpack://http-request-mock/./src/mocker/mock-item.ts","webpack://http-request-mock/./src/mocker/mocker.ts","webpack://http-request-mock/./src/browser.pure.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export default class Bypass {\n  flag = 'yes';\n}\n","\nimport type { Query } from '../types';\n\n/**\n * Get query parameters from the specified request url.\n * https://www.sitepoint.com/get-url-parameters-with-javascript/\n *\n * @param {string} reqUrl\n */\nexport function getQuery(reqUrl: string) : Query {\n  // no protocol, domain, path and hash tag\n  const query = (reqUrl || '').replace(/^.*?\\?/g, '').replace(/#.*$/g, '');\n\n  const obj: Record<string, string | string[]> = {};\n  if (query === reqUrl) {\n    return obj;\n  }\n\n  if (query) {\n    const parts = query.split('&');\n\n    for (let i = 0; i < parts.length; i++) {\n      const [key, val = ''] = parts[i].split('=');\n\n      // for keys which ends with square brackets, such as list[] or list[1]\n      if (key.match(/\\[(\\d+)?\\]$/)) {\n        const field = key.replace(/\\[(\\d+)?\\]/, '');\n        obj[field] = obj[field] || [];\n\n        if (key.match(/\\[\\d+\\]$/)) {\n          // set array index, if it's an indexed array e.g. list[2]\n          (obj[field] as string[])[Number(/\\[(\\d+)\\]/.exec(key)?.[1])] = val;\n        } else {\n          (obj[field] as string[]).push(val);\n        }\n      } else {\n        if (key in obj) {\n          obj[key] = ([] as string[]).concat(obj[key] as string | string[] , val);\n        } else {\n          obj[key] = val;\n        }\n      }\n    }\n  }\n\n  return obj;\n}\n\n/**\n * Convert query object to search string.\n * @param {object} queryObj\n */\nexport function queryObject2String(queryObj: Query) : string{\n  const str: string[] = [];\n  for(const key in queryObj) {\n    if (Array.isArray(queryObj[key])) {\n      for(const val of queryObj[key]) {\n        str.push(key + '=' + val);\n      }\n    } else {\n      str.push(key + '=' + queryObj[key]);\n    }\n  }\n  return str.join('&');\n}\n\n/**\n * Check whether or not the specified obj is an object.\n * @param {unknown} obj\n */\nexport function isObject(obj: unknown) {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\n/**\n * Try to convert an object like string to an object.\n * @param {unknown} body\n */\nexport function tryToParseObject(body: unknown) {\n  const isObjLiked = typeof body === 'string' && body[0] === '{' && body[body.length-1] === '}';\n  const isArrLiked = typeof body === 'string' && body[0] === '[' && body[body.length-1] === ']';\n\n  if (!isObjLiked && !isArrLiked) {\n    return body;\n  }\n\n  try {\n    return JSON.parse(body);\n  } catch(e) {\n    return body;\n  }\n}\n\nexport function tryToParsePostBody(body: unknown): unknown {\n  if (!body) {\n    return body;\n  }\n\n  if (typeof body === 'string') {\n    const info = tryToParseObject(body);\n    if (info && typeof info === 'object') {\n      return info;\n    }\n  }\n\n  if (typeof body === 'string' && body.includes('&') && body.includes('=')) {\n    return getQuery(body);\n  }\n\n  return body;\n}\n\n/**\n * Try to parse a JSON string\n * @param {unknown} body\n */\nexport function tryToParseJson(str: string, defaultVal = null) {\n  try {\n    return JSON.parse(String(str));\n  } catch(e) {\n    return defaultVal;\n  }\n}\n\n/**\n * Sleep the specified number of milliseconds.\n * @param {number} ms\n */\nexport function sleep(ms: number) {\n  return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Convert string to arraybuffer.\n * @param {string} str\n */\nexport function str2arrayBuffer(str: string) {\n  if (typeof TextEncoder === 'function') {\n    return new TextEncoder().encode(str);\n  }\n\n  if (typeof ArrayBuffer === 'function') {\n    const buf = new ArrayBuffer(str.length*2); // 2 bytes for each char\n    const bufView = new Uint16Array(buf);\n    for (let i=0, strLen=str.length; i<strLen; i++) {\n      bufView[i] = str.charCodeAt(i);\n    }\n    return buf;\n  }\n\n  return null;\n}\n\n/**\n * Whether or not the specified data is arraybuffer.\n * @param {unknown} data\n */\nexport function isArrayBuffer(data: unknown) {\n  if (typeof ArrayBuffer === 'function' && data instanceof ArrayBuffer) {\n    return true;\n  }\n  if (typeof Int32Array === 'function' && (data instanceof Int32Array)) {\n    return true;\n  }\n  if (typeof Int16Array === 'function' && (data instanceof Int16Array)) {\n    return true;\n  }\n  if (typeof Int8Array === 'function' && (data instanceof Int8Array)) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Get current date.\n */\nexport function currentDate() {\n  const now = new Date();\n  const year = now.getFullYear();\n  const month = now.getMonth() + 1;\n  const date = now.getDate();\n  const two = (num: number) => num < 10 ? `0${num}` : `${num}`;\n\n  return `${two(year)}-${two(month)}-${two(date)}`;\n}\n\n/**\n * Get current time.\n */\nexport function currentTime() {\n  const now = new Date();\n  const hour = now.getHours();\n  const minute = now.getMinutes();\n  const second = now.getSeconds();\n  const two = (num: number) => num < 10 ? `0${num}` : `${num}`;\n\n  return `${two(hour)}:${two(minute)}:${two(second)}`;\n}\n\n/**\n * Get current datetime.\n */\nexport function currentDatetime() {\n  const now = new Date();\n  const year = now.getFullYear();\n  const month = now.getMonth() + 1;\n  const date = now.getDate();\n\n  const hour = now.getHours();\n  const minute = now.getMinutes();\n  const second = now.getSeconds();\n  const two = (num: number) => num < 10 ? `0${num}` : `${num}`;\n\n  return `${two(year)}-${two(month)}-${two(date)} ${two(hour)}:${two(minute)}:${two(second)}`;\n}\n\n/**\n * Check current environment: nodejs or not.\n * Note: arrow function is required.\n */\nexport function isNodejs() {\n  return (typeof process !== 'undefined')\n    && (Object.prototype.toString.call(process) === '[object process]')\n    && (!!(process.versions && process.versions.node));\n}\n\n/**\n * Check if an object is a Promise\n */\nexport function isPromise(object: unknown){\n  if(Promise && Promise.resolve){\n    return Promise.resolve(object) === object;\n  }else{\n    throw new Error('Promise not supported in your environment');\n  }\n}\n\n/**\n * Check if an object is imported.\n */\nexport function isImported(obj: unknown) {\n  return obj && typeof obj === 'object' && Object.keys(obj).length === 1 && ('default' in obj);\n}\n\n\n/**\n * Get caller file from error stack\n */\nexport function getCallerFile() {\n  type SimplifiedStackInfo = { getFileName: () => string };\n\n  const oldPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = (_, stack)  => stack;\n  const stack = new Error().stack as unknown as Record<string, SimplifiedStackInfo>;\n  Error.prepareStackTrace = oldPrepareStackTrace;\n\n\n  if (stack !== null && typeof stack === 'object') {\n    for(let i = 0; i < 50; i++) {\n      const file = stack[i] ? stack[i].getFileName() : undefined;\n      const next = stack[i + 1] ? stack[i + 1].getFileName() : undefined;\n      if (file !== next && file === __filename) {\n        return next;\n      }\n    }\n  }\n}\n\nexport function get<T>(obj: object, path: string | Array<string | number>, defaultValue?: unknown): T {\n  if (typeof path === 'string') {\n    path = path.replace(/\\[(\\w+)\\]/g, '.$1');\n    path = path.split('.').filter(Boolean);\n  }\n\n  let result: unknown = obj;\n  for (const key of path as Array<string | number>) {\n    if (result && result[key as keyof typeof result] !== undefined) {\n      result = result[key as keyof typeof result];\n    } else {\n      result = undefined;\n      break;\n    }\n  }\n\n  return (result === undefined ? defaultValue : result) as T;\n}\n","// https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\ntype StatusToText = {\n  [key: string]: string\n};\n\nexport const HTTPStatusCodes: StatusToText = {\n  100: 'Continue',\n  101: 'Switching Protocols',\n  102: 'Processing',\n  103: 'Early Hints',\n  200: 'OK',\n  201: 'Created',\n  202: 'Accepted',\n  203: 'Non-Authoritative Information',\n  204: 'No Content',\n  205: 'Reset Content',\n  206: 'Partial Content',\n  207: 'Multi-Status',\n  208: 'Already Reported',\n  226: 'IM Used',\n  300: 'Multiple Choices',\n  301: 'Moved Permanently',\n  302: 'Found',\n  303: 'See Other',\n  304: 'Not Modified',\n  305: 'Use Proxy',\n  307: 'Temporary Redirect',\n  308: 'Permanent Redirect',\n  400: 'Bad Request',\n  401: 'Unauthorized',\n  402: 'Payment Required',\n  403: 'Forbidden',\n  404: 'Not Found',\n  405: 'Method Not Allowed',\n  406: 'Not Acceptable',\n  407: 'Proxy Authentication Required',\n  408: 'Request Timeout',\n  409: 'Conflict',\n  410: 'Gone',\n  411: 'Length Required',\n  412: 'Precondition Failed',\n  413: 'Payload Too Large',\n  414: 'URI Too Long',\n  415: 'Unsupported Media Type',\n  416: 'Range Not Satisfiable',\n  417: 'Expectation Failed',\n  418: 'I\\'m a Teapot',\n  421: 'Misdirected Request',\n  422: 'Unprocessable Entity',\n  423: 'Locked',\n  424: 'Failed Dependency',\n  425: 'Too Early',\n  426: 'Upgrade Required',\n  428: 'Precondition Required',\n  429: 'Too Many Requests',\n  431: 'Request Header Fields Too Large',\n  451: 'Unavailable For Legal Reasons',\n  500: 'Internal Server Error',\n  501: 'Not Implemented',\n  502: 'Bad Gateway',\n  503: 'Service Unavailable',\n  504: 'Gateway Timeout',\n  505: 'HTTP Version Not Supported',\n  506: 'Variant Also Negotiates',\n  507: 'Insufficient Storage',\n  508: 'Loop Detected',\n  509: 'Bandwidth Limit Exceeded',\n  510: 'Not Extended',\n  511: 'Network Authentication Required'\n};\n","import { get, getQuery, tryToParsePostBody } from '../common/utils';\nimport MockItem from '../mocker/mock-item';\nimport Mocker from '../mocker/mocker';\nimport { HttpVerb, RequestInfo } from '../types';\nimport InterceptorFetch from './fetch';\nimport InterceptorNode from './node/http-and-https';\nimport InterceptorWxRequest from './wx-request';\nimport InterceptorXhr from './xml-http-request';\nexport default class BaseInterceptor {\n  protected mocker: Mocker;\n  protected proxyServer = '';\n  protected proxyMode = '';\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  protected global: Record<string, any>;\n\n  constructor(mocker: Mocker, proxyServer = '') {\n    this.mocker = mocker;\n\n    if (/^(matched@localhost:\\d+)|(middleware@\\/)$/.test(proxyServer)) {\n      [this.proxyMode, this.proxyServer] = proxyServer.split('@');\n    }\n\n    this.global = BaseInterceptor.getGlobal();\n  }\n\n  /**\n   * Setup request mocker.\n   * @param {Mocker} mocker\n   */\n  public static setup(mocker: Mocker, proxyServer = '') {\n    return <InterceptorFetch | InterceptorWxRequest | InterceptorXhr | InterceptorNode> new this(mocker, proxyServer);\n  }\n\n  /**\n   * return global variable\n   */\n  public static getGlobal() {\n    if (typeof window !== 'undefined') {\n      return window;\n    } else if (typeof global !== 'undefined')  {\n      return global;\n    }\n    throw new Error('Detect global variable error');\n  }\n\n  /**\n   * Check whether the specified request url matches a defined mock item.\n   * If a match is found, return mock meta information, otherwise a null is returned.\n   * @param {string} reqUrl\n   * @param {string} reqMethod\n   */\n  protected matchMockRequest(reqUrl: string, reqMethod: HttpVerb | undefined): MockItem | null {\n    // ignore matching when it is a proxy mode\n    if (this.proxyMode === 'matched' && reqUrl.indexOf(`http://${this.proxyServer}`) === 0) {\n      return null;\n    }\n    const mockItem: MockItem | null =  this.mocker.matchMockItem(reqUrl, reqMethod);\n    if (mockItem && mockItem.times !== undefined) {\n      mockItem.times -= 1;\n    }\n\n    // \"mockItem\" should be returned if current request is under proxy mode of middleware and is marked by @deProxy\n    if (this.proxyMode === 'middleware' && reqUrl.indexOf(this.getMiddlewareHost()) === 0) {\n      return mockItem && mockItem.deProxy ? mockItem : null;\n    }\n\n    return mockItem;\n  }\n\n  public getRequestInfo(requestInfo: RequestInfo) : RequestInfo {\n    const info: RequestInfo = {\n      url: requestInfo.url,\n      method: requestInfo.method || 'GET',\n      query: getQuery(requestInfo.url),\n    };\n    if (get(requestInfo, 'headers') || get(requestInfo, 'header')) {\n      info.headers = get(requestInfo, 'headers') || get(requestInfo, 'header');\n    }\n    if (requestInfo.body !== undefined) {\n      info.rawBody = requestInfo.body;\n      info.body = tryToParsePostBody(requestInfo.body);\n    }\n    return info;\n  }\n\n  /**\n   * Get full request url.\n   * @param {string} url\n   */\n  getFullRequestUrl(url: string, method: HttpVerb) {\n    if (/^https?:\\/\\//i.test(url)) {\n      return this.checkProxyUrl(url, method);\n    }\n\n    if (typeof URL === 'function' && typeof window === 'object' && window) {\n      // https://github.com/huturen/http-request-mock/issues/21\n      // \"window.location.href\" might point to an embedded file (e.g., data:text/html;charset=utf-8,...),\n      // potentially leading to an \"Invalid URL\" error.\n      if (/^https?:\\/\\//i.test(window.location.href)) {\n        return this.checkProxyUrl(new URL(url, window.location.href).href, method);\n      }\n    }\n\n    if (typeof document === 'object' && document && typeof document.createElement === 'function') {\n      const elemA = document.createElement('a');\n      elemA.href = url;\n      return this.checkProxyUrl(elemA.href, method);\n    }\n    return this.checkProxyUrl(url, method);\n  }\n\n  /**\n   * Return a proxy url if in a proxy mode otherwise return the original url.\n   * @param {string} url\n   */\n  public checkProxyUrl(url: string, method: HttpVerb) {\n    if (!['matched', 'middleware'].includes(this.proxyMode) || !this.proxyServer) {\n      return url;\n    }\n\n    const mockItem = this.mocker.matchMockItem(url, method);\n    if (!mockItem) {\n      return url;\n    }\n\n    const proxyUrl = this.proxyMode === 'middleware'\n      ? `${this.getMiddlewareHost()}${url.replace(/^(https?):\\/\\//, '/$1/')}`\n      : `http://${this.proxyServer}${url.replace(/^(https?):\\/\\//, '/$1/')}`;\n\n    return mockItem.deProxy ? url : proxyUrl;\n  }\n\n  public getMiddlewareHost() {\n    const { protocol, host } = window.location;\n    return `${protocol}//${host}`;\n  }\n}\n\n","/* eslint-disable @typescript-eslint/ban-types */\nimport Bypass from '../common/bypass';\nimport { sleep, tryToParseJson } from '../common/utils';\nimport { HTTPStatusCodes } from '../config';\nimport MockItem from '../mocker/mock-item';\nimport Mocker from '../mocker/mocker';\nimport { FetchRequest, FetchResponse, HttpVerb, OriginalResponse, RemoteResponse, RequestInfo } from '../types';\nimport type { AnyObject } from './../types';\nimport Base from './base';\n\nexport default class FetchInterceptor extends Base{\n  private static instance: FetchInterceptor;\n  private fetch;\n\n  constructor(mocker: Mocker, proxyServer = '') {\n    super(mocker, proxyServer);\n\n    if (FetchInterceptor.instance) {\n      return FetchInterceptor.instance;\n    }\n\n    FetchInterceptor.instance = this;\n    this.fetch = this.global.fetch.bind(this.global);\n    this.intercept();\n\n    return this;\n  }\n\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n   * Intercept fetch object.\n   */\n  private intercept() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const me = this;\n    this.global.fetch = function (\n      input: string | FetchRequest | URL,\n      init: AnyObject\n    ) {\n      let url: string;\n      let params: FetchRequest | AnyObject;\n      // https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch\n      // Note: the first argument of fetch maybe a Request or URL object.\n      if (input instanceof URL) {\n        url = input.toString();\n        params = init || {};\n      } else if (typeof input === 'object') {\n        url = input.url;\n        params = input;\n      } else {\n        url = input;\n        params = init || {};\n      }\n      const method = (params && params.method ? params.method : 'GET') as unknown as HttpVerb;\n      const requestUrl = me.getFullRequestUrl(url, method);\n\n      return new Promise((resolve, reject) => {\n        const mockItem: MockItem | null = me.matchMockRequest(requestUrl, method);\n\n        if (!mockItem) {\n          me.fetch(input, init).then(resolve).catch(reject);\n          return;\n        }\n\n        me.setTimeoutForSingal(params as FetchRequest, reject);\n\n        const requestInfo = me.getRequestInfo({\n          ...params,\n          url: requestUrl,\n          method: method as HttpVerb,\n        });\n        requestInfo.doOriginalCall = async (): Promise<OriginalResponse> => {\n          const res = await me.getOriginalResponse(requestUrl, params);\n          requestInfo.doOriginalCall = undefined;\n          return res;\n        };\n\n        const remoteInfo = mockItem?.getRemoteInfo(requestUrl);\n        if (remoteInfo) {\n          params.method = remoteInfo.method || method;\n          me.setRemoteRequestHeaders(mockItem, params as AnyObject);\n          me.fetch(remoteInfo.url, params)\n            .then((fetchResponse: FetchResponse) => {\n              me.sendRemoteResult(\n                fetchResponse,\n                mockItem,\n                requestInfo,\n                resolve\n              );\n            })\n            .catch(reject);\n          return;\n        }\n\n        me.doMockRequest(mockItem, requestInfo, resolve).then((isBypassed) => {\n          if (isBypassed) {\n            me.fetch(requestUrl, params).then(resolve).catch(reject);\n          }\n        });\n      });\n    };\n    return this;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private setTimeoutForSingal(params: FetchRequest, reject: (reason?: any) => void) {\n    if (!params.signal) {\n      return;\n    }\n    const defaultTimeoutMsg = 'request timed out';\n    // If the signal is already aborted, immediately throw in order to reject the promise.\n    if (params.signal.aborted) {\n      reject(params.signal.reason || new Error(defaultTimeoutMsg));\n    }\n\n    // Perform the main purpose of the API\n    // Call resolve(result) when done.\n\n    // Watch for 'abort' signals\n    params.signal?.addEventListener('abort', () => {\n      // Stop the main operation, reject the promise with the abort reason.\n      reject(params.signal?.reason || new Error(defaultTimeoutMsg));\n    });\n  }\n\n  /**\n   * Set request headers for requests marked by remote config.\n   * @param {AnyObject} fetchParams\n   */\n  private setRemoteRequestHeaders(mockItem: MockItem , fetchParams: AnyObject) {\n    if (Object.keys(mockItem.remoteRequestHeaders).length <= 0) return;\n\n    // https://developer.mozilla.org/en-US/docs/Web/API/Headers\n    if (typeof (fetchParams.headers as {set: Function}).set === 'function') {\n      Object.entries(mockItem.remoteRequestHeaders).forEach(([key, val]) => {\n        (fetchParams.headers as {set: Function})?.set(key, val);\n      });\n    } else {\n      fetchParams.headers = {\n        ...((fetchParams.headers as object) || {}),\n        ...mockItem.remoteRequestHeaders\n      };\n    }\n  }\n\n  /**\n   * Set remote result.\n   * @param {FetchResponse} fetchResponse\n   * @param {MockItem} mockItem\n   * @param {RequestInfo} requestInfo\n   * @param {Function} resolve\n   */\n  private sendRemoteResult(\n    fetchResponse: FetchResponse,\n    mockItem: MockItem,\n    requestInfo: RequestInfo,\n    resolve: Function\n  ) {\n    const headers: Record<string, string> = {};\n    if (typeof Headers === 'function' && fetchResponse.headers instanceof Headers) {\n      fetchResponse.headers.forEach((val: string, key: string) => {\n        headers[key.toLocaleLowerCase()] = val;\n      });\n    }\n    fetchResponse.text().then((text) => {\n      const json = tryToParseJson(text);\n      const remoteResponse: RemoteResponse = {\n        status: fetchResponse.status,\n        headers,\n        response: json || text,\n        responseText: text,\n        responseJson: json,\n      };\n      this.doMockRequest(mockItem, requestInfo, resolve, remoteResponse);\n    });\n  }\n\n  /**\n   * Get original response\n   * @param {string} requestUrl\n   * @param {FetchRequest | AnyObject} params\n   */\n  private async getOriginalResponse(requestUrl: string, params: FetchRequest | AnyObject): Promise<OriginalResponse> {\n    let status = null;\n    const headers: Record<string, string> = {};\n    let responseText = null;\n    let responseJson = null;\n    let responseBuffer = null;\n    let responseBlob = null;\n    try {\n      const res = await this.fetch(requestUrl, params);\n      status = res.status;\n      if (typeof Headers === 'function' && res.headers instanceof Headers) {\n        res.headers.forEach((val: string, key: string) => (headers[key.toLocaleLowerCase()] = val));\n      }\n      const isBlobAvailable = typeof Blob === 'function'\n        && typeof Blob.prototype.text === 'function'\n        && typeof Blob.prototype.arrayBuffer === 'function'\n        && typeof Blob.prototype.slice === 'function'\n        && typeof Blob.prototype.stream === 'function';\n\n      responseBlob = isBlobAvailable ? await res.blob() : null;\n      responseText = isBlobAvailable ? await responseBlob.text() : await res.text();\n      responseBuffer = isBlobAvailable ? await responseBlob.arrayBuffer() : null;\n      responseJson = responseText === null ? null : tryToParseJson(responseText);\n      return { status, headers, responseText, responseJson, responseBuffer, responseBlob, error: null };\n    } catch(err) {\n      return { status, headers, responseText, responseJson, responseBuffer, responseBlob, error: err as Error };\n    }\n  }\n\n  /**\n   * Make mock request.\n   * @param {MockItem} mockItem\n   * @param {RequestInfo} requestInfo\n   * @param {Function} resolve\n   */\n  private async doMockRequest(\n    mockItem: MockItem,\n    requestInfo: RequestInfo,\n    resolve: Function,\n    remoteResponse: RemoteResponse | null = null\n  ) {\n    let isBypassed = false;\n    if (mockItem.delay && mockItem.delay > 0) {\n      await sleep(+mockItem.delay);\n      isBypassed = await this.doMockResponse(mockItem, requestInfo, resolve, remoteResponse);\n    } else {\n      isBypassed = await this.doMockResponse(mockItem, requestInfo, resolve, remoteResponse);\n    }\n    return isBypassed;\n  }\n\n  /**\n   * Make mock request.\n   * @param {MockItem} mockItem\n   * @param {RequestInfo} requestInfo\n   * @param {Function} resolve\n   */\n  private async doMockResponse(\n    mockItem: MockItem,\n    requestInfo: RequestInfo,\n    resolve: Function,\n    remoteResponse: RemoteResponse | null = null\n  ) {\n    const now = Date.now();\n    let body;\n    try {\n      body = await mockItem.sendBody(requestInfo, remoteResponse);\n      if (body instanceof Bypass) {\n        if (remoteResponse) {\n          throw new Error('A request which is marked by @remote tag cannot be bypassed.');\n        }\n        return true;\n      }\n    } catch(err) {\n      console.warn('[http-request-mock] mock response error, ' + (err as Error).message);\n      body = '';\n    }\n\n    const spent = (Date.now() - now) + (mockItem.delay || 0);\n\n    this.mocker.sendResponseLog(spent, body, requestInfo, mockItem);\n    resolve(this.getFetchResponse(body, mockItem, requestInfo));\n    return false;\n  }\n\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/API/Response\n   * Format mock data.\n   * @param {unknown} responseBody\n   * @param {MockItem} mockItem\n   * @param {RequestInfo} requestInfo\n   */\n  getFetchResponse(responseBody: unknown, mockItem: MockItem, requestInfo: RequestInfo) {\n    const data = responseBody;\n    const status = mockItem.status;\n    const statusText = HTTPStatusCodes[status] || '';\n\n    const headers = typeof Headers === 'function'\n      ? new Headers({ ...mockItem.headers, 'x-powered-by': 'http-request-mock' })\n      : Object.entries({ ...mockItem.headers, 'x-powered-by': 'http-request-mock' });\n\n    const body = typeof Blob === 'function'\n      ? new Blob([typeof data === 'string' ? data : JSON.stringify(data)])\n      : data;\n\n    if (typeof Response === 'function') {\n      const response = new Response(body as BodyInit,{ status, statusText, headers });\n      Object.defineProperty(response, 'url', { value: requestInfo.url });\n      return response;\n    }\n    const response = {\n      body,\n      bodyUsed: false,\n      headers,\n      ok: true,\n      redirected: false,\n      status,\n      statusText,\n      url: requestInfo.url,\n      type: 'basic', // cors\n      // response data depends on prepared data\n      json: () => {\n        if (typeof data === 'object') {\n          return Promise.resolve(data);\n        }\n        if (typeof data === 'string') {\n          try {\n            return Promise.resolve(JSON.parse(data));\n          } catch(err) { // eslint-disable-line\n            return Promise.resolve(null);\n          }\n        }\n        return Promise.resolve(null);\n      },\n      arrayBuffer: () => {\n        if (typeof ArrayBuffer === 'function' && (data instanceof ArrayBuffer)) {\n          return Promise.resolve(data);\n        }\n        if (typeof data === 'string' && typeof TextEncoder === 'function') {\n          const encoder = new TextEncoder();\n          return Promise.resolve(encoder.encode(data).buffer);\n        }\n        return Promise.resolve(null);\n      },\n      blob: () => {\n        if (typeof Blob === 'function' && (data instanceof Blob)) {\n          return Promise.resolve(data);\n        }\n        if (typeof data === 'string' && typeof Blob === 'function') {\n          return Promise.resolve(new Blob([data], { type: 'text/plain' }));\n        }\n        return Promise.resolve(null);\n      },\n      bytes: () => {\n        if (typeof Uint8Array === 'function' && (data instanceof Uint8Array)) {\n          return Promise.resolve(data);\n        }\n        if (typeof data === 'string' && typeof TextEncoder === 'function') {\n          const encoder = new TextEncoder();\n          return Promise.resolve(encoder.encode(data));\n        }\n        return Promise.resolve(null);\n      },\n      formData: () => {\n        if (typeof FormData === 'function') {\n          return Promise.resolve((data instanceof FormData) ? data : null);\n        }\n        return Promise.resolve(null);\n      },\n      text: () => {\n        return Promise.resolve(typeof data === 'string' ? data : JSON.stringify(data));\n      },\n      // other methods that may be used\n      clone: () => response,\n      error: () => response,\n      redirect: () => response,\n    };\n    return response;\n  }\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport Bypass from '../common/bypass';\nimport { isObject, sleep, tryToParseJson } from '../common/utils';\nimport MockItem from '../mocker/mock-item';\nimport Mocker from '../mocker/mocker';\nimport { HttpVerb, OriginalResponse, RemoteResponse, RequestInfo, WxRequestOpts, WxRequestTask, WxResponse } from '../types';\nimport Base from './base';\n\nexport default class WxRequestInterceptor extends Base {\n  private static instance: WxRequestInterceptor;\n  private wxRequest;\n\n  constructor(mocker: Mocker, proxyServer = '') {\n    super(mocker, proxyServer);\n\n    if (WxRequestInterceptor.instance) {\n      return WxRequestInterceptor.instance;\n    }\n\n    WxRequestInterceptor.instance = this;\n    // Note: this.global has no wx object\n    this.wxRequest = wx.request.bind(wx);\n    this.intercept();\n    return this;\n  }\n\n  /**\n   * https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html\n   * Intercept wx.request object.\n   */\n  private intercept() {\n    Object.defineProperty(wx, 'request', {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (wxRequestOpts: WxRequestOpts) => {\n        if (!wxRequestOpts || !wxRequestOpts.url) {\n          return;\n        }\n        wxRequestOpts.url = this.getFullRequestUrl(wxRequestOpts.url, wxRequestOpts.method);\n\n        const mockItem: MockItem | null = this.matchMockRequest(wxRequestOpts.url, wxRequestOpts.method);\n        const remoteInfo = mockItem?.getRemoteInfo(wxRequestOpts.url);\n        const requestInfo: RequestInfo = this.getRequestInfo(wxRequestOpts);\n\n        if (mockItem && remoteInfo) {\n          wxRequestOpts.url = remoteInfo.url;\n          wxRequestOpts.method = <HttpVerb>remoteInfo.method || wxRequestOpts.method;\n          if (Object.keys(mockItem.remoteRequestHeaders).length > 0) {\n            wxRequestOpts.header = {\n              ...(wxRequestOpts.header || {}),\n              ...mockItem.remoteRequestHeaders\n            };\n          }\n          return this.sendRemoteResult(wxRequestOpts, mockItem, requestInfo);\n        }\n\n        if (/^get$/i.test(wxRequestOpts.method) && isObject(wxRequestOpts.data)) {\n          requestInfo.query = { ...requestInfo.query, ...wxRequestOpts.data };\n        } else {\n          requestInfo.body = wxRequestOpts.data;\n        }\n\n        requestInfo.doOriginalCall = async (): Promise<OriginalResponse> => {\n          const res = this.getOriginalResponse(wxRequestOpts);\n          requestInfo.doOriginalCall = undefined;\n          return res;\n        };\n\n        if (mockItem) {\n          this.doMockRequest(mockItem, requestInfo, wxRequestOpts).then(isBypassed => {\n            if (isBypassed) {\n              this.wxRequest(wxRequestOpts); // fallback to original wx.request\n            }\n          });\n          return this.getRequstTask();\n        } else {\n          wxRequestOpts.url = wxRequestOpts.url;\n          return this.wxRequest(wxRequestOpts); // fallback to original wx.request\n        }\n      }\n    });\n    return this;\n  }\n\n  private getRequstTask() : WxRequestTask{\n    return <WxRequestTask>{\n      abort() {},\n      onHeadersReceived() {},\n      offHeadersReceived() {}\n    };\n  }\n\n  /**\n   * Set remote result.\n   * @param {WxRequestOpts} wxRequestOpts\n   * @param {MockItem} mockItem\n   * @param {RequestInfo} requestInfo\n   */\n  private sendRemoteResult(wxRequestOpts: WxRequestOpts, mockItem: MockItem, requestInfo: RequestInfo) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const me = this;\n    // fallback to original wx.request\n    this.wxRequest({\n      ...wxRequestOpts,\n      success(wxResponse: WxResponse) {\n        const remoteResponse: RemoteResponse = {\n          status: wxResponse.statusCode,\n          headers: wxResponse.header,\n          response: wxResponse.data,\n          responseText: typeof wxResponse.data === 'string' ? wxResponse.data : JSON.stringify(wxResponse.data),\n          responseJson: typeof wxResponse.data === 'string' ? tryToParseJson(wxResponse.data) : wxResponse.data\n        };\n\n        me.doMockRequest(mockItem, requestInfo, wxRequestOpts, remoteResponse);\n      }\n    });\n    return this.getRequstTask();\n  }\n\n  /**\n   * Get original response\n   * @param {WxRequestOpts} wxRequestOpts\n   */\n  private getOriginalResponse(wxRequestOpts: WxRequestOpts): Promise<OriginalResponse> {\n    return new Promise((resolve) => {\n      this.wxRequest({\n        ...wxRequestOpts,\n        success(wxResponse: WxResponse) {\n          const { data } = wxResponse;\n          resolve({\n            status: wxResponse.statusCode,\n            headers: wxResponse.header,\n            responseText: typeof data === 'string' ? data : JSON.stringify(data),\n            responseJson: typeof data === 'string' ? tryToParseJson(data) : data,\n            responseBuffer: typeof ArrayBuffer === 'function' && (data instanceof ArrayBuffer)\n              ? (data as ArrayBuffer)\n              : null,\n            // https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html\n            // wx.request does not support Blob response data\n            responseBlob: null,\n            error: null,\n          });\n        },\n        fail(err: { errMsg: string }) {\n          resolve({\n            status: 0,\n            headers: {},\n            responseText: null,\n            responseJson: null,\n            responseBuffer: null,\n            responseBlob: null,\n            error: new Error(`request error: ${err.errMsg}`),\n          });\n        }\n      });\n    });\n  }\n\n  /**\n   * Make mock request.\n   * @param {MockItem} mockItem\n   * @param {RequestInfo} requestInfo\n   * @param {WxRequestOpts} wxRequestOpts\n   */\n  private async doMockRequest(\n    mockItem: MockItem,\n    requestInfo: RequestInfo,\n    wxRequestOpts: WxRequestOpts,\n    remoteResponse: RemoteResponse | null = null\n  ) {\n    let isBypassed = false;\n    if (mockItem.delay && mockItem.delay > 0) {\n      await sleep(+mockItem.delay);\n      isBypassed = await this.doMockResponse(mockItem, requestInfo, wxRequestOpts, remoteResponse);\n    } else {\n      isBypassed = await this.doMockResponse(mockItem, requestInfo, wxRequestOpts, remoteResponse);\n    }\n    return isBypassed;\n  }\n\n  /**\n   * Make mock response.\n   * @param {MockItem} mockItem\n   * @param {RequestInfo} requestInfo\n   * @param {WxRequestOpts} wxRequestOpts\n   */\n  private async doMockResponse(\n    mockItem: MockItem,\n    requestInfo: RequestInfo,\n    wxRequestOpts: WxRequestOpts,\n    remoteResponse: RemoteResponse | null = null\n  ) {\n    const now = Date.now();\n\n    let body;\n    try {\n      body = await mockItem.sendBody(requestInfo, remoteResponse);\n      if (body instanceof Bypass) {\n        if (remoteResponse) {\n          throw new Error('A request which is marked by @remote tag cannot be bypassed.');\n        }\n        return true;\n      }\n    } catch(err) {\n      console.warn('[http-request-mock] mock response error, ' + (err as Error).message);\n      body = '';\n    }\n\n    const spent = (Date.now() - now) + (mockItem.delay || 0);\n    const wxResponse = this.getWxResponse(body, mockItem);\n\n    this.mocker.sendResponseLog(spent, body, requestInfo, mockItem);\n    this.sendResult(wxRequestOpts, wxResponse);\n    return false;\n  }\n\n  /**\n   * Get WX mock response data.\n   * @param {unknown} responseBody\n   * @param {MockItem} mockItem\n   */\n  getWxResponse(responseBody: unknown, mockItem: MockItem): WxResponse {\n    // https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html\n    const setCookieHeader = [].concat((mockItem.headers?.['set-cookie'] || []) as never[]);\n    return {\n      data: responseBody,\n      statusCode: mockItem.status || 200,\n      header: {\n        ...mockItem.headers,\n        'x-powered-by': 'http-request-mock'\n      },\n      cookies: setCookieHeader,\n      profile: {},\n    };\n  }\n\n  /**\n   * Call some necessary callbacks if specified.\n   * @param {WxRequestOpts} wxRequestOpts\n   * @param {WxRequestOpts} response\n   */\n  private sendResult(wxRequestOpts: WxRequestOpts, wxResponse: unknown) {\n    if (typeof wxRequestOpts.success === 'function') {\n      wxRequestOpts.success(wxResponse);\n    }\n\n    if (typeof wxRequestOpts.complete === 'function') {\n      wxRequestOpts.complete(wxResponse);\n    }\n  }\n}\n\n","import Bypass from '../common/bypass';\nimport { sleep, tryToParseJson, tryToParsePostBody } from '../common/utils';\nimport { HTTPStatusCodes } from '../config';\nimport MockItem from '../mocker/mock-item';\nimport Mocker from '../mocker/mocker';\nimport { HttpVerb, RemoteResponse, XMLHttpRequestInstance } from '../types';\nimport { OriginalResponse } from './../types';\nimport Base from './base';\n\nexport default class XMLHttpRequestInterceptor extends Base {\n  private static instance: XMLHttpRequestInterceptor;\n  private xhr: XMLHttpRequest;\n\n  constructor(mocker: Mocker, proxyServer = '') {\n    super(mocker, proxyServer);\n\n    if (XMLHttpRequestInterceptor.instance) {\n      return XMLHttpRequestInterceptor.instance;\n    }\n\n    XMLHttpRequestInterceptor.instance = this;\n    this.xhr = this.global.XMLHttpRequest.prototype;\n    this.intercept();\n    return this;\n  }\n\n  /**\n   * https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest\n   * Logic of intercepting XMLHttpRequest object.\n   */\n  private intercept() {\n    // intercept methods\n    this.interceptOpen();\n    this.interceptSend();\n    this.interceptSetRequestHeader();\n    this.interceptGetAllResponseHeaders();\n    this.interceptGetResponseHeader();\n\n    // intercept getters\n    this.interceptReadyState();\n    this.interceptStatus();\n    this.interceptStatusText();\n    this.interceptResponseText();\n    this.interceptResponse();\n    this.interceptResponseURL();\n    this.interceptResponseXML();\n    return this;\n  }\n\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open\n   * Logic of intercepting XMLHttpRequest.open method.\n   */\n  private interceptOpen() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const me = this;\n    const original = this.xhr.open;\n    Object.defineProperty(this.xhr, 'open', {\n      get: function() {\n        return (\n          method: HttpVerb,\n          url: string,\n          async = true,\n          user: string | null = null,\n          password: string | null = null\n        ) => {\n          const requestUrl = me.getFullRequestUrl(url, method);\n          const mockItem: MockItem | null = me.matchMockRequest(requestUrl, method);\n\n          if (!this.bypassMock) {\n            if (mockItem) {\n              // 'this' points XMLHttpRequest instance.\n              this.isMockRequest = true;\n              this.mockItem = mockItem;\n              this.mockResponse = new NotResolved();\n              this.requestInfo = me.getRequestInfo({ url: requestUrl, method, });\n              this.requestArgs = [method, requestUrl, async, user, password];\n\n              this.requestInfo.doOriginalCall = async (): Promise<OriginalResponse> => {\n                const res = await me.getOriginalResponse(this);\n                this.requestInfo.doOriginalCall = undefined;\n                return res;\n              };\n              return;\n            }\n          }\n          return original.call(this, method, requestUrl, async, user, password);\n        };\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.send method.\n   */\n  private interceptSend() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const me = this;\n    const original = this.xhr.send;\n    Object.defineProperty(this.xhr, 'send', {\n      get: function() {\n        return (body: unknown) => {\n          if (this.isMockRequest) {\n            if (body !== null && body !== undefined) {\n              this.requestInfo.rawBody = body;\n              this.requestInfo.body = tryToParsePostBody(body);\n            }\n\n            // remoteInfo has a higher priority than BypassMock\n            const remoteInfo = this.mockItem?.getRemoteInfo(this.requestInfo.url);\n            if (remoteInfo) {\n              return me.sendRemoteResult(this, this.mockItem, remoteInfo);\n            }\n\n            return me.doMockRequest(this).then(isBypassed => {\n              if (isBypassed) {\n                this.isMockRequest = false;\n                this.bypassMock = true;\n                this.open(...this.requestArgs);\n                return original.call(this, body as Document);\n              }\n            });\n          }\n          return original.call(this, body as Document);\n        };\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Set remote result.\n   * @param {XMLHttpRequestInstance} xhr\n   * @param {Record<string, string>} remoteInfo\n   */\n  private sendRemoteResult(xhr: XMLHttpRequestInstance, mockItem: MockItem, remoteInfo: Record<string, string>) {\n    const [ method, async, user, password ] = xhr.requestArgs;\n\n    const newXhr = new XMLHttpRequest() as unknown as XMLHttpRequestInstance;\n    newXhr.responseType = xhr.responseType;\n    newXhr.timeout = xhr.timeout;\n\n    this.setTimeoutTimer(newXhr);\n\n    Object.assign(newXhr, { isMockRequest: false, bypassMock: true });\n    newXhr.onreadystatechange = () => {\n      if (newXhr.isTimeout) {\n        return;\n      }\n      if (newXhr.readyState === 4) {\n        const remoteResponse: RemoteResponse = {\n          status: newXhr.status,\n          headers: newXhr.getAllResponseHeaders().split('\\r\\n').reduce((res: Record<string, string>, item: string) => {\n            const [key, val] = item.split(':');\n            if (key && val) {\n              res[key.toLowerCase()] = val.trim();\n            }\n            return res;\n          }, {} as Record<string, string>),\n          response: newXhr.response,\n          responseText: newXhr.responseText,\n          responseJson: tryToParseJson(newXhr.responseText)\n        };\n        this.doMockRequest(xhr, remoteResponse);\n      }\n    };\n    newXhr.open(\n      remoteInfo.method || method as string,\n      remoteInfo.url,\n      async as boolean,\n      user as string,\n      password as string\n    );\n    Object.entries(mockItem.remoteRequestHeaders).forEach(([key, val]) => {\n      newXhr.setRequestHeader(key, val as string);\n    });\n    newXhr.send(xhr.requestInfo.rawBody as Document); // raw body\n    return xhr;\n  }\n\n  /**\n   * Get original response\n   * @param {XMLHttpRequestInstance} xhr\n   */\n  private getOriginalResponse(xhr: XMLHttpRequestInstance): Promise<OriginalResponse> {\n    const [ method, requestUrl, async, user, password ] = xhr.requestArgs;\n    const { requestInfo } = xhr;\n\n    return new Promise(resolve => {\n      const newXhr = new XMLHttpRequest();\n      newXhr.responseType = xhr.responseType;\n      newXhr.timeout = xhr.timeout;\n\n      Object.assign(newXhr, { isMockRequest: false, bypassMock: true });\n      let status: OriginalResponse['status'] = null;\n      let headers: OriginalResponse['headers'] = {};\n      let responseText: OriginalResponse['responseText'] = null;\n      let responseJson: OriginalResponse['responseJson'] = null;\n      let responseBuffer: OriginalResponse['responseBuffer'] = null;\n      let responseBlob: OriginalResponse['responseBlob'] = null;\n\n      newXhr.onreadystatechange = function handleLoad() {\n        if (newXhr.readyState === 4) {\n          const responseType = newXhr.responseType;\n          status = newXhr.status;\n          headers = newXhr.getAllResponseHeaders()\n            .split('\\r\\n')\n            .reduce((res: Record<string, string>, item: string) => {\n              const [key, val] = item.split(':');\n              if (key && val) {\n                res[key.toLowerCase()] = val.trim();\n              }\n              return res;\n            }, {} as Record<string, string>);\n\n          responseText = !responseType || responseType === 'text' || responseType === 'json'\n            ? newXhr.responseText\n            : (typeof newXhr.response === 'string' ? typeof newXhr.response : null);\n\n          responseJson = tryToParseJson(responseText as string);\n          responseBuffer = (typeof ArrayBuffer === 'function') && (newXhr.response instanceof ArrayBuffer)\n            ? newXhr.response\n            : null;\n          responseBlob = (typeof Blob === 'function') && (newXhr.response instanceof Blob)\n            ? newXhr.response\n            : null;\n\n          resolve({ status, headers, responseText, responseJson, responseBuffer, responseBlob, error: null});\n        }\n      };\n      newXhr.open(method as string, requestUrl as string, async as boolean, user as string, password as string);\n      newXhr.ontimeout = function handleTimeout() {\n        const error = new Error('timeout exceeded');\n        resolve({ status, headers, responseText, responseJson, responseBuffer, responseBlob, error });\n      };\n\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      newXhr.onerror = function handleError() {\n        const error = new Error('network error');\n        resolve({ status, headers, responseText, responseJson, responseBuffer, responseBlob, error });\n      };\n\n      // Handle browser request cancellation (as opposed to a manual cancellation)\n      newXhr.onabort = function handleAbort() {\n        const error = new Error('request aborted');\n        resolve({ status, headers, responseText, responseJson, responseBuffer, responseBlob, error });\n      };\n\n\n      Object.entries(requestInfo.headers || {}).forEach(([key, val]) => {\n        newXhr.setRequestHeader(key, val as string);\n      });\n      newXhr.send(requestInfo.rawBody as Document); // raw body\n    });\n  }\n\n  /**\n   * Make mock request.\n   * @param {XMLHttpRequestInstance} xhr\n   * @param {RemoteResponse | null} remoteResponse\n   */\n  private async doMockRequest(xhr: XMLHttpRequestInstance, remoteResponse: RemoteResponse | null = null) {\n    let isBypassed = false;\n    const { mockItem } = xhr;\n\n    this.setTimeoutTimer(xhr);\n\n    if (mockItem.delay && mockItem.delay > 0) {\n      await sleep(+mockItem.delay);\n      isBypassed = await this.doMockResponse(xhr, remoteResponse);\n    } else {\n      isBypassed = await this.doMockResponse(xhr, remoteResponse);\n    }\n    return isBypassed;\n  }\n\n  private setTimeoutTimer(xhr: XMLHttpRequestInstance) {\n    const isEventReady = typeof Event !== 'undefined' && typeof xhr.dispatchEvent === 'function';\n\n    // If already set, ignore it\n    if (xhr.timeoutTimer) {\n      return true;\n    }\n\n    if (xhr.timeout) {\n      xhr.timeoutTimer = setTimeout(() => {\n        xhr.isTimeout = true;\n        if (typeof xhr.ontimeout === 'function') {\n          xhr.ontimeout(this.progressEvent('timeout'));\n        } else if (isEventReady) {\n          xhr.dispatchEvent(new Event('timeout'));\n        }\n      }, xhr.timeout);\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Make mock response.\n   * @param {XMLHttpRequestInstance} xhr\n   * @param {RemoteResponse | null} remoteResponse\n   */\n  private async doMockResponse(xhr: XMLHttpRequestInstance, remoteResponse: RemoteResponse | null = null) {\n    const { mockItem, requestInfo } = xhr;\n\n    if (xhr.isTimeout) {\n      return false;\n    }\n\n    clearTimeout(xhr.timeoutTimer);\n    const now = Date.now();\n    let body;\n    try {\n      body = remoteResponse\n        ? await mockItem.sendBody(requestInfo, remoteResponse)\n        : await mockItem.sendBody(requestInfo);\n      if (body instanceof Bypass) {\n        if (remoteResponse) {\n          throw new Error('A request which is marked by @remote tag cannot be bypassed.');\n        }\n        return true;\n      }\n    } catch(err) {\n      console.warn('[http-request-mock] mock response error, ' + (err as Error).message);\n      body = '';\n    }\n\n    xhr.mockResponse = body;\n    const spent = (Date.now() - now) + (mockItem.delay || 0);\n    this.mocker.sendResponseLog(spent, body, xhr.requestInfo, mockItem);\n    this.sendResult(xhr);\n    return false;\n  }\n\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#event_handlers\n   * Call some necessary callbacks if specified. Trigger some necessary events.\n   * 'onreadystatechange' as a property of the XMLHttpRequest instance is supported in all browsers.\n   * Since then, a number of additional on* event handler properties have been implemented in various\n   * browsers (onload, onerror, onprogress, etc.). See Using XMLHttpRequest. More recent browsers,\n   * including Firefox, also support listening to the XMLHttpRequest events via standard addEventListener() APIs\n   * in addition to setting on* properties to a handler function.\n   * @param {XMLHttpRequest} xhr\n   */\n  private sendResult(xhr: XMLHttpRequest) {\n    const isEventReady = typeof Event !== 'undefined' && typeof xhr.dispatchEvent === 'function';\n\n    if (typeof xhr.onreadystatechange === 'function') {\n      xhr.onreadystatechange(this.event('readystatechange'));\n    } else if (isEventReady) {\n      xhr.dispatchEvent(new Event('readystatechange'));\n    }\n\n    if (typeof xhr.onload === 'function') {\n      xhr.onload(this.progressEvent('load'));\n    } else if (isEventReady) {\n      xhr.dispatchEvent(new Event('load'));\n    }\n\n    if (typeof xhr.onloadend === 'function') {\n      xhr.onloadend(this.progressEvent('loadend'));\n    } else if (isEventReady) {\n      xhr.dispatchEvent(new Event('loadend'));\n    }\n  }\n\n  private event(type: string): Event {\n    return {\n      type,\n      target: null,\n      currentTarget: null,\n      eventPhase: 0,\n      bubbles: false,\n      cancelable: false,\n      defaultPrevented: false,\n      composed: false,\n      timeStamp: typeof performance?.now === 'function' ? performance.now() : 294973.8000000119,\n      srcElement: null,\n      returnValue: true,\n      cancelBubble: false,\n      // NONE, CAPTURING_PHASE, AT_TARGET, BUBBLING_PHASE\n      // path: [],\n      NONE: 0,\n      CAPTURING_PHASE: 1,\n      AT_TARGET: 2,\n      BUBBLING_PHASE: 3,\n      composedPath: () => [],\n      initEvent: () => void(0),\n      preventDefault: () => void(0),\n      stopImmediatePropagation: () => void(0),\n      stopPropagation: () => void(0),\n      isTrusted: false,\n    };\n  }\n\n  private progressEvent(type: string) {\n    const baseEvent = this.event(type);\n    return {\n      ...baseEvent,\n      lengthComputable: false,\n      loaded: type === 'loadend' ? 1 : 0,\n      // a fake total size, not reliable\n      total: type === 'loadend' ? 1 : 0,\n    };\n  }\n\n  /**\n   * https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\n   * Logic of intercepting XMLHttpRequest.getAllResponseHeaders method.\n   */\n  private interceptGetAllResponseHeaders() {\n    const original = this.xhr.getAllResponseHeaders;\n    Object.defineProperty(this.xhr, 'getAllResponseHeaders', {\n      get: function() {\n        return () => {\n          if (this.isMockRequest) {\n            return Object.entries({...this.mockItem.headers, 'x-powered-by': 'http-request-mock'})\n              .map(([key, val]) => key.toLowerCase()+': '+val)\n              .join('\\r\\n');\n          }\n          return original.call(this);\n        };\n      }\n    });\n    return this;\n  }\n\n  /**\n   * https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/getResponseHeader\n   * Logic of intercepting XMLHttpRequest.getResponseHeader method.\n   */\n  private interceptGetResponseHeader() {\n    const original = this.xhr.getResponseHeader;\n    Object.defineProperty(this.xhr, 'getResponseHeader', {\n      get: function() {\n        return (field: string) => {\n          if (this.isMockRequest) {\n            if (/^x-powered-by$/i.test(field)) {\n              return 'http-request-mock';\n            }\n            const item = Object.entries(this.mockItem.headers).find(([key]) => key.toLowerCase() === field);\n            return item ? item[1] : null;\n          }\n          return original.call(this, field);\n        };\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.interceptSetRequestHeader method.\n   */\n  private interceptSetRequestHeader() {\n    const original = this.xhr.setRequestHeader;\n    Object.defineProperty(this.xhr, 'setRequestHeader', {\n      get: function() {\n        return (header: string, value: string) => {\n          if (this.isMockRequest) {\n            this.requestInfo.headers = this.requestInfo.headers || {};\n            this.requestInfo.header = this.requestInfo.header || {};\n            this.requestInfo.headers[header] = value;\n            this.requestInfo.header[header] = value;\n            return;\n          }\n          return original.call(this, header, value);\n        };\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Get getter function by key.\n   * @param {string} key\n   */\n  private getGetter(key: string) {\n    const descriptor = Object.getOwnPropertyDescriptor(this.xhr, key);\n    if (descriptor) {\n      return descriptor.get;\n    }\n    // when XMLHttpRequest is not a standard implement.\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    return this.xhr[key];\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.readyState getter.\n   * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState\n   */\n  private interceptReadyState() {\n    const original = this.getGetter('readyState');\n    Object.defineProperty(this.xhr, 'readyState', {\n      get: function() {\n        if (this.isMockRequest) {\n          if (this.mockResponse instanceof NotResolved) return 1; // OPENED\n\n          return 4;\n        }\n        return typeof original === 'function' ? original.call(this) : original;\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.status getter.\n   * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status\n   */\n  private interceptStatus() {\n    const original = this.getGetter('status');\n    Object.defineProperty(this.xhr, 'status', {\n      get: function() {\n        if (this.isMockRequest) {\n          if (this.mockResponse instanceof NotResolved) return 0;\n\n          return this.mockItem.status;\n        }\n        return typeof original === 'function' ? original.call(this) : original;\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.statusText getter.\n   * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/statusText\n   */\n  private interceptStatusText() {\n    const original = this.getGetter('statusText');\n    Object.defineProperty(this.xhr, 'statusText', {\n      get: function() {\n        if (this.isMockRequest) {\n          if (this.mockResponse instanceof NotResolved) return '';\n\n          return HTTPStatusCodes[this.mockItem.status] || '';\n        }\n        return typeof original === 'function' ? original.call(this) : original;\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.responseText getter.\n   */\n  private interceptResponseText() {\n    const original = this.getGetter('responseText');\n    Object.defineProperty(this.xhr, 'responseText', {\n      get: function() {\n        if (this.isMockRequest) {\n          if (this.mockResponse instanceof NotResolved) return '';\n\n          const data = this.mockResponse;\n          return typeof data === 'string' ? data : JSON.stringify(data);\n        }\n        return typeof original === 'function' ? original.call(this) : original;\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.response getter.\n   *\n   * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType\n   * When setting responseType to a particular value, the author should make\n   * sure that the server is actually sending a response compatible with that\n   * format. If the server returns data that is not compatible with the\n   * responseType that was set, the value of response will be null.\n   */\n  private interceptResponse() {\n    const original = this.getGetter('response');\n    Object.defineProperty(this.xhr, 'response', {\n      get: function() {\n        if (this.isMockRequest) {\n          if (this.mockResponse instanceof NotResolved) return null;\n\n          const type = this.responseType;\n          // An empty responseType string is the same as \"text\", the default type.\n          if (type === 'text' || type === '') {\n            return this.responseText;\n          }\n          // The response is a JavaScript ArrayBuffer containing binary data.\n          if (type === 'arraybuffer' && typeof ArrayBuffer === 'function') {\n            return (this.mockResponse instanceof ArrayBuffer) ? this.mockResponse : null;\n          }\n          // The response is a Blob object containing the binary data.\n          if (type === 'blob' && typeof Blob === 'function') {\n            return (this.mockResponse instanceof Blob) ? this.mockResponse : null;\n          }\n          // The response is an HTML Document or XML XMLDocument, as appropriate based on the MIME type of\n          // the received data. See HTML in XMLHttpRequest to learn more about using XHR to fetch HTML content.\n          if (type === 'document' && (typeof Document === 'function' || typeof XMLDocument === 'function')) {\n            return ((this.mockResponse instanceof Document) || (this.mockResponse instanceof XMLDocument))\n              ? this.mockResponse\n              : null;\n          }\n          // The response is a JavaScript object created by parsing the contents of received data as JSON.\n          if (type === 'json') {\n            if (typeof this.mockResponse === 'object') {\n              return this.mockResponse;\n            }\n            if (typeof this.mockResponse === 'string') {\n              try {\n                return JSON.parse(this.mockResponse);\n              } catch(err) { // eslint-disable-line\n                // console.warn('The mock response is not compatible with the responseType json: ' + err.message);\n                return null;\n              }\n            }\n            return null;\n          }\n          return this.mockResponse;\n        }\n        return typeof original === 'function' ? original.call(this) : original;\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.responseURL getter.\n   */\n  private interceptResponseURL() {\n    const original = this.getGetter('responseURL');\n    Object.defineProperty(this.xhr, 'responseURL', {\n      get: function() {\n        if (this.isMockRequest) {\n          return this.requestInfo.url;\n        }\n        return typeof original === 'function' ? original.call(this) : original;\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Logic of intercepting XMLHttpRequest.responseXML getter.\n   */\n  private interceptResponseXML() {\n    const original = this.getGetter('responseXML');\n    Object.defineProperty(this.xhr, 'responseXML', {\n      get: function() {\n        if (this.isMockRequest) {\n          return this.responseType === 'document' ? this.response : null;\n        }\n        return typeof original === 'function' ? original.call(this) : original;\n      }\n    });\n    return this;\n  }\n}\n\nclass NotResolved {}\n","import Bypass from '../common/bypass';\nimport { get, getQuery, isImported, isPromise, queryObject2String } from '../common/utils';\nimport { DynamicImported, Headers, HttpVerb, MockItemInfo, RequestInfo } from '../types';\nimport { RemoteResponse } from './../types';\n\nexport default class MockItem {\n  public url: RegExp | string;\n  public regexp: Array<string>; // ['abc.*xyz$', 'i'] => /abc.*xyz$/i\n  public method: HttpVerb;\n  public remoteRequestHeaders: Headers; // request headers, only available for @remote config\n  public header: Headers; // response header, the same as headers, just for backward compatibility\n  public headers: Headers; // response header\n  public delay: number;\n  public body: unknown; // response body\n  public response: unknown; // response body, for backward compatibility\n  public remote: string; // url of remote mock data\n  public status: number; // http status code\n\n  public disable: 'YES' | 'NO';\n  public times: number;\n  public key: string;\n  public deProxy = false; // Use this option to make the mock use case run in the browser instead of nodejs.\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  public doOriginalRequest: Function;\n\n  /**\n   * Format specified mock item.\n   * @param {MockItemInfo} mockItem\n   * @returns false | MockItemInfo\n   */\n  constructor(mockItem: MockItemInfo) {\n    if (!mockItem.url || (typeof mockItem.url !== 'string' && !(mockItem.url instanceof RegExp))) {\n      return;\n    }\n    this.url = mockItem.url;\n    this.method = /^(get|post|put|patch|delete|head|any)$/i.test(mockItem.method || '')\n      ? <HttpVerb> mockItem.method?.toUpperCase()\n      : <HttpVerb> 'ANY';\n\n    const reqHeaders = mockItem.remoteRequestHeaders;\n    const headers = get(mockItem, 'headers') || get(mockItem, 'header');\n    this.header = (headers && typeof headers === 'object' ? headers : {}) as Headers;\n    this.headers = (headers && typeof headers === 'object' ? headers : {}) as Headers;\n    this.remoteRequestHeaders = reqHeaders && typeof reqHeaders === 'object' ? reqHeaders : {};\n\n    this.delay = mockItem.delay !== undefined && /^\\d{0,15}$/.test(mockItem.delay+'') ? (+mockItem.delay) : 0;\n    this.times = mockItem.times !== undefined && /^-?\\d{0,15}$/.test(mockItem.times+'') ? +mockItem.times : Infinity;\n    this.status = mockItem.status && /^[1-5][0-9][0-9]$/.test(mockItem.status+'') ? +mockItem.status : 200;\n    this.disable = (mockItem.disable && /^(yes|true|1)$/.test(mockItem.disable) ? 'YES' : 'NO');\n    this.setBody(mockItem);\n\n    const isUrlLiked = /^((get|post|put|patch|delete|head)\\s+)?https?:\\/\\//i.test(mockItem.remote as string);\n    const isDollarUrl = mockItem.remote === '$url';\n    if (mockItem.remote && (isUrlLiked || isDollarUrl)) {\n      this.remote = mockItem.remote;\n    } else if (mockItem.remote){\n      throw new Error('Invalid @remote config. Valid @remote examples: http://x.com/, GET http://x.com, $url');\n    }\n    this.deProxy = !!mockItem.deProxy;\n    this.key = `${this.url}-${this.method}`;\n  }\n\n  private setBody(mockItem: MockItemInfo) {\n    let body: unknown;\n    if ('body' in mockItem) {\n      body = mockItem.body;\n    } else if ('response' in mockItem) {\n      body = mockItem.response;\n    } else {\n      body = '';\n    }\n    this.body = body;\n  }\n\n  public bypass() {\n    return new Bypass;\n  }\n\n  public async sendBody(requestInfo: RequestInfo, remoteResponse: RemoteResponse | null = null) {\n    if (isPromise(this.body)) {\n      const data = await (this.body as Promise<unknown>);\n      this.body = isImported(data) ? (data as DynamicImported).default : data;\n    }\n\n    let body;\n    if (typeof this.body === 'function') {\n      body = remoteResponse\n        ? await this.body.bind(this)(remoteResponse, requestInfo, this)\n        : await this.body.bind(this)(requestInfo, this);\n    } else {\n      body = this.body;\n    }\n\n    return body;\n  }\n\n  public getRemoteInfo(requestUrl: string): false | Record<string, string> {\n    if (!this.remote) return false;\n\n    const arr = this.remote.split(/(\\s)/);\n    let method = '';\n    let url = this.remote;\n    if (/^(get|post|put|patch|delete|head)$/i.test(arr[0])) {\n      method = arr[0];\n      url = arr.slice(2).join('');\n    }\n    const query = getQuery(requestUrl);\n    for(const key in query) {\n      const queryString = Array.isArray(query[key]) ? (query[key] as string[]).join(',') : query[key];\n      url = url.replace(new RegExp('\\\\$query\\.'+key, 'g'), queryString as string);\n    }\n    url = url.replace(/\\$query/g, queryObject2String(query));\n    url = url === '$url' ? requestUrl : url;\n    return { method, url };\n  }\n}\n","import { currentTime, isNodejs, isObject } from '../common/utils';\nimport { HTTPStatusCodes } from '../config';\nimport { HttpVerb, Logs, MockConfigData, MockItemExt, MockItemInfo, RequestInfo } from '../types';\nimport MockItem from './mock-item';\n\nexport default class Mocker {\n  protected static instance: Mocker;\n  protected mockConfigData: MockConfigData;\n  protected disabled = false;\n  protected log = false;\n  protected proxyServer = '';\n  protected proxyMode = 'none';\n\n  constructor(proxyServer = '') {\n    if (Mocker.instance) {\n      return Mocker.instance;\n    }\n\n    if (/^(matched@localhost:\\d+)|(middleware@\\/)$/.test(proxyServer)) {\n      [this.proxyMode, this.proxyServer] = proxyServer.split('@');\n    }\n\n    Mocker.instance = this;\n    this.log = !isNodejs();\n    this.mockConfigData = {};\n    this.groupLog([['[http-request-mock] is %cloaded.', 'color:inherit;font-weight:bold;']]);\n  }\n\n  static getInstance() {\n    return new Mocker();\n  }\n\n  /**\n   * Set global mock data configuration.\n   * @param {object} mockConfigData\n   */\n  public setMockData(mockConfigData: MockConfigData) {\n    for(const key in mockConfigData) {\n      this.mock(mockConfigData[key]);\n    }\n    return this;\n  }\n\n  /**\n   * Add an mock item to global mock data configuration.\n   * @param {string} key\n   * @param {MockItem} val\n   */\n  protected addMockItem(key: string, val: MockItem) {\n    this.mockConfigData[key] = val;\n    return this;\n  }\n\n  /**\n   * Reset global mock data configuration.\n   */\n  public reset() {\n    this.mockConfigData = {};\n    this.sendMsgToProxyServer('reset');\n    return this;\n  }\n\n  /**\n   * Enable mock function temporarily.\n   * Not available in proxy mode.\n   */\n  public enable() {\n    this.disabled = false;\n    this.sendMsgToProxyServer('enable');\n    this.groupLog([['[http-request-mock] is %cenabled.', 'color:green;font-weight:bold;']]);\n    return this;\n  }\n\n  /**\n   * Disable mock function temporarily.\n   * Not available in proxy mode.\n   */\n  public disable() {\n    this.disabled = true;\n    this.sendMsgToProxyServer('disable');\n    this.groupLog([['[http-request-mock] is %cdisabled.', 'color:red;font-weight:bold;']]);\n    return this;\n  }\n\n  /**\n   * Send a message to proxy server if in a proxy mode.\n   * @param {string} msg\n   */\n  public sendMsgToProxyServer(msg = '') {\n    if (!this.proxyServer) {\n      return;\n    }\n    if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n      return;\n    }\n    if (typeof window !== 'undefined' &&\n      Object.prototype.toString.call(window) === '[object Window]' &&\n      typeof window.fetch === 'function'\n    ) {\n      window.fetch(`http://${this.proxyServer}/__hrm_msg__/`+encodeURIComponent(msg));\n    }\n  }\n\n  /**\n   * Disable logs function temporarily.\n   * Not available in proxy mode.\n   */\n  public disableLog() {\n    this.log = false;\n    this.sendMsgToProxyServer('disableLog');\n    return this;\n  }\n\n  /**\n   * Disable logs function temporarily.\n   * Not available in proxy mode.\n   */\n  public enableLog() {\n    this.log = true;\n    this.sendMsgToProxyServer('enableLog');\n    return this;\n  }\n\n  /**\n   * Note: this method is only for a nodejs environment(test environment).\n   * Use a mock file & add it to global mock data configuration.\n   * @param {string} file\n   */\n  public use(file: string) {\n    throw new Error(`Can not use mock case: ${file}, only for a nodejs environment`);\n  }\n\n  /**\n   * Check specified mock item & add it to global mock data configuration.\n   * @param {MockItem} mockItem\n   * @returns false | MockItem\n   */\n  public mock(mockItemInfo: MockItemInfo) {\n    if (!isObject(mockItemInfo)) {\n      throw new Error('Invalid mock item, a valid mock item must be an object.');\n    }\n    const mockItem = new MockItem(mockItemInfo);\n    if (!mockItem.key) return false;\n\n    this.addMockItem(mockItem.key, mockItem);\n    return mockItem;\n  }\n\n  /**\n   * Make a mock item that matches an HTTP GET request.\n   * @param {RegExp | String} url\n   * @param {unknown} body\n   * @param {MockItemExt} opts {\n   *    @param {number} delay\n   *    @param {number} status\n   *    @param {object} header\n   *    @param {object} headers\n   *    @param {number} times\n   * }\n   */\n  public get(url: RegExp | string, body: unknown, opts: MockItemExt = {\n    delay: 0,\n    status: 200,\n    times: Infinity,\n    headers: {}\n  }) {\n    const { delay, status, times, headers } = opts;\n    this.mock({ url, method: 'GET', body, delay, status, headers, times });\n    return this;\n  }\n\n  /**\n   * Make a mock item that matches an HTTP POST request.\n   * @param {RegExp | String} url\n   * @param {any} body\n   * @param {MockItemExt} opts {\n   *    @param {number} delay\n   *    @param {number} status\n   *    @param {object} header\n   *    @param {object} headers\n   *    @param {number} times\n   * }\n   */\n  public post(url: RegExp | string, body: unknown, opts: MockItemExt = {\n    delay: 0,\n    status: 200,\n    times: Infinity,\n    headers: {}\n  }) {\n    const { delay, status, times, headers } = opts;\n\n    this.mock({ url, method: 'POST', body, delay, status, headers, times });\n    return this;\n  }\n\n  /**\n   * Make a mock item that matches an HTTP PUT request.\n   * @param {RegExp | String} url\n   * @param {any} body\n   * @param {MockItemExt} opts {\n   *    @param {number} delay\n   *    @param {number} status\n   *    @param {object} header\n   *    @param {object} headers\n   *    @param {number} times\n   * }\n   */\n  public put(url: RegExp | string, body: unknown, opts: MockItemExt = {\n    delay: 0,\n    status: 200,\n    times: Infinity,\n    headers: {}\n  }) {\n    const { delay, status, times, headers } = opts;\n    this.mock({ url, method: 'PUT', body, delay, status, headers, times });\n    return this;\n  }\n\n  /**\n   * Make a mock item that matches an HTTP PATCH request.\n   * @param {RegExp | String} url\n   * @param {any} body\n   * @param {MockItemExt} opts {\n   *    @param {number} delay\n   *    @param {number} status\n   *    @param {object} header\n   *    @param {object} headers\n   *    @param {number} times\n   * }\n   */\n  public patch(url: RegExp | string, body: unknown, opts: MockItemExt = {\n    delay: 0,\n    status: 200,\n    times: Infinity,\n    headers: {}\n  }) {\n    const { delay, status, times, headers } = opts;\n    this.mock({ url, method: 'PATCH', body, delay, status, headers, times });\n    return this;\n  }\n\n  /**\n   * Make a mock item that matches an HTTP DELETE request.\n   * @param {RegExp | String} url\n   * @param {any} body\n   * @param {MockItemExt} opts {\n   *    @param {number} delay\n   *    @param {number} status\n   *    @param {object} header\n   *    @param {object} headers\n   *    @param {number} times\n   * }\n   */\n  public delete(url: RegExp | string, body: unknown, opts: MockItemExt = {\n    delay: 0,\n    status: 200,\n    times: Infinity,\n    headers: {}\n  }) {\n    const { delay, status, times, headers } = opts;\n    this.mock({ url, method: 'DELETE', body, delay, status, headers, times });\n    return this;\n  }\n\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD\n   * Warning: A response to a HEAD method should not have a body.\n   * If it has one anyway, that body must be ignored, any representation\n   * headers that might describe the erroneous body are instead assumed\n   * to describe the response which a similar GET request would have received.\n   *\n   * Make a mock item that matches an HTTP HEAD request.\n   * @param {RegExp | String} url\n   * @param {MockItemExt} opts {\n   *    @param {number} delay\n   *    @param {number} status\n   *    @param {object} header\n   *    @param {object} headers\n   *    @param {number} times\n   * }\n   */\n  public head(url: RegExp | string, opts: MockItemExt = {\n    delay: 0,\n    status: 200,\n    times: Infinity,\n    headers: {}\n  }) {\n    const { delay, status, times, headers } = opts;\n    this.mock({ url, method: 'HEAD', body: '', delay, status, headers, times });\n    return this;\n  }\n\n  /**\n   * Make a mock item that matches an HTTP GET, POST, PUT, PATCH, DELETE or HEAD request.\n   * @param {RegExp | String} url\n   * @param {unknown} body\n   * @param {MockItemExt} opts {\n   *    @param {number} delay\n   *    @param {number} status\n   *    @param {object} header\n   *    @param {object} headers\n   *    @param {number} times\n   * }\n   */\n  public any(url: RegExp | string, body: unknown, opts: MockItemExt = {\n    delay: 0,\n    status: 200,\n    times: Infinity,\n    headers: {}\n  }) {\n    const { delay, status, times, headers } = opts;\n    this.mock({ url, method: 'ANY', body, delay, status, headers, times });\n    return this;\n  }\n\n  /**\n   * Check whether the specified request url matches a defined mock item.\n   * If a match is found, return the matched mock item, otherwise a null is returned.\n   * @param {string} reqUrl\n   * @param {string} reqMethod\n   * @return null | MockItem\n   */\n  public matchMockItem(reqUrl: string, reqMethod: HttpVerb | undefined): MockItem | null {\n    if (this.disabled) {\n      return null;\n    }\n    const requestMethod = (reqMethod || 'GET').toUpperCase();\n\n    const items = Object.values(this.mockConfigData).filter(({disable, times, method}: MockItem) => {\n      const verb = String(method).toUpperCase();\n      return disable !== 'YES' && (times === undefined || times > 0) && (verb === 'ANY' || verb === requestMethod);\n    });\n\n    for(let i = 0; i < 2; i++) {\n      for(const info of items) {\n        try {\n          if ((info.url instanceof RegExp) && info.url.test(reqUrl)) {\n            return info;\n          }\n          const infoUrl = reqUrl.indexOf('//') === 0\n            // for the request urls which without http protocol\n            ? String(info.url).replace(/^https?:/ig, '')\n            : String(info.url);\n\n          // [whole matching] takes precedence over partial matching\n          if (i === 0 && reqUrl === infoUrl) {\n            return info;\n          }\n\n          // whole matching takes precedence over [partial matching]\n          if (i === 1 && reqUrl.indexOf(infoUrl) !== -1) {\n            return info;\n          }\n        } catch(e) {\n          // ignore match error, normally, user doesn't care it.\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Set group logs\n   * @param {Logs[]} logs\n   * @returns\n   */\n  public groupLog(logs: Logs[]) {\n    if (!this.log) return;\n    if (typeof console.groupCollapsed !== 'function') return;\n    if (typeof console.groupEnd !== 'function') return;\n\n    if (Array.isArray(logs[0])) {\n      console.groupCollapsed(...logs[0]);\n    } else {\n      console.groupCollapsed(logs[0]);\n    }\n    for(let i = 1; i < logs.length; i++) {\n      if (Array.isArray(logs[i])) {\n        console.log(...logs[i]);\n      } else {\n        console.log(logs[i]);\n      }\n    }\n    console.groupEnd();\n  }\n\n  public sendResponseLog(spent: number, body: unknown, requestInfo: RequestInfo, mockItem: MockItem) {\n    const logs: Logs[] = [\n      [\n        '[http-request-mock] %s %s %s (%c%s%c)',\n        `${currentTime()}`,\n        requestInfo.method,\n        requestInfo.url,\n\n        ('color:' + (mockItem.status < 300 ? 'green' : 'red')),\n        mockItem.status,\n        'color:inherit',\n      ],\n      ['Request: ', requestInfo],\n      ['Response: ', {\n        body,\n        spent,\n        headers: {...mockItem.headers, 'x-powered-by': 'http-request-mock'},\n        status: mockItem.status,\n        statusText: HTTPStatusCodes[mockItem.status] || ''\n      }],\n      // ['MockItem: ', mockItem]\n    ];\n    if (isNodejs()) { // less information for nodejs\n      const { url, method, delay, times, status, disable } = mockItem;\n      logs[3] = ['MockItem:', { url, method, delay, times, status, disable }];\n    } else {\n      logs[3] = ['MockItem: ', mockItem];\n    }\n    this.groupLog(logs);\n  }\n}\n","import InterceptorFetch from './interceptor/fetch';\nimport InterceptorWxRequest from './interceptor/wx-request';\nimport InterceptorXhr from './interceptor/xml-http-request';\nimport Mocker from './mocker/mocker';\n\nexport type { HttpVerb, MockItemExt, MockItemInfo, RequestInfo } from './types';\nexport { Mocker };\n\nexport default class BrowserPureIndex {\n  protected static isEnabled = true;\n  /**\n   * Auto detect request environment and setup request mock for wx.request, fetch and XHR.\n   * @param {string} proxyServer A proxy server which is used by proxy mode.\n   */\n  static setup(proxyServer = ''): Mocker {\n    const mocker = new Mocker(proxyServer);\n\n    if (this.isEnabled && typeof wx !== 'undefined' && typeof wx.request === 'function') {\n      InterceptorWxRequest.setup(mocker, proxyServer);\n    }\n\n    if (this.isEnabled && typeof window !== 'undefined' && typeof window.XMLHttpRequest === 'function') {\n      InterceptorXhr.setup(mocker, proxyServer);\n    }\n\n    if (this.isEnabled && typeof window !== 'undefined' && typeof window.fetch === 'function') {\n      InterceptorFetch.setup(mocker, proxyServer);\n    }\n\n    return mocker;\n  }\n\n  /**\n   * Setup request mock for wx.request.\n   * @param {string} proxyServer A proxy server which is used by proxy mode.\n   */\n  static setupForWx(proxyServer = ''): Mocker {\n    const mocker = new Mocker(proxyServer);\n    this.isEnabled && InterceptorWxRequest.setup(mocker, proxyServer);\n    return mocker;\n  }\n\n  /**\n   * Setup request mock for XMLHttpRequest.\n   * @param {string} proxyServer A proxy server which is used by proxy mode.\n   */\n  static setupForXhr(proxyServer = ''): Mocker {\n    const mocker = new Mocker(proxyServer);\n    this.isEnabled && InterceptorXhr.setup(mocker, proxyServer);\n    return mocker;\n  }\n\n  /**\n   * Setup request mock for fetch.\n   * @param {string} proxyServer A proxy server which is used by proxy mode.\n   */\n  static setupForFetch(proxyServer = ''): Mocker {\n    const mocker = new Mocker(proxyServer);\n    this.isEnabled && InterceptorFetch.setup(mocker, proxyServer);\n    return mocker;\n  }\n\n  /**\n   * Enable mock function temporarily.\n   * Not available in proxy mode.\n   */\n  static enable(): Mocker {\n    this.isEnabled = true;\n    return Mocker.getInstance().enable();\n  }\n\n  /**\n   * Disable mock function temporarily.\n   * Not available in proxy mode.\n   */\n  static disable(): Mocker {\n    this.isEnabled = false;\n    return Mocker.getInstance().disable();\n  }\n\n  /**\n   * Enable verbose log.\n   * Not available in proxy mode.\n   */\n  static enableLog(): Mocker {\n    return Mocker.getInstance().enableLog();\n  }\n\n  /**\n   * Disable verbose log.\n   * Not available in proxy mode.\n   */\n  static disableLog(): Mocker {\n    return Mocker.getInstance().disableLog();\n  }\n\n  static default = BrowserPureIndex; // for backward compatibility\n}\n"],"names":[],"sourceRoot":""}