@hocuspocus/provider 1.0.0-alpha.21 → 1.0.0-alpha.25

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.
@@ -301,8 +301,8 @@ const min = (a, b) => a < b ? a : b;
301
301
  const max = (a, b) => a > b ? a : b;
302
302
 
303
303
  /* eslint-env browser */
304
- const BIT8 = 128;
305
- const BITS7 = 127;
304
+ const BIT8$1 = 128;
305
+ const BITS7$1 = 127;
306
306
 
307
307
  /**
308
308
  * Efficient schema-less binary encoding with support for variable length encoding.
@@ -393,7 +393,7 @@ const toUint8Array = encoder => {
393
393
  * @param {Encoder} encoder
394
394
  * @param {number} num The byte that is to be encoded.
395
395
  */
396
- const write = (encoder, num) => {
396
+ const write$1 = (encoder, num) => {
397
397
  const bufferLen = encoder.cbuf.length;
398
398
  if (encoder.cpos === bufferLen) {
399
399
  encoder.bufs.push(encoder.cbuf);
@@ -412,12 +412,12 @@ const write = (encoder, num) => {
412
412
  * @param {Encoder} encoder
413
413
  * @param {number} num The number that is to be encoded.
414
414
  */
415
- const writeVarUint = (encoder, num) => {
416
- while (num > BITS7) {
417
- write(encoder, BIT8 | (BITS7 & num));
415
+ const writeVarUint$1 = (encoder, num) => {
416
+ while (num > BITS7$1) {
417
+ write$1(encoder, BIT8$1 | (BITS7$1 & num));
418
418
  num >>>= 7;
419
419
  }
420
- write(encoder, BITS7 & num);
420
+ write$1(encoder, BITS7$1 & num);
421
421
  };
422
422
 
423
423
  /**
@@ -427,12 +427,12 @@ const writeVarUint = (encoder, num) => {
427
427
  * @param {Encoder} encoder
428
428
  * @param {String} str The string that is to be encoded.
429
429
  */
430
- const writeVarString = (encoder, str) => {
430
+ const writeVarString$1 = (encoder, str) => {
431
431
  const encodedString = unescape(encodeURIComponent(str));
432
432
  const len = encodedString.length;
433
- writeVarUint(encoder, len);
433
+ writeVarUint$1(encoder, len);
434
434
  for (let i = 0; i < len; i++) {
435
- write(encoder, /** @type {number} */ (encodedString.codePointAt(i)));
435
+ write$1(encoder, /** @type {number} */ (encodedString.codePointAt(i)));
436
436
  }
437
437
  };
438
438
 
@@ -470,7 +470,7 @@ const writeUint8Array = (encoder, uint8Array) => {
470
470
  * @param {Uint8Array} uint8Array
471
471
  */
472
472
  const writeVarUint8Array = (encoder, uint8Array) => {
473
- writeVarUint(encoder, uint8Array.byteLength);
473
+ writeVarUint$1(encoder, uint8Array.byteLength);
474
474
  writeUint8Array(encoder, uint8Array);
475
475
  };
476
476
 
@@ -559,7 +559,7 @@ const readUint8Array = (decoder, len) => {
559
559
  * @param {Decoder} decoder
560
560
  * @return {Uint8Array}
561
561
  */
562
- const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder));
562
+ const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint$1(decoder));
563
563
 
564
564
  /**
565
565
  * Read one byte as unsigned integer.
@@ -567,7 +567,7 @@ const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder
567
567
  * @param {Decoder} decoder The decoder instance
568
568
  * @return {number} Unsigned 8-bit integer
569
569
  */
570
- const readUint8 = decoder => decoder.arr[decoder.pos++];
570
+ const readUint8$1 = decoder => decoder.arr[decoder.pos++];
571
571
 
572
572
  /**
573
573
  * Read unsigned integer (32bit) with variable length.
@@ -579,14 +579,14 @@ const readUint8 = decoder => decoder.arr[decoder.pos++];
579
579
  * @param {Decoder} decoder
580
580
  * @return {number} An unsigned integer.length
581
581
  */
582
- const readVarUint = decoder => {
582
+ const readVarUint$1 = decoder => {
583
583
  let num = 0;
584
584
  let len = 0;
585
585
  while (true) {
586
586
  const r = decoder.arr[decoder.pos++];
587
- num = num | ((r & BITS7) << len);
587
+ num = num | ((r & BITS7$1) << len);
588
588
  len += 7;
589
- if (r < BIT8) {
589
+ if (r < BIT8$1) {
590
590
  return num >>> 0 // return unsigned number!
591
591
  }
592
592
  /* istanbul ignore if */
@@ -609,15 +609,15 @@ const readVarUint = decoder => {
609
609
  * @param {Decoder} decoder
610
610
  * @return {String} The read String.
611
611
  */
612
- const readVarString = decoder => {
613
- let remainingLen = readVarUint(decoder);
612
+ const readVarString$1 = decoder => {
613
+ let remainingLen = readVarUint$1(decoder);
614
614
  if (remainingLen === 0) {
615
615
  return ''
616
616
  } else {
617
- let encodedString = String.fromCodePoint(readUint8(decoder)); // remember to decrease remainingLen
617
+ let encodedString = String.fromCodePoint(readUint8$1(decoder)); // remember to decrease remainingLen
618
618
  if (--remainingLen < 100) { // do not create a Uint8Array for small strings
619
619
  while (remainingLen--) {
620
- encodedString += String.fromCodePoint(readUint8(decoder));
620
+ encodedString += String.fromCodePoint(readUint8$1(decoder));
621
621
  }
622
622
  } else {
623
623
  while (remainingLen > 0) {
@@ -1230,14 +1230,14 @@ const removeAwarenessStates = (awareness, clients, origin) => {
1230
1230
  const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {
1231
1231
  const len = clients.length;
1232
1232
  const encoder = createEncoder();
1233
- writeVarUint(encoder, len);
1233
+ writeVarUint$1(encoder, len);
1234
1234
  for (let i = 0; i < len; i++) {
1235
1235
  const clientID = clients[i];
1236
1236
  const state = states.get(clientID) || null;
1237
1237
  const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock;
1238
- writeVarUint(encoder, clientID);
1239
- writeVarUint(encoder, clock);
1240
- writeVarString(encoder, JSON.stringify(state));
1238
+ writeVarUint$1(encoder, clientID);
1239
+ writeVarUint$1(encoder, clock);
1240
+ writeVarString$1(encoder, JSON.stringify(state));
1241
1241
  }
1242
1242
  return toUint8Array(encoder)
1243
1243
  };
@@ -1254,11 +1254,11 @@ const applyAwarenessUpdate = (awareness, update, origin) => {
1254
1254
  const updated = [];
1255
1255
  const filteredUpdated = [];
1256
1256
  const removed = [];
1257
- const len = readVarUint(decoder);
1257
+ const len = readVarUint$1(decoder);
1258
1258
  for (let i = 0; i < len; i++) {
1259
- const clientID = readVarUint(decoder);
1260
- let clock = readVarUint(decoder);
1261
- const state = JSON.parse(readVarString(decoder));
1259
+ const clientID = readVarUint$1(decoder);
1260
+ let clock = readVarUint$1(decoder);
1261
+ const state = JSON.parse(readVarString$1(decoder));
1262
1262
  const clientMeta = awareness.meta.get(clientID);
1263
1263
  const prevState = awareness.states.get(clientID);
1264
1264
  const currClock = clientMeta === undefined ? 0 : clientMeta.clock;
@@ -1402,13 +1402,13 @@ class IncomingMessage {
1402
1402
  this.decoder = createDecoder(new Uint8Array(this.data));
1403
1403
  }
1404
1404
  readVarUint() {
1405
- return readVarUint(this.decoder);
1405
+ return readVarUint$1(this.decoder);
1406
1406
  }
1407
1407
  readVarUint8Array() {
1408
1408
  return readVarUint8Array(this.decoder);
1409
1409
  }
1410
1410
  writeVarUint(type) {
1411
- return writeVarUint(this.encoder, type);
1411
+ return writeVarUint$1(this.encoder, type);
1412
1412
  }
1413
1413
  writeVarUint8Array(data) {
1414
1414
  return writeVarUint8Array(this.encoder, data);
@@ -1462,7 +1462,7 @@ const messageYjsUpdate = 2;
1462
1462
  * @param {Y.Doc} doc
1463
1463
  */
1464
1464
  const writeSyncStep1 = (encoder, doc) => {
1465
- writeVarUint(encoder, messageYjsSyncStep1);
1465
+ writeVarUint$1(encoder, messageYjsSyncStep1);
1466
1466
  const sv = Y__namespace.encodeStateVector(doc);
1467
1467
  writeVarUint8Array(encoder, sv);
1468
1468
  };
@@ -1473,7 +1473,7 @@ const writeSyncStep1 = (encoder, doc) => {
1473
1473
  * @param {Uint8Array} [encodedStateVector]
1474
1474
  */
1475
1475
  const writeSyncStep2 = (encoder, doc, encodedStateVector) => {
1476
- writeVarUint(encoder, messageYjsSyncStep2);
1476
+ writeVarUint$1(encoder, messageYjsSyncStep2);
1477
1477
  writeVarUint8Array(encoder, Y__namespace.encodeStateAsUpdate(doc, encodedStateVector));
1478
1478
  };
1479
1479
 
@@ -1508,7 +1508,7 @@ const readSyncStep2 = (decoder, doc, transactionOrigin) => {
1508
1508
  * @param {Uint8Array} update
1509
1509
  */
1510
1510
  const writeUpdate = (encoder, update) => {
1511
- writeVarUint(encoder, messageYjsUpdate);
1511
+ writeVarUint$1(encoder, messageYjsUpdate);
1512
1512
  writeVarUint8Array(encoder, update);
1513
1513
  };
1514
1514
 
@@ -1528,7 +1528,7 @@ const readUpdate = readSyncStep2;
1528
1528
  * @param {any} transactionOrigin
1529
1529
  */
1530
1530
  const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {
1531
- const messageType = readVarUint(decoder);
1531
+ const messageType = readVarUint$1(decoder);
1532
1532
  switch (messageType) {
1533
1533
  case messageYjsSyncStep1:
1534
1534
  readSyncStep1(decoder, encoder, doc);
@@ -1545,6 +1545,239 @@ const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {
1545
1545
  return messageType
1546
1546
  };
1547
1547
 
1548
+ /* eslint-env browser */
1549
+ const BIT8 = 128;
1550
+ const BITS7 = 127;
1551
+ /**
1552
+ * Efficient schema-less binary decoding with support for variable length encoding.
1553
+ *
1554
+ * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.
1555
+ *
1556
+ * Encodes numbers in little-endian order (least to most significant byte order)
1557
+ * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)
1558
+ * which is also used in Protocol Buffers.
1559
+ *
1560
+ * ```js
1561
+ * // encoding step
1562
+ * const encoder = new encoding.createEncoder()
1563
+ * encoding.writeVarUint(encoder, 256)
1564
+ * encoding.writeVarString(encoder, 'Hello world!')
1565
+ * const buf = encoding.toUint8Array(encoder)
1566
+ * ```
1567
+ *
1568
+ * ```js
1569
+ * // decoding step
1570
+ * const decoder = new decoding.createDecoder(buf)
1571
+ * decoding.readVarUint(decoder) // => 256
1572
+ * decoding.readVarString(decoder) // => 'Hello world!'
1573
+ * decoding.hasContent(decoder) // => false - all data is read
1574
+ * ```
1575
+ *
1576
+ * @module decoding
1577
+ */
1578
+
1579
+ /**
1580
+ * Read one byte as unsigned integer.
1581
+ * @function
1582
+ * @param {Decoder} decoder The decoder instance
1583
+ * @return {number} Unsigned 8-bit integer
1584
+ */
1585
+
1586
+ const readUint8 = decoder => decoder.arr[decoder.pos++];
1587
+ /**
1588
+ * Read unsigned integer (32bit) with variable length.
1589
+ * 1/8th of the storage is used as encoding overhead.
1590
+ * * numbers < 2^7 is stored in one bytlength
1591
+ * * numbers < 2^14 is stored in two bylength
1592
+ *
1593
+ * @function
1594
+ * @param {Decoder} decoder
1595
+ * @return {number} An unsigned integer.length
1596
+ */
1597
+
1598
+
1599
+ const readVarUint = decoder => {
1600
+ let num = 0;
1601
+ let len = 0;
1602
+
1603
+ while (true) {
1604
+ const r = decoder.arr[decoder.pos++];
1605
+ num = num | (r & BITS7) << len;
1606
+ len += 7;
1607
+
1608
+ if (r < BIT8) {
1609
+ return num >>> 0; // return unsigned number!
1610
+ }
1611
+ /* istanbul ignore if */
1612
+
1613
+
1614
+ if (len > 35) {
1615
+ throw new Error('Integer out of range!');
1616
+ }
1617
+ }
1618
+ };
1619
+ /**
1620
+ * Read string of variable length
1621
+ * * varUint is used to store the length of the string
1622
+ *
1623
+ * Transforming utf8 to a string is pretty expensive. The code performs 10x better
1624
+ * when String.fromCodePoint is fed with all characters as arguments.
1625
+ * But most environments have a maximum number of arguments per functions.
1626
+ * For effiency reasons we apply a maximum of 10000 characters at once.
1627
+ *
1628
+ * @function
1629
+ * @param {Decoder} decoder
1630
+ * @return {String} The read String.
1631
+ */
1632
+
1633
+
1634
+ const readVarString = decoder => {
1635
+ let remainingLen = readVarUint(decoder);
1636
+
1637
+ if (remainingLen === 0) {
1638
+ return '';
1639
+ } else {
1640
+ let encodedString = String.fromCodePoint(readUint8(decoder)); // remember to decrease remainingLen
1641
+
1642
+ if (--remainingLen < 100) {
1643
+ // do not create a Uint8Array for small strings
1644
+ while (remainingLen--) {
1645
+ encodedString += String.fromCodePoint(readUint8(decoder));
1646
+ }
1647
+ } else {
1648
+ while (remainingLen > 0) {
1649
+ const nextLen = remainingLen < 10000 ? remainingLen : 10000; // this is dangerous, we create a fresh array view from the existing buffer
1650
+
1651
+ const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen);
1652
+ decoder.pos += nextLen; // Starting with ES5.1 we can supply a generic array-like object as arguments
1653
+
1654
+ encodedString += String.fromCodePoint.apply(null,
1655
+ /** @type {any} */
1656
+ bytes);
1657
+ remainingLen -= nextLen;
1658
+ }
1659
+ }
1660
+
1661
+ return decodeURIComponent(escape(encodedString));
1662
+ }
1663
+ };
1664
+ /**
1665
+ * Efficient schema-less binary encoding with support for variable length encoding.
1666
+ *
1667
+ * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.
1668
+ *
1669
+ * Encodes numbers in little-endian order (least to most significant byte order)
1670
+ * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)
1671
+ * which is also used in Protocol Buffers.
1672
+ *
1673
+ * ```js
1674
+ * // encoding step
1675
+ * const encoder = new encoding.createEncoder()
1676
+ * encoding.writeVarUint(encoder, 256)
1677
+ * encoding.writeVarString(encoder, 'Hello world!')
1678
+ * const buf = encoding.toUint8Array(encoder)
1679
+ * ```
1680
+ *
1681
+ * ```js
1682
+ * // decoding step
1683
+ * const decoder = new decoding.createDecoder(buf)
1684
+ * decoding.readVarUint(decoder) // => 256
1685
+ * decoding.readVarString(decoder) // => 'Hello world!'
1686
+ * decoding.hasContent(decoder) // => false - all data is read
1687
+ * ```
1688
+ *
1689
+ * @module encoding
1690
+ */
1691
+
1692
+ /**
1693
+ * Write one byte to the encoder.
1694
+ *
1695
+ * @function
1696
+ * @param {Encoder} encoder
1697
+ * @param {number} num The byte that is to be encoded.
1698
+ */
1699
+
1700
+
1701
+ const write = (encoder, num) => {
1702
+ const bufferLen = encoder.cbuf.length;
1703
+
1704
+ if (encoder.cpos === bufferLen) {
1705
+ encoder.bufs.push(encoder.cbuf);
1706
+ encoder.cbuf = new Uint8Array(bufferLen * 2);
1707
+ encoder.cpos = 0;
1708
+ }
1709
+
1710
+ encoder.cbuf[encoder.cpos++] = num;
1711
+ };
1712
+ /**
1713
+ * Write a variable length unsigned integer.
1714
+ *
1715
+ * Encodes integers in the range from [0, 4294967295] / [0, 0xffffffff]. (max 32 bit unsigned integer)
1716
+ *
1717
+ * @function
1718
+ * @param {Encoder} encoder
1719
+ * @param {number} num The number that is to be encoded.
1720
+ */
1721
+
1722
+
1723
+ const writeVarUint = (encoder, num) => {
1724
+ while (num > BITS7) {
1725
+ write(encoder, BIT8 | BITS7 & num);
1726
+ num >>>= 7;
1727
+ }
1728
+
1729
+ write(encoder, BITS7 & num);
1730
+ };
1731
+ /**
1732
+ * Write a variable length string.
1733
+ *
1734
+ * @function
1735
+ * @param {Encoder} encoder
1736
+ * @param {String} str The string that is to be encoded.
1737
+ */
1738
+
1739
+
1740
+ const writeVarString = (encoder, str) => {
1741
+ const encodedString = unescape(encodeURIComponent(str));
1742
+ const len = encodedString.length;
1743
+ writeVarUint(encoder, len);
1744
+
1745
+ for (let i = 0; i < len; i++) {
1746
+ write(encoder,
1747
+ /** @type {number} */
1748
+ encodedString.codePointAt(i));
1749
+ }
1750
+ };
1751
+
1752
+ var AuthMessageType;
1753
+
1754
+ (function (AuthMessageType) {
1755
+ AuthMessageType[AuthMessageType["Token"] = 0] = "Token";
1756
+ AuthMessageType[AuthMessageType["PermissionDenied"] = 1] = "PermissionDenied";
1757
+ AuthMessageType[AuthMessageType["Authenticated"] = 2] = "Authenticated";
1758
+ })(AuthMessageType || (AuthMessageType = {}));
1759
+
1760
+ const writeAuthentication = (encoder, auth) => {
1761
+ writeVarUint(encoder, AuthMessageType.Token);
1762
+ writeVarString(encoder, auth);
1763
+ };
1764
+
1765
+ const readAuthMessage = (decoder, permissionDeniedHandler, authenticatedHandler) => {
1766
+ switch (readVarUint(decoder)) {
1767
+ case AuthMessageType.PermissionDenied:
1768
+ {
1769
+ permissionDeniedHandler(readVarString(decoder));
1770
+ break;
1771
+ }
1772
+
1773
+ case AuthMessageType.Authenticated:
1774
+ {
1775
+ authenticatedHandler();
1776
+ break;
1777
+ }
1778
+ }
1779
+ };
1780
+
1548
1781
  exports.MessageType = void 0;
1549
1782
  (function (MessageType) {
1550
1783
  MessageType[MessageType["Sync"] = 0] = "Sync";
@@ -1553,29 +1786,6 @@ exports.MessageType = void 0;
1553
1786
  MessageType[MessageType["QueryAwareness"] = 3] = "QueryAwareness";
1554
1787
  })(exports.MessageType || (exports.MessageType = {}));
1555
1788
 
1556
- var AuthMessageType;
1557
- (function (AuthMessageType) {
1558
- AuthMessageType[AuthMessageType["Token"] = 0] = "Token";
1559
- AuthMessageType[AuthMessageType["PermissionDenied"] = 1] = "PermissionDenied";
1560
- AuthMessageType[AuthMessageType["Authenticated"] = 2] = "Authenticated";
1561
- })(AuthMessageType || (AuthMessageType = {}));
1562
- const writeAuthentication = (encoder, auth) => {
1563
- writeVarUint(encoder, AuthMessageType.Token);
1564
- writeVarString(encoder, auth);
1565
- };
1566
- const readAuthMessage = (decoder, permissionDeniedHandler, authenticatedHandler) => {
1567
- switch (readVarUint(decoder)) {
1568
- case AuthMessageType.PermissionDenied: {
1569
- permissionDeniedHandler(readVarString(decoder));
1570
- break;
1571
- }
1572
- case AuthMessageType.Authenticated: {
1573
- authenticatedHandler();
1574
- break;
1575
- }
1576
- }
1577
- };
1578
-
1579
1789
  class OutgoingMessage {
1580
1790
  constructor() {
1581
1791
  this.encoder = createEncoder();
@@ -1681,7 +1891,7 @@ class SyncStepOneMessage extends OutgoingMessage {
1681
1891
  if (typeof args.document === 'undefined') {
1682
1892
  throw new Error('The sync step one message requires document as an argument');
1683
1893
  }
1684
- writeVarUint(this.encoder, this.type);
1894
+ writeVarUint$1(this.encoder, this.type);
1685
1895
  writeSyncStep1(this.encoder, args.document);
1686
1896
  return this.encoder;
1687
1897
  }
@@ -1697,7 +1907,7 @@ class SyncStepTwoMessage extends OutgoingMessage {
1697
1907
  if (typeof args.document === 'undefined') {
1698
1908
  throw new Error('The sync step two message requires document as an argument');
1699
1909
  }
1700
- writeVarUint(this.encoder, this.type);
1910
+ writeVarUint$1(this.encoder, this.type);
1701
1911
  writeSyncStep2(this.encoder, args.document);
1702
1912
  return this.encoder;
1703
1913
  }
@@ -1710,7 +1920,7 @@ class QueryAwarenessMessage extends OutgoingMessage {
1710
1920
  this.description = 'Queries awareness states';
1711
1921
  }
1712
1922
  get(args) {
1713
- writeVarUint(this.encoder, this.type);
1923
+ writeVarUint$1(this.encoder, this.type);
1714
1924
  return this.encoder;
1715
1925
  }
1716
1926
  }
@@ -1725,7 +1935,7 @@ class AuthenticationMessage extends OutgoingMessage {
1725
1935
  if (typeof args.token === 'undefined') {
1726
1936
  throw new Error('The authentication message requires `token` as an argument.');
1727
1937
  }
1728
- writeVarUint(this.encoder, this.type);
1938
+ writeVarUint$1(this.encoder, this.type);
1729
1939
  writeAuthentication(this.encoder, args.token);
1730
1940
  return this.encoder;
1731
1941
  }
@@ -1744,7 +1954,7 @@ class AwarenessMessage extends OutgoingMessage {
1744
1954
  if (typeof args.clients === 'undefined') {
1745
1955
  throw new Error('The awareness message requires clients as an argument');
1746
1956
  }
1747
- writeVarUint(this.encoder, this.type);
1957
+ writeVarUint$1(this.encoder, this.type);
1748
1958
  let awarenessUpdate;
1749
1959
  if (args.states === undefined) {
1750
1960
  awarenessUpdate = encodeAwarenessUpdate(args.awareness, args.clients);
@@ -1764,7 +1974,7 @@ class UpdateMessage extends OutgoingMessage {
1764
1974
  this.description = 'A document update';
1765
1975
  }
1766
1976
  get(args) {
1767
- writeVarUint(this.encoder, this.type);
1977
+ writeVarUint$1(this.encoder, this.type);
1768
1978
  writeUpdate(this.encoder, args.update);
1769
1979
  return this.encoder;
1770
1980
  }
@@ -1909,11 +2119,11 @@ class HocuspocusProvider extends EventEmitter {
1909
2119
  },
1910
2120
  });
1911
2121
  }
1912
- catch (err) {
1913
- // If we aborted the connection attempt then don't throw an error
2122
+ catch (error) {
2123
+ // If we aborted the connection attempt then dont throw an error
1914
2124
  // ref: https://github.com/lifeomic/attempt/blob/master/src/index.ts#L136
1915
- if (err.code !== 'ATTEMPT_ABORTED') {
1916
- throw err;
2125
+ if (error && error.code !== 'ATTEMPT_ABORTED') {
2126
+ throw error;
1917
2127
  }
1918
2128
  }
1919
2129
  }
@@ -2073,7 +2283,6 @@ class HocuspocusProvider extends EventEmitter {
2073
2283
  return;
2074
2284
  }
2075
2285
  this.startSync();
2076
- this.resolveConnectionAttempt();
2077
2286
  }
2078
2287
  startSync() {
2079
2288
  this.send(SyncStepOneMessage, { document: this.document });
@@ -2095,6 +2304,7 @@ class HocuspocusProvider extends EventEmitter {
2095
2304
  }
2096
2305
  }
2097
2306
  onMessage(event) {
2307
+ this.resolveConnectionAttempt();
2098
2308
  this.lastMessageReceived = getUnixTime();
2099
2309
  const message = new IncomingMessage(event.data);
2100
2310
  this.emit('message', { event, message });