@hocuspocus/provider 4.0.0-rc.0 → 4.0.0-rc.2

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.
@@ -1109,7 +1109,10 @@ var CloseMessage = class extends OutgoingMessage {
1109
1109
 
1110
1110
  //#endregion
1111
1111
  //#region packages/provider/src/HocuspocusProviderWebsocket.ts
1112
- var HocuspocusProviderWebsocket = class extends EventEmitter {
1112
+ var HocuspocusProviderWebsocket = class HocuspocusProviderWebsocket extends EventEmitter {
1113
+ static {
1114
+ this.DEDUPLICATABLE_TYPES = new Set([MessageType.Awareness, MessageType.QueryAwareness]);
1115
+ }
1113
1116
  constructor(configuration) {
1114
1117
  super();
1115
1118
  this.messageQueue = [];
@@ -1358,9 +1361,32 @@ var HocuspocusProviderWebsocket = class extends EventEmitter {
1358
1361
  console.error(e);
1359
1362
  }
1360
1363
  }
1364
+ parseQueuedMessage(message) {
1365
+ try {
1366
+ const decoder = createDecoder(message);
1367
+ return {
1368
+ documentName: readVarString(decoder),
1369
+ messageType: readVarUint(decoder)
1370
+ };
1371
+ } catch {
1372
+ return null;
1373
+ }
1374
+ }
1375
+ addToQueue(message) {
1376
+ if (message instanceof Uint8Array) {
1377
+ const parsed = this.parseQueuedMessage(message);
1378
+ if (parsed && HocuspocusProviderWebsocket.DEDUPLICATABLE_TYPES.has(parsed.messageType)) this.messageQueue = this.messageQueue.filter((queued) => {
1379
+ if (!(queued instanceof Uint8Array)) return true;
1380
+ const queuedParsed = this.parseQueuedMessage(queued);
1381
+ if (!queuedParsed) return true;
1382
+ return !(queuedParsed.documentName === parsed.documentName && queuedParsed.messageType === parsed.messageType);
1383
+ });
1384
+ }
1385
+ this.messageQueue.push(message);
1386
+ }
1361
1387
  send(message) {
1362
1388
  if (this.webSocket?.readyState === WsReadyStates.Open) this.webSocket.send(message);
1363
- else this.messageQueue.push(message);
1389
+ else this.addToQueue(message);
1364
1390
  }
1365
1391
  onClose({ event }) {
1366
1392
  this.closeTries = 0;
@@ -1588,7 +1614,7 @@ var MessageSender = class {
1588
1614
 
1589
1615
  //#endregion
1590
1616
  //#region packages/provider/src/version.ts
1591
- const version = "4.0.0-rc.0";
1617
+ const version = "4.0.0-rc.2";
1592
1618
 
1593
1619
  //#endregion
1594
1620
  //#region packages/provider/src/OutgoingMessages/AuthenticationMessage.ts
@@ -1702,7 +1728,7 @@ var HocuspocusProvider = class extends EventEmitter {
1702
1728
  document: void 0,
1703
1729
  awareness: void 0,
1704
1730
  token: null,
1705
- sessionAwareness: true,
1731
+ sessionAwareness: false,
1706
1732
  forceSyncInterval: false,
1707
1733
  onAuthenticated: () => null,
1708
1734
  onAuthenticationFailed: () => null,