gm-extra
Version:
59 lines (50 loc) • 2.87 kB
TypeScript
import { AxiosAdapter } from 'axios';
import { GmXhrRequest } from 'vite-plugin-monkey/dist/client';
type SelectorOptions = {
timeout?: number;
};
declare function querySelector<K extends keyof HTMLElementTagNameMap>(root: ParentNode, selectors: K, options?: SelectorOptions): Promise<HTMLElementTagNameMap[K] | null>;
declare function querySelector<K extends keyof SVGElementTagNameMap>(root: ParentNode, selectors: K, options?: SelectorOptions): Promise<SVGElementTagNameMap[K] | null>;
declare function querySelectorAll<K extends keyof HTMLElementTagNameMap>(root: ParentNode, selectors: K, options?: SelectorOptions): Promise<NodeListOf<HTMLElementTagNameMap[K]>>;
declare function querySelectorAll<K extends keyof SVGElementTagNameMap>(root: ParentNode, selectors: K, options?: SelectorOptions): Promise<NodeListOf<SVGElementTagNameMap[K]>>;
declare const gmAxiosAdapter: AxiosAdapter;
/**
* simulate window.fetch with GM_xmlhttpRequest
*
* 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)
*
* so you must manually modify these headers by set the second parameter of gmFetch
* @example
* gmFetch(
* new Request('https://www.pixiv.net/', {
* headers: { referer: 'https://www.pixiv.net/' }, // it will not work !!!
* }),
* );
* gmFetch(new Request('https://www.pixiv.net/'), {
* headers: { referer: 'https://www.pixiv.net/' }, // it will work
* headers: new Headers({ referer: 'https://www.pixiv.net/' }), // it will also work
* });
*/
declare const gmFetch: (input: RequestInfo | URL, init?: RequestInit, xhrDetails?: Partial<GmXhrRequest<unknown, "blob">> | ((arg: GmXhrRequest<unknown, 'blob'>) => GmXhrRequest<unknown, 'blob'>)) => Promise<Response>;
declare const _TODO: undefined;
type FetchType = typeof fetch;
type IPromise<T = unknown> = Promise<T> | T;
type InterceptorChain = {
request: Request;
/**
* @param request if not set, use chain.request
*/
proceed: (request?: Request) => IPromise<Response>;
};
type FetchNetInterceptor = (chain: InterceptorChain) => IPromise<Response>;
type FetchInterceptorManager = {
originalFetch: FetchType;
fakeFetch: FetchType;
use: (interceptor: FetchNetInterceptor) => number;
eject: (id: number) => void;
clear: () => void;
};
declare const buildFetchInterceptorManager: (originalFetch: FetchType) => FetchInterceptorManager;
declare const UnsafeWindowInterceptorManager: FetchInterceptorManager;
declare const buildXhrInterceptorManager: () => void;
export { FetchInterceptorManager, FetchNetInterceptor, InterceptorChain, SelectorOptions, UnsafeWindowInterceptorManager, _TODO, buildFetchInterceptorManager, buildXhrInterceptorManager, gmAxiosAdapter, gmFetch, querySelector, querySelectorAll };