UNPKG

zotero-types

Version:

This package contains type definitions for Zotero (https://www.zotero.org/) plugin.

147 lines (137 loc) 3.94 kB
/// <reference path="../../internal.d.ts" /> declare namespace _ZoteroTypes { namespace Notifier { type Event = | "add" | "modify" | "delete" | "move" | "remove" | "refresh" | "redraw" | "trash" | "unreadCountUpdated" | "index" | "open" | "close" | "select"; type Type = | "collection" | "search" | "share" | "share-items" | "item" | "file" | "collection-item" | "item-tag" | "tag" | "setting" | "group" | "trash" | "bucket" | "relation" | "feed" | "feedItem" | "sync" | "api-key" | "tab" | "itemtree" | "itempane"; type Notify = ( event: Event, type: Type, ids: string[] | number[], extraData: anyObj, ) => void | Promise<void>; interface Queue { id: string; _queue: { [type in Type]: Array<{ ids: string[]; data: anyObj }> }; size: number; options: object; new (options?: object): this; } } interface Notifier { readonly EVENT_LEVEL_OPTIONS: ["autoSyncDelay", "skipAutoSync"]; /** * @param {Object} [ref] signature {notify: function(event, type, ids, extraData) {}} * @param {Array} [types] a list of types of events observer should be triggered on * @param {String} [id] an id of the observer used in debug output * @param {Integer} [priority] lower numbers correspond to higher priority of observer execution * @returns {string} */ registerObserver( ref: { notify: Notifier.Notify }, types?: Notifier.Type[], id?: string, priority?: number, ): string; unregisterObserver(id: string): void; /** * Trigger a notification to the appropriate observers * * Possible values: * * event: 'add', 'modify', 'delete', 'move' ('c', for changing parent), * 'remove' (ci, it), 'refresh', 'redraw', 'trash', 'unreadCountUpdated', 'index' * type - 'collection', 'search', 'item', 'collection-item', 'item-tag', 'tag', * 'group', 'relation', 'feed', 'feedItem' * ids - single id or array of ids * * Notes: * * - If event queuing is on, events will not fire until commit() is called * unless _force_ is true. * * - New events and types should be added to the order arrays in commit() **/ trigger( event: Notifier.Event, type: Notifier.Type, ids: number | number[], extraData?: anyObj, force?: boolean, ): Promise<void | true>; /** * Queue an event until the end of the current notifier transaction * * Takes the same parameters as trigger() * * @throws If a notifier transaction isn't currently open */ queue( event: Notifier.Event, type: Notifier.Type, ids: string[], extraData: { [option in "autoSyncDelay" | "skipAutoSync"]: unknown }, queue: Notifier.Queue, ): void; /** * Begin queueing event notifications (i.e. don't notify the observers) * * Note: Be sure the matching commit() gets called (e.g. in a finally{...} block) or * notifications will break until Firefox is restarted or commit(true)/reset() is called manually * * @param {String} [transactionID] */ begin(transactionID?: boolean): void; /** * Send notifications for ids in the event queue * * @param {Zotero.Notifier.Queue|Zotero.Notifier.Queue[]} [queues] - One or more queues to use * instead of the internal queue * @param {String} [transactionID] */ commit( queues?: Notifier.Queue | Notifier.Queue[], transactionID?: boolean, ): Promise<void>; /* * Reset the event queue */ reset(transactionID?: boolean): void; } } declare namespace Zotero { const Notifier: _ZoteroTypes.Notifier; }