@hocuspocus/extension-sqlite 2.0.6 → 2.1.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 (125) hide show
  1. package/dist/hocuspocus-sqlite.cjs +46 -46
  2. package/dist/hocuspocus-sqlite.esm.js +46 -46
  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 -117
  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/Connection.d.ts +71 -71
  38. package/dist/packages/server/src/Debugger.d.ts +14 -14
  39. package/dist/packages/server/src/DirectConnection.d.ts +13 -0
  40. package/dist/packages/server/src/Document.d.ts +91 -88
  41. package/dist/packages/server/src/Hocuspocus.d.ts +111 -108
  42. package/dist/packages/server/src/IncomingMessage.d.ts +21 -21
  43. package/dist/packages/server/src/MessageReceiver.d.ts +12 -12
  44. package/dist/packages/server/src/OutgoingMessage.d.ts +20 -20
  45. package/dist/packages/server/src/index.d.ts +8 -8
  46. package/dist/packages/server/src/types.d.ts +266 -264
  47. package/dist/packages/transformer/src/Prosemirror.d.ts +11 -11
  48. package/dist/packages/transformer/src/Tiptap.d.ts +10 -10
  49. package/dist/packages/transformer/src/index.d.ts +3 -3
  50. package/dist/packages/transformer/src/types.d.ts +5 -5
  51. package/dist/playground/backend/src/default.d.ts +1 -1
  52. package/dist/playground/backend/src/express.d.ts +1 -1
  53. package/dist/playground/backend/src/koa.d.ts +1 -1
  54. package/dist/playground/backend/src/load-document.d.ts +1 -1
  55. package/dist/playground/backend/src/redis.d.ts +1 -1
  56. package/dist/playground/backend/src/slow.d.ts +1 -1
  57. package/dist/playground/backend/src/tiptapcollab.d.ts +1 -1
  58. package/dist/playground/backend/src/webhook.d.ts +1 -1
  59. package/dist/playground/frontend/src/main.d.ts +1 -1
  60. package/dist/playground/frontend/vite.config.d.ts +2 -2
  61. package/dist/tests/extension-database/fetch.d.ts +1 -1
  62. package/dist/tests/extension-logger/onListen.d.ts +1 -1
  63. package/dist/tests/extension-redis/closeConnections.d.ts +1 -1
  64. package/dist/tests/extension-redis/getConnectionCount.d.ts +1 -1
  65. package/dist/tests/extension-redis/getDocumentsCount.d.ts +1 -1
  66. package/dist/tests/extension-redis/onAwarenessChange.d.ts +1 -1
  67. package/dist/tests/extension-redis/onChange.d.ts +1 -1
  68. package/dist/tests/extension-redis/onStateless.d.ts +1 -1
  69. package/dist/tests/extension-redis/onStoreDocument.d.ts +1 -1
  70. package/dist/tests/extension-throttle/banning.d.ts +1 -1
  71. package/dist/tests/extension-throttle/configuration.d.ts +1 -1
  72. package/dist/tests/provider/observe.d.ts +1 -1
  73. package/dist/tests/provider/observeDeep.d.ts +1 -1
  74. package/dist/tests/provider/onAuthenticated.d.ts +1 -1
  75. package/dist/tests/provider/onAuthenticationFailed.d.ts +1 -1
  76. package/dist/tests/provider/onAwarenessChange.d.ts +1 -1
  77. package/dist/tests/provider/onAwarenessUpdate.d.ts +1 -1
  78. package/dist/tests/provider/onClose.d.ts +1 -1
  79. package/dist/tests/provider/onConnect.d.ts +1 -1
  80. package/dist/tests/provider/onDisconnect.d.ts +1 -1
  81. package/dist/tests/provider/onMessage.d.ts +1 -1
  82. package/dist/tests/provider/onOpen.d.ts +1 -1
  83. package/dist/tests/provider/onStateless.d.ts +1 -1
  84. package/dist/tests/provider/onSynced.d.ts +1 -1
  85. package/dist/tests/providerwebsocket/configuration.d.ts +1 -1
  86. package/dist/tests/server/address.d.ts +1 -1
  87. package/dist/tests/server/afterStoreDocument.d.ts +1 -1
  88. package/dist/tests/server/beforeBroadcastStateless.d.ts +1 -1
  89. package/dist/tests/server/beforeHandleMessage.d.ts +1 -1
  90. package/dist/tests/server/closeConnections.d.ts +1 -1
  91. package/dist/tests/server/getConnectionsCount.d.ts +1 -1
  92. package/dist/tests/server/getDocumentsCount.d.ts +1 -1
  93. package/dist/tests/server/getMessageLogs.d.ts +1 -1
  94. package/dist/tests/server/listen.d.ts +1 -1
  95. package/dist/tests/server/onAuthenticate.d.ts +1 -1
  96. package/dist/tests/server/onAwarenessUpdate.d.ts +1 -1
  97. package/dist/tests/server/onChange.d.ts +1 -1
  98. package/dist/tests/server/onClose.d.ts +1 -1
  99. package/dist/tests/server/onConfigure.d.ts +1 -1
  100. package/dist/tests/server/onConnect.d.ts +1 -1
  101. package/dist/tests/server/onDestroy.d.ts +1 -1
  102. package/dist/tests/server/onDisconnect.d.ts +1 -1
  103. package/dist/tests/server/onListen.d.ts +1 -1
  104. package/dist/tests/server/onLoadDocument.d.ts +1 -1
  105. package/dist/tests/server/onRequest.d.ts +1 -1
  106. package/dist/tests/server/onStateless.d.ts +1 -1
  107. package/dist/tests/server/onStoreDocument.d.ts +1 -1
  108. package/dist/tests/server/onUpgrade.d.ts +1 -1
  109. package/dist/tests/server/openDirectConnection.d.ts +1 -0
  110. package/dist/tests/server/requiresAuthentication.d.ts +1 -1
  111. package/dist/tests/server/websocketError.d.ts +1 -1
  112. package/dist/tests/transformer/TiptapTransformer.d.ts +1 -1
  113. package/dist/tests/utils/createDirectory.d.ts +1 -1
  114. package/dist/tests/utils/flushRedis.d.ts +1 -1
  115. package/dist/tests/utils/index.d.ts +9 -9
  116. package/dist/tests/utils/newHocuspocus.d.ts +2 -2
  117. package/dist/tests/utils/newHocuspocusProvider.d.ts +3 -3
  118. package/dist/tests/utils/newHocuspocusProviderWebsocket.d.ts +3 -3
  119. package/dist/tests/utils/randomInteger.d.ts +1 -1
  120. package/dist/tests/utils/redisConnectionSettings.d.ts +4 -4
  121. package/dist/tests/utils/removeDirectory.d.ts +1 -1
  122. package/dist/tests/utils/retryableAssertion.d.ts +2 -2
  123. package/dist/tests/utils/sleep.d.ts +1 -1
  124. package/package.json +4 -3
  125. 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
+ }[];
@@ -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,13 @@
1
+ import Document from './Document.js';
2
+ import type { Hocuspocus } from './Hocuspocus.js';
3
+ export declare class DirectConnection {
4
+ document: Document | null;
5
+ instance: Hocuspocus;
6
+ context: any;
7
+ /**
8
+ * Constructor.
9
+ */
10
+ constructor(document: Document, instance: Hocuspocus, context?: any);
11
+ transact(transaction: (document: Document) => void): Promise<void>;
12
+ disconnect(): void;
13
+ }
@@ -1,88 +1,91 @@
1
- import WebSocket from 'ws';
2
- import { Awareness } from 'y-protocols/awareness';
3
- import { Doc } from 'yjs';
4
- import { mutex } from 'lib0/mutex.js';
5
- import Connection from './Connection';
6
- import { Debugger } from './Debugger';
7
- export declare class Document extends Doc {
8
- awareness: Awareness;
9
- callbacks: {
10
- onUpdate: (document: Document, connection: Connection, update: Uint8Array) => void;
11
- beforeBroadcastStateless: (document: Document, stateless: string) => void;
12
- };
13
- connections: Map<WebSocket, {
14
- clients: Set<any>;
15
- connection: Connection;
16
- }>;
17
- name: string;
18
- mux: mutex;
19
- logger: Debugger;
20
- isLoading: boolean;
21
- /**
22
- * Constructor.
23
- */
24
- constructor(name: string, logger: Debugger, yDocOptions: {});
25
- /**
26
- * Check if the Document is empty
27
- */
28
- isEmpty(fieldName: string): boolean;
29
- /**
30
- * Merge the given document(s) into this one
31
- */
32
- merge(documents: Doc | Array<Doc>): Document;
33
- /**
34
- * Set a callback that will be triggered when the document is updated
35
- */
36
- onUpdate(callback: (document: Document, connection: Connection, update: Uint8Array) => void): Document;
37
- /**
38
- * Set a callback that will be triggered before a stateless message is broadcasted
39
- */
40
- beforeBroadcastStateless(callback: (document: Document, stateless: string) => void): Document;
41
- /**
42
- * Register a connection and a set of clients on this document keyed by the
43
- * underlying websocket connection
44
- */
45
- addConnection(connection: Connection): Document;
46
- /**
47
- * Is the given connection registered on this document
48
- */
49
- hasConnection(connection: Connection): boolean;
50
- /**
51
- * Remove the given connection from this document
52
- */
53
- removeConnection(connection: Connection): Document;
54
- /**
55
- * Get the number of active connections for this document
56
- */
57
- getConnectionsCount(): number;
58
- /**
59
- * Get an array of registered connections
60
- */
61
- getConnections(): Array<Connection>;
62
- /**
63
- * Get the client ids for the given connection instance
64
- */
65
- getClients(connectionInstance: WebSocket): Set<any>;
66
- /**
67
- * Has the document awareness states
68
- */
69
- hasAwarenessStates(): boolean;
70
- /**
71
- * Apply the given awareness update
72
- */
73
- applyAwarenessUpdate(connection: Connection, update: Uint8Array): Document;
74
- /**
75
- * Handle an awareness update and sync changes to clients
76
- * @private
77
- */
78
- private handleAwarenessUpdate;
79
- /**
80
- * Handle an updated document and sync changes to clients
81
- */
82
- private handleUpdate;
83
- /**
84
- * Broadcast stateless message to all connections
85
- */
86
- broadcastStateless(payload: string): void;
87
- }
88
- export default Document;
1
+ import WebSocket from 'ws';
2
+ import { Awareness } from 'y-protocols/awareness';
3
+ import { Doc } from 'yjs';
4
+ import { mutex } from 'lib0/mutex.js';
5
+ import Connection from './Connection.js';
6
+ import { Debugger } from './Debugger.js';
7
+ export declare class Document extends Doc {
8
+ awareness: Awareness;
9
+ callbacks: {
10
+ onUpdate: (document: Document, connection: Connection, update: Uint8Array) => void;
11
+ beforeBroadcastStateless: (document: Document, stateless: string) => void;
12
+ };
13
+ connections: Map<WebSocket, {
14
+ clients: Set<any>;
15
+ connection: Connection;
16
+ }>;
17
+ directConnectionsCount: number;
18
+ name: string;
19
+ mux: mutex;
20
+ logger: Debugger;
21
+ isLoading: boolean;
22
+ /**
23
+ * Constructor.
24
+ */
25
+ constructor(name: string, logger: Debugger, yDocOptions: {});
26
+ /**
27
+ * Check if the Document is empty
28
+ */
29
+ isEmpty(fieldName: string): boolean;
30
+ /**
31
+ * Merge the given document(s) into this one
32
+ */
33
+ merge(documents: Doc | Array<Doc>): Document;
34
+ /**
35
+ * Set a callback that will be triggered when the document is updated
36
+ */
37
+ onUpdate(callback: (document: Document, connection: Connection, update: Uint8Array) => void): Document;
38
+ /**
39
+ * Set a callback that will be triggered before a stateless message is broadcasted
40
+ */
41
+ beforeBroadcastStateless(callback: (document: Document, stateless: string) => void): Document;
42
+ /**
43
+ * Register a connection and a set of clients on this document keyed by the
44
+ * underlying websocket connection
45
+ */
46
+ addConnection(connection: Connection): Document;
47
+ /**
48
+ * Is the given connection registered on this document
49
+ */
50
+ hasConnection(connection: Connection): boolean;
51
+ /**
52
+ * Remove the given connection from this document
53
+ */
54
+ removeConnection(connection: Connection): Document;
55
+ addDirectConnection(): Document;
56
+ removeDirectConnection(): Document;
57
+ /**
58
+ * Get the number of active connections for this document
59
+ */
60
+ getConnectionsCount(): number;
61
+ /**
62
+ * Get an array of registered connections
63
+ */
64
+ getConnections(): Array<Connection>;
65
+ /**
66
+ * Get the client ids for the given connection instance
67
+ */
68
+ getClients(connectionInstance: WebSocket): Set<any>;
69
+ /**
70
+ * Has the document awareness states
71
+ */
72
+ hasAwarenessStates(): boolean;
73
+ /**
74
+ * Apply the given awareness update
75
+ */
76
+ applyAwarenessUpdate(connection: Connection, update: Uint8Array): Document;
77
+ /**
78
+ * Handle an awareness update and sync changes to clients
79
+ * @private
80
+ */
81
+ private handleAwarenessUpdate;
82
+ /**
83
+ * Handle an updated document and sync changes to clients
84
+ */
85
+ private handleUpdate;
86
+ /**
87
+ * Broadcast stateless message to all connections
88
+ */
89
+ broadcastStateless(payload: string): void;
90
+ }
91
+ export default Document;