tempermonkey.d.ts | 油猴函数类型

tempermonkey.d.ts | 油猴函数类型

/*
unsafeWindow 对象提供对页面 javascript 函数和变量的完全访问。
* */
declare var unsafeWindow: Window;

/*
获取有关脚本和 TM 的一些信息。
* */
declare var GM_info: {
  version: string,
  scriptWillUpdate: boolean,
  scriptHandler: "Tampermonkey",
  scriptUpdateURL?: string,
  scriptSource: string,
  scriptMetaStr?: string,
  isIncognito: boolean,
  downloadMode: "native" | "disabled" | "browser",
  script: {
    author?: string,
    description?: string,
    excludes: string[],
    homepage?: string,
    icon?: string,
    icon64?: string,
    includes?: string[],
    lastModified: number,
    matches: string[],
    name: string,
    namespace?: string,
    position: number,
    "run-at": string,
    resources: string[],
    unwrap: boolean,
    version: string,
    options: {
      awareOfChrome: boolean,
      run_at: string,
      noframes?: boolean,
      compat_arrayLeft: boolean,
      compat_foreach: boolean,
      compat_forvarin: boolean,
      compat_metadata: boolean,
      compat_uW_gmonkey: boolean,
      override: {
        orig_excludes: string[],
        orig_includes: string[],
        use_includes: string[],
        use_excludes: string[],
        [key: string]: any,
      },
      [key: string]: any,
    },
    [key: string]: any,
  },
  [key: string]: any,
};

/*
将给定的样式添加到文档并返回注入的样式元素。
* */
declare function GM_addStyle(css: string): void;

/*
创建一个由“tag_name”指定的 HTML 元素并应用所有给定的“属性”并返回注入的 HTML 元素。
* */
declare function GM_addElement(tag_name: string, attributes: object)

/*
创建一个由“tag_name”指定的 HTML 元素并应用所有给定的“属性”并返回注入的 HTML 元素。如果给出了“parent_node”,则将其附加到它或以其他方式附加到文档头或体。
* */
declare function GM_addElement(parent_node: HTMLElement, tag_name: string, attributes: object)

/*
从存储中删除“名称”。
* */
declare function GM_deleteValue(name: string): void;

/*
列出存储的所有名称。
* */
declare function GM_listValues(): string[];

/*
将更改侦听器添加到存储并返回侦听器 ID。
'name' 是观察变量的名称。
回调函数的“remote”参数显示该值是从另一个选项卡的实例 (true) 还是在此脚本实例 (false) 中修改的。
因此,不同浏览器选项卡的脚本可以使用此功能相互通信。
* */
declare function GM_addValueChangeListener(name: string, listener: GM_Types.ValueChangeListener): number;

/*
按 ID 删除更改​​侦听器。
* */
declare function GM_removeValueChangeListener(listenerId: number): void;

/*
设置本地存储'name'的值。
* */
declare function GM_setValue(name: string, value: any): void;

/*
从存储中获取 'name' 的值。
* */
declare function GM_getValue(name: string, defaultValue ?: any): any;

/*
将消息打印到控制台。
* */
declare function GM_log(message: string): any;

/*
获取脚本头中预定义的@resource 标记的内容。
* */
declare function GM_getResourceText(name: string): string;

/*
获取脚本标头处预定义 @resource 标记的 base64 编码 URI。
* */
declare function GM_getResourceURL(name: string): string;

/*
在运行此脚本的页面的 Tampermonkey 菜单中注册要显示的菜单,并返回菜单命令 ID。
* */
declare function GM_registerMenuCommand(name: string, listener: Function, accessKey ?: string): number;

/*
使用给定的菜单命令 ID 取消注册先前由 GM_registerMenuCommand 注册的菜单命令。
* */
declare function GM_unregisterMenuCommand(id: number): void;

/*
使用此 url 打开一个新选项卡。
* */
declare function GM_openInTab(url: string, options: GM_Types.OpenTabOptions): void;
/*
使用此 url 打开一个新选项卡。
* */
declare function GM_openInTab(url: string, loadInBackground: boolean): void;
/*
使用此 url 打开一个新选项卡。
* */
declare function GM_openInTab(url: string): void;

/*
创建一个 xmlHttpRequest。
* */
declare function GM_xmlhttpRequest<CONTEXT_TYPE>(details: GM_Types.XHRDetails<CONTEXT_TYPE>): GM_Types.AbortHandle<void>;

/*
将给定的 URL 下载到本地磁盘。
* */
declare function GM_download(details: GM_Types.DownloadDetails): GM_Types.AbortHandle<boolean>;
/*
将给定的 URL 下载到本地磁盘。
* */
declare function GM_download(url: string, filename: string): GM_Types.AbortHandle<boolean>;

/*
只要此选项卡处于打开状态,就获取一个持久对象。
* */
declare function GM_getTab(callback: (obj: object) => any): void;

/*
保存选项卡对象以在页面卸载后重新打开它。
* */
declare function GM_saveTab(obj: object): void;

/*
获取所有选项卡对象作为散列以与其他脚本实例通信。
* */
declare function GM_getTabs(callback: (objs: { [key: number]: object }) => any): void;

/*
显示 HTML5 桌面通知和/或突出显示当前选项卡。
* */
declare function GM_notification(details: GM_Types.NotificationDetails, ondone: Function): void;
/*
显示 HTML5 桌面通知和/或突出显示当前选项卡。
* */
declare function GM_notification(text: string, title: string, image: string, onclick: Function): void;

/*
将数据复制到剪贴板。参数 'info' 可以是像“{ type: 'text', mimetype: 'text/plain'}”这样的对象,或者只是一个表示类型的字符串(“text”或“html”)。
* */
declare function GM_setClipboard(data: string, info ?: string | { type?: string, mimetype?: string }): void;

declare namespace GM_Types {

  type ValueChangeListener = (name: string, oldValue: any, newValue: any, remote: boolean) => any;

  interface OpenTabOptions {
    active?: boolean,
    insert?: boolean,
    setParent?: boolean
  }

  interface XHRResponse<CONTEXT_TYPE> extends Function {

    DONE: 4,
    HEADERS_RECEIVED: 2,
    LOADING: 3,
    OPENED: 1,
    UNSENT: 0

    context: CONTEXT_TYPE,
    finalUrl: string,
    readyState: 0 | 1 | 2 | 3 | 4,
    responseHeaders: string,
    status: number,
    statusText: string,
    response: string | null,
    responseText: string,
    responseXML: Document | null
  }

  interface XHRProgress<CONTEXT_TYPE> extends XHRResponse<CONTEXT_TYPE> {
    done: number,
    lengthComputable: boolean,
    loaded: number,
    position: number,
    total: number,
    totalSize: number
  }

  type Listener<OBJ> = (this: OBJ, event: OBJ) => any;

  interface XHRDetails<CONTEXT_TYPE> {
    method?: "GET" | "HEAD" | "POST",
    url?: string,
    headers?: { readonly [key: string]: string },
    data?: string,
    binary?: boolean,
    timeout?: number,
    context?: CONTEXT_TYPE,
    responseType?: "arraybuffer" | "blob" | "json",
    overrideMimeType?: string,
    anonymous?: boolean,
    fetch?: boolean,
    username?: string,
    password?: string,

    onload?: Listener<XHRResponse<CONTEXT_TYPE>>,
    onloadstart?: Listener<XHRResponse<CONTEXT_TYPE>>,
    onprogress?: Listener<XHRProgress<CONTEXT_TYPE>>,
    onreadystatechange?: Listener<XHRResponse<CONTEXT_TYPE>>,
    ontimeout?: Listener<Function>,
    onabort?: Function,
    onerror?: Function
  }

  interface AbortHandle<RETURN_TYPE> {
    abort(): RETURN_TYPE
  }

  interface DownloadError {
    error: "not_enabled" | "not_whitelisted" | "not_permitted" | "not_supported" | "not_succeeded",
    details?: string
  }

  interface DownloadDetails {
    url: string,
    name: string,
    headers?: { readonly [key: string]: string },
    saveAs?: boolean,
    timeout?: number,
    onerror?: Listener<DownloadError>,
    ontimeout?: Listener<object>,
    onload?: Listener<object>,
    onprogress?: Listener<XHRProgress<void>>
  }

  interface NotificationThis extends NotificationDetails {
    id: string
  }

  type NotificationOnClick = (this: NotificationThis) => any;
  type NotificationOnDone = (this: NotificationThis, clicked: boolean) => any;

  interface NotificationDetails {
    text?: string,
    title?: string,
    image?: string,
    highlight?: boolean,
    timeout?: number
    onclick?: NotificationOnClick,
    ondone?: NotificationOnDone,
  }
}

本文地址:

https://www.cnblogs.com/stumpx/p/15211436.html

===

posted @ 2021-08-31 17:33  stumpx  阅读(447)  评论(0编辑  收藏  举报