API

API 是插件和核心系统交互的桥梁,通过 API 可以执行任何系统允许的操作。

系统相关

v3

类型boolean

系统是否运行在 mainfest v3 版本。

debug

类型boolean

是否运行在调试模式。

version

类型string

系统版本号。

language

类型string

当前系统语言。 (目前支持zh_CN:中文、zh_TW:繁体中文、en:英文、ja:日文、ko:韩语、th:泰语)

device

类型

{
    browser: 'edge' | 'opera' | 'firefox' | '360' | 'chrome' | '';
    apple: {
      phone: boolean;
      ipod: boolean;
      tablet: boolean;
      universal: boolean;
      device: boolean;
    };
    amazon: {
      phone: boolean;
      tablet: boolean;
      device: boolean;
    };
    android: {
      phone: boolean;
      tablet: boolean;
      device: boolean;
    };
    windows: {
      phone: boolean;
      tablet: boolean;
      device: boolean;
    };
    other: {
      blackberry: boolean;
      blackberry10: boolean;
      opera: boolean;
      firefox: boolean;
      chrome: boolean;
      device: boolean;
    };
    phone: boolean;
    tablet: boolean;
  }

运行设备信息。

user

类型

{
  uid: string; // 用户唯一的id
  name?: string; // 用户名称
  avatar?: string; // 用户头像
  mail?: string; // 用户邮箱
  roles: Array<string>; // 用户的角色
  is_logged_in?: boolean; // 用户是否已登陆
}

当前用户信息。

getURL

类型(path: string) => string

获取系统根目录文件地址。

colorScheme

类型{value: '' | 'light' | 'dark'}

系统主题设置(未开启/日间/夜间)。

tables

类型

Array<{
 table: 'apps' | 'option' | 'node'; // 表名
 indexs: string | Array<string>; // indexDB 表索引
 freeze: Array<string>; // 锁定的字段,被锁定的字段不允许导出和清除。
}>

系统数据库表信息。

url2json

类型(url: string) => any

从 url 智能解析正文,生成结构化数据;如输入微信文章,输出标题、作者、创建日期、正文等结构化的数据信息。

path

类型(id?: string) => string

获取官网的地址;如 app.path('download') 是获取地址 👉🏻 https://circlereader.com/download 

match

类型(data: Array<any>, match?: string) => any;

匹配字符串是否在给定的数据内,内部基于 minimatch

isExtPage

类型(url?: string) => boolean

判断 URL 是否是浏览器自身的页面地址,不传参数则是判断当前页面地址。

field

类型

(
    id:
      | string
      | Array<string>
      | {
          [index: string]: any;
        },
    value: any
  ) => any

跨插件临时保存数据,非必要请勿随意使用。传递 id 为string 和对象时为设置单个数据、数组时为批量设置数据。

data

类型(id: string, value?: any): any;

临时保存和获取数据。设置 value 时为设置数据,不设置时为获取数据。

get

类型(id: string, table?: string) => Promise<any>

从数据库查询一条的数据。

set

类型

(id: string | Array<{
  id: string;
  changed?: number;
  value: any;
  [index: string]: any;
}>, value?: any, table?: string) => Promise<any>

写入数据到数据库中。

remove

类型(id: string | Array<string>, table?: string) => Promise<any>

从数据库中删除一条数据。

list

类型

(query?: {
  field?: string;
  keyRange?: any | Array<any>;
  searchIn?: string | Array<string>;
  search?: string;
  order?: 'DESC' | 'ASC';
  match?: {
   [index: string]: string | boolean | Array<string>;
 };
}, pager?: {
  start: number;
  limit: number;
}, table?: string) => Promise<any>

从数据库查询数据。

option

类型(id?: string, value?: any) => Promise<any>

从数据库查询插件的配置项数据;和 get 的区别是:

  • 自动读取插件配置项的默认值,数据库没有从插件提供的默认值获取。
  • 自动合并插件配置项的默认值,数据库保存的数据不完整(仅设置了一个选项)时自动合并入插件提供的默认值。
  • 自动读取当前主题设置下的值,如当前主题是夜间主题,查询主题和样式时自动查询夜间对应的配置。

当 id 不设置时,读取数据库中 id 为插件 ID 的数据。当设置为 option 时,自动读取当前插件的选项值,设置为 display 时,自动读取当前插件在当前主题下的设置。

比如:ID 为 render 的插件中调用 app.option() 时,获取数据库中 id 为 render 对应的数据;调用 app.option('option') 时获取到的是 id 为 render_option 对应的数据;调用 app.option('display') 时,当前主题未开启获取到的是 id 为 render_dispaly 对应的数据,当前主题为日间时获取到的是 id 为 render_light_dispaly 对应的数据,当前主题为日间时获取到的是 id 为 render_dark_dispaly 对应的数据。设置也同样的逻辑。

log

类型(...args: any) => string

系统调试模式下打印日志,格式为“plugin id” => args;如调试模式下,在 id 为 render的插件下调用app.log('我是染河'); 控制台输出 render => 我是染河

action

类型(id?: 'ready' | 'enable' | 'disable' | 'force') => void

修改浏览器右上角 Circle 阅读助手的图标状态。具体如下:

  • ready 识别成功,绿色可点击。
  • enbale 启用,黑色可点击。
  • disable 禁用,黑色不可点击
  • force 禁用,黑色可点击。(强制解析正文)

export

类型

(value?: string | Array<string>) => Promise<{
  version: string;
  data: any;
}>

导出数据。value 是数据库表名,可选:option、node

import

类型

(
    value:
      | string
      | {
          version?: string;
          data: any;
        },
    type?: string
  ) => Promise<any>

 导入数据。type 仅有唯一值:'keep' 表示导入时不清空已有的数据。

reset

类型(value?: string) => Promise<any>

重置系统;设置 value 时表示仅清空数据表为 value 的表。

contextMenus

类型

(
    action: 'create' | 'update' | 'remove' | 'destory' | 'rebuild',
    value?:
      | string
      | {
          id: string;
          type?: string;
          label?: string;
          action?: boolean;
          checked?: boolean;
          priority?: number;
          contexts?: [string];
        }
      | Array<{
          id: string;
          type?: string;
          label?: string;
          action?: boolean;
          checked?: boolean;
          priority?: number;
          contexts?: [string];
        }>
  ) => Promise<any>

 

更新浏览器右键菜单。参数详情见 https://developer.chrome.com/docs/extensions/reference/api/contextMenus

tabs

类型

(
    action: 'create' | 'update' | 'remove' | 'captureVisibleTab' | 'query',
    value?: any
  ) => Promise<any>

管理浏览器当前标签页。参数详情见 https://developer.chrome.com/docs/extensions/reference/api/tabs

fontSettings

类型

(
    action: 'list'
  ) => Promise<Array<{ displayName: string; fontId: string }>>;

获取系统安装字体列表。

windows

类型

(
    action: 'current' | 'create' | 'get' | 'update' | 'remove',
    value?:
      | number
      | {
          id?: number;
          url?: string;
          state?:
            | 'normal'
            | 'minimized'
            | 'maximized'
            | 'fullscreen'
            | 'locked-fullscreen';
          args?: any;
        }
  ) => Promise<any>

管理浏览器窗口。

info

类型(...args: Array<string>) => () => void

弹窗显示一个普通的通知消息,调用返回函数销毁当前弹窗。

warning

类型(...args: Array<string>) => () => void

弹窗显示一个类型为警告的通知消息,调用返回函数销毁当前弹窗。

success

类型(...args: Array<string>) => () => void

弹窗显示一个类型为成功的通知消息,调用返回函数销毁当前弹窗。

error

类型(...args: Array<string>) => () => void

弹窗显示一个类型为错误的通知消息,调用返回函数销毁当前弹窗。

loading

类型(...args: Array<string>) => () => void

弹窗显示一个加载中提醒状态,调用返回函数销毁当前弹窗。

syncUser

类型() => Promise<User>

同步并获取当前用户信息。

cron

类型

(
  callback: () => Promise<any> | boolean | void,
  duration?: number; // 单位:小时
) => Promise<boolean>;

定期执行 callback 返回 true或者不返回任何信息则为处理成功,否则下次仍然继续执行。duration 默认24 小时执行一次。

i18n

类型 (...args: Array<string>) => string

国际化支持。获取当前系统语言对应的语言,插件只能调用到自身设置的语言。有关国际化设置请查看插件开发部分。

fetch

类型

(
 url: string,
 options?: {
  format?: 'json' | 'text' | 'blob';
  [index: string]: any;
 }
) => Promise<any>

发起一个请求,底层调用的 window.fetch,内部已经处理了跨域问题。

on

类型

(

id: string,// 事件的 id

callback: string | any,//事件发生执行的操作

once?: boolean,//订阅一次,执行后销毁

priority?: number//事件触发执行优先级

) => () => void // 返回销毁函数,调用会销毁当前订阅

订阅一个事件。

fire

类型(id: string, ...args: any): void

触发一个事件。

addFilter

类型

(

id: string | string[],

callback: string | any,

once?: boolean,

priority?: number

) => () => void

添加一个过滤器,类似于上面的 on。 

applyFilter

类型

(id: string, ...args: any[]) => any

执行一个过滤器,类似于上面的 fire,但可以通过返回不同的值改变后续过滤器接收到的参数。

hasHook

类型(id: string) => boolean

判断是否有 id 对应的事件被订阅或者过滤。

 removeHook

类型(id: string | string[], callback?: () => void) => void

移除 id 对应事件的订阅或者过滤

偏好设置独有

系统强相关的 API 仅对特定插件开放。

  • listApp 列出已安装插件
  • enable 启用插件
  • disable 禁用插件
  • uninstall 卸载插件
  • install 安装插件
  • apply 运行特定生命周期