{"version":3,"sources":["../src/async_query.ts","../src/axios.ts","../src/util.ts","../src/fetch.ts","../src/intercept_all.ts","../src/intercept_fetch.ts","../src/intercept_xhr.ts"],"sourcesContent":["export type SelectorOptions = {\n  timeout?: number;\n};\n\nexport async function querySelector<K extends keyof HTMLElementTagNameMap>(\n  root: ParentNode,\n  selectors: K,\n  options?: SelectorOptions,\n): Promise<HTMLElementTagNameMap[K] | null>;\nexport async function querySelector<K extends keyof SVGElementTagNameMap>(\n  root: ParentNode,\n  selectors: K,\n  options?: SelectorOptions,\n): Promise<SVGElementTagNameMap[K] | null>;\nexport async function querySelector<E extends Element = Element>(\n  root: ParentNode,\n  selectors: string,\n  options?: SelectorOptions,\n): Promise<E | null> {\n  const node = root.querySelector<E>(selectors);\n  if (node) {\n    return node;\n  }\n  return new Promise<E | null>((res) => {\n    let task: number | undefined = undefined;\n    const observer = new MutationObserver((mutationList) => {\n      for (const mutation of mutationList) {\n        if (mutation.target instanceof Element) {\n          const node = mutation.target.querySelector<E>(selectors);\n          if (node) {\n            observer.disconnect();\n            window.clearTimeout(task);\n            return res(node);\n          }\n        }\n      }\n    });\n    observer.observe(root, {\n      attributes: true,\n      childList: true,\n      subtree: true,\n    });\n    if (options?.timeout !== undefined) {\n      task = window.setTimeout(\n        () => {\n          observer.disconnect();\n          res(null);\n        },\n        options?.timeout,\n      );\n    }\n  });\n}\n\nexport async function querySelectorAll<K extends keyof HTMLElementTagNameMap>(\n  root: ParentNode,\n  selectors: K,\n  options?: SelectorOptions,\n): Promise<NodeListOf<HTMLElementTagNameMap[K]>>;\nexport async function querySelectorAll<K extends keyof SVGElementTagNameMap>(\n  root: ParentNode,\n  selectors: K,\n  options?: SelectorOptions,\n): Promise<NodeListOf<SVGElementTagNameMap[K]>>;\nexport async function querySelectorAll<E extends Element = Element>(\n  root: ParentNode,\n  selectors: string,\n  options?: SelectorOptions,\n): Promise<NodeListOf<E>> {\n  const nodes = root.querySelectorAll<E>(selectors);\n  if (nodes.length > 0) {\n    return nodes;\n  }\n  return new Promise<NodeListOf<E>>((res) => {\n    let task: number | undefined = undefined;\n    const observer = new MutationObserver((mutationList) => {\n      for (const mutation of mutationList) {\n        if (mutation.target instanceof Element) {\n          const nodes = mutation.target.querySelectorAll<E>(selectors);\n          nodes.length;\n          if (nodes.length > 0) {\n            observer.disconnect();\n            window.clearTimeout(task);\n            return res(nodes);\n          }\n        }\n      }\n    });\n    observer.observe(root, {\n      attributes: true,\n      childList: true,\n      subtree: true,\n    });\n    if (options?.timeout !== undefined) {\n      task = window.setTimeout(\n        () => {\n          observer.disconnect();\n          const nodes = document.createDocumentFragment()\n            .childNodes as NodeListOf<E>;\n          res(nodes);\n        },\n        options?.timeout,\n      );\n    }\n  });\n}\n","import type { AxiosAdapter } from 'axios';\nimport { GM_xmlhttpRequest } from 'vite-plugin-monkey/dist/client';\nimport type { GmResponseEvent } from './types';\nimport { headersToObj, parseHeaders } from './util';\n\nexport const gmAxiosAdapter: AxiosAdapter = async (config) => {\n  const u = new URL(config.url ?? ``, config.baseURL);\n  if (config.params) {\n    for (const k in config.params) {\n      const v = config.params[k];\n      if (v !== void 0) {\n        u.searchParams.set(k, String(v));\n      }\n    }\n  }\n  const headers = config.headers.toJSON(true) as Record<string, string>;\n  const event = await new Promise<GmResponseEvent>((res, rej) => {\n    GM_xmlhttpRequest({\n      method: config.method,\n      url: u.href,\n      headers,\n      data: config.data,\n      timeout: config.timeout,\n      responseType: config.responseType,\n      onload: res,\n      onerror: rej,\n    });\n  });\n\n  return {\n    status: event.status,\n    statusText: event.statusText,\n    headers: headersToObj(parseHeaders(event.responseHeaders)),\n    data: event.response || event.responseText,\n    config,\n  };\n};\n","import { GM_info } from 'vite-plugin-monkey/dist/client';\nimport type { AnyFunction } from './types';\n\nexport const delay = async (n = 0) =>\n  new Promise((res) => {\n    setTimeout(res, n);\n  });\n\n\n/**\n * lazy side effect by `__PURE__` comment\n */\nexport const lazy = <T extends object>(fn: () => T) => {\n  let temp: T | undefined = undefined;\n  let o = {\n    get k() {\n      if (temp === undefined) {\n        temp = fn();\n      }\n      return temp;\n    },\n  };\n  const wm = lazyValue(() => new WeakMap<AnyFunction, AnyFunction>());\n  return new Proxy({} as T, {\n    get(_, p, receiver) {\n      const v = Reflect.get(o.k, p, receiver);\n      if (typeof v == 'function') {\n        const f = v as AnyFunction;\n        let fBind = wm.value.get(f);\n        if (fBind === undefined) {\n          fBind = f.bind(o.k);\n          wm.value.set(f, fBind);\n        }\n        return fBind;\n      }\n      return v;\n    },\n    set(_, p, newValue, receiver) {\n      return Reflect.set(o.k, p, newValue, receiver);\n    },\n    has(_, p) {\n      return Reflect.has(o.k, p);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(o.k);\n    },\n    isExtensible() {\n      return Reflect.isExtensible(o.k);\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(o.k, p);\n    },\n    setPrototypeOf(_, v) {\n      return Reflect.setPrototypeOf(o.k, v);\n    },\n    getOwnPropertyDescriptor(_, p) {\n      return Reflect.getOwnPropertyDescriptor(o.k, p);\n    },\n    defineProperty(_, property, attributes) {\n      return Reflect.defineProperty(o.k, property, attributes);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(o.k);\n    },\n    preventExtensions() {\n      return Reflect.preventExtensions(o.k);\n    },\n    apply(_, thisArg, argArray) {\n      // @ts-ignore\n      return Reflect.apply(o.k, thisArg, argArray);\n    },\n    construct(_, argArray, newTarget) {\n      // @ts-ignore\n      return Reflect.construct(o.k, argArray, newTarget);\n    },\n  });\n};\n\n\nconst lazyValuePlaceholder = {};\nexport const lazyValue = <T>(fn: () => T) => {\n  let temp: T | typeof lazyValuePlaceholder = lazyValuePlaceholder;\n  return {\n    get value() {\n      if (temp === lazyValuePlaceholder) {\n        temp = fn();\n      }\n      return temp as T;\n    },\n  };\n};\n\n/**\n * https://github.com/github/fetch/blob/fb5b0cf42b470faf8c5448ab461d561f34380a30/fetch.js#L422\n */\nexport const parseHeaders = (rawHeaders = '') => {\n  const headers = new Headers();\n  // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n  // https://tools.ietf.org/html/rfc7230#section-3.2\n  const preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n  // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n  // https://github.com/github/fetch/issues/748\n  // https://github.com/zloirock/core-js/issues/751\n  preProcessedHeaders\n    .split('\\r')\n    .map(function (header) {\n      return header.startsWith(`\\n`) ? header.substring(1) : header;\n    })\n    .forEach(function (line) {\n      let parts = line.split(':');\n      let key = parts.shift()?.trim();\n      if (key) {\n        let value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n  return headers;\n};\n\n/**\n * https://github.com/github/fetch/blob/master/fetch.js\n */\nexport const fixUrl = (url = '') => {\n  try {\n    return url === '' && location.href ? location.href : url;\n  } catch {\n    return url;\n  }\n};\n\nexport const headersToObj = (headers: Headers): Record<string, string> => {\n  const obj: Record<string, string> = {};\n  headers.forEach((value, key) => {\n    obj[key] = value;\n  });\n  return obj;\n};\n\nexport const reverseForm = (formData: FormData): FormData => {\n  const reversedForm = new FormData();\n  const reversedList: [string, FormDataEntryValue][] = [];\n  formData.forEach((v, k) => {\n    reversedList.push([k, v]);\n  });\n  reversedList.reverse().forEach(([k, v]) => {\n    reversedForm.append(k, v);\n  });\n  return reversedForm;\n};\n\nexport const compatForm = (formData: FormData, headers: Headers) => {\n  headers.delete(`content-type`);\n  if (GM_info.scriptHandler == `Tampermonkey`) {\n    // https://github.com/Tampermonkey/tampermonkey/issues/1783\n    return reverseForm(formData);\n  }\n  return formData;\n};","import {\n  GM_xmlhttpRequest,\n  type GmXhrRequest,\n} from 'vite-plugin-monkey/dist/client';\nimport { delay, parseHeaders, fixUrl, compatForm, headersToObj } from './util';\n\n/**\n * simulate window.fetch with GM_xmlhttpRequest\n *\n * because [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) will delete [Forbidden_header_name](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name)\n *\n * so you must manually modify these headers by set the second parameter of gmFetch\n * @example\n * gmFetch(\n *   new Request('https://www.pixiv.net/', {\n *     headers: { referer: 'https://www.pixiv.net/' }, // it will not work !!!\n *   }),\n * );\n * gmFetch(new Request('https://www.pixiv.net/'), {\n *   headers: { referer: 'https://www.pixiv.net/' }, // it will work\n *   headers: new Headers({ referer: 'https://www.pixiv.net/' }), // it will also work\n * });\n */\nexport const gmFetch = async (\n  input: RequestInfo | URL,\n  init: RequestInit = {},\n  xhrDetails: Partial<GmXhrRequest<unknown, 'blob'>> | ((arg: GmXhrRequest<unknown, 'blob'>) => GmXhrRequest<unknown, 'blob'>) = {},\n): Promise<Response> => {\n  const request = new Request(input, init);\n  if (request.signal?.aborted) {\n    throw new DOMException('Aborted', 'AbortError');\n  }\n\n  const method = request.method.toUpperCase();\n  const url = fixUrl(request.url);\n\n  // headers\n  const sendHeaders = new Headers(request.headers);\n  new Headers(init.headers).forEach((value, key) => {\n    sendHeaders.set(key, value);\n  });\n\n  let binary = false;\n  let data: URLSearchParams | FormData | Blob | string | undefined = undefined;\n\n  if (method != 'GET') {\n    if (init.body) {\n      if (init.body instanceof FormData) {\n        data = compatForm(init.body, sendHeaders);\n      } else if (\n        typeof init.body == 'string' ||\n        init.body instanceof URLSearchParams\n      ) {\n        data = init.body;\n      } else {\n        binary = true;\n        data = await request.blob();\n      }\n    } else {\n      const formData = await request\n        .clone()\n        .formData()\n        .catch(() => {});\n      if (formData) {\n        data = compatForm(formData, sendHeaders);\n      }\n    }\n  }\n  return new Promise<Response>((resolve, reject) => {\n    let initXhrDetails: GmXhrRequest<unknown, 'blob'> = {\n      method,\n      url,\n      headers: headersToObj(sendHeaders),\n      data,\n      binary,\n      responseType: 'blob',\n      async onload(event) {\n        let body: BodyInit | null | undefined = undefined;\n        if (!(event.response instanceof Blob && event.response.size == 0)) {\n          // Response': Response with null body status cannot have body\n          body = event.response ?? event.responseText;\n        }\n        await delay();\n        const resp = new Response(body, {\n          status: event.status,\n          statusText: event.statusText,\n          headers: parseHeaders(event.responseHeaders),\n        });\n        Object.defineProperty(resp, 'url', { value: event.finalUrl });\n        resolve(resp);\n      },\n      async onerror() {\n        await delay();\n        reject(new TypeError('Network request onerror failed'));\n      },\n      async ontimeout() {\n        await delay();\n        reject(new TypeError('Network request ontimeout failed'));\n      },\n      async onabort() {\n        await delay();\n        reject(new DOMException('Aborted', 'AbortError'));\n      },\n      async onreadystatechange(event) {\n        if (event.readyState === 4) {\n          request.signal?.removeEventListener('abort', abortXhr);\n        }\n      },\n    };\n    if (typeof xhrDetails == 'function') {\n      initXhrDetails = xhrDetails(initXhrDetails);\n    } else {\n      initXhrDetails = { ...initXhrDetails, ...xhrDetails };\n    }\n    const handle = GM_xmlhttpRequest(initXhrDetails);\n    function abortXhr() {\n      handle.abort();\n    }\n    request.signal?.addEventListener('abort', abortXhr);\n  });\n};\n","export const _TODO = void 0;\n","import { monkeyWindow } from 'vite-plugin-monkey/dist/client';\nimport type { FetchType, IPromise } from './types';\nimport { lazy } from './util';\n\nexport type InterceptorChain = {\n  request: Request;\n  /**\n   * @param request if not set, use chain.request\n   */\n  proceed: (request?: Request) => IPromise<Response>;\n};\n\nexport type FetchNetInterceptor = (chain: InterceptorChain) => IPromise<Response>;\n\nexport type FetchInterceptorManager = {\n  originalFetch: FetchType;\n  fakeFetch: FetchType;\n  use: (interceptor: FetchNetInterceptor) => number;\n  eject: (id: number) => void;\n  clear: () => void;\n};\n\nconst produceChain = (\n  originalFetch: FetchType,\n  interceptors: (FetchNetInterceptor | null)[],\n  request: Request,\n  index = 0,\n): InterceptorChain => {\n  return {\n    request,\n    proceed: async (req = request) => {\n      while (index < interceptors.length) {\n        const target = interceptors[index];\n        if (target) {\n          const chain = produceChain(\n            originalFetch,\n            interceptors,\n            req,\n            index + 1,\n          );\n          return await target(chain);\n        }\n        index++;\n      }\n      return originalFetch(req);\n    },\n  };\n};\n\nexport const buildFetchInterceptorManager = (\n  originalFetch: FetchType,\n): FetchInterceptorManager => {\n  const interceptors: (FetchNetInterceptor | null)[] = [];\n  const fakeFetch: FetchType = async (input, init) => {\n    return produceChain(\n      originalFetch,\n      [...interceptors],\n      new Request(input, init),\n    ).proceed();\n  };\n  return {\n    originalFetch,\n    fakeFetch,\n    use: (interceptor: FetchNetInterceptor): number => {\n      interceptors.push(interceptor);\n      return interceptors.length - 1;\n    },\n    eject: (id: number) => {\n      interceptors[id] = null;\n    },\n    clear: () => {\n      for (let i = 0; i < interceptors.length; i++) {\n        interceptors[i] = null;\n      }\n    },\n  };\n};\n\nexport const UnsafeWindowInterceptorManager = /* @__PURE__ */ lazy(() => {\n  const t = buildFetchInterceptorManager(monkeyWindow.unsafeWindow.fetch);\n  monkeyWindow.unsafeWindow.fetch = t.fakeFetch;\n  return t;\n});\n","import type {\n  XhrOnloadType,\n  XhrOnreadystatechangeType,\n  XMLHttpRequestType,\n} from './types';\nimport { parseHeaders } from './util';\n\nconst fakeXhr = (XMLHttpRequestLike: XMLHttpRequestType) => {\n  return class FakeXMLHttpRequest extends XMLHttpRequestLike {\n    _method = 'GET';\n    _url: URL = new URL(location.origin);\n    _reqHeaders = new Headers();\n\n    open(\n      method: string,\n      url: string | URL,\n      async = true,\n      username?: string | null | undefined,\n      password?: string | null | undefined,\n    ) {\n      const u = new URL(url, location.pathname);\n      if (username) {\n        u.username = username;\n      }\n      if (password) {\n        u.password = password;\n      }\n      this._url = u;\n      this._method = method;\n      return super.open(method, url, async, username, password);\n    }\n    setRequestHeader(name: string, value: string) {\n      this._reqHeaders.append(name, value);\n    }\n    async send(body: Document | XMLHttpRequestBodyInit | null = null) {\n      let bd = body;\n      if (bd && bd instanceof Document) {\n        bd = new Blob([new XMLSerializer().serializeToString(bd)], {\n          type: bd.contentType,\n        });\n      }\n      let req = new Request(this._url, {\n        headers: this._reqHeaders,\n        method: this._method,\n        body: bd,\n        credentials: this.withCredentials ? `include` : `omit`,\n      });\n      // TODO 发起请求前拦截\n      req.headers.forEach((value, key) => {\n        this.setRequestHeader(key, value);\n      });\n      if (req.body) {\n        return super.send(await req.blob());\n      }\n      return super.send();\n    }\n\n    // _responseType: XMLHttpRequestResponseType = '';\n    // get responseType(): XMLHttpRequestResponseType {\n    //   return 'blob';\n    // }\n    // set responseType(value: XMLHttpRequestResponseType) {\n    //   this._responseType = value;\n    // }\n\n    _onreadystatechange: XhrOnreadystatechangeType = null;\n\n    _onload: XhrOnloadType = null;\n    get onload(): XhrOnloadType {\n      return this._onload;\n    }\n    set onload(value: XhrOnloadType) {\n      if (value === null) {\n        this._onload = null;\n      } else {\n        this._onload = async (ev) => {\n          // https://github.com/github/fetch/blob/fb5b0cf42b470faf8c5448ab461d561f34380a30/fetch.js#L521\n\n          const resp = new Response(this.response ?? this.responseText, {\n            status: this.status,\n            statusText: this.statusText,\n            headers: parseHeaders(this.getAllResponseHeaders() || ``),\n          });\n          Object.defineProperty(resp, 'url', {\n            value: this.responseURL ?? this.getResponseHeader(`X-Request-URL`),\n          });\n          // TODO 完全收到回复后拦截\n\n          const blob = await resp.blob();\n\n          if (this.responseType == 'text' || this.responseType == '') {\n          } else if (this.responseType == 'arraybuffer') {\n          } else if (this.responseType == 'blob') {\n          } else if (this.responseType == 'json') {\n          } else if (this.responseType == 'document') {\n            // TODO\n          }\n          value.call(this, ev);\n        };\n      }\n    }\n  };\n};\n\nexport const buildXhrInterceptorManager = () => {\n  fakeXhr.apply;\n};\n\n/**\n * https://juejin.cn/post/6938308842849566727#heading-16\n * https://bbs.tampermonkey.net.cn/thread-3284-1-1.html\n *\n */\n"],"mappings":"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","names":["node","nodes","GM_xmlhttpRequest","GM_xmlhttpRequest"]}