@hocuspocus/provider 1.0.0-alpha.22 → 1.0.0-alpha.26

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.
@@ -277,8 +277,8 @@ const min = (a, b) => a < b ? a : b;
277
277
  const max = (a, b) => a > b ? a : b;
278
278
 
279
279
  /* eslint-env browser */
280
- const BIT8 = 128;
281
- const BITS7 = 127;
280
+ const BIT8$1 = 128;
281
+ const BITS7$1 = 127;
282
282
 
283
283
  /**
284
284
  * Efficient schema-less binary encoding with support for variable length encoding.
@@ -369,7 +369,7 @@ const toUint8Array = encoder => {
369
369
  * @param {Encoder} encoder
370
370
  * @param {number} num The byte that is to be encoded.
371
371
  */
372
- const write = (encoder, num) => {
372
+ const write$1 = (encoder, num) => {
373
373
  const bufferLen = encoder.cbuf.length;
374
374
  if (encoder.cpos === bufferLen) {
375
375
  encoder.bufs.push(encoder.cbuf);
@@ -388,12 +388,12 @@ const write = (encoder, num) => {
388
388
  * @param {Encoder} encoder
389
389
  * @param {number} num The number that is to be encoded.
390
390
  */
391
- const writeVarUint = (encoder, num) => {
392
- while (num > BITS7) {
393
- write(encoder, BIT8 | (BITS7 & num));
391
+ const writeVarUint$1 = (encoder, num) => {
392
+ while (num > BITS7$1) {
393
+ write$1(encoder, BIT8$1 | (BITS7$1 & num));
394
394
  num >>>= 7;
395
395
  }
396
- write(encoder, BITS7 & num);
396
+ write$1(encoder, BITS7$1 & num);
397
397
  };
398
398
 
399
399
  /**
@@ -403,12 +403,12 @@ const writeVarUint = (encoder, num) => {
403
403
  * @param {Encoder} encoder
404
404
  * @param {String} str The string that is to be encoded.
405
405
  */
406
- const writeVarString = (encoder, str) => {
406
+ const writeVarString$1 = (encoder, str) => {
407
407
  const encodedString = unescape(encodeURIComponent(str));
408
408
  const len = encodedString.length;
409
- writeVarUint(encoder, len);
409
+ writeVarUint$1(encoder, len);
410
410
  for (let i = 0; i < len; i++) {
411
- write(encoder, /** @type {number} */ (encodedString.codePointAt(i)));
411
+ write$1(encoder, /** @type {number} */ (encodedString.codePointAt(i)));
412
412
  }
413
413
  };
414
414
 
@@ -446,7 +446,7 @@ const writeUint8Array = (encoder, uint8Array) => {
446
446
  * @param {Uint8Array} uint8Array
447
447
  */
448
448
  const writeVarUint8Array = (encoder, uint8Array) => {
449
- writeVarUint(encoder, uint8Array.byteLength);
449
+ writeVarUint$1(encoder, uint8Array.byteLength);
450
450
  writeUint8Array(encoder, uint8Array);
451
451
  };
452
452
 
@@ -535,7 +535,7 @@ const readUint8Array = (decoder, len) => {
535
535
  * @param {Decoder} decoder
536
536
  * @return {Uint8Array}
537
537
  */
538
- const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder));
538
+ const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint$1(decoder));
539
539
 
540
540
  /**
541
541
  * Read one byte as unsigned integer.
@@ -543,7 +543,7 @@ const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder
543
543
  * @param {Decoder} decoder The decoder instance
544
544
  * @return {number} Unsigned 8-bit integer
545
545
  */
546
- const readUint8 = decoder => decoder.arr[decoder.pos++];
546
+ const readUint8$1 = decoder => decoder.arr[decoder.pos++];
547
547
 
548
548
  /**
549
549
  * Read unsigned integer (32bit) with variable length.
@@ -555,14 +555,14 @@ const readUint8 = decoder => decoder.arr[decoder.pos++];
555
555
  * @param {Decoder} decoder
556
556
  * @return {number} An unsigned integer.length
557
557
  */
558
- const readVarUint = decoder => {
558
+ const readVarUint$1 = decoder => {
559
559
  let num = 0;
560
560
  let len = 0;
561
561
  while (true) {
562
562
  const r = decoder.arr[decoder.pos++];
563
- num = num | ((r & BITS7) << len);
563
+ num = num | ((r & BITS7$1) << len);
564
564
  len += 7;
565
- if (r < BIT8) {
565
+ if (r < BIT8$1) {
566
566
  return num >>> 0 // return unsigned number!
567
567
  }
568
568
  /* istanbul ignore if */
@@ -585,15 +585,15 @@ const readVarUint = decoder => {
585
585
  * @param {Decoder} decoder
586
586
  * @return {String} The read String.
587
587
  */
588
- const readVarString = decoder => {
589
- let remainingLen = readVarUint(decoder);
588
+ const readVarString$1 = decoder => {
589
+ let remainingLen = readVarUint$1(decoder);
590
590
  if (remainingLen === 0) {
591
591
  return ''
592
592
  } else {
593
- let encodedString = String.fromCodePoint(readUint8(decoder)); // remember to decrease remainingLen
593
+ let encodedString = String.fromCodePoint(readUint8$1(decoder)); // remember to decrease remainingLen
594
594
  if (--remainingLen < 100) { // do not create a Uint8Array for small strings
595
595
  while (remainingLen--) {
596
- encodedString += String.fromCodePoint(readUint8(decoder));
596
+ encodedString += String.fromCodePoint(readUint8$1(decoder));
597
597
  }
598
598
  } else {
599
599
  while (remainingLen > 0) {
@@ -1206,14 +1206,14 @@ const removeAwarenessStates = (awareness, clients, origin) => {
1206
1206
  const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {
1207
1207
  const len = clients.length;
1208
1208
  const encoder = createEncoder();
1209
- writeVarUint(encoder, len);
1209
+ writeVarUint$1(encoder, len);
1210
1210
  for (let i = 0; i < len; i++) {
1211
1211
  const clientID = clients[i];
1212
1212
  const state = states.get(clientID) || null;
1213
1213
  const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock;
1214
- writeVarUint(encoder, clientID);
1215
- writeVarUint(encoder, clock);
1216
- writeVarString(encoder, JSON.stringify(state));
1214
+ writeVarUint$1(encoder, clientID);
1215
+ writeVarUint$1(encoder, clock);
1216
+ writeVarString$1(encoder, JSON.stringify(state));
1217
1217
  }
1218
1218
  return toUint8Array(encoder)
1219
1219
  };
@@ -1230,11 +1230,11 @@ const applyAwarenessUpdate = (awareness, update, origin) => {
1230
1230
  const updated = [];
1231
1231
  const filteredUpdated = [];
1232
1232
  const removed = [];
1233
- const len = readVarUint(decoder);
1233
+ const len = readVarUint$1(decoder);
1234
1234
  for (let i = 0; i < len; i++) {
1235
- const clientID = readVarUint(decoder);
1236
- let clock = readVarUint(decoder);
1237
- const state = JSON.parse(readVarString(decoder));
1235
+ const clientID = readVarUint$1(decoder);
1236
+ let clock = readVarUint$1(decoder);
1237
+ const state = JSON.parse(readVarString$1(decoder));
1238
1238
  const clientMeta = awareness.meta.get(clientID);
1239
1239
  const prevState = awareness.states.get(clientID);
1240
1240
  const currClock = clientMeta === undefined ? 0 : clientMeta.clock;
@@ -1378,13 +1378,13 @@ class IncomingMessage {
1378
1378
  this.decoder = createDecoder(new Uint8Array(this.data));
1379
1379
  }
1380
1380
  readVarUint() {
1381
- return readVarUint(this.decoder);
1381
+ return readVarUint$1(this.decoder);
1382
1382
  }
1383
1383
  readVarUint8Array() {
1384
1384
  return readVarUint8Array(this.decoder);
1385
1385
  }
1386
1386
  writeVarUint(type) {
1387
- return writeVarUint(this.encoder, type);
1387
+ return writeVarUint$1(this.encoder, type);
1388
1388
  }
1389
1389
  writeVarUint8Array(data) {
1390
1390
  return writeVarUint8Array(this.encoder, data);
@@ -1438,7 +1438,7 @@ const messageYjsUpdate = 2;
1438
1438
  * @param {Y.Doc} doc
1439
1439
  */
1440
1440
  const writeSyncStep1 = (encoder, doc) => {
1441
- writeVarUint(encoder, messageYjsSyncStep1);
1441
+ writeVarUint$1(encoder, messageYjsSyncStep1);
1442
1442
  const sv = Y.encodeStateVector(doc);
1443
1443
  writeVarUint8Array(encoder, sv);
1444
1444
  };
@@ -1449,7 +1449,7 @@ const writeSyncStep1 = (encoder, doc) => {
1449
1449
  * @param {Uint8Array} [encodedStateVector]
1450
1450
  */
1451
1451
  const writeSyncStep2 = (encoder, doc, encodedStateVector) => {
1452
- writeVarUint(encoder, messageYjsSyncStep2);
1452
+ writeVarUint$1(encoder, messageYjsSyncStep2);
1453
1453
  writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector));
1454
1454
  };
1455
1455
 
@@ -1484,7 +1484,7 @@ const readSyncStep2 = (decoder, doc, transactionOrigin) => {
1484
1484
  * @param {Uint8Array} update
1485
1485
  */
1486
1486
  const writeUpdate = (encoder, update) => {
1487
- writeVarUint(encoder, messageYjsUpdate);
1487
+ writeVarUint$1(encoder, messageYjsUpdate);
1488
1488
  writeVarUint8Array(encoder, update);
1489
1489
  };
1490
1490
 
@@ -1504,7 +1504,7 @@ const readUpdate = readSyncStep2;
1504
1504
  * @param {any} transactionOrigin
1505
1505
  */
1506
1506
  const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {
1507
- const messageType = readVarUint(decoder);
1507
+ const messageType = readVarUint$1(decoder);
1508
1508
  switch (messageType) {
1509
1509
  case messageYjsSyncStep1:
1510
1510
  readSyncStep1(decoder, encoder, doc);
@@ -1521,6 +1521,239 @@ const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {
1521
1521
  return messageType
1522
1522
  };
1523
1523
 
1524
+ /* eslint-env browser */
1525
+ const BIT8 = 128;
1526
+ const BITS7 = 127;
1527
+ /**
1528
+ * Efficient schema-less binary decoding with support for variable length encoding.
1529
+ *
1530
+ * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.
1531
+ *
1532
+ * Encodes numbers in little-endian order (least to most significant byte order)
1533
+ * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)
1534
+ * which is also used in Protocol Buffers.
1535
+ *
1536
+ * ```js
1537
+ * // encoding step
1538
+ * const encoder = new encoding.createEncoder()
1539
+ * encoding.writeVarUint(encoder, 256)
1540
+ * encoding.writeVarString(encoder, 'Hello world!')
1541
+ * const buf = encoding.toUint8Array(encoder)
1542
+ * ```
1543
+ *
1544
+ * ```js
1545
+ * // decoding step
1546
+ * const decoder = new decoding.createDecoder(buf)
1547
+ * decoding.readVarUint(decoder) // => 256
1548
+ * decoding.readVarString(decoder) // => 'Hello world!'
1549
+ * decoding.hasContent(decoder) // => false - all data is read
1550
+ * ```
1551
+ *
1552
+ * @module decoding
1553
+ */
1554
+
1555
+ /**
1556
+ * Read one byte as unsigned integer.
1557
+ * @function
1558
+ * @param {Decoder} decoder The decoder instance
1559
+ * @return {number} Unsigned 8-bit integer
1560
+ */
1561
+
1562
+ const readUint8 = decoder => decoder.arr[decoder.pos++];
1563
+ /**
1564
+ * Read unsigned integer (32bit) with variable length.
1565
+ * 1/8th of the storage is used as encoding overhead.
1566
+ * * numbers < 2^7 is stored in one bytlength
1567
+ * * numbers < 2^14 is stored in two bylength
1568
+ *
1569
+ * @function
1570
+ * @param {Decoder} decoder
1571
+ * @return {number} An unsigned integer.length
1572
+ */
1573
+
1574
+
1575
+ const readVarUint = decoder => {
1576
+ let num = 0;
1577
+ let len = 0;
1578
+
1579
+ while (true) {
1580
+ const r = decoder.arr[decoder.pos++];
1581
+ num = num | (r & BITS7) << len;
1582
+ len += 7;
1583
+
1584
+ if (r < BIT8) {
1585
+ return num >>> 0; // return unsigned number!
1586
+ }
1587
+ /* istanbul ignore if */
1588
+
1589
+
1590
+ if (len > 35) {
1591
+ throw new Error('Integer out of range!');
1592
+ }
1593
+ }
1594
+ };
1595
+ /**
1596
+ * Read string of variable length
1597
+ * * varUint is used to store the length of the string
1598
+ *
1599
+ * Transforming utf8 to a string is pretty expensive. The code performs 10x better
1600
+ * when String.fromCodePoint is fed with all characters as arguments.
1601
+ * But most environments have a maximum number of arguments per functions.
1602
+ * For effiency reasons we apply a maximum of 10000 characters at once.
1603
+ *
1604
+ * @function
1605
+ * @param {Decoder} decoder
1606
+ * @return {String} The read String.
1607
+ */
1608
+
1609
+
1610
+ const readVarString = decoder => {
1611
+ let remainingLen = readVarUint(decoder);
1612
+
1613
+ if (remainingLen === 0) {
1614
+ return '';
1615
+ } else {
1616
+ let encodedString = String.fromCodePoint(readUint8(decoder)); // remember to decrease remainingLen
1617
+
1618
+ if (--remainingLen < 100) {
1619
+ // do not create a Uint8Array for small strings
1620
+ while (remainingLen--) {
1621
+ encodedString += String.fromCodePoint(readUint8(decoder));
1622
+ }
1623
+ } else {
1624
+ while (remainingLen > 0) {
1625
+ const nextLen = remainingLen < 10000 ? remainingLen : 10000; // this is dangerous, we create a fresh array view from the existing buffer
1626
+
1627
+ const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen);
1628
+ decoder.pos += nextLen; // Starting with ES5.1 we can supply a generic array-like object as arguments
1629
+
1630
+ encodedString += String.fromCodePoint.apply(null,
1631
+ /** @type {any} */
1632
+ bytes);
1633
+ remainingLen -= nextLen;
1634
+ }
1635
+ }
1636
+
1637
+ return decodeURIComponent(escape(encodedString));
1638
+ }
1639
+ };
1640
+ /**
1641
+ * Efficient schema-less binary encoding with support for variable length encoding.
1642
+ *
1643
+ * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.
1644
+ *
1645
+ * Encodes numbers in little-endian order (least to most significant byte order)
1646
+ * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)
1647
+ * which is also used in Protocol Buffers.
1648
+ *
1649
+ * ```js
1650
+ * // encoding step
1651
+ * const encoder = new encoding.createEncoder()
1652
+ * encoding.writeVarUint(encoder, 256)
1653
+ * encoding.writeVarString(encoder, 'Hello world!')
1654
+ * const buf = encoding.toUint8Array(encoder)
1655
+ * ```
1656
+ *
1657
+ * ```js
1658
+ * // decoding step
1659
+ * const decoder = new decoding.createDecoder(buf)
1660
+ * decoding.readVarUint(decoder) // => 256
1661
+ * decoding.readVarString(decoder) // => 'Hello world!'
1662
+ * decoding.hasContent(decoder) // => false - all data is read
1663
+ * ```
1664
+ *
1665
+ * @module encoding
1666
+ */
1667
+
1668
+ /**
1669
+ * Write one byte to the encoder.
1670
+ *
1671
+ * @function
1672
+ * @param {Encoder} encoder
1673
+ * @param {number} num The byte that is to be encoded.
1674
+ */
1675
+
1676
+
1677
+ const write = (encoder, num) => {
1678
+ const bufferLen = encoder.cbuf.length;
1679
+
1680
+ if (encoder.cpos === bufferLen) {
1681
+ encoder.bufs.push(encoder.cbuf);
1682
+ encoder.cbuf = new Uint8Array(bufferLen * 2);
1683
+ encoder.cpos = 0;
1684
+ }
1685
+
1686
+ encoder.cbuf[encoder.cpos++] = num;
1687
+ };
1688
+ /**
1689
+ * Write a variable length unsigned integer.
1690
+ *
1691
+ * Encodes integers in the range from [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)
1692
+ *
1693
+ * @function
1694
+ * @param {Encoder} encoder
1695
+ * @param {number} num The number that is to be encoded.
1696
+ */
1697
+
1698
+
1699
+ const writeVarUint = (encoder, num) => {
1700
+ while (num > BITS7) {
1701
+ write(encoder, BIT8 | BITS7 & num);
1702
+ num >>>= 7;
1703
+ }
1704
+
1705
+ write(encoder, BITS7 & num);
1706
+ };
1707
+ /**
1708
+ * Write a variable length string.
1709
+ *
1710
+ * @function
1711
+ * @param {Encoder} encoder
1712
+ * @param {String} str The string that is to be encoded.
1713
+ */
1714
+
1715
+
1716
+ const writeVarString = (encoder, str) => {
1717
+ const encodedString = unescape(encodeURIComponent(str));
1718
+ const len = encodedString.length;
1719
+ writeVarUint(encoder, len);
1720
+
1721
+ for (let i = 0; i < len; i++) {
1722
+ write(encoder,
1723
+ /** @type {number} */
1724
+ encodedString.codePointAt(i));
1725
+ }
1726
+ };
1727
+
1728
+ var AuthMessageType;
1729
+
1730
+ (function (AuthMessageType) {
1731
+ AuthMessageType[AuthMessageType["Token"] = 0] = "Token";
1732
+ AuthMessageType[AuthMessageType["PermissionDenied"] = 1] = "PermissionDenied";
1733
+ AuthMessageType[AuthMessageType["Authenticated"] = 2] = "Authenticated";
1734
+ })(AuthMessageType || (AuthMessageType = {}));
1735
+
1736
+ const writeAuthentication = (encoder, auth) => {
1737
+ writeVarUint(encoder, AuthMessageType.Token);
1738
+ writeVarString(encoder, auth);
1739
+ };
1740
+
1741
+ const readAuthMessage = (decoder, permissionDeniedHandler, authenticatedHandler) => {
1742
+ switch (readVarUint(decoder)) {
1743
+ case AuthMessageType.PermissionDenied:
1744
+ {
1745
+ permissionDeniedHandler(readVarString(decoder));
1746
+ break;
1747
+ }
1748
+
1749
+ case AuthMessageType.Authenticated:
1750
+ {
1751
+ authenticatedHandler();
1752
+ break;
1753
+ }
1754
+ }
1755
+ };
1756
+
1524
1757
  var MessageType;
1525
1758
  (function (MessageType) {
1526
1759
  MessageType[MessageType["Sync"] = 0] = "Sync";
@@ -1529,29 +1762,6 @@ var MessageType;
1529
1762
  MessageType[MessageType["QueryAwareness"] = 3] = "QueryAwareness";
1530
1763
  })(MessageType || (MessageType = {}));
1531
1764
 
1532
- var AuthMessageType;
1533
- (function (AuthMessageType) {
1534
- AuthMessageType[AuthMessageType["Token"] = 0] = "Token";
1535
- AuthMessageType[AuthMessageType["PermissionDenied"] = 1] = "PermissionDenied";
1536
- AuthMessageType[AuthMessageType["Authenticated"] = 2] = "Authenticated";
1537
- })(AuthMessageType || (AuthMessageType = {}));
1538
- const writeAuthentication = (encoder, auth) => {
1539
- writeVarUint(encoder, AuthMessageType.Token);
1540
- writeVarString(encoder, auth);
1541
- };
1542
- const readAuthMessage = (decoder, permissionDeniedHandler, authenticatedHandler) => {
1543
- switch (readVarUint(decoder)) {
1544
- case AuthMessageType.PermissionDenied: {
1545
- permissionDeniedHandler(readVarString(decoder));
1546
- break;
1547
- }
1548
- case AuthMessageType.Authenticated: {
1549
- authenticatedHandler();
1550
- break;
1551
- }
1552
- }
1553
- };
1554
-
1555
1765
  class OutgoingMessage {
1556
1766
  constructor() {
1557
1767
  this.encoder = createEncoder();
@@ -1657,7 +1867,7 @@ class SyncStepOneMessage extends OutgoingMessage {
1657
1867
  if (typeof args.document === 'undefined') {
1658
1868
  throw new Error('The sync step one message requires document as an argument');
1659
1869
  }
1660
- writeVarUint(this.encoder, this.type);
1870
+ writeVarUint$1(this.encoder, this.type);
1661
1871
  writeSyncStep1(this.encoder, args.document);
1662
1872
  return this.encoder;
1663
1873
  }
@@ -1673,7 +1883,7 @@ class SyncStepTwoMessage extends OutgoingMessage {
1673
1883
  if (typeof args.document === 'undefined') {
1674
1884
  throw new Error('The sync step two message requires document as an argument');
1675
1885
  }
1676
- writeVarUint(this.encoder, this.type);
1886
+ writeVarUint$1(this.encoder, this.type);
1677
1887
  writeSyncStep2(this.encoder, args.document);
1678
1888
  return this.encoder;
1679
1889
  }
@@ -1686,7 +1896,7 @@ class QueryAwarenessMessage extends OutgoingMessage {
1686
1896
  this.description = 'Queries awareness states';
1687
1897
  }
1688
1898
  get(args) {
1689
- writeVarUint(this.encoder, this.type);
1899
+ writeVarUint$1(this.encoder, this.type);
1690
1900
  return this.encoder;
1691
1901
  }
1692
1902
  }
@@ -1701,7 +1911,7 @@ class AuthenticationMessage extends OutgoingMessage {
1701
1911
  if (typeof args.token === 'undefined') {
1702
1912
  throw new Error('The authentication message requires `token` as an argument.');
1703
1913
  }
1704
- writeVarUint(this.encoder, this.type);
1914
+ writeVarUint$1(this.encoder, this.type);
1705
1915
  writeAuthentication(this.encoder, args.token);
1706
1916
  return this.encoder;
1707
1917
  }
@@ -1720,7 +1930,7 @@ class AwarenessMessage extends OutgoingMessage {
1720
1930
  if (typeof args.clients === 'undefined') {
1721
1931
  throw new Error('The awareness message requires clients as an argument');
1722
1932
  }
1723
- writeVarUint(this.encoder, this.type);
1933
+ writeVarUint$1(this.encoder, this.type);
1724
1934
  let awarenessUpdate;
1725
1935
  if (args.states === undefined) {
1726
1936
  awarenessUpdate = encodeAwarenessUpdate(args.awareness, args.clients);
@@ -1740,7 +1950,7 @@ class UpdateMessage extends OutgoingMessage {
1740
1950
  this.description = 'A document update';
1741
1951
  }
1742
1952
  get(args) {
1743
- writeVarUint(this.encoder, this.type);
1953
+ writeVarUint$1(this.encoder, this.type);
1744
1954
  writeUpdate(this.encoder, args.update);
1745
1955
  return this.encoder;
1746
1956
  }
@@ -1885,11 +2095,11 @@ class HocuspocusProvider extends EventEmitter {
1885
2095
  },
1886
2096
  });
1887
2097
  }
1888
- catch (err) {
1889
- // If we aborted the connection attempt then don't throw an error
2098
+ catch (error) {
2099
+ // If we aborted the connection attempt then dont throw an error
1890
2100
  // ref: https://github.com/lifeomic/attempt/blob/master/src/index.ts#L136
1891
- if (err.code !== 'ATTEMPT_ABORTED') {
1892
- throw err;
2101
+ if (error && error.code !== 'ATTEMPT_ABORTED') {
2102
+ throw error;
1893
2103
  }
1894
2104
  }
1895
2105
  }
@@ -2049,7 +2259,6 @@ class HocuspocusProvider extends EventEmitter {
2049
2259
  return;
2050
2260
  }
2051
2261
  this.startSync();
2052
- this.resolveConnectionAttempt();
2053
2262
  }
2054
2263
  startSync() {
2055
2264
  this.send(SyncStepOneMessage, { document: this.document });
@@ -2071,6 +2280,7 @@ class HocuspocusProvider extends EventEmitter {
2071
2280
  }
2072
2281
  }
2073
2282
  onMessage(event) {
2283
+ this.resolveConnectionAttempt();
2074
2284
  this.lastMessageReceived = getUnixTime();
2075
2285
  const message = new IncomingMessage(event.data);
2076
2286
  this.emit('message', { event, message });