@hocuspocus/extension-logger 2.1.0-alpha.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hocuspocus-logger.cjs +82 -82
- package/dist/hocuspocus-logger.esm.js +82 -82
- package/dist/packages/common/src/CloseEvents.d.ts +29 -29
- package/dist/packages/common/src/auth.d.ts +6 -6
- package/dist/packages/common/src/awarenessStatesToArray.d.ts +3 -3
- package/dist/packages/common/src/index.d.ts +4 -4
- package/dist/packages/common/src/types.d.ts +10 -10
- package/dist/packages/extension-database/src/Database.d.ts +30 -30
- package/dist/packages/extension-database/src/index.d.ts +1 -1
- package/dist/packages/extension-logger/src/Logger.d.ts +67 -67
- package/dist/packages/extension-logger/src/index.d.ts +1 -1
- package/dist/packages/extension-redis/src/Redis.d.ts +116 -95
- package/dist/packages/extension-redis/src/index.d.ts +1 -1
- package/dist/packages/extension-sqlite/src/SQLite.d.ts +26 -26
- package/dist/packages/extension-sqlite/src/index.d.ts +1 -1
- package/dist/packages/extension-throttle/src/index.d.ts +31 -31
- package/dist/packages/extension-webhook/src/index.d.ts +57 -57
- package/dist/packages/provider/src/EventEmitter.d.ts +9 -9
- package/dist/packages/provider/src/HocuspocusProvider.d.ts +110 -110
- package/dist/packages/provider/src/HocuspocusProviderWebsocket.d.ts +115 -115
- package/dist/packages/provider/src/IncomingMessage.d.ts +16 -16
- package/dist/packages/provider/src/MessageReceiver.d.ts +13 -13
- package/dist/packages/provider/src/MessageSender.d.ts +10 -10
- package/dist/packages/provider/src/OutgoingMessage.d.ts +9 -9
- package/dist/packages/provider/src/OutgoingMessages/AuthenticationMessage.d.ts +7 -7
- package/dist/packages/provider/src/OutgoingMessages/AwarenessMessage.d.ts +8 -8
- package/dist/packages/provider/src/OutgoingMessages/CloseMessage.d.ts +8 -8
- package/dist/packages/provider/src/OutgoingMessages/QueryAwarenessMessage.d.ts +8 -8
- package/dist/packages/provider/src/OutgoingMessages/StatelessMessage.d.ts +7 -7
- package/dist/packages/provider/src/OutgoingMessages/SyncStepOneMessage.d.ts +8 -8
- package/dist/packages/provider/src/OutgoingMessages/SyncStepTwoMessage.d.ts +8 -8
- package/dist/packages/provider/src/OutgoingMessages/UpdateMessage.d.ts +7 -7
- package/dist/packages/provider/src/TiptapCollabProvider.d.ts +11 -11
- package/dist/packages/provider/src/TiptapCollabProviderWebsocket.d.ts +11 -11
- package/dist/packages/provider/src/index.d.ts +5 -5
- package/dist/packages/provider/src/types.d.ts +84 -84
- package/dist/packages/server/src/ClientConnection.d.ts +56 -0
- package/dist/packages/server/src/Connection.d.ts +71 -71
- package/dist/packages/server/src/Debugger.d.ts +14 -14
- package/dist/packages/server/src/DirectConnection.d.ts +14 -0
- package/dist/packages/server/src/Document.d.ts +91 -88
- package/dist/packages/server/src/Hocuspocus.d.ts +103 -108
- package/dist/packages/server/src/IncomingMessage.d.ts +21 -21
- package/dist/packages/server/src/MessageReceiver.d.ts +12 -12
- package/dist/packages/server/src/OutgoingMessage.d.ts +20 -20
- package/dist/packages/server/src/index.d.ts +8 -8
- package/dist/packages/server/src/types.d.ts +270 -264
- package/dist/packages/server/src/util/getParameters.d.ts +8 -0
- package/dist/packages/transformer/src/Prosemirror.d.ts +11 -11
- package/dist/packages/transformer/src/Tiptap.d.ts +10 -10
- package/dist/packages/transformer/src/index.d.ts +3 -3
- package/dist/packages/transformer/src/types.d.ts +5 -5
- package/dist/playground/backend/src/default.d.ts +1 -1
- package/dist/playground/backend/src/express.d.ts +1 -1
- package/dist/playground/backend/src/koa.d.ts +1 -1
- package/dist/playground/backend/src/load-document.d.ts +1 -1
- package/dist/playground/backend/src/redis.d.ts +1 -1
- package/dist/playground/backend/src/slow.d.ts +1 -1
- package/dist/playground/backend/src/tiptapcollab.d.ts +1 -1
- package/dist/playground/backend/src/webhook.d.ts +1 -1
- package/dist/playground/frontend/src/main.d.ts +1 -1
- package/dist/playground/frontend/vite.config.d.ts +2 -2
- package/dist/tests/extension-database/fetch.d.ts +1 -1
- package/dist/tests/extension-logger/onListen.d.ts +1 -1
- package/dist/tests/extension-redis/closeConnections.d.ts +1 -1
- package/dist/tests/extension-redis/getConnectionCount.d.ts +1 -1
- package/dist/tests/extension-redis/getDocumentsCount.d.ts +1 -1
- package/dist/tests/extension-redis/onAwarenessChange.d.ts +1 -1
- package/dist/tests/extension-redis/onChange.d.ts +1 -1
- package/dist/tests/extension-redis/onStateless.d.ts +1 -1
- package/dist/tests/extension-redis/onStoreDocument.d.ts +1 -1
- package/dist/tests/extension-throttle/banning.d.ts +1 -1
- package/dist/tests/extension-throttle/configuration.d.ts +1 -1
- package/dist/tests/provider/observe.d.ts +1 -1
- package/dist/tests/provider/observeDeep.d.ts +1 -1
- package/dist/tests/provider/onAuthenticated.d.ts +1 -1
- package/dist/tests/provider/onAuthenticationFailed.d.ts +1 -1
- package/dist/tests/provider/onAwarenessChange.d.ts +1 -1
- package/dist/tests/provider/onAwarenessUpdate.d.ts +1 -1
- package/dist/tests/provider/onClose.d.ts +1 -1
- package/dist/tests/provider/onConnect.d.ts +1 -1
- package/dist/tests/provider/onDisconnect.d.ts +1 -1
- package/dist/tests/provider/onMessage.d.ts +1 -1
- package/dist/tests/provider/onOpen.d.ts +1 -1
- package/dist/tests/provider/onStateless.d.ts +1 -1
- package/dist/tests/provider/onSynced.d.ts +1 -1
- package/dist/tests/providerwebsocket/configuration.d.ts +1 -1
- package/dist/tests/server/address.d.ts +1 -1
- package/dist/tests/server/afterStoreDocument.d.ts +1 -1
- package/dist/tests/server/beforeBroadcastStateless.d.ts +1 -1
- package/dist/tests/server/beforeHandleMessage.d.ts +1 -1
- package/dist/tests/server/closeConnections.d.ts +1 -1
- package/dist/tests/server/getConnectionsCount.d.ts +1 -1
- package/dist/tests/server/getDocumentsCount.d.ts +1 -1
- package/dist/tests/server/getMessageLogs.d.ts +1 -1
- package/dist/tests/server/listen.d.ts +1 -1
- package/dist/tests/server/onAuthenticate.d.ts +1 -1
- package/dist/tests/server/onAwarenessUpdate.d.ts +1 -1
- package/dist/tests/server/onChange.d.ts +1 -1
- package/dist/tests/server/onClose.d.ts +1 -1
- package/dist/tests/server/onConfigure.d.ts +1 -1
- package/dist/tests/server/onConnect.d.ts +1 -1
- package/dist/tests/server/onDestroy.d.ts +1 -1
- package/dist/tests/server/onDisconnect.d.ts +1 -1
- package/dist/tests/server/onListen.d.ts +1 -1
- package/dist/tests/server/onLoadDocument.d.ts +1 -1
- package/dist/tests/server/onRequest.d.ts +1 -1
- package/dist/tests/server/onStateless.d.ts +1 -1
- package/dist/tests/server/onStoreDocument.d.ts +1 -1
- package/dist/tests/server/onUpgrade.d.ts +1 -1
- package/dist/tests/server/openDirectConnection.d.ts +1 -0
- package/dist/tests/server/requiresAuthentication.d.ts +1 -1
- package/dist/tests/server/websocketError.d.ts +1 -1
- package/dist/tests/transformer/TiptapTransformer.d.ts +1 -1
- package/dist/tests/utils/createDirectory.d.ts +1 -1
- package/dist/tests/utils/flushRedis.d.ts +1 -1
- package/dist/tests/utils/index.d.ts +9 -9
- package/dist/tests/utils/newHocuspocus.d.ts +2 -2
- package/dist/tests/utils/newHocuspocusProvider.d.ts +3 -3
- package/dist/tests/utils/newHocuspocusProviderWebsocket.d.ts +3 -3
- package/dist/tests/utils/randomInteger.d.ts +1 -1
- package/dist/tests/utils/redisConnectionSettings.d.ts +4 -4
- package/dist/tests/utils/removeDirectory.d.ts +1 -1
- package/dist/tests/utils/retryableAssertion.d.ts +2 -2
- package/dist/tests/utils/sleep.d.ts +1 -1
- package/package.json +4 -3
- package/src/index.ts +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as encoding from 'lib0/encoding';
|
|
2
|
-
import { MessageType, OutgoingMessageArguments } from '../types';
|
|
3
|
-
import { OutgoingMessage } from '../OutgoingMessage';
|
|
4
|
-
export declare class SyncStepOneMessage extends OutgoingMessage {
|
|
5
|
-
type: MessageType;
|
|
6
|
-
description: string;
|
|
7
|
-
get(args: Partial<OutgoingMessageArguments>): encoding.Encoder;
|
|
8
|
-
}
|
|
1
|
+
import * as encoding from 'lib0/encoding';
|
|
2
|
+
import { MessageType, OutgoingMessageArguments } from '../types.js';
|
|
3
|
+
import { OutgoingMessage } from '../OutgoingMessage.js';
|
|
4
|
+
export declare class SyncStepOneMessage extends OutgoingMessage {
|
|
5
|
+
type: MessageType;
|
|
6
|
+
description: string;
|
|
7
|
+
get(args: Partial<OutgoingMessageArguments>): encoding.Encoder;
|
|
8
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as encoding from 'lib0/encoding';
|
|
2
|
-
import { MessageType, OutgoingMessageArguments } from '../types';
|
|
3
|
-
import { OutgoingMessage } from '../OutgoingMessage';
|
|
4
|
-
export declare class SyncStepTwoMessage extends OutgoingMessage {
|
|
5
|
-
type: MessageType;
|
|
6
|
-
description: string;
|
|
7
|
-
get(args: Partial<OutgoingMessageArguments>): encoding.Encoder;
|
|
8
|
-
}
|
|
1
|
+
import * as encoding from 'lib0/encoding';
|
|
2
|
+
import { MessageType, OutgoingMessageArguments } from '../types.js';
|
|
3
|
+
import { OutgoingMessage } from '../OutgoingMessage.js';
|
|
4
|
+
export declare class SyncStepTwoMessage extends OutgoingMessage {
|
|
5
|
+
type: MessageType;
|
|
6
|
+
description: string;
|
|
7
|
+
get(args: Partial<OutgoingMessageArguments>): encoding.Encoder;
|
|
8
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { MessageType, OutgoingMessageArguments } from '../types';
|
|
2
|
-
import { OutgoingMessage } from '../OutgoingMessage';
|
|
3
|
-
export declare class UpdateMessage extends OutgoingMessage {
|
|
4
|
-
type: MessageType;
|
|
5
|
-
description: string;
|
|
6
|
-
get(args: Partial<OutgoingMessageArguments>): import("lib0/encoding").Encoder;
|
|
7
|
-
}
|
|
1
|
+
import { MessageType, OutgoingMessageArguments } from '../types.js';
|
|
2
|
+
import { OutgoingMessage } from '../OutgoingMessage.js';
|
|
3
|
+
export declare class UpdateMessage extends OutgoingMessage {
|
|
4
|
+
type: MessageType;
|
|
5
|
+
description: string;
|
|
6
|
+
get(args: Partial<OutgoingMessageArguments>): import("lib0/encoding").Encoder;
|
|
7
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { HocuspocusProvider, HocuspocusProviderConfiguration } from './HocuspocusProvider';
|
|
2
|
-
export type TiptapCollabProviderConfiguration = Required<Pick<HocuspocusProviderConfiguration, 'name'>> & Partial<HocuspocusProviderConfiguration> & AdditionalTiptapCollabProviderConfiguration;
|
|
3
|
-
export interface AdditionalTiptapCollabProviderConfiguration {
|
|
4
|
-
/**
|
|
5
|
-
* A Hocuspocus Cloud App ID, get one here: https://collab.tiptap.dev
|
|
6
|
-
*/
|
|
7
|
-
appId: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class TiptapCollabProvider extends HocuspocusProvider {
|
|
10
|
-
constructor(configuration: TiptapCollabProviderConfiguration);
|
|
11
|
-
}
|
|
1
|
+
import { HocuspocusProvider, HocuspocusProviderConfiguration } from './HocuspocusProvider.js';
|
|
2
|
+
export type TiptapCollabProviderConfiguration = Required<Pick<HocuspocusProviderConfiguration, 'name'>> & Partial<HocuspocusProviderConfiguration> & AdditionalTiptapCollabProviderConfiguration;
|
|
3
|
+
export interface AdditionalTiptapCollabProviderConfiguration {
|
|
4
|
+
/**
|
|
5
|
+
* A Hocuspocus Cloud App ID, get one here: https://collab.tiptap.dev
|
|
6
|
+
*/
|
|
7
|
+
appId: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class TiptapCollabProvider extends HocuspocusProvider {
|
|
10
|
+
constructor(configuration: TiptapCollabProviderConfiguration);
|
|
11
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { CompleteHocuspocusProviderWebsocketConfiguration, HocuspocusProviderWebsocket } from './HocuspocusProviderWebsocket';
|
|
2
|
-
export type TiptapCollabProviderWebsocketConfiguration = Partial<CompleteHocuspocusProviderWebsocketConfiguration> & AdditionalTiptapCollabProviderWebsocketConfiguration;
|
|
3
|
-
export interface AdditionalTiptapCollabProviderWebsocketConfiguration {
|
|
4
|
-
/**
|
|
5
|
-
* A Hocuspocus Cloud App ID, get one here: https://collab.tiptap.dev
|
|
6
|
-
*/
|
|
7
|
-
appId: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class TiptapCollabProviderWebsocket extends HocuspocusProviderWebsocket {
|
|
10
|
-
constructor(configuration: TiptapCollabProviderWebsocketConfiguration);
|
|
11
|
-
}
|
|
1
|
+
import { CompleteHocuspocusProviderWebsocketConfiguration, HocuspocusProviderWebsocket } from './HocuspocusProviderWebsocket.js';
|
|
2
|
+
export type TiptapCollabProviderWebsocketConfiguration = Partial<CompleteHocuspocusProviderWebsocketConfiguration> & AdditionalTiptapCollabProviderWebsocketConfiguration;
|
|
3
|
+
export interface AdditionalTiptapCollabProviderWebsocketConfiguration {
|
|
4
|
+
/**
|
|
5
|
+
* A Hocuspocus Cloud App ID, get one here: https://collab.tiptap.dev
|
|
6
|
+
*/
|
|
7
|
+
appId: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class TiptapCollabProviderWebsocket extends HocuspocusProviderWebsocket {
|
|
10
|
+
constructor(configuration: TiptapCollabProviderWebsocketConfiguration);
|
|
11
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './HocuspocusProvider';
|
|
2
|
-
export * from './TiptapCollabProvider';
|
|
3
|
-
export * from './TiptapCollabProviderWebsocket';
|
|
4
|
-
export * from './HocuspocusProviderWebsocket';
|
|
5
|
-
export * from './types';
|
|
1
|
+
export * from './HocuspocusProvider.js';
|
|
2
|
+
export * from './TiptapCollabProvider.js';
|
|
3
|
+
export * from './TiptapCollabProviderWebsocket.js';
|
|
4
|
+
export * from './HocuspocusProviderWebsocket.js';
|
|
5
|
+
export * from './types.js';
|
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import { Awareness } from 'y-protocols/awareness';
|
|
2
|
-
import * as Y from 'yjs';
|
|
3
|
-
import { Encoder } from 'lib0/encoding';
|
|
4
|
-
import type { Event, CloseEvent, MessageEvent } from 'ws';
|
|
5
|
-
import { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage';
|
|
6
|
-
import { AwarenessMessage } from './OutgoingMessages/AwarenessMessage';
|
|
7
|
-
import { QueryAwarenessMessage } from './OutgoingMessages/QueryAwarenessMessage';
|
|
8
|
-
import { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage';
|
|
9
|
-
import { SyncStepTwoMessage } from './OutgoingMessages/SyncStepTwoMessage';
|
|
10
|
-
import { UpdateMessage } from './OutgoingMessages/UpdateMessage';
|
|
11
|
-
import { IncomingMessage } from './IncomingMessage';
|
|
12
|
-
import { OutgoingMessage } from './OutgoingMessage';
|
|
13
|
-
export declare enum MessageType {
|
|
14
|
-
Sync = 0,
|
|
15
|
-
Awareness = 1,
|
|
16
|
-
Auth = 2,
|
|
17
|
-
QueryAwareness = 3,
|
|
18
|
-
Stateless = 5,
|
|
19
|
-
CLOSE = 7
|
|
20
|
-
}
|
|
21
|
-
export declare enum WebSocketStatus {
|
|
22
|
-
Connecting = "connecting",
|
|
23
|
-
Connected = "connected",
|
|
24
|
-
Disconnected = "disconnected"
|
|
25
|
-
}
|
|
26
|
-
export interface OutgoingMessageInterface {
|
|
27
|
-
encoder: Encoder;
|
|
28
|
-
type?: MessageType;
|
|
29
|
-
}
|
|
30
|
-
export interface OutgoingMessageArguments {
|
|
31
|
-
documentName: string;
|
|
32
|
-
token: string;
|
|
33
|
-
document: Y.Doc;
|
|
34
|
-
awareness: Awareness;
|
|
35
|
-
clients: number[];
|
|
36
|
-
states: Map<number, {
|
|
37
|
-
[key: string]: any;
|
|
38
|
-
}>;
|
|
39
|
-
update: any;
|
|
40
|
-
payload: string;
|
|
41
|
-
encoder: Encoder;
|
|
42
|
-
}
|
|
43
|
-
export interface Constructable<T> {
|
|
44
|
-
new (...args: any): T;
|
|
45
|
-
}
|
|
46
|
-
export type ConstructableOutgoingMessage = Constructable<AuthenticationMessage> | Constructable<AwarenessMessage> | Constructable<QueryAwarenessMessage> | Constructable<SyncStepOneMessage> | Constructable<SyncStepTwoMessage> | Constructable<UpdateMessage>;
|
|
47
|
-
export type onAuthenticationFailedParameters = {
|
|
48
|
-
reason: string;
|
|
49
|
-
};
|
|
50
|
-
export type onOpenParameters = {
|
|
51
|
-
event: Event;
|
|
52
|
-
};
|
|
53
|
-
export type onMessageParameters = {
|
|
54
|
-
event: MessageEvent;
|
|
55
|
-
message: IncomingMessage;
|
|
56
|
-
};
|
|
57
|
-
export type onOutgoingMessageParameters = {
|
|
58
|
-
message: OutgoingMessage;
|
|
59
|
-
};
|
|
60
|
-
export type onStatusParameters = {
|
|
61
|
-
status: WebSocketStatus;
|
|
62
|
-
};
|
|
63
|
-
export type onSyncedParameters = {
|
|
64
|
-
state: boolean;
|
|
65
|
-
};
|
|
66
|
-
export type onDisconnectParameters = {
|
|
67
|
-
event: CloseEvent;
|
|
68
|
-
};
|
|
69
|
-
export type onCloseParameters = {
|
|
70
|
-
event: CloseEvent;
|
|
71
|
-
};
|
|
72
|
-
export type onAwarenessUpdateParameters = {
|
|
73
|
-
states: StatesArray;
|
|
74
|
-
};
|
|
75
|
-
export type onAwarenessChangeParameters = {
|
|
76
|
-
states: StatesArray;
|
|
77
|
-
};
|
|
78
|
-
export type onStatelessParameters = {
|
|
79
|
-
payload: string;
|
|
80
|
-
};
|
|
81
|
-
export type StatesArray = {
|
|
82
|
-
clientId: number;
|
|
83
|
-
[key: string | number]: any;
|
|
84
|
-
}[];
|
|
1
|
+
import { Awareness } from 'y-protocols/awareness';
|
|
2
|
+
import * as Y from 'yjs';
|
|
3
|
+
import { Encoder } from 'lib0/encoding';
|
|
4
|
+
import type { Event, CloseEvent, MessageEvent } from 'ws';
|
|
5
|
+
import { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage.js';
|
|
6
|
+
import { AwarenessMessage } from './OutgoingMessages/AwarenessMessage.js';
|
|
7
|
+
import { QueryAwarenessMessage } from './OutgoingMessages/QueryAwarenessMessage.js';
|
|
8
|
+
import { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage.js';
|
|
9
|
+
import { SyncStepTwoMessage } from './OutgoingMessages/SyncStepTwoMessage.js';
|
|
10
|
+
import { UpdateMessage } from './OutgoingMessages/UpdateMessage.js';
|
|
11
|
+
import { IncomingMessage } from './IncomingMessage.js';
|
|
12
|
+
import { OutgoingMessage } from './OutgoingMessage.js';
|
|
13
|
+
export declare enum MessageType {
|
|
14
|
+
Sync = 0,
|
|
15
|
+
Awareness = 1,
|
|
16
|
+
Auth = 2,
|
|
17
|
+
QueryAwareness = 3,
|
|
18
|
+
Stateless = 5,
|
|
19
|
+
CLOSE = 7
|
|
20
|
+
}
|
|
21
|
+
export declare enum WebSocketStatus {
|
|
22
|
+
Connecting = "connecting",
|
|
23
|
+
Connected = "connected",
|
|
24
|
+
Disconnected = "disconnected"
|
|
25
|
+
}
|
|
26
|
+
export interface OutgoingMessageInterface {
|
|
27
|
+
encoder: Encoder;
|
|
28
|
+
type?: MessageType;
|
|
29
|
+
}
|
|
30
|
+
export interface OutgoingMessageArguments {
|
|
31
|
+
documentName: string;
|
|
32
|
+
token: string;
|
|
33
|
+
document: Y.Doc;
|
|
34
|
+
awareness: Awareness;
|
|
35
|
+
clients: number[];
|
|
36
|
+
states: Map<number, {
|
|
37
|
+
[key: string]: any;
|
|
38
|
+
}>;
|
|
39
|
+
update: any;
|
|
40
|
+
payload: string;
|
|
41
|
+
encoder: Encoder;
|
|
42
|
+
}
|
|
43
|
+
export interface Constructable<T> {
|
|
44
|
+
new (...args: any): T;
|
|
45
|
+
}
|
|
46
|
+
export type ConstructableOutgoingMessage = Constructable<AuthenticationMessage> | Constructable<AwarenessMessage> | Constructable<QueryAwarenessMessage> | Constructable<SyncStepOneMessage> | Constructable<SyncStepTwoMessage> | Constructable<UpdateMessage>;
|
|
47
|
+
export type onAuthenticationFailedParameters = {
|
|
48
|
+
reason: string;
|
|
49
|
+
};
|
|
50
|
+
export type onOpenParameters = {
|
|
51
|
+
event: Event;
|
|
52
|
+
};
|
|
53
|
+
export type onMessageParameters = {
|
|
54
|
+
event: MessageEvent;
|
|
55
|
+
message: IncomingMessage;
|
|
56
|
+
};
|
|
57
|
+
export type onOutgoingMessageParameters = {
|
|
58
|
+
message: OutgoingMessage;
|
|
59
|
+
};
|
|
60
|
+
export type onStatusParameters = {
|
|
61
|
+
status: WebSocketStatus;
|
|
62
|
+
};
|
|
63
|
+
export type onSyncedParameters = {
|
|
64
|
+
state: boolean;
|
|
65
|
+
};
|
|
66
|
+
export type onDisconnectParameters = {
|
|
67
|
+
event: CloseEvent;
|
|
68
|
+
};
|
|
69
|
+
export type onCloseParameters = {
|
|
70
|
+
event: CloseEvent;
|
|
71
|
+
};
|
|
72
|
+
export type onAwarenessUpdateParameters = {
|
|
73
|
+
states: StatesArray;
|
|
74
|
+
};
|
|
75
|
+
export type onAwarenessChangeParameters = {
|
|
76
|
+
states: StatesArray;
|
|
77
|
+
};
|
|
78
|
+
export type onStatelessParameters = {
|
|
79
|
+
payload: string;
|
|
80
|
+
};
|
|
81
|
+
export type StatesArray = {
|
|
82
|
+
clientId: number;
|
|
83
|
+
[key: string | number]: any;
|
|
84
|
+
}[];
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IncomingMessage } from 'http';
|
|
3
|
+
import WebSocket from 'ws';
|
|
4
|
+
import { Debugger } from './Debugger.js';
|
|
5
|
+
import Document from './Document.js';
|
|
6
|
+
import { Hocuspocus } from './Hocuspocus.js';
|
|
7
|
+
import { onDisconnectPayload } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* The `ClientConnection` class is responsible for handling an incoming WebSocket
|
|
10
|
+
*
|
|
11
|
+
* TODO-refactor:
|
|
12
|
+
* - use event handlers instead of calling hooks directly, hooks should probably be called from Hocuspocus.ts
|
|
13
|
+
*/
|
|
14
|
+
export declare class ClientConnection {
|
|
15
|
+
private readonly websocket;
|
|
16
|
+
private readonly request;
|
|
17
|
+
private readonly documentProvider;
|
|
18
|
+
private readonly hooks;
|
|
19
|
+
private readonly debuggerTool;
|
|
20
|
+
private readonly opts;
|
|
21
|
+
private readonly defaultContext;
|
|
22
|
+
private readonly documentConnections;
|
|
23
|
+
private readonly incomingMessageQueue;
|
|
24
|
+
private readonly documentConnectionsEstablished;
|
|
25
|
+
private readonly hookPayloads;
|
|
26
|
+
private readonly callbacks;
|
|
27
|
+
private readonly closeIdleConnectionTimeout;
|
|
28
|
+
private readonly socketId;
|
|
29
|
+
/**
|
|
30
|
+
* The `ClientConnection` class receives incoming WebSocket connections,
|
|
31
|
+
* runs all hooks:
|
|
32
|
+
*
|
|
33
|
+
* - onConnect for all connections
|
|
34
|
+
* - onAuthenticate only if required
|
|
35
|
+
*
|
|
36
|
+
* … and if nothings fails it’ll fully establish the connection and
|
|
37
|
+
* load the Document then.
|
|
38
|
+
*/
|
|
39
|
+
constructor(websocket: WebSocket, request: IncomingMessage, documentProvider: {
|
|
40
|
+
createDocument: Hocuspocus['createDocument'];
|
|
41
|
+
}, hooks: Hocuspocus['hooks'], debuggerTool: Debugger, opts: {
|
|
42
|
+
requiresAuthentication: boolean;
|
|
43
|
+
timeout: number;
|
|
44
|
+
}, defaultContext?: any);
|
|
45
|
+
/**
|
|
46
|
+
* Set a callback that will be triggered when the connection is closed
|
|
47
|
+
*/
|
|
48
|
+
onClose(callback: (document: Document, payload: onDisconnectPayload) => void): ClientConnection;
|
|
49
|
+
/**
|
|
50
|
+
* Create a new connection by the given request and document
|
|
51
|
+
*/
|
|
52
|
+
private createConnection;
|
|
53
|
+
private setUpNewConnection;
|
|
54
|
+
private handleQueueingMessage;
|
|
55
|
+
private messageHandler;
|
|
56
|
+
}
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
import { IncomingMessage as HTTPIncomingMessage } from 'http';
|
|
4
|
-
import AsyncLock from 'async-lock';
|
|
5
|
-
import WebSocket from 'ws';
|
|
6
|
-
import { CloseEvent } from '@hocuspocus/common';
|
|
7
|
-
import Document from './Document';
|
|
8
|
-
import { Debugger } from './Debugger';
|
|
9
|
-
import { onStatelessPayload } from './types';
|
|
10
|
-
export declare class Connection {
|
|
11
|
-
webSocket: WebSocket;
|
|
12
|
-
context: any;
|
|
13
|
-
document: Document;
|
|
14
|
-
pingInterval: NodeJS.Timeout;
|
|
15
|
-
pongReceived: boolean;
|
|
16
|
-
request: HTTPIncomingMessage;
|
|
17
|
-
timeout: number;
|
|
18
|
-
callbacks: any;
|
|
19
|
-
socketId: string;
|
|
20
|
-
lock: AsyncLock;
|
|
21
|
-
readOnly: Boolean;
|
|
22
|
-
logger: Debugger;
|
|
23
|
-
/**
|
|
24
|
-
* Constructor.
|
|
25
|
-
*/
|
|
26
|
-
constructor(connection: WebSocket, request: HTTPIncomingMessage, document: Document, timeout: number, socketId: string, context: any, readOnly: boolean | undefined, logger: Debugger);
|
|
27
|
-
boundClose: (event?: CloseEvent) => void;
|
|
28
|
-
boundHandleMessage: (data: Uint8Array) => void;
|
|
29
|
-
boundHandlePong: () => void;
|
|
30
|
-
handlePong(): void;
|
|
31
|
-
/**
|
|
32
|
-
* Set a callback that will be triggered when the connection is closed
|
|
33
|
-
*/
|
|
34
|
-
onClose(callback: (document: Document, event?: CloseEvent) => void): Connection;
|
|
35
|
-
/**
|
|
36
|
-
* Set a callback that will be triggered when an stateless message is received
|
|
37
|
-
*/
|
|
38
|
-
onStatelessCallback(callback: (payload: onStatelessPayload) => Promise<void>): Connection;
|
|
39
|
-
/**
|
|
40
|
-
* Set a callback that will be triggered before an message is handled
|
|
41
|
-
*/
|
|
42
|
-
beforeHandleMessage(callback: (connection: Connection, update: Uint8Array) => Promise<any>): Connection;
|
|
43
|
-
/**
|
|
44
|
-
* Send the given message
|
|
45
|
-
*/
|
|
46
|
-
send(message: any): void;
|
|
47
|
-
/**
|
|
48
|
-
* Send a stateless message with payload
|
|
49
|
-
*/
|
|
50
|
-
sendStateless(payload: string): void;
|
|
51
|
-
/**
|
|
52
|
-
* Graceful wrapper around the WebSocket close method.
|
|
53
|
-
*/
|
|
54
|
-
close(event?: CloseEvent): void;
|
|
55
|
-
/**
|
|
56
|
-
* Check if pong was received and close the connection otherwise
|
|
57
|
-
* @private
|
|
58
|
-
*/
|
|
59
|
-
private check;
|
|
60
|
-
/**
|
|
61
|
-
* Send the current document awareness to the client, if any
|
|
62
|
-
* @private
|
|
63
|
-
*/
|
|
64
|
-
private sendCurrentAwareness;
|
|
65
|
-
/**
|
|
66
|
-
* Handle an incoming message
|
|
67
|
-
* @private
|
|
68
|
-
*/
|
|
69
|
-
private handleMessage;
|
|
70
|
-
}
|
|
71
|
-
export default Connection;
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { IncomingMessage as HTTPIncomingMessage } from 'http';
|
|
4
|
+
import AsyncLock from 'async-lock';
|
|
5
|
+
import WebSocket from 'ws';
|
|
6
|
+
import { CloseEvent } from '@hocuspocus/common';
|
|
7
|
+
import Document from './Document.js';
|
|
8
|
+
import { Debugger } from './Debugger.js';
|
|
9
|
+
import { onStatelessPayload } from './types.js';
|
|
10
|
+
export declare class Connection {
|
|
11
|
+
webSocket: WebSocket;
|
|
12
|
+
context: any;
|
|
13
|
+
document: Document;
|
|
14
|
+
pingInterval: NodeJS.Timeout;
|
|
15
|
+
pongReceived: boolean;
|
|
16
|
+
request: HTTPIncomingMessage;
|
|
17
|
+
timeout: number;
|
|
18
|
+
callbacks: any;
|
|
19
|
+
socketId: string;
|
|
20
|
+
lock: AsyncLock;
|
|
21
|
+
readOnly: Boolean;
|
|
22
|
+
logger: Debugger;
|
|
23
|
+
/**
|
|
24
|
+
* Constructor.
|
|
25
|
+
*/
|
|
26
|
+
constructor(connection: WebSocket, request: HTTPIncomingMessage, document: Document, timeout: number, socketId: string, context: any, readOnly: boolean | undefined, logger: Debugger);
|
|
27
|
+
boundClose: (event?: CloseEvent) => void;
|
|
28
|
+
boundHandleMessage: (data: Uint8Array) => void;
|
|
29
|
+
boundHandlePong: () => void;
|
|
30
|
+
handlePong(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Set a callback that will be triggered when the connection is closed
|
|
33
|
+
*/
|
|
34
|
+
onClose(callback: (document: Document, event?: CloseEvent) => void): Connection;
|
|
35
|
+
/**
|
|
36
|
+
* Set a callback that will be triggered when an stateless message is received
|
|
37
|
+
*/
|
|
38
|
+
onStatelessCallback(callback: (payload: onStatelessPayload) => Promise<void>): Connection;
|
|
39
|
+
/**
|
|
40
|
+
* Set a callback that will be triggered before an message is handled
|
|
41
|
+
*/
|
|
42
|
+
beforeHandleMessage(callback: (connection: Connection, update: Uint8Array) => Promise<any>): Connection;
|
|
43
|
+
/**
|
|
44
|
+
* Send the given message
|
|
45
|
+
*/
|
|
46
|
+
send(message: any): void;
|
|
47
|
+
/**
|
|
48
|
+
* Send a stateless message with payload
|
|
49
|
+
*/
|
|
50
|
+
sendStateless(payload: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Graceful wrapper around the WebSocket close method.
|
|
53
|
+
*/
|
|
54
|
+
close(event?: CloseEvent): void;
|
|
55
|
+
/**
|
|
56
|
+
* Check if pong was received and close the connection otherwise
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
private check;
|
|
60
|
+
/**
|
|
61
|
+
* Send the current document awareness to the client, if any
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
private sendCurrentAwareness;
|
|
65
|
+
/**
|
|
66
|
+
* Handle an incoming message
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
private handleMessage;
|
|
70
|
+
}
|
|
71
|
+
export default Connection;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export declare class Debugger {
|
|
2
|
-
logs: any[];
|
|
3
|
-
listen: boolean;
|
|
4
|
-
output: boolean;
|
|
5
|
-
enable(): void;
|
|
6
|
-
disable(): void;
|
|
7
|
-
verbose(): void;
|
|
8
|
-
quiet(): void;
|
|
9
|
-
log(message: any): this;
|
|
10
|
-
flush(): this;
|
|
11
|
-
get(): {
|
|
12
|
-
logs: any[];
|
|
13
|
-
};
|
|
14
|
-
}
|
|
1
|
+
export declare class Debugger {
|
|
2
|
+
logs: any[];
|
|
3
|
+
listen: boolean;
|
|
4
|
+
output: boolean;
|
|
5
|
+
enable(): void;
|
|
6
|
+
disable(): void;
|
|
7
|
+
verbose(): void;
|
|
8
|
+
quiet(): void;
|
|
9
|
+
log(message: any): this;
|
|
10
|
+
flush(): this;
|
|
11
|
+
get(): {
|
|
12
|
+
logs: any[];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Document from './Document.js';
|
|
2
|
+
import type { Hocuspocus } from './Hocuspocus.js';
|
|
3
|
+
import type { DirectConnection as DirectConnectionInterface } from './types';
|
|
4
|
+
export declare class DirectConnection implements DirectConnectionInterface {
|
|
5
|
+
document: Document | null;
|
|
6
|
+
instance: Hocuspocus;
|
|
7
|
+
context: any;
|
|
8
|
+
/**
|
|
9
|
+
* Constructor.
|
|
10
|
+
*/
|
|
11
|
+
constructor(document: Document, instance: Hocuspocus, context?: any);
|
|
12
|
+
transact(transaction: (document: Document) => void): Promise<void>;
|
|
13
|
+
disconnect(): void;
|
|
14
|
+
}
|