UNPKG

open-collaboration-protocol

Version:

Open Collaboration Protocol implementation, part of the Open Collaboration Tools project

83 lines 3.96 kB
import type * as types from './types.js'; import { Encryption } from './messaging/encryption.js'; import { AbstractBroadcastConnection, BroadcastConnection, Handler } from './messaging/abstract-connection.js'; import { MessageTarget } from './messaging/messages.js'; import { MessageTransport } from './transport/transport.js'; export interface RoomHandler { onJoin(handler: Handler<[types.Peer]>): void; leave(): Promise<void>; onLeave(handler: Handler<[types.Peer]>): void; onClose(handler: Handler<[]>): void; onPermissions(handler: Handler<[types.Permissions]>): void; updatePermissions(permissions: types.Permissions): Promise<void>; } export interface PeerHandler { onJoinRequest(handler: Handler<[types.User], types.JoinResponse | undefined>): void; onInfo(handler: Handler<[types.Peer]>): void; onInit(handler: Handler<[types.InitData]>): void; init(target: MessageTarget, data: types.InitData): Promise<void>; } export interface EditorHandler { onOpen(handler: Handler<[string]>): void; open(target: MessageTarget, path: types.Path): Promise<void>; onClose(handler: Handler<[types.Path]>): void; close(path: types.Path): Promise<void>; } export interface FileSystemHandler { onReadFile(handler: Handler<[types.Path], types.FileData>): void; readFile(target: MessageTarget, path: types.Path): Promise<types.FileData>; onWriteFile(handler: Handler<[types.Path, types.FileData]>): void; writeFile(target: MessageTarget, path: types.Path, content: types.FileData): Promise<void>; onStat(handler: Handler<[types.Path], types.FileSystemStat>): void; stat(target: MessageTarget, path: types.Path): Promise<types.FileSystemStat>; onMkdir(handler: Handler<[types.Path]>): void; mkdir(target: MessageTarget, path: types.Path): Promise<void>; onReaddir(handler: Handler<[types.Path], types.FileSystemDirectory>): void; readdir(target: MessageTarget, path: types.Path): Promise<types.FileSystemDirectory>; onDelete(handler: Handler<[types.Path]>): void; delete(target: MessageTarget, path: types.Path): Promise<void>; onRename(handler: Handler<[types.Path, types.Path]>): void; rename(target: MessageTarget, from: types.Path, to: types.Path): Promise<void>; onChange(handler: Handler<[types.FileChangeEvent]>): void; change(event: types.FileChangeEvent): Promise<void>; } export interface SyncHandler { onDataUpdate(handler: Handler<[types.Binary]>): void; dataUpdate(data: types.Binary): Promise<void>; dataUpdate(target: MessageTarget, data: types.Binary): Promise<void>; onAwarenessUpdate(handler: Handler<[types.Binary]>): void; awarenessUpdate(data: types.Binary): Promise<void>; awarenessUpdate(target: MessageTarget, data: types.Binary): Promise<void>; onAwarenessQuery(handler: Handler<[]>): void; awarenessQuery(): Promise<void>; } export interface ProtocolBroadcastConnection extends BroadcastConnection { room: RoomHandler; peer: PeerHandler; fs: FileSystemHandler; editor: EditorHandler; sync: SyncHandler; } export interface ProtocolBroadcastConnectionOptions { privateKey: string; host?: types.Peer; transport: MessageTransport; } export declare function createConnection(options: ProtocolBroadcastConnectionOptions): ProtocolBroadcastConnection; export declare class ProtocolBroadcastConnectionImpl extends AbstractBroadcastConnection { room: RoomHandler; peer: PeerHandler; fs: FileSystemHandler; editor: EditorHandler; sync: SyncHandler; private peers; constructor(options: ProtocolBroadcastConnectionOptions); protected getPublicKey(origin: string): Encryption.AsymmetricKey; private onDidJoinRoom; private onDidLeaveRoom; private onDidClose; private onDidInit; protected getPublicKeys(): Encryption.AsymmetricKey[]; protected getPublicKeysLength(): number; } //# sourceMappingURL=connection.d.ts.map