@hocuspocus/extension-database 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.
Files changed (127) hide show
  1. package/dist/hocuspocus-database.cjs +36 -36
  2. package/dist/hocuspocus-database.esm.js +36 -36
  3. package/dist/packages/common/src/CloseEvents.d.ts +29 -29
  4. package/dist/packages/common/src/auth.d.ts +6 -6
  5. package/dist/packages/common/src/awarenessStatesToArray.d.ts +3 -3
  6. package/dist/packages/common/src/index.d.ts +4 -4
  7. package/dist/packages/common/src/types.d.ts +10 -10
  8. package/dist/packages/extension-database/src/Database.d.ts +30 -30
  9. package/dist/packages/extension-database/src/index.d.ts +1 -1
  10. package/dist/packages/extension-logger/src/Logger.d.ts +67 -67
  11. package/dist/packages/extension-logger/src/index.d.ts +1 -1
  12. package/dist/packages/extension-redis/src/Redis.d.ts +116 -95
  13. package/dist/packages/extension-redis/src/index.d.ts +1 -1
  14. package/dist/packages/extension-sqlite/src/SQLite.d.ts +26 -26
  15. package/dist/packages/extension-sqlite/src/index.d.ts +1 -1
  16. package/dist/packages/extension-throttle/src/index.d.ts +31 -31
  17. package/dist/packages/extension-webhook/src/index.d.ts +57 -57
  18. package/dist/packages/provider/src/EventEmitter.d.ts +9 -9
  19. package/dist/packages/provider/src/HocuspocusProvider.d.ts +110 -110
  20. package/dist/packages/provider/src/HocuspocusProviderWebsocket.d.ts +115 -115
  21. package/dist/packages/provider/src/IncomingMessage.d.ts +16 -16
  22. package/dist/packages/provider/src/MessageReceiver.d.ts +13 -13
  23. package/dist/packages/provider/src/MessageSender.d.ts +10 -10
  24. package/dist/packages/provider/src/OutgoingMessage.d.ts +9 -9
  25. package/dist/packages/provider/src/OutgoingMessages/AuthenticationMessage.d.ts +7 -7
  26. package/dist/packages/provider/src/OutgoingMessages/AwarenessMessage.d.ts +8 -8
  27. package/dist/packages/provider/src/OutgoingMessages/CloseMessage.d.ts +8 -8
  28. package/dist/packages/provider/src/OutgoingMessages/QueryAwarenessMessage.d.ts +8 -8
  29. package/dist/packages/provider/src/OutgoingMessages/StatelessMessage.d.ts +7 -7
  30. package/dist/packages/provider/src/OutgoingMessages/SyncStepOneMessage.d.ts +8 -8
  31. package/dist/packages/provider/src/OutgoingMessages/SyncStepTwoMessage.d.ts +8 -8
  32. package/dist/packages/provider/src/OutgoingMessages/UpdateMessage.d.ts +7 -7
  33. package/dist/packages/provider/src/TiptapCollabProvider.d.ts +11 -11
  34. package/dist/packages/provider/src/TiptapCollabProviderWebsocket.d.ts +11 -11
  35. package/dist/packages/provider/src/index.d.ts +5 -5
  36. package/dist/packages/provider/src/types.d.ts +84 -84
  37. package/dist/packages/server/src/ClientConnection.d.ts +56 -0
  38. package/dist/packages/server/src/Connection.d.ts +71 -71
  39. package/dist/packages/server/src/Debugger.d.ts +14 -14
  40. package/dist/packages/server/src/DirectConnection.d.ts +14 -0
  41. package/dist/packages/server/src/Document.d.ts +91 -88
  42. package/dist/packages/server/src/Hocuspocus.d.ts +103 -108
  43. package/dist/packages/server/src/IncomingMessage.d.ts +21 -21
  44. package/dist/packages/server/src/MessageReceiver.d.ts +12 -12
  45. package/dist/packages/server/src/OutgoingMessage.d.ts +20 -20
  46. package/dist/packages/server/src/index.d.ts +8 -8
  47. package/dist/packages/server/src/types.d.ts +270 -264
  48. package/dist/packages/server/src/util/getParameters.d.ts +8 -0
  49. package/dist/packages/transformer/src/Prosemirror.d.ts +11 -11
  50. package/dist/packages/transformer/src/Tiptap.d.ts +10 -10
  51. package/dist/packages/transformer/src/index.d.ts +3 -3
  52. package/dist/packages/transformer/src/types.d.ts +5 -5
  53. package/dist/playground/backend/src/default.d.ts +1 -1
  54. package/dist/playground/backend/src/express.d.ts +1 -1
  55. package/dist/playground/backend/src/koa.d.ts +1 -1
  56. package/dist/playground/backend/src/load-document.d.ts +1 -1
  57. package/dist/playground/backend/src/redis.d.ts +1 -1
  58. package/dist/playground/backend/src/slow.d.ts +1 -1
  59. package/dist/playground/backend/src/tiptapcollab.d.ts +1 -1
  60. package/dist/playground/backend/src/webhook.d.ts +1 -1
  61. package/dist/playground/frontend/src/main.d.ts +1 -1
  62. package/dist/playground/frontend/vite.config.d.ts +2 -2
  63. package/dist/tests/extension-database/fetch.d.ts +1 -1
  64. package/dist/tests/extension-logger/onListen.d.ts +1 -1
  65. package/dist/tests/extension-redis/closeConnections.d.ts +1 -1
  66. package/dist/tests/extension-redis/getConnectionCount.d.ts +1 -1
  67. package/dist/tests/extension-redis/getDocumentsCount.d.ts +1 -1
  68. package/dist/tests/extension-redis/onAwarenessChange.d.ts +1 -1
  69. package/dist/tests/extension-redis/onChange.d.ts +1 -1
  70. package/dist/tests/extension-redis/onStateless.d.ts +1 -1
  71. package/dist/tests/extension-redis/onStoreDocument.d.ts +1 -1
  72. package/dist/tests/extension-throttle/banning.d.ts +1 -1
  73. package/dist/tests/extension-throttle/configuration.d.ts +1 -1
  74. package/dist/tests/provider/observe.d.ts +1 -1
  75. package/dist/tests/provider/observeDeep.d.ts +1 -1
  76. package/dist/tests/provider/onAuthenticated.d.ts +1 -1
  77. package/dist/tests/provider/onAuthenticationFailed.d.ts +1 -1
  78. package/dist/tests/provider/onAwarenessChange.d.ts +1 -1
  79. package/dist/tests/provider/onAwarenessUpdate.d.ts +1 -1
  80. package/dist/tests/provider/onClose.d.ts +1 -1
  81. package/dist/tests/provider/onConnect.d.ts +1 -1
  82. package/dist/tests/provider/onDisconnect.d.ts +1 -1
  83. package/dist/tests/provider/onMessage.d.ts +1 -1
  84. package/dist/tests/provider/onOpen.d.ts +1 -1
  85. package/dist/tests/provider/onStateless.d.ts +1 -1
  86. package/dist/tests/provider/onSynced.d.ts +1 -1
  87. package/dist/tests/providerwebsocket/configuration.d.ts +1 -1
  88. package/dist/tests/server/address.d.ts +1 -1
  89. package/dist/tests/server/afterStoreDocument.d.ts +1 -1
  90. package/dist/tests/server/beforeBroadcastStateless.d.ts +1 -1
  91. package/dist/tests/server/beforeHandleMessage.d.ts +1 -1
  92. package/dist/tests/server/closeConnections.d.ts +1 -1
  93. package/dist/tests/server/getConnectionsCount.d.ts +1 -1
  94. package/dist/tests/server/getDocumentsCount.d.ts +1 -1
  95. package/dist/tests/server/getMessageLogs.d.ts +1 -1
  96. package/dist/tests/server/listen.d.ts +1 -1
  97. package/dist/tests/server/onAuthenticate.d.ts +1 -1
  98. package/dist/tests/server/onAwarenessUpdate.d.ts +1 -1
  99. package/dist/tests/server/onChange.d.ts +1 -1
  100. package/dist/tests/server/onClose.d.ts +1 -1
  101. package/dist/tests/server/onConfigure.d.ts +1 -1
  102. package/dist/tests/server/onConnect.d.ts +1 -1
  103. package/dist/tests/server/onDestroy.d.ts +1 -1
  104. package/dist/tests/server/onDisconnect.d.ts +1 -1
  105. package/dist/tests/server/onListen.d.ts +1 -1
  106. package/dist/tests/server/onLoadDocument.d.ts +1 -1
  107. package/dist/tests/server/onRequest.d.ts +1 -1
  108. package/dist/tests/server/onStateless.d.ts +1 -1
  109. package/dist/tests/server/onStoreDocument.d.ts +1 -1
  110. package/dist/tests/server/onUpgrade.d.ts +1 -1
  111. package/dist/tests/server/openDirectConnection.d.ts +1 -0
  112. package/dist/tests/server/requiresAuthentication.d.ts +1 -1
  113. package/dist/tests/server/websocketError.d.ts +1 -1
  114. package/dist/tests/transformer/TiptapTransformer.d.ts +1 -1
  115. package/dist/tests/utils/createDirectory.d.ts +1 -1
  116. package/dist/tests/utils/flushRedis.d.ts +1 -1
  117. package/dist/tests/utils/index.d.ts +9 -9
  118. package/dist/tests/utils/newHocuspocus.d.ts +2 -2
  119. package/dist/tests/utils/newHocuspocusProvider.d.ts +3 -3
  120. package/dist/tests/utils/newHocuspocusProviderWebsocket.d.ts +3 -3
  121. package/dist/tests/utils/randomInteger.d.ts +1 -1
  122. package/dist/tests/utils/redisConnectionSettings.d.ts +4 -4
  123. package/dist/tests/utils/removeDirectory.d.ts +1 -1
  124. package/dist/tests/utils/retryableAssertion.d.ts +2 -2
  125. package/dist/tests/utils/sleep.d.ts +1 -1
  126. package/package.json +4 -3
  127. 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
+ }