@hocuspocus/common
Version:
shared code for multiple Hocuspocus packages
93 lines (92 loc) • 2.84 kB
TypeScript
import type { Encoder } from 'lib0/encoding';
import type { Event, MessageEvent } from 'ws';
import type { Awareness } from 'y-protocols/awareness';
import type * as Y from 'yjs';
import type { CloseEvent } from '@hocuspocus/common';
import type { IncomingMessage } from './IncomingMessage.ts';
import type { OutgoingMessage } from './OutgoingMessage.ts';
import type { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage.ts';
import type { AwarenessMessage } from './OutgoingMessages/AwarenessMessage.ts';
import type { QueryAwarenessMessage } from './OutgoingMessages/QueryAwarenessMessage.ts';
import type { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage.ts';
import type { SyncStepTwoMessage } from './OutgoingMessages/SyncStepTwoMessage.ts';
import type { UpdateMessage } from './OutgoingMessages/UpdateMessage.ts';
export declare enum MessageType {
Sync = 0,
Awareness = 1,
Auth = 2,
QueryAwareness = 3,
Stateless = 5,
CLOSE = 7,
SyncStatus = 8
}
export declare enum WebSocketStatus {
Connecting = "connecting",
Connected = "connected",
Disconnected = "disconnected"
}
export interface OutgoingMessageInterface {
encoder: Encoder;
type?: MessageType;
}
export interface OutgoingMessageArguments {
documentName: string;
token: string;
document: Y.Doc;
awareness: Awareness;
clients: number[];
states: Map<number, {
[key: string]: any;
}>;
update: any;
payload: string;
encoder: Encoder;
}
export interface Constructable<T> {
new (...args: any): T;
}
export type ConstructableOutgoingMessage = Constructable<AuthenticationMessage> | Constructable<AwarenessMessage> | Constructable<QueryAwarenessMessage> | Constructable<SyncStepOneMessage> | Constructable<SyncStepTwoMessage> | Constructable<UpdateMessage>;
export type onAuthenticationFailedParameters = {
reason: string;
};
export type onAuthenticatedParameters = {
scope: 'read-write' | 'readonly';
};
export type onOpenParameters = {
event: Event;
};
export type onMessageParameters = {
event: MessageEvent;
message: IncomingMessage;
};
export type onOutgoingMessageParameters = {
message: OutgoingMessage;
};
export type onStatusParameters = {
status: WebSocketStatus;
};
export type onSyncedParameters = {
state: boolean;
};
export type onUnsyncedChangesParameters = {
number: number;
};
export type onDisconnectParameters = {
event: CloseEvent;
};
export type onCloseParameters = {
event: CloseEvent;
};
export type onAwarenessUpdateParameters = {
states: StatesArray;
};
export type onAwarenessChangeParameters = {
states: StatesArray;
};
export type onStatelessParameters = {
payload: string;
};
export type StatesArray = {
clientId: number;
[key: string | number]: any;
}[];