zotero-types
Version:
This package contains type definitions for Zotero (https://www.zotero.org/) plugin.
124 lines (103 loc) • 3.7 kB
TypeScript
/// <reference path="item.d.ts" />
declare namespace _ZoteroTypes {
namespace Library {
interface Params {
libraryType?: string;
editable?: boolean;
filesEditable?: boolean;
libraryVersion?: number;
storageVersion?: number;
lastSync?: Date;
archived?: boolean;
}
abstract class LibraryAbstract {
abstract _objectType: string;
abstract readonly _childObjectTypes: ["item", "collection", "search"];
// Immutable libraries
abstract readonly fixedLibraries: ["user"];
// Valid library types
abstract readonly libraryTypes: string[];
abstract libraryType: "user" | "group" | "feed";
// Converts DB column name to (internal) object property
static _colToProp(c: string): string;
static readonly _dbColumns: string[];
// Select all columns in a unique manner, so we can JOIN tables with same column names (e.g. version)
static readonly _rowSQLSelect: string;
// The actual select statement for above columns
static readonly _rowSQL: string;
static prototype: Zotero.Library;
constructor(params?: _ZoteroTypes.Library.Params);
readonly libraryID: number;
id: number;
/**
* Get the library-type-specific id for the library (e.g., userID for user library,
* groupID for group library)
*
* @property
*/
readonly libraryTypeID: number;
readonly isGroup: boolean;
libraryVersion: number;
readonly syncable: boolean;
readonly lastSync: Date;
readonly name: string;
readonly treeViewID: string;
readonly treeViewImage: _ZoteroTypes.IconURI;
readonly hasTrash: boolean;
readonly allowsLinkedFiles: boolean;
editable: boolean;
filesEditable: boolean;
storageVersion: number;
archived: boolean;
storageDownloadNeeded: boolean;
_isValidProp(prop: string): boolean;
_loadDataFromRow(row: object): void;
_reloadFromDB(): Promise<void>;
/**
* Load object data in this library
*/
loadAllDataTypes(): Promise<void>;
getDataLoaded(objectType: _ZoteroTypes.ObjectType): boolean;
setDataLoading(objectType: _ZoteroTypes.ObjectType): void;
getDataLoadedPromise(
objectType: _ZoteroTypes.ObjectType,
): Promise<unknown> | null;
setDataLoaded(objectType: _ZoteroTypes.ObjectType): void;
/**
* Wait for a given data type to load, loading it now if necessary
*/
waitForDataLoad(objectType: _ZoteroTypes.ObjectType): Promise<void>;
isChildObjectAllowed(type: _ZoteroTypes.ObjectType): boolean;
updateLastSyncTime(): void;
save(options?: object): Promise<false | void>;
saveTx(options?: object): Promise<false | void>;
eraseTx(options?: object): Promise<false | void>;
erase(options?: object): Promise<false | void>;
hasCollections(): boolean;
updateCollections(): Promise<void>;
hasSearches(): boolean;
updateSearches(): Promise<void>;
hasItems(): Promise<boolean>;
hasItem(item: Zotero.Item): boolean;
}
type LibraryLike = Zotero.Library | Zotero.Group | Zotero.Feed;
}
}
declare namespace Zotero {
class Library extends _ZoteroTypes.Library.LibraryAbstract {
_objectType: "library";
_childObjectTypes: ["item", "collection", "search"];
fixedLibraries: ["user"];
libraryTypes: ["user"];
libraryType: "user" | "group" | "feed";
static readonly _dbColumns: [
"type",
"editable",
"filesEditable",
"version",
"storageVersion",
"lastSync",
"archived",
];
}
}