open-collaboration-protocol
Version:
Open Collaboration Protocol implementation, part of the Open Collaboration Tools project
51 lines (42 loc) • 2.82 kB
text/typescript
// ******************************************************************************
// Copyright 2024 TypeFox GmbH
// This program and the accompanying materials are made available under the
// terms of the MIT License, which is available in the project root.
// ******************************************************************************
import * as types from './types.js';
import { BroadcastType, RequestType, NotificationType } from './messaging/messages.js';
export namespace Messages {
export namespace Peer {
export const Join = new RequestType<[types.User], types.JoinResponse | undefined>('peer/join');
export const Info = new NotificationType<[types.Peer]>('peer/info');
export const Init = new NotificationType<[types.InitData]>('peer/init');
}
export namespace Room {
export const Joined = new BroadcastType<[types.Peer]>('room/joined');
export const Left = new BroadcastType<[types.Peer]>('room/left');
export const Leave = new NotificationType<[]>('room/leave');
export const PermissionsUpdated = new BroadcastType<[types.Permissions]>('room/permissionsUpdated');
export const Closed = new BroadcastType('room/closed');
}
export namespace Editor {
export const Open = new NotificationType<[types.Path]>('editor/open');
export const Close = new BroadcastType<[types.Path]>('editor/close');
}
export namespace Sync {
export const DataUpdate = new BroadcastType<[types.Binary]>('sync/dataUpdate');
export const DataNotify = new NotificationType<[types.Binary]>('sync/dataNotify');
export const AwarenessUpdate = new BroadcastType<[types.Binary]>('sync/awarenessUpdate');
export const AwarenessQuery = new BroadcastType<[]>('sync/awarenessQuery');
export const AwarenessNotify = new NotificationType<[types.Binary]>('sync/awarenessNotify');
}
export namespace FileSystem {
export const Stat = new RequestType<[types.Path], types.FileSystemStat>('fileSystem/stat');
export const Mkdir = new RequestType<[types.Path], undefined>('fileSystem/mkdir');
export const ReadFile = new RequestType<[types.Path], types.FileData>('fileSystem/readFile');
export const WriteFile = new RequestType<[types.Path, types.FileData], undefined>('fileSystem/writeFile');
export const ReadDir = new RequestType<[types.Path], Record<string, types.FileType>>('fileSystem/readDir');
export const Delete = new RequestType<[types.Path], undefined>('fileSystem/delete');
export const Rename = new RequestType<[types.Path, types.Path], undefined>('fileSystem/rename');
export const Change = new BroadcastType<[types.FileChangeEvent]>('fileSystem/change');
}
}