@hocuspocus/provider 1.0.0-alpha.26 → 1.0.0-alpha.30
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-provider.cjs +132 -330
- package/dist/hocuspocus-provider.cjs.map +1 -1
- package/dist/hocuspocus-provider.esm.js +130 -329
- package/dist/hocuspocus-provider.esm.js.map +1 -1
- package/dist/packages/common/src/CloseEvents.d.ts +23 -0
- package/dist/packages/common/src/index.d.ts +1 -0
- package/dist/packages/extension-database/src/Database.d.ts +32 -0
- package/dist/packages/extension-database/src/index.d.ts +1 -0
- package/dist/packages/extension-logger/src/Logger.d.ts +7 -8
- package/dist/packages/extension-sqlite/src/SQLite.d.ts +26 -0
- package/dist/packages/extension-sqlite/src/index.d.ts +1 -0
- package/dist/packages/extension-webhook/src/index.d.ts +2 -3
- package/dist/packages/provider/src/EventEmitter.d.ts +1 -1
- package/dist/packages/provider/src/HocuspocusCloudProvider.d.ts +11 -0
- package/dist/packages/provider/src/HocuspocusProvider.d.ts +17 -9
- package/dist/packages/provider/src/index.d.ts +1 -0
- package/dist/packages/provider/src/types.d.ts +10 -0
- package/dist/packages/server/src/Connection.d.ts +5 -5
- package/dist/packages/server/src/Debugger.d.ts +1 -2
- package/dist/packages/server/src/Document.d.ts +8 -5
- package/dist/packages/server/src/Hocuspocus.d.ts +37 -16
- package/dist/packages/server/src/MessageReceiver.d.ts +8 -5
- package/dist/packages/server/src/OutgoingMessage.d.ts +1 -0
- package/dist/packages/server/src/index.d.ts +7 -0
- package/dist/packages/server/src/types.d.ts +89 -18
- package/dist/{demos/backend/src/express.d.ts → playground/backend/src/default.d.ts} +0 -0
- package/dist/{demos/backend/src/koa.d.ts → playground/backend/src/express.d.ts} +0 -0
- package/dist/{demos/backend/src/load-document.d.ts → playground/backend/src/koa.d.ts} +0 -0
- package/dist/{demos/backend/src/minimal.d.ts → playground/backend/src/load-document.d.ts} +0 -0
- package/dist/{demos → playground}/backend/src/monitor.d.ts +0 -0
- package/dist/{demos → playground}/backend/src/redis.d.ts +0 -0
- package/dist/{demos → playground}/backend/src/slow.d.ts +0 -0
- package/dist/{demos → playground}/backend/src/webhook.d.ts +0 -0
- package/dist/tests/extension-logger/onListen.d.ts +1 -0
- package/dist/tests/extension-redis/onLoadDocument.d.ts +1 -0
- package/dist/tests/extension-redis/onSynced.d.ts +1 -0
- package/dist/tests/extension-redis-rewrite/closeConnections.d.ts +1 -0
- package/dist/tests/extension-redis-rewrite/getConnectionCount.d.ts +1 -0
- package/dist/tests/extension-redis-rewrite/getDocumentsCount.d.ts +1 -0
- package/dist/tests/extension-redis-rewrite/onAwarenessChange.d.ts +1 -0
- package/dist/tests/extension-redis-rewrite/onChange.d.ts +1 -0
- package/dist/tests/extension-redis-rewrite/onStoreDocument.d.ts +1 -0
- package/dist/tests/extension-rocksdb/onLoadDocument.d.ts +1 -0
- package/dist/tests/provider/configuration.d.ts +1 -0
- package/dist/tests/provider/onAuthenticated.d.ts +1 -0
- package/dist/tests/provider/onAuthenticationFailed.d.ts +1 -0
- package/dist/tests/provider/onAwarenessChange.d.ts +1 -0
- package/dist/tests/provider/onAwarenessUpdate.d.ts +1 -0
- package/dist/tests/provider/onClose.d.ts +1 -0
- package/dist/tests/provider/onConnect.d.ts +1 -0
- package/dist/tests/provider/onDisconnect.d.ts +1 -0
- package/dist/tests/provider/onMessage.d.ts +1 -0
- package/dist/tests/provider/onOpen.d.ts +1 -0
- package/dist/tests/provider/onSynced.d.ts +1 -0
- package/dist/tests/server/address.d.ts +1 -0
- package/dist/tests/server/afterStoreDocument.d.ts +1 -0
- package/dist/tests/server/closeConnections.d.ts +1 -0
- package/dist/tests/server/getConnectionsCount.d.ts +1 -0
- package/dist/tests/server/getDocumentName.d.ts +1 -0
- package/dist/tests/server/getDocumentsCount.d.ts +1 -0
- package/dist/tests/server/getMessageLogs.d.ts +1 -0
- package/dist/tests/server/listen.d.ts +1 -0
- package/dist/tests/server/onAuthenticate.d.ts +1 -0
- package/dist/tests/server/onAwarenessUpdate.d.ts +1 -0
- package/dist/tests/server/onChange.d.ts +1 -0
- package/dist/tests/server/onConfigure.d.ts +1 -0
- package/dist/tests/server/onConnect.d.ts +1 -0
- package/dist/tests/server/onDestroy.d.ts +1 -0
- package/dist/tests/server/onDisconnect.d.ts +1 -0
- package/dist/tests/server/onListen.d.ts +1 -0
- package/dist/tests/server/onLoadDocument.d.ts +1 -0
- package/dist/tests/server/onRequest.d.ts +1 -0
- package/dist/tests/server/onStoreDocument.d.ts +1 -0
- package/dist/tests/server/onUpgrade.d.ts +1 -0
- package/dist/tests/server/requiresAuthentication.d.ts +1 -0
- package/dist/tests/transformer/TiptapTransformer.d.ts +1 -0
- package/dist/tests/utils/createDirectory.d.ts +1 -0
- package/dist/tests/utils/flushRedis.d.ts +1 -0
- package/dist/tests/utils/index.d.ts +7 -0
- package/dist/tests/utils/newHocuspocus.d.ts +2 -0
- package/dist/tests/utils/newHocuspocusProvider.d.ts +3 -0
- package/dist/tests/utils/redisConnectionSettings.d.ts +4 -0
- package/dist/tests/utils/removeDirectory.d.ts +1 -0
- package/dist/tests/utils/sleep.d.ts +1 -0
- package/package.json +6 -5
- package/src/EventEmitter.ts +1 -1
- package/src/HocuspocusCloudProvider.ts +34 -0
- package/src/HocuspocusProvider.ts +101 -68
- package/src/index.ts +1 -0
- package/src/types.ts +10 -0
- package/dist/packages/server/src/CloseEvents.d.ts +0 -4
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'http';
|
|
3
3
|
import { URLSearchParams } from 'url';
|
|
4
4
|
import { Socket } from 'net';
|
|
5
|
+
import { Awareness } from 'y-protocols/awareness';
|
|
5
6
|
import Document from './Document';
|
|
6
7
|
import { Hocuspocus } from './Hocuspocus';
|
|
7
8
|
export declare enum MessageType {
|
|
8
9
|
Unknown = -1,
|
|
9
10
|
Sync = 0,
|
|
10
11
|
Awareness = 1,
|
|
11
|
-
Auth = 2
|
|
12
|
+
Auth = 2,
|
|
13
|
+
QueryAwareness = 3
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* State of the WebSocket connection.
|
|
@@ -25,31 +27,37 @@ export interface AwarenessUpdate {
|
|
|
25
27
|
updated: Array<any>;
|
|
26
28
|
removed: Array<any>;
|
|
27
29
|
}
|
|
28
|
-
export interface
|
|
30
|
+
export interface ConnectionConfiguration {
|
|
29
31
|
readOnly: boolean;
|
|
32
|
+
requiresAuthentication: boolean;
|
|
30
33
|
isAuthenticated: boolean;
|
|
31
34
|
}
|
|
32
35
|
export interface Extension {
|
|
33
|
-
|
|
34
|
-
onChange?(data: onChangePayload): Promise<any>;
|
|
35
|
-
onConnect?(data: onConnectPayload): Promise<any>;
|
|
36
|
+
priority?: number;
|
|
36
37
|
onConfigure?(data: onConfigurePayload): Promise<any>;
|
|
38
|
+
onListen?(data: onListenPayload): Promise<any>;
|
|
39
|
+
onUpgrade?(data: onUpgradePayload): Promise<any>;
|
|
40
|
+
onConnect?(data: onConnectPayload): Promise<any>;
|
|
41
|
+
onAuthenticate?(data: onAuthenticatePayload): Promise<any>;
|
|
37
42
|
/**
|
|
38
43
|
* @deprecated onCreateDocument is deprecated, use onLoadDocument instead
|
|
39
44
|
*/
|
|
40
45
|
onCreateDocument?(data: onLoadDocumentPayload): Promise<any>;
|
|
41
46
|
onLoadDocument?(data: onLoadDocumentPayload): Promise<any>;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
afterLoadDocument?(data: onLoadDocumentPayload): Promise<any>;
|
|
48
|
+
onChange?(data: onChangePayload): Promise<any>;
|
|
49
|
+
onStoreDocument?(data: onStoreDocumentPayload): Promise<any>;
|
|
50
|
+
afterStoreDocument?(data: afterStoreDocumentPayload): Promise<any>;
|
|
51
|
+
onAwarenessUpdate?(data: onAwarenessUpdatePayload): Promise<any>;
|
|
45
52
|
onRequest?(data: onRequestPayload): Promise<any>;
|
|
46
|
-
|
|
53
|
+
onDisconnect?(data: onDisconnectPayload): Promise<any>;
|
|
54
|
+
onDestroy?(data: onDestroyPayload): Promise<any>;
|
|
47
55
|
}
|
|
48
|
-
export declare type Hook = '
|
|
56
|
+
export declare type Hook = 'onConfigure' | 'onListen' | 'onUpgrade' | 'onConnect' | 'onAuthenticate' |
|
|
49
57
|
/**
|
|
50
58
|
* @deprecated onCreateDocument is deprecated, use onLoadDocument instead
|
|
51
59
|
*/
|
|
52
|
-
'onCreateDocument' | 'onLoadDocument' | '
|
|
60
|
+
'onCreateDocument' | 'onLoadDocument' | 'afterLoadDocument' | 'onChange' | 'onStoreDocument' | 'afterStoreDocument' | 'onAwarenessUpdate' | 'onRequest' | 'onDisconnect' | 'onDestroy';
|
|
53
61
|
export interface Configuration extends Extension {
|
|
54
62
|
/**
|
|
55
63
|
* A name for the instance, used for logging.
|
|
@@ -67,6 +75,28 @@ export interface Configuration extends Extension {
|
|
|
67
75
|
* Defines in which interval the server sends a ping, and closes the connection when no pong is sent back.
|
|
68
76
|
*/
|
|
69
77
|
timeout: number;
|
|
78
|
+
/**
|
|
79
|
+
* Debounces the call of the `onStoreDocument` hook for the given amount of time in ms.
|
|
80
|
+
* Otherwise every single update would be persisted.
|
|
81
|
+
*/
|
|
82
|
+
debounce: number;
|
|
83
|
+
/**
|
|
84
|
+
* Makes sure to call `onStoreDocument` at least in the given amount of time (ms).
|
|
85
|
+
*/
|
|
86
|
+
maxDebounce: number;
|
|
87
|
+
/**
|
|
88
|
+
* By default, the servers show a start screen. If passed false, the server will start quietly.
|
|
89
|
+
*/
|
|
90
|
+
quiet: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Function which returns the (customized) document name based on the request
|
|
93
|
+
*/
|
|
94
|
+
getDocumentName?(data: getDocumentNamePayload): string | Promise<string>;
|
|
95
|
+
}
|
|
96
|
+
export interface getDocumentNamePayload {
|
|
97
|
+
documentName: string;
|
|
98
|
+
request: IncomingMessage;
|
|
99
|
+
requestParameters: URLSearchParams;
|
|
70
100
|
}
|
|
71
101
|
export interface onAuthenticatePayload {
|
|
72
102
|
documentName: string;
|
|
@@ -75,7 +105,7 @@ export interface onAuthenticatePayload {
|
|
|
75
105
|
requestParameters: URLSearchParams;
|
|
76
106
|
socketId: string;
|
|
77
107
|
token: string;
|
|
78
|
-
connection:
|
|
108
|
+
connection: ConnectionConfiguration;
|
|
79
109
|
}
|
|
80
110
|
export interface onConnectPayload {
|
|
81
111
|
documentName: string;
|
|
@@ -84,7 +114,7 @@ export interface onConnectPayload {
|
|
|
84
114
|
requestHeaders: IncomingHttpHeaders;
|
|
85
115
|
requestParameters: URLSearchParams;
|
|
86
116
|
socketId: string;
|
|
87
|
-
connection:
|
|
117
|
+
connection: ConnectionConfiguration;
|
|
88
118
|
}
|
|
89
119
|
export interface onLoadDocumentPayload {
|
|
90
120
|
context: any;
|
|
@@ -94,7 +124,17 @@ export interface onLoadDocumentPayload {
|
|
|
94
124
|
requestHeaders: IncomingHttpHeaders;
|
|
95
125
|
requestParameters: URLSearchParams;
|
|
96
126
|
socketId: string;
|
|
97
|
-
connection:
|
|
127
|
+
connection: ConnectionConfiguration;
|
|
128
|
+
}
|
|
129
|
+
export interface afterLoadDocumentPayload {
|
|
130
|
+
context: any;
|
|
131
|
+
document: Document;
|
|
132
|
+
documentName: string;
|
|
133
|
+
instance: Hocuspocus;
|
|
134
|
+
requestHeaders: IncomingHttpHeaders;
|
|
135
|
+
requestParameters: URLSearchParams;
|
|
136
|
+
socketId: string;
|
|
137
|
+
connection: ConnectionConfiguration;
|
|
98
138
|
}
|
|
99
139
|
export interface onChangePayload {
|
|
100
140
|
clientsCount: number;
|
|
@@ -107,6 +147,41 @@ export interface onChangePayload {
|
|
|
107
147
|
update: Uint8Array;
|
|
108
148
|
socketId: string;
|
|
109
149
|
}
|
|
150
|
+
export interface onStoreDocumentPayload {
|
|
151
|
+
clientsCount: number;
|
|
152
|
+
context: any;
|
|
153
|
+
document: Document;
|
|
154
|
+
documentName: string;
|
|
155
|
+
instance: Hocuspocus;
|
|
156
|
+
requestHeaders: IncomingHttpHeaders;
|
|
157
|
+
requestParameters: URLSearchParams;
|
|
158
|
+
socketId: string;
|
|
159
|
+
}
|
|
160
|
+
export interface afterStoreDocumentPayload extends onStoreDocumentPayload {
|
|
161
|
+
}
|
|
162
|
+
export interface onAwarenessUpdatePayload {
|
|
163
|
+
clientsCount: number;
|
|
164
|
+
context: any;
|
|
165
|
+
document: Document;
|
|
166
|
+
documentName: string;
|
|
167
|
+
instance: Hocuspocus;
|
|
168
|
+
requestHeaders: IncomingHttpHeaders;
|
|
169
|
+
requestParameters: URLSearchParams;
|
|
170
|
+
update: Uint8Array;
|
|
171
|
+
socketId: string;
|
|
172
|
+
added: number[];
|
|
173
|
+
updated: number[];
|
|
174
|
+
removed: number[];
|
|
175
|
+
awareness: Awareness;
|
|
176
|
+
states: StatesArray;
|
|
177
|
+
}
|
|
178
|
+
export declare type StatesArray = {
|
|
179
|
+
clientId: number;
|
|
180
|
+
[key: string | number]: any;
|
|
181
|
+
}[];
|
|
182
|
+
export interface storePayload extends onStoreDocumentPayload {
|
|
183
|
+
state: Buffer;
|
|
184
|
+
}
|
|
110
185
|
export interface onDisconnectPayload {
|
|
111
186
|
clientsCount: number;
|
|
112
187
|
context: any;
|
|
@@ -140,7 +215,3 @@ export interface onConfigurePayload {
|
|
|
140
215
|
yjsVersion: string;
|
|
141
216
|
instance: Hocuspocus;
|
|
142
217
|
}
|
|
143
|
-
export interface CloseEvent {
|
|
144
|
-
code: number;
|
|
145
|
-
reason: string;
|
|
146
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createDirectory: (dir: string) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const flushRedis: () => Promise<string>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { HocuspocusProvider, HocuspocusProviderConfiguration } from '@hocuspocus/provider';
|
|
2
|
+
import { Hocuspocus } from '@hocuspocus/server';
|
|
3
|
+
export declare const newHocuspocusProvider: (server: Hocuspocus, options?: Partial<Omit<HocuspocusProviderConfiguration, 'url'>>) => HocuspocusProvider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const removeDirectory: (dir: string) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const sleep: (time: number) => Promise<unknown>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hocuspocus/provider",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.30",
|
|
4
4
|
"description": "hocuspocus provider",
|
|
5
5
|
"homepage": "https://hocuspocus.dev",
|
|
6
6
|
"keywords": [
|
|
@@ -28,10 +28,11 @@
|
|
|
28
28
|
"dist"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@
|
|
32
|
-
"
|
|
31
|
+
"@hocuspocus/common": "^1.0.0-alpha.5",
|
|
32
|
+
"@lifeomic/attempt": "^3.0.2",
|
|
33
|
+
"lib0": "^0.2.43",
|
|
33
34
|
"y-protocols": "^1.0.5",
|
|
34
|
-
"yjs": "^13.5.
|
|
35
|
+
"yjs": "^13.5.24"
|
|
35
36
|
},
|
|
36
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "125d94dc3520bb5185293c9b316f66ddd9215992"
|
|
37
38
|
}
|
package/src/EventEmitter.ts
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
HocuspocusProvider,
|
|
3
|
+
HocuspocusProviderConfiguration,
|
|
4
|
+
} from './HocuspocusProvider'
|
|
5
|
+
|
|
6
|
+
export type HocuspocusCloudProviderConfiguration =
|
|
7
|
+
Required<Pick<HocuspocusProviderConfiguration, 'name'>> &
|
|
8
|
+
Partial<HocuspocusProviderConfiguration> &
|
|
9
|
+
AdditionalHocuspocusCloudProviderConfiguration
|
|
10
|
+
|
|
11
|
+
export interface AdditionalHocuspocusCloudProviderConfiguration {
|
|
12
|
+
/**
|
|
13
|
+
* A Hocuspocus Cloud key, get one here: https://hocuspocus.cloud/
|
|
14
|
+
*/
|
|
15
|
+
key: string,
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class HocuspocusCloudProvider extends HocuspocusProvider {
|
|
19
|
+
constructor(configuration: HocuspocusCloudProviderConfiguration) {
|
|
20
|
+
if (!configuration.url) {
|
|
21
|
+
configuration.url = 'wss://connect.hocuspocus.cloud'
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (configuration.key) {
|
|
25
|
+
if (!configuration.parameters) {
|
|
26
|
+
configuration.parameters = {}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
configuration.parameters.key = configuration.key
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
super(configuration as HocuspocusProviderConfiguration)
|
|
33
|
+
}
|
|
34
|
+
}
|