etebase
Version:
Etebase TypeScript API for the web and node
179 lines (178 loc) • 8.06 kB
TypeScript
import { BoxCryptoManager } from "./Crypto";
export { ready, getPrettyFingerprint, _setRnSodium, deriveKey, KeyDerivationDifficulty } from "./Crypto";
export * from "./Exceptions";
import { base64 } from "./Helpers";
export { base64, fromBase64, toBase64, randomBytes } from "./Helpers";
import { CollectionAccessLevel, CollectionCryptoManager, MinimalCollectionCryptoManager, CollectionItemCryptoManager, ItemMetadata, EncryptedCollection, EncryptedCollectionItem } from "./EncryptedModels";
export * from "./EncryptedModels";
import { CollectionItemListResponse, FetchOptions, ItemFetchOptions, LoginResponseUser, User, MemberFetchOptions, InvitationFetchOptions, RevisionsFetchOptions, WebSocketHandle } from "./OnlineManagers";
export { User, CollectionMember, FetchOptions, ItemFetchOptions } from "./OnlineManagers";
export { CURRENT_VERSION } from "./Constants";
export interface AccountData {
version: number;
key: Uint8Array;
user: LoginResponseUser;
serverUrl: string;
authToken?: string;
}
export interface AccountDataStored {
version: number;
encryptedData: Uint8Array;
}
export declare class Account {
private mainKey;
private version;
user: LoginResponseUser;
serverUrl: string;
authToken: string | null;
private constructor();
static isEtebaseServer(serverUrl: string): Promise<boolean>;
static signup(user: User, password: string, serverUrl?: string): Promise<Account>;
static login(username: string, password: string, serverUrl?: string): Promise<Account>;
fetchToken(): Promise<void>;
logout(): Promise<void>;
changePassword(password: string): Promise<void>;
getDashboardUrl(): Promise<string>;
save(encryptionKey_?: Uint8Array): Promise<base64>;
static restore(accountDataStored_: base64, encryptionKey_?: Uint8Array): Promise<Account>;
getCollectionManager(): CollectionManager;
getInvitationManager(): CollectionInvitationManager;
_getCryptoManager(): import("./EncryptedModels").AccountCryptoManager;
_getIdentityCryptoManager(): BoxCryptoManager;
}
export declare class CollectionManager {
private readonly etebase;
private readonly onlineManager;
constructor(etebase: Account);
create<T>(colType: string, meta: ItemMetadata<T>, content: Uint8Array | string): Promise<Collection>;
fetch(colUid: base64, options?: FetchOptions): Promise<Collection>;
list(colType: string | string[], options?: FetchOptions): Promise<{
data: Collection[];
removedMemberships?: import("./OnlineManagers").RemovedCollection[] | undefined;
stoken: string;
done: boolean;
}>;
upload(collection: Collection, options?: FetchOptions): Promise<void>;
transaction(collection: Collection, options?: FetchOptions): Promise<void>;
cacheSave(collection: Collection, options?: {
saveContent: boolean;
}): Uint8Array;
cacheLoad(cache: Uint8Array): Collection;
getItemManager(col_: Collection): ItemManager;
getMemberManager(col: Collection): CollectionMemberManager;
}
export declare class ItemManager {
private readonly collectionCryptoManager;
private readonly onlineManager;
private readonly collectionUid;
constructor(etebase: Account, collectionCryptoManager: MinimalCollectionCryptoManager, colUid: string);
create<T>(meta: ItemMetadata<T>, content: Uint8Array | string): Promise<Item>;
fetch(itemUid: base64, options?: ItemFetchOptions): Promise<Item>;
list(options?: ItemFetchOptions): Promise<{
data: Item[];
stoken: string;
done: boolean;
}>;
itemRevisions(item: Item, options?: RevisionsFetchOptions): Promise<{
data: Item[];
iterator: string;
done: boolean;
}>;
private itemsPrepareForUpload;
fetchUpdates(items: Item[], options?: ItemFetchOptions): Promise<{
data: Item[];
stoken: string;
done: boolean;
}>;
fetchMulti(items: base64[], options?: ItemFetchOptions): Promise<{
data: Item[];
stoken: string;
done: boolean;
}>;
batch(items: Item[], deps?: Item[] | null, options?: ItemFetchOptions): Promise<void>;
transaction(items: Item[], deps?: Item[] | null, options?: ItemFetchOptions): Promise<void>;
uploadContent(item: Item): Promise<void>;
downloadContent(item: Item): Promise<void>;
subscribeChanges(cb: (data: CollectionItemListResponse<Item>) => void, options?: ItemFetchOptions): Promise<WebSocketHandle>;
cacheSave(item: Item, options?: {
saveContent: boolean;
}): Uint8Array;
cacheLoad(cache: Uint8Array): Item;
}
export interface SignedInvitationContent {
encryptionKey: Uint8Array;
collectionType: string;
}
export interface SignedInvitation {
uid: base64;
version: number;
username: string;
collection: base64;
accessLevel: CollectionAccessLevel;
signedEncryptionKey: Uint8Array;
fromUsername?: string;
fromPubkey: Uint8Array;
}
export declare class CollectionInvitationManager {
private readonly etebase;
private readonly onlineManager;
constructor(etebase: Account);
listIncoming(options?: InvitationFetchOptions): Promise<import("./OnlineManagers").CollectionInvitationListResponse<import("./EncryptedModels").SignedInvitationRead>>;
listOutgoing(options?: InvitationFetchOptions): Promise<import("./OnlineManagers").CollectionInvitationListResponse<import("./EncryptedModels").SignedInvitationRead>>;
accept(invitation: SignedInvitation): Promise<{}>;
reject(invitation: SignedInvitation): Promise<{}>;
fetchUserProfile(username: string): Promise<import("./OnlineManagers").UserProfile>;
invite(col: Collection, username: string, pubkey: Uint8Array, accessLevel: CollectionAccessLevel): Promise<void>;
disinvite(invitation: SignedInvitation): Promise<{}>;
get pubkey(): Uint8Array;
}
export declare class CollectionMemberManager {
private readonly etebase;
private readonly onlineManager;
constructor(etebase: Account, _collectionManager: CollectionManager, encryptedCollection: EncryptedCollection);
list(options?: MemberFetchOptions): Promise<import("./OnlineManagers").CollectionMemberListResponse<import("./OnlineManagers").CollectionMember>>;
remove(username: string): Promise<{}>;
leave(): Promise<{}>;
modifyAccessLevel(username: string, accessLevel: CollectionAccessLevel): Promise<{}>;
}
export declare enum OutputFormat {
Uint8Array = 0,
String = 1
}
export declare class Collection {
private readonly cryptoManager;
readonly encryptedCollection: EncryptedCollection;
constructor(cryptoManager: CollectionCryptoManager, encryptedCollection: EncryptedCollection);
verify(): boolean;
setMeta<T>(meta: ItemMetadata<T>): void;
getMeta<T>(): ItemMetadata<T>;
setContent(content: Uint8Array | string): Promise<void>;
getContent(outputFormat?: OutputFormat.Uint8Array): Promise<Uint8Array>;
getContent(outputFormat?: OutputFormat.String): Promise<string>;
delete(preserveContent?: boolean): void;
get uid(): string;
get etag(): string;
get isDeleted(): boolean;
get stoken(): string | null;
get accessLevel(): CollectionAccessLevel;
getCollectionType(): string;
get item(): Item;
}
export declare class Item {
private readonly cryptoManager;
readonly encryptedItem: EncryptedCollectionItem;
readonly collectionUid: string;
constructor(collectionUid: string, cryptoManager: CollectionItemCryptoManager, encryptedItem: EncryptedCollectionItem);
verify(): boolean;
setMeta<T>(meta: ItemMetadata<T>): void;
getMeta<T>(): ItemMetadata<T>;
setContent(content: Uint8Array | string): Promise<void>;
getContent(outputFormat?: OutputFormat.Uint8Array): Promise<Uint8Array>;
getContent(outputFormat?: OutputFormat.String): Promise<string>;
delete(preserveContent?: boolean): void;
get uid(): string;
get etag(): string;
get isDeleted(): boolean;
get isMissingContent(): boolean;
_clone(): Item;
}