UNPKG

vite-plugin-monkey

Version:

A vite plugin server and build your.user.js for userscript engine like Tampermonkey and Violentmonkey and Greasemonkey

1,297 lines (1,293 loc) 40.6 kB
export {}; type HTMLElementTagName = keyof HTMLElementTagNameMap; interface GmAudioMuteDetails { isMuted: boolean; } interface GmAudioMuteState { isMuted: boolean; muteReason: string; isAudible: boolean; } interface GmAudioStateChangeListener { (info: { muted: string; audible: boolean }): void; } interface GmAudioType { setMute(details: GmAudioMuteDetails, callback?: GmVoidCallback): void; getState(callback: (state: GmAudioMuteState) => void): void; addStateChangeListener( listener: GmAudioStateChangeListener, callback: GmVoidCallback, ): void; removeStateChangeListener( listener: GmAnyFuntion, callback: GmVoidCallback, ): void; } interface GmAsyncAudioType { setMute(details: GmAudioMuteDetails): Promise<void>; getState(): Promise<GmAudioMuteState>; addStateChangeListener(listener: GmAudioStateChangeListener): Promise<void>; removeStateChangeListener(listener: GmAnyFuntion): Promise<void>; } interface GmPartitionKeyType { topLevelSite?: string; } interface GmCallbackCookie { domain: string; expirationDate?: number; firstPartyDomain?: string; partitionKey?: GmPartitionKeyType; hostOnly: boolean; httpOnly: boolean; name: string; path: string; sameSite: string; secure: boolean; session: boolean; value: string; } interface GmCookieListOptions { url?: string; domain?: string; name?: string; path?: string; partitionKey?: GmPartitionKeyType; } interface GmCookieSetOptions { url?: string; name: string; value: string; domain?: string; firstPartyDomain?: string; partitionKey?: GmPartitionKeyType; path?: string; secure?: boolean; httpOnly?: boolean; expirationDate?: number; } interface GmCookieDeleteOptions { url?: string; name: string; firstPartyDomain?: string; partitionKey?: GmPartitionKeyType; } interface GmCookieListCallback { (cookies: GmCallbackCookie[], error: any): void; } interface GmErrorEvent<R extends GmResponseType> extends GmResponseEventBase<R> { error: string; } interface GmInfoResourceType { name: string; url: string; error: string; content: string; meta: string; } /** * @see https://violentmonkey.github.io/api/gm/#gm_info */ interface ViolentInfoType { version: string; scriptHandler: string; scriptMetaStr: string; scriptSource: string; scriptUpdateURL: string; scriptWillUpdate: boolean; uuid: string; injectInto: string; platform: { arch: "arm" | "mips" | "mips64" | "x86-32" | "x86-64"; browserName: string; browserVersion: string; os: "android" | "cros" | "linux" | "mac" | "openbsd" | "win"; }; } interface ViolentScriptType { namespace: string; name: string; author: string; description: string; icon: string; excludes: string[]; includes: string[]; matches: string[]; resources: GmInfoResourceType[]; version: string; noframes: boolean; unwrap: boolean; homepage: string; excludeMatches: string[]; runAt: string; homepageURL: string; license: string; require: string[]; } /** * @see https://www.tampermonkey.net/documentation.php#api:GM_info */ interface TamperInfoType { container: { id: string; name: string; }; downloadMode: string; isFirstPartyIsolation: boolean; relaxedCsp: string; isIncognito: boolean; sandboxMode: "js" | "raw" | "dom"; scriptHandler: string; scriptMetaStr: string; scriptUpdateURL: string; scriptWillUpdate: boolean; userAgentData: { brands: { brand: string; version: string; }[]; mobile: boolean; platform: string; architecture: string; bitness: string; }; scriptSource: string; } interface TamperScriptType { antifeatures: { [antifeature: string]: { [locale: string]: string; }; }; author: string; blockers: string[]; connects: string[]; copyright: string; deleted: number | undefined; description_i18n: { [locale: string]: string; }; description: string; downloadURL: string; excludes: string[]; fileURL: string; grant: string[]; header: string; homepage: string; icon: string; icon64: string; includes: string[]; lastModified: number; matches: string[]; name_i18n: { [locale: string]: string; }; name: string; namespace: string; position: number; resources: GmInfoResourceType[]; supportURL: string; system: boolean; "run-at": string; "run-in": string[]; unwrap: boolean; updateURL: string; version: string; webRequest: GmWebRequestRule[]; options: { check_for_updates: boolean; comment: string; compatopts_for_requires: boolean; compat_wrappedjsobject: boolean; compat_metadata: boolean; compat_foreach: boolean; compat_powerful_this: boolean; sandbox: string; noframes: boolean; unwrap: boolean; run_at: string; run_in: string; override: { use_includes: string[]; orig_includes: string[]; merge_includes: boolean; use_matches: string[]; orig_matches: string[]; merge_matches: boolean; use_excludes: string[]; orig_excludes: string[]; merge_excludes: boolean; use_connects: string[]; orig_connects: string[]; merge_connects: boolean; use_blockers: string[]; orig_run_at: string; orig_run_in: string[]; orig_noframes: boolean; }; }; } type MonkeyWindow = typeof window & GmContextType; declare global { interface GmAddElementAttributes { class?: string; style?: string; textContent?: string; [key: string]: any; } interface GmAddElementType { <K extends HTMLElementTagName>( tagName: K, attributes?: GmAddElementAttributes, ): HTMLElementTagNameMap[K]; (tagName: string, attributes?: GmAddElementAttributes): HTMLElement; <K extends HTMLElementTagName>( parentNode: Node | Element | ShadowRoot, tagName: K, attributes?: GmAddElementAttributes, ): HTMLElementTagNameMap[K]; ( parentNode: Node | Element | ShadowRoot, tagName: string, attributes?: GmAddElementAttributes, ): HTMLElement; } interface GmAsyncAddElementType { <K extends HTMLElementTagName>( tagName: K, attributes?: GmAddElementAttributes, ): Promise<HTMLElementTagNameMap[K]> | HTMLElementTagNameMap[K]; (tagName: string, attributes?: GmAddElementAttributes): HTMLElement; <K extends HTMLElementTagName>( parentNode: Node | Element | ShadowRoot, tagName: K, attributes?: GmAddElementAttributes, ): Promise<HTMLElementTagNameMap[K]> | HTMLElementTagNameMap[K]; ( parentNode: Node | Element | ShadowRoot, tagName: string, attributes?: GmAddElementAttributes, ): Promise<HTMLElement> | HTMLElement; } interface GmAddStyleType { (css: string): HTMLStyleElement; } interface GmAsyncAddStyleType { (css: string): Promise<HTMLStyleElement> | HTMLStyleElement; } interface GmAbortHandle<TReturn = void> { abort(): TReturn; } interface GmProgressEventBase { done: number; lengthComputable: boolean; loaded: number; position: number; total: number; totalSize: number; } interface GmReponseEventListener<Event> { (this: Event, event: Event): void; } interface GmVoidCallback { (error: any): void; } type GmAnyFuntion = (...args: any[]) => any; interface GmCookieType { list(details: GmCookieListOptions, callback?: GmCookieListCallback): void; set(details: GmCookieSetOptions, callback?: GmVoidCallback): void; delete(details: GmCookieDeleteOptions, callback?: GmVoidCallback): void; } interface GmAsyncCookieType { list(): Promise<GmCallbackCookie[]>; list(details: GmCookieListOptions): Promise<GmCallbackCookie[]>; set(details: GmCookieSetOptions): Promise<void>; delete(details: GmCookieDeleteOptions): Promise<void>; } interface GmResponseTypeMap { text: string; json: any; arraybuffer: ArrayBuffer; blob: Blob; document: Document; stream: ReadableStream<Uint8Array>; } type GmResponseType = keyof GmResponseTypeMap; interface GmResponseEventBase<R extends GmResponseType> { responseHeaders: string; /** * 0 = XMLHttpRequest.UNSENT * * 1 = XMLHttpRequest.OPENED * * 2 = XMLHttpRequest.HEADERS_RECEIVED * * 3 = XMLHttpRequest.HEADERS_RECEIVED * * 4 = XMLHttpRequest.DONE */ readyState: 0 | 1 | 2 | 3 | 4; response: GmResponseTypeMap[R]; responseText: string; responseXML: Document | null; status: number; statusText: string; } interface GmResponseEvent<R extends GmResponseType, C = undefined> extends GmResponseEventBase<R> { finalUrl: string; context: C; } interface GmProgressResponseEvent<R extends GmResponseType, C = undefined> extends GmResponseEvent<R, C>, GmProgressEventBase {} interface GmXmlhttpRequestOption<R extends GmResponseType, C = undefined> { method?: string; url: string; headers?: Record<string, string>; data?: BodyInit; /** * @available tampermonkey */ redirect?: `follow` | `error` | `manual`; /** * @available tampermonkey */ cookie?: string; /** * @see https://github.com/Tampermonkey/tampermonkey/issues/2057#issuecomment-2114745447 * @available tampermonkey */ cookiePartition?: { topLevelSite?: string; }; binary?: boolean; /** * @available tampermonkey */ nocache?: boolean; /** * @available tampermonkey */ revalidate?: boolean; timeout?: number; /** * Property which will be added to the response event object */ context?: C; /** * @tampermonkey text, json, arraybuffer, blob, document, stream * @violentmonkey text, json, arraybuffer, blob, document * @default * 'text' */ responseType?: R; overrideMimeType?: string; anonymous?: boolean; /** * @available tampermonkey */ fetch?: boolean; user?: string; password?: string; onabort?: () => void; onerror?: GmReponseEventListener<GmErrorEvent<R>>; /** * @available violentmonkey */ onloadend?: GmReponseEventListener<GmResponseEvent<R, C>>; onloadstart?: GmReponseEventListener<GmResponseEvent<R, C>>; onprogress?: GmReponseEventListener<GmProgressResponseEvent<R, C>>; onreadystatechange?: GmReponseEventListener<GmResponseEvent<R, C>>; ontimeout?: () => void; onload?: GmReponseEventListener<GmResponseEvent<R, C>>; } interface GmXmlhttpRequestExtType { /** * @see [tampermonkey#1278](https://github.com/Tampermonkey/tampermonkey/issues/1278#issuecomment-884363078) */ RESPONSE_TYPE_STREAM?: "stream"; } interface GmXmlhttpRequestType extends GmXmlhttpRequestExtType { <R extends GmResponseType = "text", C = any>( details: GmXmlhttpRequestOption<R, C>, ): GmAbortHandle; } interface GmAsyncXmlhttpRequestReturnType<R extends GmResponseType, C = any> extends GmAbortHandle, Promise<GmResponseEvent<R, C>> {} interface GmAsyncXmlhttpRequestType extends GmXmlhttpRequestExtType { <R extends GmResponseType = "text", C = any>( details: GmXmlhttpRequestOption<R, C>, ): GmAsyncXmlhttpRequestReturnType<R, C>; } interface GmDownloadErrorEvent { /** * Error reason * - `not_enabled` - the download feature isn't enabled by the user * - `not_whitelisted` - the requested file extension is not * whitelisted * - `not_permitted` - the user enabled the download feature, but did * not give the downloads permission * - `not_supported` - the download feature isn't supported by the * browser/version * - `not_succeeded` - the download wasn't started or failed, the * details attribute may provide more information */ error: | "not_enabled" | "not_whitelisted" | "not_permitted" | "not_supported" | "not_succeeded"; details?: string; } interface GmDownloadProgressEvent extends GmProgressEventBase { readonly finalUrl: string; } interface GmDownloadOptions { /** * URL from where the data should be downloaded */ url: string; /** * Filename - for security reasons the file extension needs to be * whitelisted at Tampermonkey options page */ name: string; headers?: Record<string, string>; /** * Show 'Save As' dialog */ saveAs?: boolean; /** * @see https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/downloads/FilenameConflictAction */ conflictAction?: "uniquify" | "overwrite" | "prompt"; timeout?: number; onerror?: GmReponseEventListener<GmDownloadErrorEvent>; ontimeout?(): void; onload?(): void; onprogress?: GmReponseEventListener<GmDownloadProgressEvent>; } interface GmDownloadType { (options: GmDownloadOptions): GmAbortHandle<boolean>; (url: string, name?: string): GmAbortHandle<boolean>; } interface GmDownloadAsyncAbortHandle extends Promise<GmResponseEvent<"blob", undefined>>, GmAbortHandle<boolean> {} interface GmAsyncDownloadType { (options: GmDownloadOptions): GmDownloadAsyncAbortHandle; (url: string, name?: string): GmDownloadAsyncAbortHandle; } interface GmGetResourceTextType { (name: string): string; } interface GmAsyncGetResourceTextType { (name: string): Promise<string>; } interface GmGetResourceURLType { (name: string): string; } interface GmAsyncGetResourceURLType { (name: string): Promise<string>; } /** * @see https://www.tampermonkey.net/documentation.php#api:GM_webRequest */ interface GmWebRequestRule { selector: | string | { include?: string | string[]; match?: string | string[]; exclude?: string | string[]; }; action: | string | { cancel?: boolean; redirect?: | string | { url: string; from?: string; to?: string; }; }; } /** * @see https://www.tampermonkey.net/documentation.php#api:GM_webRequest */ interface GmWebRequestListener { ( /** * 'cancel' | 'redirect' */ info: string, /** * 'ok' | 'error' */ message: string, details: { rule: GmWebRequestRule; url: string; redirect_url: string; description: string; }, ): void; } interface GmWebRequestType { (rules: GmWebRequestRule[], listener: GmWebRequestListener): GmAbortHandle; } interface GmAsyncWebRequestType { ( rules: GmWebRequestRule[], listener: GmWebRequestListener, ): Promise<GmAbortHandle>; } interface GmInfoScriptType extends TamperScriptType, ViolentScriptType {} /** * @see https://www.tampermonkey.net/documentation.php#api:GM_info * @see https://violentmonkey.github.io/api/gm/#gm_info */ interface GmInfoType extends TamperInfoType, ViolentInfoType { script: GmInfoScriptType; } interface GmLogType { (message: any): void; } interface GmAsyncLogType { (message: any): Promise<void> | void; } interface GmMenuCommandOptions { id: number | string; accessKey?: string; autoClose?: boolean; title?: string; } interface GmRegisterMenuCommandType { <T extends MouseEvent | KeyboardEvent>( caption: string, onClick: (event: T) => void, optionsOrAccessKey?: string | GmMenuCommandOptions, ): string | number; } interface GmAsyncRegisterMenuCommandType { <T extends MouseEvent | KeyboardEvent>( caption: string, onClick: (event: T) => void, optionsOrAccessKey?: string | GmMenuCommandOptions, ): string | number | Promise<string | number>; } interface GmUnregisterMenuCommandType { (captionOrId: string | number): void; } interface GmAsnycUnregisterMenuCommandType { (captionOrId: string | number): void; } interface GmNotificationOptions { text: string; title?: string; tag?: string; image?: string; /** * @available tampermonkey */ highlight?: boolean; /** * @available tampermonkey */ silent?: boolean; /** * @available tampermonkey */ timeout?: number; /** * @available tampermonkey */ url?: string; /** * @available violentmonkey */ zombieTimeout?: number; /** * @available violentmonkey */ zombieUrl?: string; onclick?: (event?: Event) => void; ondone?: () => void; } interface GmNotificationControl { /** * @available violentmonkey */ remove: () => Promise<void>; } interface GmNotificationType { ( details: GmNotificationOptions, ondone?: () => void, ): GmNotificationControl | void; ( text: string, title?: string, image?: string, onclick?: () => void, ): GmNotificationControl | void; } interface GmAsyncNotificationType { (details: GmNotificationOptions): Promise<boolean> | GmNotificationControl; ( text: string, title?: string, image?: string, ): Promise<boolean> | GmNotificationControl; } interface GmSetClipboardType { (data: string, type: string, cb?: () => void): void; } interface GmAsyncSetClipboardType { (data: string, type: string, cb?: () => void): Promise<void> | void; } interface GmOpenInTabOptions { active?: boolean; insert?: boolean; /** * @available tampermonkey */ setParent?: boolean; /** * @available tampermonkey */ incognito?: boolean; /** * @available violentmonkey */ container?: 0 | 1 | 2; /** * @available violentmonkey */ pinned?: boolean; } interface GmTabControl { onclose?: () => void; closed: boolean; close: () => void; } interface GmOpenInTabType { (url: string, details?: GmOpenInTabOptions): GmTabControl; (url: string, openInBackground?: boolean): GmTabControl; } interface GmAsyncOpenInTabType { ( url: string, details?: GmOpenInTabOptions, ): GmTabControl | Promise<GmTabControl>; ( url: string, openInBackground?: boolean, ): GmTabControl | Promise<GmTabControl>; } interface GmGetTabType { <T = any>(callback: (tab: T) => void): void; } interface GmAsyncGetTabType { <T = any>(): T; } interface GmSaveTab { (tab: unknown): void; } interface GmAsyncSaveTab { (tab: unknown): Promise<void>; } interface GmGetTabsType { <T = any>(callback: (tabsMap: { [tabId: number]: T }) => void): void; } interface GmAsyncGetTabsType { <T = any>(): Promise<{ [tabId: number]: T; }>; } interface GmGetValueType { <T = any>(key: string, defaultValue?: T): T; } interface GmAsyncGetValueType { <T = any>(key: string, defaultValue?: T): Promise<T>; } interface GmGetValuesType { <T extends Record<string, any>>(): T; /** * @example * const values1 = GM_getValues(['key1', 'key2']); // { key1: any; key2: any } * const values2 = GM_getValues<{ key1: string; key2: number }>(['key1', 'key2']); */ <T extends Record<string, any>>(keys: (keyof T)[]): T; <T extends Record<string, any>>(keyValues: T): T; } interface GmAsyncGetValuesType { <T extends Record<string, any>>(): Promise<T>; /** * @example * const values1 = await GM.getValues(['key1', 'key2']); // { key1: any; key2: any } * const values2 = await GM.getValues<{ key1: string; key2: number }>(['key1', 'key2']); */ <T extends Record<string, any>>(keys: (keyof T)[]): Promise<T>; <T extends Record<string, any>>(keyValues: T): Promise<T>; } interface GmSetValueType { (key: string, value: unknown): void; } interface GmAsyncSetValueType { (key: string, value: unknown): Promise<void>; } interface GmSetValuesType { (values: Record<string, unknown>): void; } interface GmAsyncSetValuesType { (values: Record<string, unknown>): Promise<void>; } interface GmListValuesType { (): string[]; } interface GmAsyncListValuesType { (): Promise<string[]>; } interface GmDeleteValueType { (name: string): void; } interface GmAsyncDeleteValueType { (name: string): Promise<void>; } interface GmDeleteValuesType { (keys: string[]): void; } interface GmAsyncDeleteValuesType { (keys: string[]): Promise<void>; } /** * - tampermonkey -> number * - violentmonkey -> string */ type GmValueListenerId = string | number; interface GmAddValueChangeListenerType { <T = any>( name: string, callback: ( name: string, oldValue?: T, newValue?: T, remote?: boolean, ) => void, ): GmValueListenerId; } interface GmAsyncAddValueChangeListenerType { <T = any>( name: string, callback: ( name: string, oldValue?: T, newValue?: T, remote?: boolean, ) => void, ): GmValueListenerId | Promise<GmValueListenerId>; } interface GmRemoveValueChangeListenerType { (listenerId: GmValueListenerId): void; } interface GmAsyncRemoveValueChangeListenerType { (listenerId: GmValueListenerId): void; } interface GmType { info: GmInfoType; log: GmAsyncLogType; getValue: GmAsyncGetValueType; getValues: GmAsyncGetValuesType; setValue: GmAsyncSetValueType; setValues: GmAsyncSetValuesType; listValues: GmAsyncListValuesType; deleteValue: GmAsyncDeleteValueType; deleteValues: GmAsyncDeleteValuesType; addValueChangeListener: GmAsyncAddValueChangeListenerType; removeValueChangeListener: GmAsyncRemoveValueChangeListenerType; getResourceText: GmAsyncGetResourceTextType; getResourceUrl: GmAsyncGetResourceURLType; addElement: GmAsyncAddElementType; addStyle: GmAsyncAddStyleType; getTab: GmAsyncGetTabType; saveTab: GmAsyncSaveTab; getTabs: GmAsyncGetTabsType; openInTab: GmAsyncOpenInTabType; registerMenuCommand: GmAsyncRegisterMenuCommandType; unregisterMenuCommand: GmAsnycUnregisterMenuCommandType; notification: GmAsyncNotificationType; setClipboard: GmAsyncSetClipboardType; xmlHttpRequest: GmAsyncXmlhttpRequestType; download: GmAsyncDownloadType; cookie: GmAsyncCookieType; webRequest: GmAsyncWebRequestType; audio: GmAsyncAudioType; } interface GmContextType { unsafeWindow: typeof window; GM: GmType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_info * @see https://violentmonkey.github.io/api/gm/#gm_info */ GM_info: GmInfoType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_log * @available tampermonkey */ GM_log: GmLogType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getValue * @see https://violentmonkey.github.io/api/gm/#gm_getvalue */ GM_getValue: GmGetValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getValues * @see https://violentmonkey.github.io/api/gm/#gm_getvalues */ GM_getValues: GmGetValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setValue * @see https://violentmonkey.github.io/api/gm/#gm_setvalue */ GM_setValue: GmSetValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setValues * @see https://violentmonkey.github.io/api/gm/#gm_setvalues */ GM_setValues: GmSetValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_deleteValue * @see https://violentmonkey.github.io/api/gm/#gm_deletevalue */ GM_deleteValue: GmDeleteValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_deleteValues * @see https://violentmonkey.github.io/api/gm/#gm_deletevalues */ GM_deleteValues: GmDeleteValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_listValues * @see https://violentmonkey.github.io/api/gm/#gm_listvalues */ GM_listValues: GmListValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addValueChangeListener * @see https://violentmonkey.github.io/api/gm/#gm_addvaluechangelistener */ GM_addValueChangeListener: GmAddValueChangeListenerType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_removeValueChangeListener * @see https://violentmonkey.github.io/api/gm/#gm_removevaluechangelistener */ GM_removeValueChangeListener: GmRemoveValueChangeListenerType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getResourceText * @see https://violentmonkey.github.io/api/gm/#gm_getresourcetext */ GM_getResourceText: GmGetResourceTextType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getResourceURL * @see https://violentmonkey.github.io/api/gm/#gm_getresourceurl */ GM_getResourceURL: GmGetResourceURLType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addElement * @see https://violentmonkey.github.io/api/gm/#gm_addelement */ GM_addElement: GmAddElementType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addStyle * @see https://violentmonkey.github.io/api/gm/#gm_addstyle */ GM_addStyle: GmAddStyleType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_openInTab * @see https://violentmonkey.github.io/api/gm/#gm_openintab */ GM_openInTab: GmOpenInTabType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getTab * @available tampermonkey */ GM_getTab: GmGetTabType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_saveTab * @available tampermonkey */ GM_saveTab: GmSaveTab; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getTabs * @available tampermonkey */ GM_getTabs: GmGetTabsType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_registerMenuCommand * @see https://violentmonkey.github.io/api/gm/#gm_registermenucommand */ GM_registerMenuCommand: GmRegisterMenuCommandType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_unregisterMenuCommand * @see https://violentmonkey.github.io/api/gm/#gm_unregistermenucommand */ GM_unregisterMenuCommand: GmUnregisterMenuCommandType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_notification * @see https://violentmonkey.github.io/api/gm/#gm_notification */ GM_notification: GmNotificationType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setClipboard * @see https://violentmonkey.github.io/api/gm/#gm_setclipboard */ GM_setClipboard: GmSetClipboardType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_xmlhttpRequest * @see https://violentmonkey.github.io/api/gm/#gm_xmlhttprequest */ GM_xmlhttpRequest: GmXmlhttpRequestType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_download * @see https://violentmonkey.github.io/api/gm/#gm_download */ GM_download: GmDownloadType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_webRequest * @available tampermonkey */ GM_webRequest: GmWebRequestType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.list * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.set * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.delete * @available tampermonkey */ GM_cookie: GmCookieType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.setMute * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.getState * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.addStateChangeListener * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.removeStateChangeListener * @available tampermonkey */ GM_audio: GmAudioType; /** * @see https://www.tampermonkey.net/documentation.php#api:window.onurlchange */ onurlchange?: null; /** * @see https://www.tampermonkey.net/documentation.php#api:window.onurlchange */ addEventListener( type: "urlchange", cb: (data: { url: string }) => void, ): void; removeEventListener(type: "urlchange", cb: (...args: any[]) => any): void; /** * @see https://www.tampermonkey.net/documentation.php#api:window.focus */ focus(): void; } const unsafeWindow: Window & typeof globalThis; const GM: GmType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_info * @see https://violentmonkey.github.io/api/gm/#gm_info */ const GM_info: GmInfoType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_log * @available tampermonkey */ const GM_log: GmLogType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getValue * @see https://violentmonkey.github.io/api/gm/#gm_getvalue */ const GM_getValue: GmGetValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getValues * @see https://violentmonkey.github.io/api/gm/#gm_getvalues */ const GM_getValues: GmGetValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setValue * @see https://violentmonkey.github.io/api/gm/#gm_setvalue */ const GM_setValue: GmSetValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setValues * @see https://violentmonkey.github.io/api/gm/#gm_setvalues */ const GM_setValues: GmSetValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_deleteValue * @see https://violentmonkey.github.io/api/gm/#gm_deletevalue */ const GM_deleteValue: GmDeleteValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_deleteValues * @see https://violentmonkey.github.io/api/gm/#gm_deletevalues */ const GM_deleteValues: GmDeleteValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_listValues * @see https://violentmonkey.github.io/api/gm/#gm_listvalues */ const GM_listValues: GmListValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addValueChangeListener * @see https://violentmonkey.github.io/api/gm/#gm_addvaluechangelistener */ const GM_addValueChangeListener: GmAddValueChangeListenerType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_removeValueChangeListener * @see https://violentmonkey.github.io/api/gm/#gm_removevaluechangelistener */ const GM_removeValueChangeListener: GmRemoveValueChangeListenerType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getResourceText * @see https://violentmonkey.github.io/api/gm/#gm_getresourcetext */ const GM_getResourceText: GmGetResourceTextType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getResourceURL * @see https://violentmonkey.github.io/api/gm/#gm_getresourceurl */ const GM_getResourceURL: GmGetResourceURLType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addElement * @see https://violentmonkey.github.io/api/gm/#gm_addelement */ const GM_addElement: GmAddElementType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addStyle * @see https://violentmonkey.github.io/api/gm/#gm_addstyle */ const GM_addStyle: GmAddStyleType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_openInTab * @see https://violentmonkey.github.io/api/gm/#gm_openintab */ const GM_openInTab: GmOpenInTabType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getTab * @available tampermonkey */ const GM_getTab: GmGetTabType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_saveTab * @available tampermonkey */ const GM_saveTab: GmSaveTab; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getTabs * @available tampermonkey */ const GM_getTabs: GmGetTabsType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_registerMenuCommand * @see https://violentmonkey.github.io/api/gm/#gm_registermenucommand */ const GM_registerMenuCommand: GmRegisterMenuCommandType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_unregisterMenuCommand * @see https://violentmonkey.github.io/api/gm/#gm_unregistermenucommand */ const GM_unregisterMenuCommand: GmUnregisterMenuCommandType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_notification * @see https://violentmonkey.github.io/api/gm/#gm_notification */ const GM_notification: GmNotificationType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setClipboard * @see https://violentmonkey.github.io/api/gm/#gm_setclipboard */ const GM_setClipboard: GmSetClipboardType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_xmlhttpRequest * @see https://violentmonkey.github.io/api/gm/#gm_xmlhttprequest */ const GM_xmlhttpRequest: GmXmlhttpRequestType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_download * @see https://violentmonkey.github.io/api/gm/#gm_download */ const GM_download: GmDownloadType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_webRequest * @available tampermonkey */ const GM_webRequest: GmWebRequestType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.list * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.set * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.delete * @available tampermonkey */ const GM_cookie: GmCookieType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.setMute * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.getState * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.addStateChangeListener * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.removeStateChangeListener * @available tampermonkey */ const GM_audio: GmAudioType; interface Window { unsafeWindow: Window & typeof globalThis; GM: GmType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_info * @see https://violentmonkey.github.io/api/gm/#gm_info */ GM_info: GmInfoType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_log * @available tampermonkey */ GM_log: GmLogType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getValue * @see https://violentmonkey.github.io/api/gm/#gm_getvalue */ GM_getValue: GmGetValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getValues * @see https://violentmonkey.github.io/api/gm/#gm_getvalues */ GM_getValues: GmGetValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setValue * @see https://violentmonkey.github.io/api/gm/#gm_setvalue */ GM_setValue: GmSetValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setValues * @see https://violentmonkey.github.io/api/gm/#gm_setvalues */ GM_setValues: GmSetValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_deleteValue * @see https://violentmonkey.github.io/api/gm/#gm_deletevalue */ GM_deleteValue: GmDeleteValueType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_deleteValues * @see https://violentmonkey.github.io/api/gm/#gm_deletevalues */ GM_deleteValues: GmDeleteValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_listValues * @see https://violentmonkey.github.io/api/gm/#gm_listvalues */ GM_listValues: GmListValuesType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addValueChangeListener * @see https://violentmonkey.github.io/api/gm/#gm_addvaluechangelistener */ GM_addValueChangeListener: GmAddValueChangeListenerType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_removeValueChangeListener * @see https://violentmonkey.github.io/api/gm/#gm_removevaluechangelistener */ GM_removeValueChangeListener: GmRemoveValueChangeListenerType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getResourceText * @see https://violentmonkey.github.io/api/gm/#gm_getresourcetext */ GM_getResourceText: GmGetResourceTextType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getResourceURL * @see https://violentmonkey.github.io/api/gm/#gm_getresourceurl */ GM_getResourceURL: GmGetResourceURLType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addElement * @see https://violentmonkey.github.io/api/gm/#gm_addelement */ GM_addElement: GmAddElementType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_addStyle * @see https://violentmonkey.github.io/api/gm/#gm_addstyle */ GM_addStyle: GmAddStyleType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_openInTab * @see https://violentmonkey.github.io/api/gm/#gm_openintab */ GM_openInTab: GmOpenInTabType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getTab * @available tampermonkey */ GM_getTab: GmGetTabType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_saveTab * @available tampermonkey */ GM_saveTab: GmSaveTab; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_getTabs * @available tampermonkey */ GM_getTabs: GmGetTabsType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_registerMenuCommand * @see https://violentmonkey.github.io/api/gm/#gm_registermenucommand */ GM_registerMenuCommand: GmRegisterMenuCommandType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_unregisterMenuCommand * @see https://violentmonkey.github.io/api/gm/#gm_unregistermenucommand */ GM_unregisterMenuCommand: GmUnregisterMenuCommandType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_notification * @see https://violentmonkey.github.io/api/gm/#gm_notification */ GM_notification: GmNotificationType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_setClipboard * @see https://violentmonkey.github.io/api/gm/#gm_setclipboard */ GM_setClipboard: GmSetClipboardType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_xmlhttpRequest * @see https://violentmonkey.github.io/api/gm/#gm_xmlhttprequest */ GM_xmlhttpRequest: GmXmlhttpRequestType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_download * @see https://violentmonkey.github.io/api/gm/#gm_download */ GM_download: GmDownloadType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_webRequest * @available tampermonkey */ GM_webRequest: GmWebRequestType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.list * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.set * @see https://www.tampermonkey.net/documentation.php#api:GM_cookie.delete * @available tampermonkey */ GM_cookie: GmCookieType; /** * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.setMute * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.getState * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.addStateChangeListener * @see https://www.tampermonkey.net/documentation.php#api:GM_audio.removeStateChangeListener * @available tampermonkey */ GM_audio: GmAudioType; } }