UNPKG

etebase

Version:

Etebase TypeScript API for the web and node

161 lines (160 loc) 7.14 kB
import URI from "urijs"; export { deriveKey, ready } from "./Crypto"; export * from "./Exceptions"; import { base64 } from "./Helpers"; import { CollectionAccessLevel, EncryptedCollection, EncryptedCollectionItem, SignedInvitationRead, SignedInvitationWrite, ChunkJson } from "./EncryptedModels"; export interface User { username: string; email: string; } export interface LoginResponseUser extends User { pubkey: Uint8Array; encryptedContent: Uint8Array; } export interface UserProfile { pubkey: Uint8Array; } export declare type LoginChallange = { challenge: Uint8Array; salt: Uint8Array; version: number; }; export declare type LoginChallangeResponse = { challenge: Uint8Array; host: string; }; export declare type LoginResponse = { token: string; user: LoginResponseUser; }; export interface ListResponse<T> { data: T[]; done: boolean; } export interface CollectionItemListResponse<T> extends ListResponse<T> { stoken: string; } export interface CollectionListResponse<T> extends CollectionItemListResponse<T> { removedMemberships?: RemovedCollection[]; } export interface IteratorListResponse<T> extends ListResponse<T> { iterator: string; } export declare type CollectionMemberListResponse<T> = IteratorListResponse<T>; export declare type CollectionInvitationListResponse<T> = IteratorListResponse<T>; export interface RemovedCollection { uid: base64; } export interface CollectionMember { username: string; accessLevel: CollectionAccessLevel; } export interface AcceptedInvitation { encryptionKey: Uint8Array; } export declare enum PrefetchOption { Auto = "auto", Medium = "medium" } export interface ListFetchOptions { limit?: number; } export interface FetchOptions extends ListFetchOptions { stoken?: string | null; prefetch?: PrefetchOption; } export interface ItemFetchOptions extends FetchOptions { withCollection?: boolean; } export interface IteratorFetchOptions extends ListFetchOptions { iterator?: string | null; } export declare type MemberFetchOptions = IteratorFetchOptions; export declare type InvitationFetchOptions = IteratorFetchOptions; export interface RevisionsFetchOptions extends IteratorFetchOptions { prefetch?: PrefetchOption; } export interface WebSocketTicketRequest { collection: string; } export interface WebSocketTicketResponse { ticket: string; } interface AccountOnlineData { serverUrl: string; authToken: string | null; } declare class BaseNetwork { apiBase: URI; constructor(apiBase: string); newCall<T = any>(segments?: string[], extra?: RequestInit, apiBaseIn?: URI): Promise<T>; } export declare class Authenticator extends BaseNetwork { constructor(apiBase: string); isEtebase(): Promise<boolean>; signup(user: User, salt: Uint8Array, loginPubkey: Uint8Array, pubkey: Uint8Array, encryptedContent: Uint8Array): Promise<LoginResponse>; getLoginChallenge(username: string): Promise<LoginChallange>; login(response: Uint8Array, signature: Uint8Array): Promise<LoginResponse>; logout(authToken: string): Promise<void>; changePassword(authToken: string, response: Uint8Array, signature: Uint8Array): Promise<void>; getDashboardUrl(authToken: string): Promise<string>; } declare class BaseManager extends BaseNetwork { protected etebase: AccountOnlineData; constructor(etebase: AccountOnlineData, segments: string[]); newCall<T = any>(segments?: string[], extra?: RequestInit, apiBase?: URI): Promise<T>; protected urlFromFetchOptions(options?: ItemFetchOptions & IteratorFetchOptions): URI; } export declare class CollectionManagerOnline extends BaseManager { constructor(etebase: AccountOnlineData); fetch(colUid: string, options?: FetchOptions): Promise<EncryptedCollection>; list(collectionTypes: Uint8Array[], options?: FetchOptions): Promise<CollectionListResponse<EncryptedCollection>>; create(collection: EncryptedCollection, options?: FetchOptions): Promise<{}>; } export declare class CollectionItemManagerOnline extends BaseManager { constructor(etebase: AccountOnlineData, colUid: string); fetch(itemUid: string, options?: ItemFetchOptions): Promise<EncryptedCollectionItem>; list(options?: ItemFetchOptions): Promise<CollectionItemListResponse<EncryptedCollectionItem>>; itemRevisions(item: EncryptedCollectionItem, options?: RevisionsFetchOptions): Promise<IteratorListResponse<EncryptedCollectionItem>>; create(item: EncryptedCollectionItem): Promise<{}>; fetchUpdates(items: EncryptedCollectionItem[], options?: ItemFetchOptions): Promise<CollectionItemListResponse<EncryptedCollectionItem>>; fetchMulti(items: base64[], options?: ItemFetchOptions): Promise<CollectionItemListResponse<EncryptedCollectionItem>>; batch(items: EncryptedCollectionItem[], deps?: EncryptedCollectionItem[], options?: ItemFetchOptions): Promise<{}>; transaction(items: EncryptedCollectionItem[], deps?: EncryptedCollectionItem[], options?: ItemFetchOptions): Promise<{}>; chunkUpload(item: EncryptedCollectionItem, chunk: ChunkJson, options?: ItemFetchOptions): Promise<{}>; chunkDownload(item: EncryptedCollectionItem, chunkUid: base64, options?: ItemFetchOptions): Promise<Uint8Array>; subscribeChanges(cb: (data: CollectionItemListResponse<EncryptedCollectionItem>) => void, options_?: ItemFetchOptions): Promise<WebSocketHandle>; } export declare class CollectionInvitationManagerOnline extends BaseManager { constructor(etebase: AccountOnlineData); listIncoming(options?: InvitationFetchOptions): Promise<CollectionInvitationListResponse<SignedInvitationRead>>; listOutgoing(options?: InvitationFetchOptions): Promise<CollectionInvitationListResponse<SignedInvitationRead>>; accept(invitation: SignedInvitationRead, collectionType: Uint8Array, encryptionKey: Uint8Array): Promise<{}>; reject(invitation: SignedInvitationRead): Promise<{}>; fetchUserProfile(username: string): Promise<UserProfile>; invite(invitation: SignedInvitationWrite): Promise<{}>; disinvite(invitation: SignedInvitationRead): Promise<{}>; } export declare class CollectionMemberManagerOnline extends BaseManager { constructor(etebase: AccountOnlineData, colUid: string); list(options?: MemberFetchOptions): Promise<CollectionMemberListResponse<CollectionMember>>; remove(username: string): Promise<{}>; leave(): Promise<{}>; modifyAccessLevel(username: string, accessLevel: CollectionAccessLevel): Promise<{}>; } export declare type WebSocketCbType = (message: Uint8Array) => void; export declare class WebSocketHandle { private rws; connected: boolean; constructor(urlProvider: () => Promise<string>, cb: WebSocketCbType); unsubscribe(): Promise<void>; } interface WebSocketUrlOptions { ticket: string; fetchOptions?: FetchOptions; } export declare class WebSocketManagerOnline extends BaseManager { private readonly getUrlOptions; constructor(etebase: AccountOnlineData, getUrlOptions: () => Promise<WebSocketUrlOptions>); subscribe(cb: WebSocketCbType): Promise<WebSocketHandle>; }