UNPKG

open-collaboration-protocol

Version:

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

253 lines 6.55 kB
import type { CompressionAlgorithm } from './messaging/messages.js'; export type Path = string; export type Token = string; export type Id = string; export type Binary = Uint8Array; export interface CreateRoomResponse { roomId: Id; roomToken: Token; loginToken?: Token; } export declare namespace CreateRoomResponse { function is(arg: unknown): arg is CreateRoomResponse; function create(roomId: Id, roomToken: Token, loginToken?: Token): CreateRoomResponse; } export interface LoginValidateResponse { valid: boolean; } export declare namespace LoginValidateResponse { function is(arg: unknown): arg is LoginValidateResponse; function create(valid: boolean): LoginValidateResponse; } export interface LoginInitialResponse { pollToken: string; auth: AuthMetadata; } export declare namespace LoginInitialResponse { function is(arg: unknown): arg is LoginInitialResponse; function create(pollToken: string, auth: AuthMetadata): LoginInitialResponse; } export interface AuthMetadata { providers: AuthProvider[]; loginPageUrl?: string; defaultSuccessUrl?: string; } export type AuthProvider = FormAuthProvider | WebAuthProvider; export interface CommonAuthProvider { name: string; group: InfoMessage; label: InfoMessage; details?: InfoMessage; } export interface FormAuthProvider extends CommonAuthProvider { type: 'form'; endpoint: string; fields: FormAuthProviderField[]; } export interface FormAuthProviderField { name: string; required: boolean; label: InfoMessage; placeHolder?: InfoMessage; } export interface WebAuthProvider extends CommonAuthProvider { type: 'web'; endpoint: string; } export interface LoginPollResponse { loginToken?: string; } export declare namespace LoginPollResponse { function is(arg: unknown): arg is LoginPollResponse; function create(loginToken?: string): LoginPollResponse; } export interface JoinRoomInitialResponse { pollToken: string; roomId: string; } export declare namespace JoinRoomInitialResponse { function is(arg: unknown): arg is JoinRoomInitialResponse; function create(pollToken: string, roomId: string): JoinRoomInitialResponse; } export interface JoinRoomResponse { roomId: Id; roomToken: Token; loginToken?: Token; workspace: Workspace; host: Peer; } export declare namespace JoinRoomResponse { function is(arg: unknown): arg is JoinRoomResponse; function create(roomId: Id, roomToken: Token, workspace: Workspace, host: Peer): JoinRoomResponse; } export interface JoinRoomPollResponse extends InfoMessage { failure: boolean; } export declare namespace JoinRoomPollResponse { function is(arg: unknown): arg is JoinRoomPollResponse; function create(code: string, params: string[], message: string, failure: boolean): JoinRoomPollResponse; } export interface ProtocolServerMetaData { owner: string; version: string; transports: string[]; } export interface InfoMessage { code: string; params: string[]; message: string; } export declare namespace InfoMessage { function is(arg: unknown): arg is InfoMessage; function create(code: string, params: string[], message: string): InfoMessage; } export interface User { name: string; email?: string; authProvider?: string; } export interface JoinResponse { workspace: Workspace; } export interface Peer { id: Id; host: boolean; name: string; email?: string; metadata: PeerMetaData; } export interface PeerMetaData { encryption: EncryptionMetaData; compression: CompressionMetaData; } export interface EncryptionMetaData { publicKey: string; } export interface CompressionMetaData { supported: CompressionAlgorithm[]; } export interface InitRequest { protocol: string; } export interface InitData { protocol: string; host: Peer; guests: Peer[]; permissions: Permissions; capabilities: Capabilities; workspace: Workspace; } export interface Workspace { name: string; folders: string[]; } export interface Capabilities { } export interface Room { id: string; host: Peer; guests: Peer[]; permissions: Permissions; } export interface Permissions { readonly: boolean; [key: string]: string | boolean; } export interface FileSystemStat { type: FileType; mtime: number; ctime: number; size: number; permissions?: FilePermission; } export interface FileSystemDirectory { [name: string]: FileType; } export interface FileData { content: Binary; } export declare enum FilePermission { /** * File is readonly. */ Readonly = 1 } export declare enum FileType { Unknown = 0, File = 1, Directory = 2, SymbolicLink = 64 } export interface FileChangeEvent { changes: FileChange[]; } export interface FileChange { type: FileChangeEventType; path: Path; } export declare enum FileChangeEventType { Create = 0, Update = 1, Delete = 2 } export interface ClientAwareness { /** * The peer id of the client. */ peer: string; /** * The client's current editor selection. */ selection?: ClientSelection; } export interface ClientSelection { path: Path; } export interface ClientTextSelection extends ClientSelection { visibleRanges?: Range[]; textSelections: RelativeTextSelection[]; } export declare namespace ClientTextSelection { function is(selection?: ClientSelection): selection is ClientTextSelection; } export declare namespace SelectionDirection { const LeftToRight = 1; const RightToLeft = 2; } export interface ClientId { client: number; clock: number; } export interface RelativeTextSelection { start: RelativeTextPosition; end: RelativeTextPosition; direction: SelectionDirection; } export interface RelativeTextPosition { type: ClientId | null; tname: string | null; item: ClientId | null; assoc: number; } export interface TextDiffChange { range: Range; text: string; } export interface Position { line: number; character: number; } export declare namespace Position { function is(arg: any): arg is Position; function create(line: number, character: number): Position; } export interface Range { start: Position; end: Position; } export declare namespace Range { function is(arg: any): arg is Range; function create(start: Position, end: Position): Range; } export type SelectionDirection = 1 | 2; //# sourceMappingURL=types.d.ts.map