@hocuspocus/provider 3.0.4-rc.0 → 3.0.7-rc.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 (67) hide show
  1. package/dist/hocuspocus-provider.cjs +22 -16
  2. package/dist/hocuspocus-provider.cjs.map +1 -1
  3. package/dist/hocuspocus-provider.esm.js +22 -16
  4. package/dist/hocuspocus-provider.esm.js.map +1 -1
  5. package/dist/packages/common/src/auth.d.ts +1 -1
  6. package/dist/packages/common/src/index.d.ts +4 -4
  7. package/dist/packages/extension-database/src/index.d.ts +1 -1
  8. package/dist/packages/extension-logger/src/index.d.ts +1 -1
  9. package/dist/packages/extension-redis/src/Redis.d.ts +0 -2
  10. package/dist/packages/extension-redis/src/index.d.ts +1 -1
  11. package/dist/packages/extension-sqlite/src/index.d.ts +1 -1
  12. package/dist/packages/extension-throttle/src/index.d.ts +0 -1
  13. package/dist/packages/extension-webhook/src/index.d.ts +0 -1
  14. package/dist/packages/provider/src/HocuspocusProvider.d.ts +9 -7
  15. package/dist/packages/provider/src/HocuspocusProviderWebsocket.d.ts +4 -6
  16. package/dist/packages/provider/src/IncomingMessage.d.ts +2 -2
  17. package/dist/packages/provider/src/MessageReceiver.d.ts +2 -2
  18. package/dist/packages/provider/src/MessageSender.d.ts +2 -2
  19. package/dist/packages/provider/src/OutgoingMessage.d.ts +2 -2
  20. package/dist/packages/provider/src/OutgoingMessages/AuthenticationMessage.d.ts +3 -3
  21. package/dist/packages/provider/src/OutgoingMessages/AwarenessMessage.d.ts +3 -3
  22. package/dist/packages/provider/src/OutgoingMessages/CloseMessage.d.ts +3 -3
  23. package/dist/packages/provider/src/OutgoingMessages/QueryAwarenessMessage.d.ts +3 -3
  24. package/dist/packages/provider/src/OutgoingMessages/StatelessMessage.d.ts +3 -3
  25. package/dist/packages/provider/src/OutgoingMessages/SyncStepOneMessage.d.ts +3 -3
  26. package/dist/packages/provider/src/OutgoingMessages/SyncStepTwoMessage.d.ts +3 -3
  27. package/dist/packages/provider/src/OutgoingMessages/UpdateMessage.d.ts +3 -3
  28. package/dist/packages/provider/src/index.d.ts +3 -3
  29. package/dist/packages/provider/src/types.d.ts +14 -108
  30. package/dist/packages/server/src/ClientConnection.d.ts +3 -5
  31. package/dist/packages/server/src/Connection.d.ts +13 -5
  32. package/dist/packages/server/src/DirectConnection.d.ts +3 -3
  33. package/dist/packages/server/src/Document.d.ts +1 -1
  34. package/dist/packages/server/src/Hocuspocus.d.ts +4 -5
  35. package/dist/packages/server/src/IncomingMessage.d.ts +4 -3
  36. package/dist/packages/server/src/MessageReceiver.d.ts +5 -5
  37. package/dist/packages/server/src/OutgoingMessage.d.ts +1 -1
  38. package/dist/packages/server/src/Server.d.ts +1 -2
  39. package/dist/packages/server/src/index.d.ts +9 -9
  40. package/dist/packages/server/src/types.d.ts +28 -9
  41. package/dist/packages/server/src/util/getParameters.d.ts +0 -2
  42. package/dist/packages/transformer/src/Prosemirror.d.ts +1 -1
  43. package/dist/packages/transformer/src/Tiptap.d.ts +1 -1
  44. package/dist/packages/transformer/src/index.d.ts +3 -3
  45. package/dist/playground/frontend/app/SocketContext.d.ts +2 -0
  46. package/dist/playground/frontend/next.config.d.ts +3 -0
  47. package/dist/tests/utils/index.d.ts +9 -9
  48. package/dist/tests/utils/newHocuspocusProviderWebsocket.d.ts +1 -1
  49. package/package.json +3 -3
  50. package/src/HocuspocusProvider.ts +42 -24
  51. package/src/HocuspocusProviderWebsocket.ts +8 -16
  52. package/src/IncomingMessage.ts +1 -1
  53. package/src/MessageReceiver.ts +4 -4
  54. package/src/MessageSender.ts +1 -1
  55. package/src/OutgoingMessage.ts +1 -1
  56. package/src/OutgoingMessages/AuthenticationMessage.ts +3 -3
  57. package/src/OutgoingMessages/AwarenessMessage.ts +3 -3
  58. package/src/OutgoingMessages/CloseMessage.ts +3 -3
  59. package/src/OutgoingMessages/QueryAwarenessMessage.ts +3 -3
  60. package/src/OutgoingMessages/StatelessMessage.ts +3 -3
  61. package/src/OutgoingMessages/SyncStepOneMessage.ts +3 -3
  62. package/src/OutgoingMessages/SyncStepTwoMessage.ts +3 -3
  63. package/src/OutgoingMessages/UpdateMessage.ts +3 -3
  64. package/src/index.ts +3 -3
  65. package/src/types.ts +16 -134
  66. package/dist/playground/frontend/vite.config.d.ts +0 -2
  67. /package/dist/{playground/frontend/src/main.d.ts → tests/server/beforeSync.d.ts} +0 -0
@@ -1,20 +1,16 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
1
  import type { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'http';
6
2
  import type { URLSearchParams } from 'url';
7
3
  import type { Awareness } from 'y-protocols/awareness';
8
- import type Connection from './Connection.js';
9
- import type Document from './Document.js';
10
- import type { Hocuspocus } from './Hocuspocus.js';
4
+ import type Connection from './Connection.ts';
5
+ import type Document from './Document.ts';
6
+ import type { Hocuspocus } from './Hocuspocus.ts';
11
7
  export declare enum MessageType {
12
8
  Unknown = -1,
13
9
  Sync = 0,
14
10
  Awareness = 1,
15
11
  Auth = 2,
16
12
  QueryAwareness = 3,
17
- SyncReply = 4,
13
+ SyncReply = 4,// same as Sync, but won't trigger another 'SyncStep1'
18
14
  Stateless = 5,
19
15
  BroadcastStateless = 6,
20
16
  CLOSE = 7,
@@ -42,6 +38,7 @@ export interface Extension {
42
38
  onLoadDocument?(data: onLoadDocumentPayload): Promise<any>;
43
39
  afterLoadDocument?(data: afterLoadDocumentPayload): Promise<any>;
44
40
  beforeHandleMessage?(data: beforeHandleMessagePayload): Promise<any>;
41
+ beforeSync?(data: beforeSyncPayload): Promise<any>;
45
42
  beforeBroadcastStateless?(data: beforeBroadcastStatelessPayload): Promise<any>;
46
43
  onStateless?(payload: onStatelessPayload): Promise<any>;
47
44
  onChange?(data: onChangePayload): Promise<any>;
@@ -54,7 +51,7 @@ export interface Extension {
54
51
  afterUnloadDocument?(data: afterUnloadDocumentPayload): Promise<any>;
55
52
  onDestroy?(data: onDestroyPayload): Promise<any>;
56
53
  }
57
- export type HookName = 'onConfigure' | 'onListen' | 'onUpgrade' | 'onConnect' | 'connected' | 'onAuthenticate' | 'onCreateDocument' | 'onLoadDocument' | 'afterLoadDocument' | 'beforeHandleMessage' | 'beforeBroadcastStateless' | 'onStateless' | 'onChange' | 'onStoreDocument' | 'afterStoreDocument' | 'onAwarenessUpdate' | 'onRequest' | 'onDisconnect' | 'beforeUnloadDocument' | 'afterUnloadDocument' | 'onDestroy';
54
+ export type HookName = 'onConfigure' | 'onListen' | 'onUpgrade' | 'onConnect' | 'connected' | 'onAuthenticate' | 'onCreateDocument' | 'onLoadDocument' | 'afterLoadDocument' | 'beforeHandleMessage' | 'beforeBroadcastStateless' | 'beforeSync' | 'onStateless' | 'onChange' | 'onStoreDocument' | 'afterStoreDocument' | 'onAwarenessUpdate' | 'onRequest' | 'onDisconnect' | 'beforeUnloadDocument' | 'afterUnloadDocument' | 'onDestroy';
58
55
  export type HookPayloadByName = {
59
56
  onConfigure: onConfigurePayload;
60
57
  onListen: onListenPayload;
@@ -67,6 +64,7 @@ export type HookPayloadByName = {
67
64
  afterLoadDocument: afterLoadDocumentPayload;
68
65
  beforeHandleMessage: beforeHandleMessagePayload;
69
66
  beforeBroadcastStateless: beforeBroadcastStatelessPayload;
67
+ beforeSync: beforeSyncPayload;
70
68
  onStateless: onStatelessPayload;
71
69
  onChange: onChangePayload;
72
70
  onStoreDocument: onStoreDocumentPayload;
@@ -211,6 +209,27 @@ export interface beforeHandleMessagePayload {
211
209
  socketId: string;
212
210
  connection: Connection;
213
211
  }
212
+ export interface beforeSyncPayload {
213
+ clientsCount: number;
214
+ context: any;
215
+ document: Document;
216
+ documentName: string;
217
+ connection: Connection;
218
+ /**
219
+ * The y-protocols/sync message type
220
+ * @example
221
+ * 0: SyncStep1
222
+ * 1: SyncStep2
223
+ * 2: YjsUpdate
224
+ *
225
+ * @see https://github.com/yjs/y-protocols/blob/master/sync.js#L13-L40
226
+ */
227
+ type: number;
228
+ /**
229
+ * The payload of the y-sync message.
230
+ */
231
+ payload: Uint8Array;
232
+ }
214
233
  export interface beforeBroadcastStatelessPayload {
215
234
  document: Document;
216
235
  documentName: string;
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import type { IncomingMessage } from 'http';
4
2
  import { URLSearchParams } from 'url';
5
3
  /**
@@ -1,6 +1,6 @@
1
1
  import { Doc } from 'yjs';
2
2
  import { Schema } from '@tiptap/pm/model';
3
- import type { Transformer } from './types.js';
3
+ import type { Transformer } from './types.ts';
4
4
  declare class Prosemirror implements Transformer {
5
5
  defaultSchema: Schema;
6
6
  schema(schema: Schema): Prosemirror;
@@ -1,6 +1,6 @@
1
1
  import type { Doc } from 'yjs';
2
2
  import type { Extensions } from '@tiptap/core';
3
- import type { Transformer } from './types.js';
3
+ import type { Transformer } from './types.ts';
4
4
  export declare class Tiptap implements Transformer {
5
5
  defaultExtensions: Extensions;
6
6
  extensions(extensions: Extensions): Tiptap;
@@ -1,3 +1,3 @@
1
- export * from './Prosemirror.js';
2
- export * from './Tiptap.js';
3
- export * from './types.js';
1
+ export * from './Prosemirror.ts';
2
+ export * from './Tiptap.ts';
3
+ export * from './types.ts';
@@ -0,0 +1,2 @@
1
+ import type { HocuspocusProviderWebsocket } from "@hocuspocus/provider";
2
+ export declare const SocketContext: import("react").Context<HocuspocusProviderWebsocket | null>;
@@ -0,0 +1,3 @@
1
+ import type { NextConfig } from "next";
2
+ declare const nextConfig: NextConfig;
3
+ export default nextConfig;
@@ -1,9 +1,9 @@
1
- export * from './createDirectory.js';
2
- export * from './flushRedis.js';
3
- export * from './newHocuspocus.js';
4
- export * from './newHocuspocusProvider.js';
5
- export * from './newHocuspocusProviderWebsocket.js';
6
- export * from './randomInteger.js';
7
- export * from './redisConnectionSettings.js';
8
- export * from './removeDirectory.js';
9
- export * from './sleep.js';
1
+ export * from './createDirectory.ts';
2
+ export * from './flushRedis.ts';
3
+ export * from './newHocuspocus.ts';
4
+ export * from './newHocuspocusProvider.ts';
5
+ export * from './newHocuspocusProviderWebsocket.ts';
6
+ export * from './randomInteger.ts';
7
+ export * from './redisConnectionSettings.ts';
8
+ export * from './removeDirectory.ts';
9
+ export * from './sleep.ts';
@@ -1,4 +1,4 @@
1
1
  import type { HocuspocusProviderWebsocketConfiguration } from '@hocuspocus/provider';
2
2
  import { HocuspocusProviderWebsocket } from '@hocuspocus/provider';
3
3
  import type { Hocuspocus } from '@hocuspocus/server';
4
- export declare const newHocuspocusProviderWebsocket: (hocuspocus: Hocuspocus, options?: Partial<Omit<HocuspocusProviderWebsocketConfiguration, 'url'>>) => HocuspocusProviderWebsocket;
4
+ export declare const newHocuspocusProviderWebsocket: (hocuspocus: Hocuspocus, options?: Partial<Omit<HocuspocusProviderWebsocketConfiguration, "url">>) => HocuspocusProviderWebsocket;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hocuspocus/provider",
3
- "version": "3.0.4-rc.0",
3
+ "version": "3.0.7-rc.0",
4
4
  "description": "hocuspocus provider",
5
5
  "homepage": "https://hocuspocus.dev",
6
6
  "keywords": [
@@ -16,7 +16,7 @@
16
16
  "types": "dist/packages/provider/src/index.d.ts",
17
17
  "exports": {
18
18
  "source": {
19
- "import": "./src"
19
+ "import": "./src/index.ts"
20
20
  },
21
21
  "default": {
22
22
  "import": "./dist/hocuspocus-provider.esm.js",
@@ -29,7 +29,7 @@
29
29
  "dist"
30
30
  ],
31
31
  "dependencies": {
32
- "@hocuspocus/common": "^3.0.4-rc.0",
32
+ "@hocuspocus/common": "^3.0.7-rc.0",
33
33
  "@lifeomic/attempt": "^3.0.2",
34
34
  "lib0": "^0.2.87",
35
35
  "ws": "^8.17.1"
@@ -2,22 +2,23 @@ import { awarenessStatesToArray } from '@hocuspocus/common'
2
2
  import type { Event, MessageEvent } from 'ws'
3
3
  import { Awareness, removeAwarenessStates } from 'y-protocols/awareness'
4
4
  import * as Y from 'yjs'
5
- import EventEmitter from './EventEmitter.js'
5
+ import EventEmitter from './EventEmitter.ts'
6
6
  import type {
7
- CompleteHocuspocusProviderWebsocketConfiguration} from './HocuspocusProviderWebsocket.js'
7
+ CompleteHocuspocusProviderWebsocketConfiguration} from './HocuspocusProviderWebsocket.ts'
8
8
  import {
9
9
  HocuspocusProviderWebsocket,
10
- } from './HocuspocusProviderWebsocket.js'
11
- import { IncomingMessage } from './IncomingMessage.js'
12
- import { MessageReceiver } from './MessageReceiver.js'
13
- import { MessageSender } from './MessageSender.js'
14
- import { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage.js'
15
- import { AwarenessMessage } from './OutgoingMessages/AwarenessMessage.js'
16
- import { StatelessMessage } from './OutgoingMessages/StatelessMessage.js'
17
- import { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage.js'
18
- import { UpdateMessage } from './OutgoingMessages/UpdateMessage.js'
10
+ } from './HocuspocusProviderWebsocket.ts'
11
+ import { IncomingMessage } from './IncomingMessage.ts'
12
+ import { MessageReceiver } from './MessageReceiver.ts'
13
+ import { MessageSender } from './MessageSender.ts'
14
+ import { AuthenticationMessage } from './OutgoingMessages/AuthenticationMessage.ts'
15
+ import { AwarenessMessage } from './OutgoingMessages/AwarenessMessage.ts'
16
+ import { StatelessMessage } from './OutgoingMessages/StatelessMessage.ts'
17
+ import { SyncStepOneMessage } from './OutgoingMessages/SyncStepOneMessage.ts'
18
+ import { UpdateMessage } from './OutgoingMessages/UpdateMessage.ts'
19
19
  import type {
20
20
  ConstructableOutgoingMessage,
21
+ onAuthenticatedParameters,
21
22
  onAuthenticationFailedParameters,
22
23
  onAwarenessChangeParameters,
23
24
  onAwarenessUpdateParameters,
@@ -25,9 +26,11 @@ import type {
25
26
  onDisconnectParameters,
26
27
  onMessageParameters,
27
28
  onOpenParameters,
28
- onOutgoingMessageParameters, onStatelessParameters,
29
+ onOutgoingMessageParameters,
30
+ onStatelessParameters,
29
31
  onSyncedParameters,
30
- } from './types.js'
32
+ onUnsyncedChangesParameters,
33
+ } from './types.ts'
31
34
 
32
35
  export type HocuspocusProviderConfiguration =
33
36
  Required<Pick<CompleteHocuspocusProviderConfiguration, 'name'>>
@@ -71,7 +74,7 @@ export interface CompleteHocuspocusProviderConfiguration {
71
74
  */
72
75
  forceSyncInterval: false | number,
73
76
 
74
- onAuthenticated: () => void,
77
+ onAuthenticated: (data: onAuthenticatedParameters) => void,
75
78
  onAuthenticationFailed: (data: onAuthenticationFailedParameters) => void,
76
79
  onOpen: (data: onOpenParameters) => void,
77
80
  onConnect: () => void,
@@ -84,6 +87,7 @@ export interface CompleteHocuspocusProviderConfiguration {
84
87
  onAwarenessUpdate: (data: onAwarenessUpdateParameters) => void,
85
88
  onAwarenessChange: (data: onAwarenessChangeParameters) => void,
86
89
  onStateless: (data: onStatelessParameters) => void
90
+ onUnsyncedChanges: (data: onUnsyncedChangesParameters) => void
87
91
  }
88
92
 
89
93
  export class AwarenessError extends Error {
@@ -112,6 +116,7 @@ export class HocuspocusProvider extends EventEmitter {
112
116
  onAwarenessUpdate: () => null,
113
117
  onAwarenessChange: () => null,
114
118
  onStateless: () => null,
119
+ onUnsyncedChanges: () => null,
115
120
  }
116
121
 
117
122
  isSynced = false
@@ -125,7 +130,7 @@ export class HocuspocusProvider extends EventEmitter {
125
130
  // @internal
126
131
  manageSocket = false
127
132
 
128
- private isAttached = false
133
+ private _isAttached = false
129
134
 
130
135
  intervals: any = {
131
136
  forceSync: null,
@@ -146,6 +151,7 @@ export class HocuspocusProvider extends EventEmitter {
146
151
  this.on('awarenessUpdate', this.configuration.onAwarenessUpdate)
147
152
  this.on('awarenessChange', this.configuration.onAwarenessChange)
148
153
  this.on('stateless', this.configuration.onStateless)
154
+ this.on('unsyncedChanges', this.configuration.onUnsyncedChanges)
149
155
 
150
156
  this.on('authenticated', this.configuration.onAuthenticated)
151
157
  this.on('authenticationFailed', this.configuration.onAuthenticationFailed)
@@ -190,8 +196,6 @@ export class HocuspocusProvider extends EventEmitter {
190
196
 
191
197
  forwardConnect = (e: any) => this.emit('connect', e)
192
198
 
193
- // forwardOpen = (e: any) => this.emit('open', e)
194
-
195
199
  forwardClose = (e: any) => this.emit('close', e)
196
200
 
197
201
  forwardDisconnect = (e: any) => this.emit('disconnect', e)
@@ -214,6 +218,10 @@ export class HocuspocusProvider extends EventEmitter {
214
218
  return this.configuration.document
215
219
  }
216
220
 
221
+ public get isAttached() {
222
+ return this._isAttached
223
+ }
224
+
217
225
  get awareness() {
218
226
  return this.configuration.awareness
219
227
  }
@@ -224,12 +232,12 @@ export class HocuspocusProvider extends EventEmitter {
224
232
 
225
233
  private resetUnsyncedChanges() {
226
234
  this.unsyncedChanges = 1
227
- this.emit('unsyncedChanges', this.unsyncedChanges)
235
+ this.emit('unsyncedChanges', { number: this.unsyncedChanges })
228
236
  }
229
237
 
230
238
  incrementUnsyncedChanges() {
231
239
  this.unsyncedChanges += 1
232
- this.emit('unsyncedChanges', this.unsyncedChanges)
240
+ this.emit('unsyncedChanges', { number: this.unsyncedChanges })
233
241
  }
234
242
 
235
243
  decrementUnsyncedChanges() {
@@ -241,7 +249,7 @@ export class HocuspocusProvider extends EventEmitter {
241
249
  this.synced = true
242
250
  }
243
251
 
244
- this.emit('unsyncedChanges', this.unsyncedChanges)
252
+ this.emit('unsyncedChanges', { number: this.unsyncedChanges })
245
253
  }
246
254
 
247
255
  forceSync() {
@@ -315,10 +323,18 @@ export class HocuspocusProvider extends EventEmitter {
315
323
 
316
324
  // not needed, but provides backward compatibility with e.g. lexical/yjs
317
325
  async connect() {
326
+ if( this.manageSocket ) {
327
+ return this.configuration.websocketProvider.connect()
328
+ }
329
+
318
330
  console.warn('HocuspocusProvider::connect() is deprecated and does not do anything. Please connect/disconnect on the websocketProvider, or attach/deattach providers.')
319
331
  }
320
332
 
321
333
  disconnect() {
334
+ if( this.manageSocket ) {
335
+ return this.configuration.websocketProvider.disconnect()
336
+ }
337
+
322
338
  console.warn('HocuspocusProvider::disconnect() is deprecated and does not do anything. Please connect/disconnect on the websocketProvider, or attach/deattach providers.')
323
339
  }
324
340
 
@@ -367,6 +383,8 @@ export class HocuspocusProvider extends EventEmitter {
367
383
  }
368
384
 
369
385
  send(message: ConstructableOutgoingMessage, args: any) {
386
+ if( !this._isAttached ) return;
387
+
370
388
  const messageSender = new MessageSender(message, args)
371
389
 
372
390
  this.emit('outgoingMessage', { message: messageSender.message })
@@ -443,11 +461,11 @@ export class HocuspocusProvider extends EventEmitter {
443
461
 
444
462
  this.configuration.websocketProvider.detach(this)
445
463
 
446
- this.isAttached = false
464
+ this._isAttached = false
447
465
  }
448
466
 
449
467
  attach() {
450
- if( this.isAttached ) return
468
+ if( this._isAttached ) return
451
469
 
452
470
  this.configuration.websocketProvider.on('connect', this.configuration.onConnect)
453
471
  this.configuration.websocketProvider.on('connect', this.forwardConnect)
@@ -466,7 +484,7 @@ export class HocuspocusProvider extends EventEmitter {
466
484
 
467
485
  this.configuration.websocketProvider.attach(this)
468
486
 
469
- this.isAttached = true
487
+ this._isAttached = true
470
488
  }
471
489
 
472
490
  permissionDeniedHandler(reason: string) {
@@ -478,7 +496,7 @@ export class HocuspocusProvider extends EventEmitter {
478
496
  this.isAuthenticated = true
479
497
  this.authorizedScope = scope
480
498
 
481
- this.emit('authenticated')
499
+ this.emit('authenticated', { scope })
482
500
  }
483
501
 
484
502
  setAwarenessField(key: string, value: any) {
@@ -5,16 +5,16 @@ import { retry } from '@lifeomic/attempt'
5
5
  import * as time from 'lib0/time'
6
6
  import * as url from 'lib0/url'
7
7
  import type { MessageEvent , Event } from 'ws'
8
- import EventEmitter from './EventEmitter.js'
9
- import type { HocuspocusProvider } from './HocuspocusProvider.js'
8
+ import EventEmitter from './EventEmitter.ts'
9
+ import type { HocuspocusProvider } from './HocuspocusProvider.ts'
10
10
  import type {
11
11
  onAwarenessChangeParameters, onAwarenessUpdateParameters,
12
- onCloseParameters, onDisconnectParameters, onMessageParameters, onOpenParameters, onOutgoingMessageParameters, onStatusParameters} from './types.js'
12
+ onCloseParameters, onDisconnectParameters, onMessageParameters, onOpenParameters, onOutgoingMessageParameters, onStatusParameters} from './types.ts'
13
13
  import {
14
14
  WebSocketStatus,
15
- } from './types.js'
16
- import { IncomingMessage } from './IncomingMessage.js'
17
- import {CloseMessage} from "./OutgoingMessages/CloseMessage.js"
15
+ } from './types.ts'
16
+ import { IncomingMessage } from './IncomingMessage.ts'
17
+ import { CloseMessage } from "./OutgoingMessages/CloseMessage.ts"
18
18
 
19
19
  export type HocusPocusWebSocket = WebSocket & { identifier: string };
20
20
 
@@ -173,7 +173,6 @@ export class HocuspocusProviderWebsocket extends EventEmitter {
173
173
  this.on('message', this.configuration.onMessage)
174
174
  this.on('outgoingMessage', this.configuration.onOutgoingMessage)
175
175
  this.on('status', this.configuration.onStatus)
176
- this.on('status', this.onStatus.bind(this))
177
176
  this.on('disconnect', this.configuration.onDisconnect)
178
177
  this.on('close', this.configuration.onClose)
179
178
  this.on('destroy', this.configuration.onDestroy)
@@ -201,26 +200,20 @@ export class HocuspocusProviderWebsocket extends EventEmitter {
201
200
 
202
201
  receivedOnOpenPayload?: Event | undefined = undefined
203
202
 
204
- receivedOnStatusPayload?: onStatusParameters | undefined = undefined
205
203
 
206
204
  async onOpen(event: Event) {
207
205
  this.cancelWebsocketRetry = undefined
208
206
  this.receivedOnOpenPayload = event
209
207
  }
210
208
 
211
- async onStatus(data: onStatusParameters) {
212
- this.receivedOnStatusPayload = data
213
- }
214
-
215
209
  attach(provider: HocuspocusProvider) {
216
- let connectPromise: Promise<any> | undefined
217
210
  this.configuration.providerMap.set(provider.configuration.name, provider)
218
211
 
219
212
  if (this.status === WebSocketStatus.Disconnected && this.shouldConnect) {
220
- connectPromise = this.connect()
213
+ this.connect()
221
214
  }
222
215
 
223
- if (this.receivedOnOpenPayload) {
216
+ if (this.receivedOnOpenPayload && this.status === WebSocketStatus.Connected) {
224
217
  provider.onOpen(this.receivedOnOpenPayload)
225
218
  }
226
219
  }
@@ -252,7 +245,6 @@ export class HocuspocusProviderWebsocket extends EventEmitter {
252
245
  }
253
246
 
254
247
  this.receivedOnOpenPayload = undefined
255
- this.receivedOnStatusPayload = undefined
256
248
  this.shouldConnect = true
257
249
 
258
250
  const abortableRetry = () => {
@@ -16,7 +16,7 @@ import {
16
16
  writeVarString,
17
17
  length,
18
18
  } from 'lib0/encoding'
19
- import type { MessageType } from './types.js'
19
+ import type { MessageType } from './types.ts'
20
20
 
21
21
  export class IncomingMessage {
22
22
 
@@ -3,10 +3,10 @@ import { readVarInt, readVarString } from 'lib0/decoding'
3
3
  import * as awarenessProtocol from 'y-protocols/awareness'
4
4
  import { messageYjsSyncStep2, readSyncMessage } from 'y-protocols/sync'
5
5
  import type { CloseEvent } from 'ws'
6
- import type { HocuspocusProvider } from './HocuspocusProvider.js'
7
- import type { IncomingMessage } from './IncomingMessage.js'
8
- import { OutgoingMessage } from './OutgoingMessage.js'
9
- import { MessageType } from './types.js'
6
+ import type { HocuspocusProvider } from './HocuspocusProvider.ts'
7
+ import type { IncomingMessage } from './IncomingMessage.ts'
8
+ import { OutgoingMessage } from './OutgoingMessage.ts'
9
+ import { MessageType } from './types.ts'
10
10
 
11
11
  export class MessageReceiver {
12
12
 
@@ -1,7 +1,7 @@
1
1
  import type { Encoder} from 'lib0/encoding'
2
2
  import { toUint8Array } from 'lib0/encoding'
3
3
  import * as bc from 'lib0/broadcastchannel'
4
- import type { ConstructableOutgoingMessage } from './types.js'
4
+ import type { ConstructableOutgoingMessage } from './types.ts'
5
5
 
6
6
  export class MessageSender {
7
7
 
@@ -1,6 +1,6 @@
1
1
  import type { Encoder} from 'lib0/encoding'
2
2
  import { createEncoder, toUint8Array } from 'lib0/encoding'
3
- import type { MessageType, OutgoingMessageArguments, OutgoingMessageInterface } from './types.js'
3
+ import type { MessageType, OutgoingMessageArguments, OutgoingMessageInterface } from './types.ts'
4
4
 
5
5
  export class OutgoingMessage implements OutgoingMessageInterface {
6
6
  encoder: Encoder
@@ -1,8 +1,8 @@
1
1
  import { writeVarString, writeVarUint } from 'lib0/encoding'
2
2
  import { writeAuthentication } from '@hocuspocus/common'
3
- import type { OutgoingMessageArguments } from '../types.js'
4
- import { MessageType } from '../types.js'
5
- import { OutgoingMessage } from '../OutgoingMessage.js'
3
+ import type { OutgoingMessageArguments } from '../types.ts'
4
+ import { MessageType } from '../types.ts'
5
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
6
6
 
7
7
  export class AuthenticationMessage extends OutgoingMessage {
8
8
  type = MessageType.Auth
@@ -1,8 +1,8 @@
1
1
  import * as encoding from 'lib0/encoding'
2
2
  import { encodeAwarenessUpdate } from 'y-protocols/awareness'
3
- import type { OutgoingMessageArguments } from '../types.js'
4
- import { MessageType } from '../types.js'
5
- import { OutgoingMessage } from '../OutgoingMessage.js'
3
+ import type { OutgoingMessageArguments } from '../types.ts'
4
+ import { MessageType } from '../types.ts'
5
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
6
6
 
7
7
  export class AwarenessMessage extends OutgoingMessage {
8
8
  type = MessageType.Awareness
@@ -1,7 +1,7 @@
1
1
  import * as encoding from 'lib0/encoding'
2
- import type { OutgoingMessageArguments } from '../types.js'
3
- import { MessageType } from '../types.js'
4
- import { OutgoingMessage } from '../OutgoingMessage.js'
2
+ import type { OutgoingMessageArguments } from '../types.ts'
3
+ import { MessageType } from '../types.ts'
4
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
5
5
 
6
6
  export class CloseMessage extends OutgoingMessage {
7
7
  type = MessageType.CLOSE
@@ -1,7 +1,7 @@
1
1
  import * as encoding from 'lib0/encoding'
2
- import type { OutgoingMessageArguments } from '../types.js'
3
- import { MessageType } from '../types.js'
4
- import { OutgoingMessage } from '../OutgoingMessage.js'
2
+ import type { OutgoingMessageArguments } from '../types.ts'
3
+ import { MessageType } from '../types.ts'
4
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
5
5
 
6
6
  export class QueryAwarenessMessage extends OutgoingMessage {
7
7
  type = MessageType.QueryAwareness
@@ -1,7 +1,7 @@
1
1
  import { writeVarString, writeVarUint } from 'lib0/encoding'
2
- import type { OutgoingMessageArguments } from '../types.js'
3
- import { MessageType } from '../types.js'
4
- import { OutgoingMessage } from '../OutgoingMessage.js'
2
+ import type { OutgoingMessageArguments } from '../types.ts'
3
+ import { MessageType } from '../types.ts'
4
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
5
5
 
6
6
  export class StatelessMessage extends OutgoingMessage {
7
7
  type = MessageType.Stateless
@@ -1,8 +1,8 @@
1
1
  import * as encoding from 'lib0/encoding'
2
2
  import * as syncProtocol from 'y-protocols/sync'
3
- import type { OutgoingMessageArguments } from '../types.js'
4
- import { MessageType } from '../types.js'
5
- import { OutgoingMessage } from '../OutgoingMessage.js'
3
+ import type { OutgoingMessageArguments } from '../types.ts'
4
+ import { MessageType } from '../types.ts'
5
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
6
6
 
7
7
  export class SyncStepOneMessage extends OutgoingMessage {
8
8
  type = MessageType.Sync
@@ -1,8 +1,8 @@
1
1
  import * as encoding from 'lib0/encoding'
2
2
  import * as syncProtocol from 'y-protocols/sync'
3
- import type { OutgoingMessageArguments } from '../types.js'
4
- import { MessageType } from '../types.js'
5
- import { OutgoingMessage } from '../OutgoingMessage.js'
3
+ import type { OutgoingMessageArguments } from '../types.ts'
4
+ import { MessageType } from '../types.ts'
5
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
6
6
 
7
7
  export class SyncStepTwoMessage extends OutgoingMessage {
8
8
  type = MessageType.Sync
@@ -1,8 +1,8 @@
1
1
  import { writeVarString, writeVarUint } from 'lib0/encoding'
2
2
  import { writeUpdate } from 'y-protocols/sync'
3
- import type { OutgoingMessageArguments } from '../types.js'
4
- import { MessageType } from '../types.js'
5
- import { OutgoingMessage } from '../OutgoingMessage.js'
3
+ import type { OutgoingMessageArguments } from '../types.ts'
4
+ import { MessageType } from '../types.ts'
5
+ import { OutgoingMessage } from '../OutgoingMessage.ts'
6
6
 
7
7
  export class UpdateMessage extends OutgoingMessage {
8
8
  type = MessageType.Sync
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './HocuspocusProvider.js'
2
- export * from './HocuspocusProviderWebsocket.js'
3
- export * from './types.js'
1
+ export * from './HocuspocusProvider.ts'
2
+ export * from './HocuspocusProviderWebsocket.ts'
3
+ export * from './types.ts'