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

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.
@@ -1138,7 +1138,10 @@ var CloseMessage = class extends OutgoingMessage {
1138
1138
 
1139
1139
  //#endregion
1140
1140
  //#region packages/provider/src/HocuspocusProviderWebsocket.ts
1141
- var HocuspocusProviderWebsocket = class extends EventEmitter {
1141
+ var HocuspocusProviderWebsocket = class HocuspocusProviderWebsocket extends EventEmitter {
1142
+ static {
1143
+ this.DEDUPLICATABLE_TYPES = new Set([MessageType.Awareness, MessageType.QueryAwareness]);
1144
+ }
1142
1145
  constructor(configuration) {
1143
1146
  super();
1144
1147
  this.messageQueue = [];
@@ -1387,9 +1390,32 @@ var HocuspocusProviderWebsocket = class extends EventEmitter {
1387
1390
  console.error(e);
1388
1391
  }
1389
1392
  }
1393
+ parseQueuedMessage(message) {
1394
+ try {
1395
+ const decoder = createDecoder(message);
1396
+ return {
1397
+ documentName: readVarString(decoder),
1398
+ messageType: readVarUint(decoder)
1399
+ };
1400
+ } catch {
1401
+ return null;
1402
+ }
1403
+ }
1404
+ addToQueue(message) {
1405
+ if (message instanceof Uint8Array) {
1406
+ const parsed = this.parseQueuedMessage(message);
1407
+ if (parsed && HocuspocusProviderWebsocket.DEDUPLICATABLE_TYPES.has(parsed.messageType)) this.messageQueue = this.messageQueue.filter((queued) => {
1408
+ if (!(queued instanceof Uint8Array)) return true;
1409
+ const queuedParsed = this.parseQueuedMessage(queued);
1410
+ if (!queuedParsed) return true;
1411
+ return !(queuedParsed.documentName === parsed.documentName && queuedParsed.messageType === parsed.messageType);
1412
+ });
1413
+ }
1414
+ this.messageQueue.push(message);
1415
+ }
1390
1416
  send(message) {
1391
1417
  if (this.webSocket?.readyState === _hocuspocus_common.WsReadyStates.Open) this.webSocket.send(message);
1392
- else this.messageQueue.push(message);
1418
+ else this.addToQueue(message);
1393
1419
  }
1394
1420
  onClose({ event }) {
1395
1421
  this.closeTries = 0;
@@ -1617,7 +1643,7 @@ var MessageSender = class {
1617
1643
 
1618
1644
  //#endregion
1619
1645
  //#region packages/provider/src/version.ts
1620
- const version = "4.0.0-rc.0";
1646
+ const version = "4.0.0-rc.1";
1621
1647
 
1622
1648
  //#endregion
1623
1649
  //#region packages/provider/src/OutgoingMessages/AuthenticationMessage.ts