@wix/cli 1.1.59 → 1.1.61

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 (128) hide show
  1. package/build/{DevCommand-PLIPWJKO.js → DevCommand-3CEY3HPC.js} +17 -16
  2. package/build/{DevCommand-PLIPWJKO.js.map → DevCommand-3CEY3HPC.js.map} +1 -1
  3. package/build/{DevCommand-D6QHU2YA.js → DevCommand-NPVKUDPR.js} +27 -876
  4. package/build/DevCommand-NPVKUDPR.js.map +1 -0
  5. package/build/{LoginCommand-NRZ4VWWM.js → LoginCommand-RTNDZF77.js} +12 -12
  6. package/build/{LogoutCommand-INOYIE67.js → LogoutCommand-CUOS2BUH.js} +8 -8
  7. package/build/PreviewCommand-5GAG7MBS.js +471 -0
  8. package/build/PreviewCommand-5GAG7MBS.js.map +1 -0
  9. package/build/{WhoamiCommand-4V4GTNFW.js → WhoamiCommand-VZ6KKOVQ.js} +5 -5
  10. package/build/{chunk-F3E4MMLD.js → chunk-2KK3GKES.js} +6 -6
  11. package/build/{chunk-6F2RSXHN.js → chunk-2NWGTFAC.js} +3 -3
  12. package/build/{chunk-6F2RSXHN.js.map → chunk-2NWGTFAC.js.map} +1 -1
  13. package/build/{chunk-Z7P6TDPB.js → chunk-2WA6TGDO.js} +6 -6
  14. package/build/{chunk-HYAIYTKF.js → chunk-332V5RP4.js} +59 -7
  15. package/build/{chunk-HYAIYTKF.js.map → chunk-332V5RP4.js.map} +1 -1
  16. package/build/{chunk-SELJR2HV.js → chunk-3NEXZN7N.js} +5 -66
  17. package/build/chunk-3NEXZN7N.js.map +1 -0
  18. package/build/{chunk-JG7FKL4X.js → chunk-3UE73ERL.js} +29 -9
  19. package/build/chunk-3UE73ERL.js.map +1 -0
  20. package/build/{chunk-OOGMXJJV.js → chunk-6K6VPM3T.js} +6 -6
  21. package/build/chunk-6LI4WGAW.js +43 -0
  22. package/build/chunk-6LI4WGAW.js.map +1 -0
  23. package/build/chunk-6XRFJZTQ.js +74 -0
  24. package/build/chunk-6XRFJZTQ.js.map +1 -0
  25. package/build/{chunk-5ZVEBKUO.js → chunk-6YVNZGPU.js} +597 -362
  26. package/build/chunk-6YVNZGPU.js.map +1 -0
  27. package/build/{chunk-U32RURCT.js → chunk-77YDQA7O.js} +6 -6
  28. package/build/chunk-B5A3CFP2.js +135 -0
  29. package/build/chunk-B5A3CFP2.js.map +1 -0
  30. package/build/{chunk-IFQQVSBK.js → chunk-BGKFJNUK.js} +2 -2
  31. package/build/{chunk-VEVISRHN.js → chunk-DEO7G3RD.js} +5 -5
  32. package/build/{chunk-CS26555F.js → chunk-DP2BL2V4.js} +7 -7
  33. package/build/{chunk-X7XOMWAQ.js → chunk-G4NFI3XC.js} +4 -4
  34. package/build/{chunk-T4OH34QF.js → chunk-H6BDO22X.js} +12 -4
  35. package/build/{chunk-T4OH34QF.js.map → chunk-H6BDO22X.js.map} +1 -1
  36. package/build/{chunk-QGSHUCNV.js → chunk-HMGX4HL2.js} +49 -18
  37. package/build/chunk-HMGX4HL2.js.map +1 -0
  38. package/build/{chunk-AXVTET6V.js → chunk-HV2IEAOB.js} +2 -2
  39. package/build/{chunk-V4DAKO7L.js → chunk-J573TQNU.js} +577 -574
  40. package/build/chunk-J573TQNU.js.map +1 -0
  41. package/build/{chunk-4HVBZRJL.js → chunk-KOGQSQ4I.js} +2 -2
  42. package/build/{chunk-4OBSJ6OG.js → chunk-L53ZVQB7.js} +139 -113
  43. package/build/{chunk-4OBSJ6OG.js.map → chunk-L53ZVQB7.js.map} +1 -1
  44. package/build/{chunk-N5IXBRXL.js → chunk-M34KVUTA.js} +2 -2
  45. package/build/{chunk-3RBFRZE2.js → chunk-N3OHN3MH.js} +5 -5
  46. package/build/{chunk-3RBFRZE2.js.map → chunk-N3OHN3MH.js.map} +1 -1
  47. package/build/{chunk-GLXEVSFE.js → chunk-P4UAXEEN.js} +14 -132
  48. package/build/chunk-P4UAXEEN.js.map +1 -0
  49. package/build/{chunk-BV3B44QL.js → chunk-PTIE2TCP.js} +3 -3
  50. package/build/{chunk-BNWDAMAL.js → chunk-PX2L3CCA.js} +2 -2
  51. package/build/chunk-PX2L3CCA.js.map +1 -0
  52. package/build/chunk-Q3GS63B5.js +901 -0
  53. package/build/chunk-Q3GS63B5.js.map +1 -0
  54. package/build/{chunk-5XUFGBCU.js → chunk-SEOIN2A6.js} +7 -3
  55. package/build/chunk-SEOIN2A6.js.map +1 -0
  56. package/build/{chunk-YUFAOC35.js → chunk-V7JWKPQI.js} +8 -8
  57. package/build/{chunk-VRDC2KLN.js → chunk-VXGNI7CP.js} +5 -2
  58. package/build/{chunk-VRDC2KLN.js.map → chunk-VXGNI7CP.js.map} +1 -1
  59. package/build/{chunk-CMXHWKEP.js → chunk-XFEYPXEY.js} +3 -3
  60. package/build/{chunk-G6TDIUNY.js → chunk-Y4ZVXLXY.js} +2 -2
  61. package/build/{chunk-PNUERA4W.js → chunk-ZVHSVTAJ.js} +5 -5
  62. package/build/{dev-TEWYYBKR.js → dev-FOGJASYZ.js} +31 -30
  63. package/build/{dev-TEWYYBKR.js.map → dev-FOGJASYZ.js.map} +1 -1
  64. package/build/index.js +29 -29
  65. package/build/{install-MTS6LPPU.js → install-NSVJU2EB.js} +22 -21
  66. package/build/{install-MTS6LPPU.js.map → install-NSVJU2EB.js.map} +1 -1
  67. package/build/{preview-TDMPHSVV.js → preview-RQ5CLHV5.js} +24 -22
  68. package/build/{preview-TDMPHSVV.js.map → preview-RQ5CLHV5.js.map} +1 -1
  69. package/build/{publish-5VLMBE6J.js → publish-YWESFDVY.js} +30 -27
  70. package/build/publish-YWESFDVY.js.map +1 -0
  71. package/build/{render-command-7OMEGPW4.js → render-command-4GOKWOT7.js} +11 -11
  72. package/build/{render-command-UQPFUBIL.js → render-command-E3JPPTZA.js} +12 -12
  73. package/build/{render-command-FELGYBEY.js → render-command-WMEIFR3G.js} +13 -13
  74. package/build/{run-command-3YTQS4ZX.js → run-command-D54S2NI5.js} +9 -9
  75. package/build/{src-Y334LPF5.js → src-4W7XB5DS.js} +21 -9
  76. package/build/src-4W7XB5DS.js.map +1 -0
  77. package/build/{src-4W2WPIAM.js → src-HA6XHM2E.js} +8 -8
  78. package/build/{src-7NEL65ZK.js → src-IIEVMGC3.js} +18 -18
  79. package/build/{src-UWOBS6D7.js → src-NGHHXRWJ.js} +2 -2
  80. package/build/{src-LA3GYOE6.js → src-NS46VL23.js} +7 -7
  81. package/build/{src-IBLQL7AB.js → src-OIVJ4AKD.js} +6 -6
  82. package/build/{src-BMV74WCO.js → src-XSN6C5L2.js} +3 -3
  83. package/build/sync-types-SQEHJPEG.js +31 -0
  84. package/build/{uninstall-M4DEVSQC.js → uninstall-ASZ55QZA.js} +20 -19
  85. package/build/{uninstall-M4DEVSQC.js.map → uninstall-ASZ55QZA.js.map} +1 -1
  86. package/package.json +3 -3
  87. package/build/DevCommand-D6QHU2YA.js.map +0 -1
  88. package/build/chunk-5XUFGBCU.js.map +0 -1
  89. package/build/chunk-5ZVEBKUO.js.map +0 -1
  90. package/build/chunk-BNWDAMAL.js.map +0 -1
  91. package/build/chunk-GLXEVSFE.js.map +0 -1
  92. package/build/chunk-JG7FKL4X.js.map +0 -1
  93. package/build/chunk-QGSHUCNV.js.map +0 -1
  94. package/build/chunk-SELJR2HV.js.map +0 -1
  95. package/build/chunk-V4DAKO7L.js.map +0 -1
  96. package/build/publish-5VLMBE6J.js.map +0 -1
  97. package/build/src-Y334LPF5.js.map +0 -1
  98. package/build/sync-types-W3PVOJTK.js +0 -30
  99. /package/build/{LoginCommand-NRZ4VWWM.js.map → LoginCommand-RTNDZF77.js.map} +0 -0
  100. /package/build/{LogoutCommand-INOYIE67.js.map → LogoutCommand-CUOS2BUH.js.map} +0 -0
  101. /package/build/{WhoamiCommand-4V4GTNFW.js.map → WhoamiCommand-VZ6KKOVQ.js.map} +0 -0
  102. /package/build/{chunk-F3E4MMLD.js.map → chunk-2KK3GKES.js.map} +0 -0
  103. /package/build/{chunk-Z7P6TDPB.js.map → chunk-2WA6TGDO.js.map} +0 -0
  104. /package/build/{chunk-OOGMXJJV.js.map → chunk-6K6VPM3T.js.map} +0 -0
  105. /package/build/{chunk-U32RURCT.js.map → chunk-77YDQA7O.js.map} +0 -0
  106. /package/build/{chunk-IFQQVSBK.js.map → chunk-BGKFJNUK.js.map} +0 -0
  107. /package/build/{chunk-VEVISRHN.js.map → chunk-DEO7G3RD.js.map} +0 -0
  108. /package/build/{chunk-CS26555F.js.map → chunk-DP2BL2V4.js.map} +0 -0
  109. /package/build/{chunk-X7XOMWAQ.js.map → chunk-G4NFI3XC.js.map} +0 -0
  110. /package/build/{chunk-AXVTET6V.js.map → chunk-HV2IEAOB.js.map} +0 -0
  111. /package/build/{chunk-4HVBZRJL.js.map → chunk-KOGQSQ4I.js.map} +0 -0
  112. /package/build/{chunk-N5IXBRXL.js.map → chunk-M34KVUTA.js.map} +0 -0
  113. /package/build/{chunk-BV3B44QL.js.map → chunk-PTIE2TCP.js.map} +0 -0
  114. /package/build/{chunk-YUFAOC35.js.map → chunk-V7JWKPQI.js.map} +0 -0
  115. /package/build/{chunk-CMXHWKEP.js.map → chunk-XFEYPXEY.js.map} +0 -0
  116. /package/build/{chunk-G6TDIUNY.js.map → chunk-Y4ZVXLXY.js.map} +0 -0
  117. /package/build/{chunk-PNUERA4W.js.map → chunk-ZVHSVTAJ.js.map} +0 -0
  118. /package/build/{render-command-7OMEGPW4.js.map → render-command-4GOKWOT7.js.map} +0 -0
  119. /package/build/{render-command-UQPFUBIL.js.map → render-command-E3JPPTZA.js.map} +0 -0
  120. /package/build/{render-command-FELGYBEY.js.map → render-command-WMEIFR3G.js.map} +0 -0
  121. /package/build/{run-command-3YTQS4ZX.js.map → run-command-D54S2NI5.js.map} +0 -0
  122. /package/build/{src-4W2WPIAM.js.map → src-HA6XHM2E.js.map} +0 -0
  123. /package/build/{src-7NEL65ZK.js.map → src-IIEVMGC3.js.map} +0 -0
  124. /package/build/{src-BMV74WCO.js.map → src-NGHHXRWJ.js.map} +0 -0
  125. /package/build/{src-LA3GYOE6.js.map → src-NS46VL23.js.map} +0 -0
  126. /package/build/{src-IBLQL7AB.js.map → src-OIVJ4AKD.js.map} +0 -0
  127. /package/build/{src-UWOBS6D7.js.map → src-XSN6C5L2.js.map} +0 -0
  128. /package/build/{sync-types-W3PVOJTK.js.map → sync-types-SQEHJPEG.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-EDFOB3LN.js";
6
6
  import {
7
7
  require_negotiator
8
- } from "./chunk-4OBSJ6OG.js";
8
+ } from "./chunk-L53ZVQB7.js";
9
9
  import {
10
10
  require_ms
11
11
  } from "./chunk-WN3D6AOY.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-W423UTD3.js";
15
15
  import {
16
16
  getTestOverrides
17
- } from "./chunk-BNWDAMAL.js";
17
+ } from "./chunk-PX2L3CCA.js";
18
18
  import {
19
19
  __commonJS,
20
20
  __dirname,
@@ -10221,15 +10221,17 @@ var require_transport = __commonJS({
10221
10221
  /**
10222
10222
  * Transport constructor.
10223
10223
  *
10224
- * @param {http.IncomingMessage} request
10224
+ * @param {http.IncomingMessage} req
10225
10225
  * @api public
10226
10226
  */
10227
10227
  constructor(req) {
10228
10228
  super();
10229
- this.readyState = "open";
10229
+ this.writable = false;
10230
+ this._readyState = "open";
10230
10231
  this.discarded = false;
10231
10232
  this.protocol = req._query.EIO === "4" ? 4 : 3;
10232
10233
  this.parser = this.protocol === 4 ? parser_v4 : parser_v3;
10234
+ this.supportsBinary = !(req._query && req._query.b64);
10233
10235
  }
10234
10236
  get readyState() {
10235
10237
  return this._readyState;
@@ -10249,7 +10251,7 @@ var require_transport = __commonJS({
10249
10251
  /**
10250
10252
  * Called with an incoming HTTP request.
10251
10253
  *
10252
- * @param {http.IncomingMessage} request
10254
+ * @param {http.IncomingMessage} req
10253
10255
  * @api protected
10254
10256
  */
10255
10257
  onRequest(req) {
@@ -10270,8 +10272,8 @@ var require_transport = __commonJS({
10270
10272
  /**
10271
10273
  * Called with a transport error.
10272
10274
  *
10273
- * @param {String} message error
10274
- * @param {Object} error description
10275
+ * @param {String} msg - message error
10276
+ * @param {Object} desc - error description
10275
10277
  * @api protected
10276
10278
  */
10277
10279
  onError(msg, desc) {
@@ -10361,6 +10363,7 @@ var require_polling = __commonJS({
10361
10363
  */
10362
10364
  onRequest(req) {
10363
10365
  const res = req.res;
10366
+ req.res = null;
10364
10367
  if ("GET" === req.method) {
10365
10368
  this.onPollRequest(req, res);
10366
10369
  } else if ("POST" === req.method) {
@@ -10636,6 +10639,7 @@ var require_polling = __commonJS({
10636
10639
  if (ua && (~ua.indexOf(";MSIE") || ~ua.indexOf("Trident/"))) {
10637
10640
  headers["X-XSS-Protection"] = "0";
10638
10641
  }
10642
+ headers["cache-control"] = "no-store";
10639
10643
  this.emit("headers", headers, req);
10640
10644
  return headers;
10641
10645
  }
@@ -10832,7 +10836,9 @@ var require_webtransport = __commonJS({
10832
10836
  super({ _query: { EIO: "4" } });
10833
10837
  this.session = session;
10834
10838
  const transformStream = (0, engine_io_parser_1.createPacketEncoderStream)();
10835
- transformStream.readable.pipeTo(stream.writable);
10839
+ transformStream.readable.pipeTo(stream.writable).catch(() => {
10840
+ debug11("the stream was closed");
10841
+ });
10836
10842
  this.writer = transformStream.writable.getWriter();
10837
10843
  (async () => {
10838
10844
  try {
@@ -10926,15 +10932,15 @@ var require_socket = __commonJS({
10926
10932
  */
10927
10933
  constructor(id, server, transport, req, protocol4) {
10928
10934
  super();
10929
- this.id = id;
10930
- this.server = server;
10935
+ this._readyState = "opening";
10931
10936
  this.upgrading = false;
10932
10937
  this.upgraded = false;
10933
- this.readyState = "opening";
10934
10938
  this.writeBuffer = [];
10935
10939
  this.packetsFn = [];
10936
10940
  this.sentCallbackFn = [];
10937
10941
  this.cleanupFn = [];
10942
+ this.id = id;
10943
+ this.server = server;
10938
10944
  this.request = req;
10939
10945
  this.protocol = protocol4;
10940
10946
  if (req) {
@@ -10945,8 +10951,6 @@ var require_socket = __commonJS({
10945
10951
  }
10946
10952
  } else {
10947
10953
  }
10948
- this.checkIntervalTimer = null;
10949
- this.upgradeTimeoutTimer = null;
10950
10954
  this.pingTimeoutTimer = null;
10951
10955
  this.pingIntervalTimer = null;
10952
10956
  this.setTransport(transport);
@@ -11028,7 +11032,7 @@ var require_socket = __commonJS({
11028
11032
  /**
11029
11033
  * Called upon transport error.
11030
11034
  *
11031
- * @param {Error} error object
11035
+ * @param {Error} err - error object
11032
11036
  * @api private
11033
11037
  */
11034
11038
  onError(err) {
@@ -11094,20 +11098,21 @@ var require_socket = __commonJS({
11094
11098
  maybeUpgrade(transport) {
11095
11099
  debug11('might upgrade socket transport from "%s" to "%s"', this.transport.name, transport.name);
11096
11100
  this.upgrading = true;
11097
- this.upgradeTimeoutTimer = (0, timers_1.setTimeout)(() => {
11101
+ const upgradeTimeoutTimer = (0, timers_1.setTimeout)(() => {
11098
11102
  debug11("client did not complete upgrade - closing transport");
11099
11103
  cleanup();
11100
11104
  if ("open" === transport.readyState) {
11101
11105
  transport.close();
11102
11106
  }
11103
11107
  }, this.server.opts.upgradeTimeout);
11108
+ let checkIntervalTimer;
11104
11109
  const onPacket = (packet) => {
11105
11110
  if ("ping" === packet.type && "probe" === packet.data) {
11106
11111
  debug11("got probe ping packet, sending pong");
11107
11112
  transport.send([{ type: "pong", data: "probe" }]);
11108
11113
  this.emit("upgrading", transport);
11109
- clearInterval(this.checkIntervalTimer);
11110
- this.checkIntervalTimer = setInterval(check, 100);
11114
+ clearInterval(checkIntervalTimer);
11115
+ checkIntervalTimer = setInterval(check, 100);
11111
11116
  } else if ("upgrade" === packet.type && this.readyState !== "closed") {
11112
11117
  debug11("got upgrade packet - upgrading");
11113
11118
  cleanup();
@@ -11135,10 +11140,8 @@ var require_socket = __commonJS({
11135
11140
  };
11136
11141
  const cleanup = () => {
11137
11142
  this.upgrading = false;
11138
- clearInterval(this.checkIntervalTimer);
11139
- this.checkIntervalTimer = null;
11140
- (0, timers_1.clearTimeout)(this.upgradeTimeoutTimer);
11141
- this.upgradeTimeoutTimer = null;
11143
+ clearInterval(checkIntervalTimer);
11144
+ (0, timers_1.clearTimeout)(upgradeTimeoutTimer);
11142
11145
  transport.removeListener("packet", onPacket);
11143
11146
  transport.removeListener("close", onTransportClose);
11144
11147
  transport.removeListener("error", onError);
@@ -11189,9 +11192,6 @@ var require_socket = __commonJS({
11189
11192
  this.readyState = "closed";
11190
11193
  (0, timers_1.clearTimeout)(this.pingIntervalTimer);
11191
11194
  (0, timers_1.clearTimeout)(this.pingTimeoutTimer);
11192
- clearInterval(this.checkIntervalTimer);
11193
- this.checkIntervalTimer = null;
11194
- (0, timers_1.clearTimeout)(this.upgradeTimeoutTimer);
11195
11195
  process.nextTick(() => {
11196
11196
  this.writeBuffer = [];
11197
11197
  });
@@ -11501,6 +11501,7 @@ var require_buffer_util = __commonJS({
11501
11501
  "use strict";
11502
11502
  init_esm_shims();
11503
11503
  var { EMPTY_BUFFER } = require_constants();
11504
+ var FastBuffer = Buffer[Symbol.species];
11504
11505
  function concat(list, totalLength2) {
11505
11506
  if (list.length === 0) return EMPTY_BUFFER;
11506
11507
  if (list.length === 1) return list[0];
@@ -11511,7 +11512,9 @@ var require_buffer_util = __commonJS({
11511
11512
  target.set(buf, offset);
11512
11513
  offset += buf.length;
11513
11514
  }
11514
- if (offset < totalLength2) return target.slice(0, offset);
11515
+ if (offset < totalLength2) {
11516
+ return new FastBuffer(target.buffer, target.byteOffset, offset);
11517
+ }
11515
11518
  return target;
11516
11519
  }
11517
11520
  function _mask(source, mask, output, offset, length2) {
@@ -11525,19 +11528,19 @@ var require_buffer_util = __commonJS({
11525
11528
  }
11526
11529
  }
11527
11530
  function toArrayBuffer(buf) {
11528
- if (buf.byteLength === buf.buffer.byteLength) {
11531
+ if (buf.length === buf.buffer.byteLength) {
11529
11532
  return buf.buffer;
11530
11533
  }
11531
- return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
11534
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);
11532
11535
  }
11533
11536
  function toBuffer2(data) {
11534
11537
  toBuffer2.readOnly = true;
11535
11538
  if (Buffer.isBuffer(data)) return data;
11536
11539
  let buf;
11537
11540
  if (data instanceof ArrayBuffer) {
11538
- buf = Buffer.from(data);
11541
+ buf = new FastBuffer(data);
11539
11542
  } else if (ArrayBuffer.isView(data)) {
11540
- buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
11543
+ buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);
11541
11544
  } else {
11542
11545
  buf = Buffer.from(data);
11543
11546
  toBuffer2.readOnly = false;
@@ -11628,6 +11631,7 @@ var require_permessage_deflate = __commonJS({
11628
11631
  var bufferUtil = require_buffer_util();
11629
11632
  var Limiter = require_limiter();
11630
11633
  var { kStatusCode } = require_constants();
11634
+ var FastBuffer = Buffer[Symbol.species];
11631
11635
  var TRAILER = Buffer.from([0, 0, 255, 255]);
11632
11636
  var kPerMessageDeflate = Symbol("permessage-deflate");
11633
11637
  var kTotalLength = Symbol("total-length");
@@ -11960,7 +11964,9 @@ var require_permessage_deflate = __commonJS({
11960
11964
  this._deflate[kBuffers],
11961
11965
  this._deflate[kTotalLength]
11962
11966
  );
11963
- if (fin) data2 = data2.slice(0, data2.length - 4);
11967
+ if (fin) {
11968
+ data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4);
11969
+ }
11964
11970
  this._deflate[kCallback] = null;
11965
11971
  this._deflate[kTotalLength] = 0;
11966
11972
  this._deflate[kBuffers] = [];
@@ -12001,6 +12007,7 @@ var require_validation = __commonJS({
12001
12007
  "../../node_modules/engine.io/node_modules/ws/lib/validation.js"(exports, module) {
12002
12008
  "use strict";
12003
12009
  init_esm_shims();
12010
+ var { isUtf8 } = __require("buffer");
12004
12011
  var tokenChars = [
12005
12012
  0,
12006
12013
  0,
@@ -12176,11 +12183,15 @@ var require_validation = __commonJS({
12176
12183
  isValidUTF8: _isValidUTF8,
12177
12184
  tokenChars
12178
12185
  };
12179
- if (!process.env.WS_NO_UTF_8_VALIDATE) {
12186
+ if (isUtf8) {
12187
+ module.exports.isValidUTF8 = function(buf) {
12188
+ return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);
12189
+ };
12190
+ } else if (!process.env.WS_NO_UTF_8_VALIDATE) {
12180
12191
  try {
12181
12192
  const isValidUTF8 = __require("utf-8-validate");
12182
12193
  module.exports.isValidUTF8 = function(buf) {
12183
- return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);
12194
+ return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);
12184
12195
  };
12185
12196
  } catch (e) {
12186
12197
  }
@@ -12203,17 +12214,22 @@ var require_receiver = __commonJS({
12203
12214
  } = require_constants();
12204
12215
  var { concat, toArrayBuffer, unmask } = require_buffer_util();
12205
12216
  var { isValidStatusCode, isValidUTF8 } = require_validation();
12217
+ var FastBuffer = Buffer[Symbol.species];
12206
12218
  var GET_INFO = 0;
12207
12219
  var GET_PAYLOAD_LENGTH_16 = 1;
12208
12220
  var GET_PAYLOAD_LENGTH_64 = 2;
12209
12221
  var GET_MASK = 3;
12210
12222
  var GET_DATA = 4;
12211
12223
  var INFLATING = 5;
12224
+ var DEFER_EVENT = 6;
12212
12225
  var Receiver2 = class extends Writable {
12213
12226
  /**
12214
12227
  * Creates a Receiver instance.
12215
12228
  *
12216
12229
  * @param {Object} [options] Options object
12230
+ * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
12231
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
12232
+ * multiple times in the same tick
12217
12233
  * @param {String} [options.binaryType=nodebuffer] The type for binary data
12218
12234
  * @param {Object} [options.extensions] An object containing the negotiated
12219
12235
  * extensions
@@ -12225,6 +12241,7 @@ var require_receiver = __commonJS({
12225
12241
  */
12226
12242
  constructor(options = {}) {
12227
12243
  super();
12244
+ this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true;
12228
12245
  this._binaryType = options.binaryType || BINARY_TYPES[0];
12229
12246
  this._extensions = options.extensions || {};
12230
12247
  this._isServer = !!options.isServer;
@@ -12243,8 +12260,9 @@ var require_receiver = __commonJS({
12243
12260
  this._totalPayloadLength = 0;
12244
12261
  this._messageLength = 0;
12245
12262
  this._fragments = [];
12246
- this._state = GET_INFO;
12263
+ this._errored = false;
12247
12264
  this._loop = false;
12265
+ this._state = GET_INFO;
12248
12266
  }
12249
12267
  /**
12250
12268
  * Implements `Writable.prototype._write()`.
@@ -12272,8 +12290,12 @@ var require_receiver = __commonJS({
12272
12290
  if (n === this._buffers[0].length) return this._buffers.shift();
12273
12291
  if (n < this._buffers[0].length) {
12274
12292
  const buf = this._buffers[0];
12275
- this._buffers[0] = buf.slice(n);
12276
- return buf.slice(0, n);
12293
+ this._buffers[0] = new FastBuffer(
12294
+ buf.buffer,
12295
+ buf.byteOffset + n,
12296
+ buf.length - n
12297
+ );
12298
+ return new FastBuffer(buf.buffer, buf.byteOffset, n);
12277
12299
  }
12278
12300
  const dst = Buffer.allocUnsafe(n);
12279
12301
  do {
@@ -12283,7 +12305,11 @@ var require_receiver = __commonJS({
12283
12305
  dst.set(this._buffers.shift(), offset);
12284
12306
  } else {
12285
12307
  dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);
12286
- this._buffers[0] = buf.slice(n);
12308
+ this._buffers[0] = new FastBuffer(
12309
+ buf.buffer,
12310
+ buf.byteOffset + n,
12311
+ buf.length - n
12312
+ );
12287
12313
  }
12288
12314
  n -= buf.length;
12289
12315
  } while (n > 0);
@@ -12296,191 +12322,202 @@ var require_receiver = __commonJS({
12296
12322
  * @private
12297
12323
  */
12298
12324
  startLoop(cb) {
12299
- let err;
12300
12325
  this._loop = true;
12301
12326
  do {
12302
12327
  switch (this._state) {
12303
12328
  case GET_INFO:
12304
- err = this.getInfo();
12329
+ this.getInfo(cb);
12305
12330
  break;
12306
12331
  case GET_PAYLOAD_LENGTH_16:
12307
- err = this.getPayloadLength16();
12332
+ this.getPayloadLength16(cb);
12308
12333
  break;
12309
12334
  case GET_PAYLOAD_LENGTH_64:
12310
- err = this.getPayloadLength64();
12335
+ this.getPayloadLength64(cb);
12311
12336
  break;
12312
12337
  case GET_MASK:
12313
12338
  this.getMask();
12314
12339
  break;
12315
12340
  case GET_DATA:
12316
- err = this.getData(cb);
12341
+ this.getData(cb);
12317
12342
  break;
12318
- default:
12343
+ case INFLATING:
12344
+ case DEFER_EVENT:
12319
12345
  this._loop = false;
12320
12346
  return;
12321
12347
  }
12322
12348
  } while (this._loop);
12323
- cb(err);
12349
+ if (!this._errored) cb();
12324
12350
  }
12325
12351
  /**
12326
12352
  * Reads the first two bytes of a frame.
12327
12353
  *
12328
- * @return {(RangeError|undefined)} A possible error
12354
+ * @param {Function} cb Callback
12329
12355
  * @private
12330
12356
  */
12331
- getInfo() {
12357
+ getInfo(cb) {
12332
12358
  if (this._bufferedBytes < 2) {
12333
12359
  this._loop = false;
12334
12360
  return;
12335
12361
  }
12336
12362
  const buf = this.consume(2);
12337
12363
  if ((buf[0] & 48) !== 0) {
12338
- this._loop = false;
12339
- return error(
12364
+ const error = this.createError(
12340
12365
  RangeError,
12341
12366
  "RSV2 and RSV3 must be clear",
12342
12367
  true,
12343
12368
  1002,
12344
12369
  "WS_ERR_UNEXPECTED_RSV_2_3"
12345
12370
  );
12371
+ cb(error);
12372
+ return;
12346
12373
  }
12347
12374
  const compressed = (buf[0] & 64) === 64;
12348
12375
  if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {
12349
- this._loop = false;
12350
- return error(
12376
+ const error = this.createError(
12351
12377
  RangeError,
12352
12378
  "RSV1 must be clear",
12353
12379
  true,
12354
12380
  1002,
12355
12381
  "WS_ERR_UNEXPECTED_RSV_1"
12356
12382
  );
12383
+ cb(error);
12384
+ return;
12357
12385
  }
12358
12386
  this._fin = (buf[0] & 128) === 128;
12359
12387
  this._opcode = buf[0] & 15;
12360
12388
  this._payloadLength = buf[1] & 127;
12361
12389
  if (this._opcode === 0) {
12362
12390
  if (compressed) {
12363
- this._loop = false;
12364
- return error(
12391
+ const error = this.createError(
12365
12392
  RangeError,
12366
12393
  "RSV1 must be clear",
12367
12394
  true,
12368
12395
  1002,
12369
12396
  "WS_ERR_UNEXPECTED_RSV_1"
12370
12397
  );
12398
+ cb(error);
12399
+ return;
12371
12400
  }
12372
12401
  if (!this._fragmented) {
12373
- this._loop = false;
12374
- return error(
12402
+ const error = this.createError(
12375
12403
  RangeError,
12376
12404
  "invalid opcode 0",
12377
12405
  true,
12378
12406
  1002,
12379
12407
  "WS_ERR_INVALID_OPCODE"
12380
12408
  );
12409
+ cb(error);
12410
+ return;
12381
12411
  }
12382
12412
  this._opcode = this._fragmented;
12383
12413
  } else if (this._opcode === 1 || this._opcode === 2) {
12384
12414
  if (this._fragmented) {
12385
- this._loop = false;
12386
- return error(
12415
+ const error = this.createError(
12387
12416
  RangeError,
12388
12417
  `invalid opcode ${this._opcode}`,
12389
12418
  true,
12390
12419
  1002,
12391
12420
  "WS_ERR_INVALID_OPCODE"
12392
12421
  );
12422
+ cb(error);
12423
+ return;
12393
12424
  }
12394
12425
  this._compressed = compressed;
12395
12426
  } else if (this._opcode > 7 && this._opcode < 11) {
12396
12427
  if (!this._fin) {
12397
- this._loop = false;
12398
- return error(
12428
+ const error = this.createError(
12399
12429
  RangeError,
12400
12430
  "FIN must be set",
12401
12431
  true,
12402
12432
  1002,
12403
12433
  "WS_ERR_EXPECTED_FIN"
12404
12434
  );
12435
+ cb(error);
12436
+ return;
12405
12437
  }
12406
12438
  if (compressed) {
12407
- this._loop = false;
12408
- return error(
12439
+ const error = this.createError(
12409
12440
  RangeError,
12410
12441
  "RSV1 must be clear",
12411
12442
  true,
12412
12443
  1002,
12413
12444
  "WS_ERR_UNEXPECTED_RSV_1"
12414
12445
  );
12446
+ cb(error);
12447
+ return;
12415
12448
  }
12416
- if (this._payloadLength > 125) {
12417
- this._loop = false;
12418
- return error(
12449
+ if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) {
12450
+ const error = this.createError(
12419
12451
  RangeError,
12420
12452
  `invalid payload length ${this._payloadLength}`,
12421
12453
  true,
12422
12454
  1002,
12423
12455
  "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"
12424
12456
  );
12457
+ cb(error);
12458
+ return;
12425
12459
  }
12426
12460
  } else {
12427
- this._loop = false;
12428
- return error(
12461
+ const error = this.createError(
12429
12462
  RangeError,
12430
12463
  `invalid opcode ${this._opcode}`,
12431
12464
  true,
12432
12465
  1002,
12433
12466
  "WS_ERR_INVALID_OPCODE"
12434
12467
  );
12468
+ cb(error);
12469
+ return;
12435
12470
  }
12436
12471
  if (!this._fin && !this._fragmented) this._fragmented = this._opcode;
12437
12472
  this._masked = (buf[1] & 128) === 128;
12438
12473
  if (this._isServer) {
12439
12474
  if (!this._masked) {
12440
- this._loop = false;
12441
- return error(
12475
+ const error = this.createError(
12442
12476
  RangeError,
12443
12477
  "MASK must be set",
12444
12478
  true,
12445
12479
  1002,
12446
12480
  "WS_ERR_EXPECTED_MASK"
12447
12481
  );
12482
+ cb(error);
12483
+ return;
12448
12484
  }
12449
12485
  } else if (this._masked) {
12450
- this._loop = false;
12451
- return error(
12486
+ const error = this.createError(
12452
12487
  RangeError,
12453
12488
  "MASK must be clear",
12454
12489
  true,
12455
12490
  1002,
12456
12491
  "WS_ERR_UNEXPECTED_MASK"
12457
12492
  );
12493
+ cb(error);
12494
+ return;
12458
12495
  }
12459
12496
  if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;
12460
12497
  else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;
12461
- else return this.haveLength();
12498
+ else this.haveLength(cb);
12462
12499
  }
12463
12500
  /**
12464
12501
  * Gets extended payload length (7+16).
12465
12502
  *
12466
- * @return {(RangeError|undefined)} A possible error
12503
+ * @param {Function} cb Callback
12467
12504
  * @private
12468
12505
  */
12469
- getPayloadLength16() {
12506
+ getPayloadLength16(cb) {
12470
12507
  if (this._bufferedBytes < 2) {
12471
12508
  this._loop = false;
12472
12509
  return;
12473
12510
  }
12474
12511
  this._payloadLength = this.consume(2).readUInt16BE(0);
12475
- return this.haveLength();
12512
+ this.haveLength(cb);
12476
12513
  }
12477
12514
  /**
12478
12515
  * Gets extended payload length (7+64).
12479
12516
  *
12480
- * @return {(RangeError|undefined)} A possible error
12517
+ * @param {Function} cb Callback
12481
12518
  * @private
12482
12519
  */
12483
- getPayloadLength64() {
12520
+ getPayloadLength64(cb) {
12484
12521
  if (this._bufferedBytes < 8) {
12485
12522
  this._loop = false;
12486
12523
  return;
@@ -12488,36 +12525,38 @@ var require_receiver = __commonJS({
12488
12525
  const buf = this.consume(8);
12489
12526
  const num = buf.readUInt32BE(0);
12490
12527
  if (num > Math.pow(2, 53 - 32) - 1) {
12491
- this._loop = false;
12492
- return error(
12528
+ const error = this.createError(
12493
12529
  RangeError,
12494
12530
  "Unsupported WebSocket frame: payload length > 2^53 - 1",
12495
12531
  false,
12496
12532
  1009,
12497
12533
  "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"
12498
12534
  );
12535
+ cb(error);
12536
+ return;
12499
12537
  }
12500
12538
  this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);
12501
- return this.haveLength();
12539
+ this.haveLength(cb);
12502
12540
  }
12503
12541
  /**
12504
12542
  * Payload length has been read.
12505
12543
  *
12506
- * @return {(RangeError|undefined)} A possible error
12544
+ * @param {Function} cb Callback
12507
12545
  * @private
12508
12546
  */
12509
- haveLength() {
12547
+ haveLength(cb) {
12510
12548
  if (this._payloadLength && this._opcode < 8) {
12511
12549
  this._totalPayloadLength += this._payloadLength;
12512
12550
  if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {
12513
- this._loop = false;
12514
- return error(
12551
+ const error = this.createError(
12515
12552
  RangeError,
12516
12553
  "Max payload size exceeded",
12517
12554
  false,
12518
12555
  1009,
12519
12556
  "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
12520
12557
  );
12558
+ cb(error);
12559
+ return;
12521
12560
  }
12522
12561
  }
12523
12562
  if (this._masked) this._state = GET_MASK;
@@ -12540,7 +12579,6 @@ var require_receiver = __commonJS({
12540
12579
  * Reads data bytes.
12541
12580
  *
12542
12581
  * @param {Function} cb Callback
12543
- * @return {(Error|RangeError|undefined)} A possible error
12544
12582
  * @private
12545
12583
  */
12546
12584
  getData(cb) {
@@ -12555,7 +12593,10 @@ var require_receiver = __commonJS({
12555
12593
  unmask(data, this._mask);
12556
12594
  }
12557
12595
  }
12558
- if (this._opcode > 7) return this.controlMessage(data);
12596
+ if (this._opcode > 7) {
12597
+ this.controlMessage(data, cb);
12598
+ return;
12599
+ }
12559
12600
  if (this._compressed) {
12560
12601
  this._state = INFLATING;
12561
12602
  this.decompress(data, cb);
@@ -12565,7 +12606,7 @@ var require_receiver = __commonJS({
12565
12606
  this._messageLength = this._totalPayloadLength;
12566
12607
  this._fragments.push(data);
12567
12608
  }
12568
- return this.dataMessage();
12609
+ this.dataMessage(cb);
12569
12610
  }
12570
12611
  /**
12571
12612
  * Decompresses data.
@@ -12581,63 +12622,84 @@ var require_receiver = __commonJS({
12581
12622
  if (buf.length) {
12582
12623
  this._messageLength += buf.length;
12583
12624
  if (this._messageLength > this._maxPayload && this._maxPayload > 0) {
12584
- return cb(
12585
- error(
12586
- RangeError,
12587
- "Max payload size exceeded",
12588
- false,
12589
- 1009,
12590
- "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
12591
- )
12625
+ const error = this.createError(
12626
+ RangeError,
12627
+ "Max payload size exceeded",
12628
+ false,
12629
+ 1009,
12630
+ "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
12592
12631
  );
12632
+ cb(error);
12633
+ return;
12593
12634
  }
12594
12635
  this._fragments.push(buf);
12595
12636
  }
12596
- const er = this.dataMessage();
12597
- if (er) return cb(er);
12598
- this.startLoop(cb);
12637
+ this.dataMessage(cb);
12638
+ if (this._state === GET_INFO) this.startLoop(cb);
12599
12639
  });
12600
12640
  }
12601
12641
  /**
12602
12642
  * Handles a data message.
12603
12643
  *
12604
- * @return {(Error|undefined)} A possible error
12644
+ * @param {Function} cb Callback
12605
12645
  * @private
12606
12646
  */
12607
- dataMessage() {
12608
- if (this._fin) {
12609
- const messageLength = this._messageLength;
12610
- const fragments = this._fragments;
12611
- this._totalPayloadLength = 0;
12612
- this._messageLength = 0;
12613
- this._fragmented = 0;
12614
- this._fragments = [];
12615
- if (this._opcode === 2) {
12616
- let data;
12617
- if (this._binaryType === "nodebuffer") {
12618
- data = concat(fragments, messageLength);
12619
- } else if (this._binaryType === "arraybuffer") {
12620
- data = toArrayBuffer(concat(fragments, messageLength));
12621
- } else {
12622
- data = fragments;
12623
- }
12647
+ dataMessage(cb) {
12648
+ if (!this._fin) {
12649
+ this._state = GET_INFO;
12650
+ return;
12651
+ }
12652
+ const messageLength = this._messageLength;
12653
+ const fragments = this._fragments;
12654
+ this._totalPayloadLength = 0;
12655
+ this._messageLength = 0;
12656
+ this._fragmented = 0;
12657
+ this._fragments = [];
12658
+ if (this._opcode === 2) {
12659
+ let data;
12660
+ if (this._binaryType === "nodebuffer") {
12661
+ data = concat(fragments, messageLength);
12662
+ } else if (this._binaryType === "arraybuffer") {
12663
+ data = toArrayBuffer(concat(fragments, messageLength));
12664
+ } else {
12665
+ data = fragments;
12666
+ }
12667
+ if (this._allowSynchronousEvents) {
12624
12668
  this.emit("message", data, true);
12669
+ this._state = GET_INFO;
12625
12670
  } else {
12626
- const buf = concat(fragments, messageLength);
12627
- if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
12628
- this._loop = false;
12629
- return error(
12630
- Error,
12631
- "invalid UTF-8 sequence",
12632
- true,
12633
- 1007,
12634
- "WS_ERR_INVALID_UTF8"
12635
- );
12636
- }
12671
+ this._state = DEFER_EVENT;
12672
+ setImmediate(() => {
12673
+ this.emit("message", data, true);
12674
+ this._state = GET_INFO;
12675
+ this.startLoop(cb);
12676
+ });
12677
+ }
12678
+ } else {
12679
+ const buf = concat(fragments, messageLength);
12680
+ if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
12681
+ const error = this.createError(
12682
+ Error,
12683
+ "invalid UTF-8 sequence",
12684
+ true,
12685
+ 1007,
12686
+ "WS_ERR_INVALID_UTF8"
12687
+ );
12688
+ cb(error);
12689
+ return;
12690
+ }
12691
+ if (this._state === INFLATING || this._allowSynchronousEvents) {
12637
12692
  this.emit("message", buf, false);
12693
+ this._state = GET_INFO;
12694
+ } else {
12695
+ this._state = DEFER_EVENT;
12696
+ setImmediate(() => {
12697
+ this.emit("message", buf, false);
12698
+ this._state = GET_INFO;
12699
+ this.startLoop(cb);
12700
+ });
12638
12701
  }
12639
12702
  }
12640
- this._state = GET_INFO;
12641
12703
  }
12642
12704
  /**
12643
12705
  * Handles a control message.
@@ -12646,62 +12708,85 @@ var require_receiver = __commonJS({
12646
12708
  * @return {(Error|RangeError|undefined)} A possible error
12647
12709
  * @private
12648
12710
  */
12649
- controlMessage(data) {
12711
+ controlMessage(data, cb) {
12650
12712
  if (this._opcode === 8) {
12651
- this._loop = false;
12652
12713
  if (data.length === 0) {
12714
+ this._loop = false;
12653
12715
  this.emit("conclude", 1005, EMPTY_BUFFER);
12654
12716
  this.end();
12655
- } else if (data.length === 1) {
12656
- return error(
12657
- RangeError,
12658
- "invalid payload length 1",
12659
- true,
12660
- 1002,
12661
- "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"
12662
- );
12663
12717
  } else {
12664
12718
  const code = data.readUInt16BE(0);
12665
12719
  if (!isValidStatusCode(code)) {
12666
- return error(
12720
+ const error = this.createError(
12667
12721
  RangeError,
12668
12722
  `invalid status code ${code}`,
12669
12723
  true,
12670
12724
  1002,
12671
12725
  "WS_ERR_INVALID_CLOSE_CODE"
12672
12726
  );
12727
+ cb(error);
12728
+ return;
12673
12729
  }
12674
- const buf = data.slice(2);
12730
+ const buf = new FastBuffer(
12731
+ data.buffer,
12732
+ data.byteOffset + 2,
12733
+ data.length - 2
12734
+ );
12675
12735
  if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
12676
- return error(
12736
+ const error = this.createError(
12677
12737
  Error,
12678
12738
  "invalid UTF-8 sequence",
12679
12739
  true,
12680
12740
  1007,
12681
12741
  "WS_ERR_INVALID_UTF8"
12682
12742
  );
12743
+ cb(error);
12744
+ return;
12683
12745
  }
12746
+ this._loop = false;
12684
12747
  this.emit("conclude", code, buf);
12685
12748
  this.end();
12686
12749
  }
12687
- } else if (this._opcode === 9) {
12688
- this.emit("ping", data);
12750
+ this._state = GET_INFO;
12751
+ return;
12752
+ }
12753
+ if (this._allowSynchronousEvents) {
12754
+ this.emit(this._opcode === 9 ? "ping" : "pong", data);
12755
+ this._state = GET_INFO;
12689
12756
  } else {
12690
- this.emit("pong", data);
12757
+ this._state = DEFER_EVENT;
12758
+ setImmediate(() => {
12759
+ this.emit(this._opcode === 9 ? "ping" : "pong", data);
12760
+ this._state = GET_INFO;
12761
+ this.startLoop(cb);
12762
+ });
12691
12763
  }
12692
- this._state = GET_INFO;
12764
+ }
12765
+ /**
12766
+ * Builds an error object.
12767
+ *
12768
+ * @param {function(new:Error|RangeError)} ErrorCtor The error constructor
12769
+ * @param {String} message The error message
12770
+ * @param {Boolean} prefix Specifies whether or not to add a default prefix to
12771
+ * `message`
12772
+ * @param {Number} statusCode The status code
12773
+ * @param {String} errorCode The exposed error code
12774
+ * @return {(Error|RangeError)} The error
12775
+ * @private
12776
+ */
12777
+ createError(ErrorCtor, message, prefix, statusCode, errorCode) {
12778
+ this._loop = false;
12779
+ this._errored = true;
12780
+ const err = new ErrorCtor(
12781
+ prefix ? `Invalid WebSocket frame: ${message}` : message
12782
+ );
12783
+ Error.captureStackTrace(err, this.createError);
12784
+ err.code = errorCode;
12785
+ err[kStatusCode] = statusCode;
12786
+ return err;
12693
12787
  }
12694
12788
  };
12695
12789
  module.exports = Receiver2;
12696
- function error(ErrorCtor, message, prefix, statusCode, errorCode) {
12697
- const err = new ErrorCtor(
12698
- prefix ? `Invalid WebSocket frame: ${message}` : message
12699
- );
12700
- Error.captureStackTrace(err, error);
12701
- err.code = errorCode;
12702
- err[kStatusCode] = statusCode;
12703
- return err;
12704
- }
12705
12790
  }
12706
12791
  });
12707
12792
 
@@ -12710,8 +12795,7 @@ var require_sender = __commonJS({
12710
12795
  "../../node_modules/engine.io/node_modules/ws/lib/sender.js"(exports, module) {
12711
12796
  "use strict";
12712
12797
  init_esm_shims();
12713
- var net = __require("net");
12714
- var tls = __require("tls");
12798
+ var { Duplex } = __require("stream");
12715
12799
  var { randomFillSync } = __require("crypto");
12716
12800
  var PerMessageDeflate = require_permessage_deflate();
12717
12801
  var { EMPTY_BUFFER } = require_constants();
@@ -12719,11 +12803,14 @@ var require_sender = __commonJS({
12719
12803
  var { mask: applyMask, toBuffer: toBuffer2 } = require_buffer_util();
12720
12804
  var kByteLength = Symbol("kByteLength");
12721
12805
  var maskBuffer = Buffer.alloc(4);
12806
+ var RANDOM_POOL_SIZE = 8 * 1024;
12807
+ var randomPool;
12808
+ var randomPoolPointer = RANDOM_POOL_SIZE;
12722
12809
  var Sender2 = class _Sender {
12723
12810
  /**
12724
12811
  * Creates a Sender instance.
12725
12812
  *
12726
- * @param {(net.Socket|tls.Socket)} socket The connection socket
12813
+ * @param {Duplex} socket The connection socket
12727
12814
  * @param {Object} [extensions] An object containing the negotiated extensions
12728
12815
  * @param {Function} [generateMask] The function used to generate the masking
12729
12816
  * key
@@ -12772,7 +12859,17 @@ var require_sender = __commonJS({
12772
12859
  if (options.generateMask) {
12773
12860
  options.generateMask(mask);
12774
12861
  } else {
12775
- randomFillSync(mask, 0, 4);
12862
+ if (randomPoolPointer === RANDOM_POOL_SIZE) {
12863
+ if (randomPool === void 0) {
12864
+ randomPool = Buffer.alloc(RANDOM_POOL_SIZE);
12865
+ }
12866
+ randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);
12867
+ randomPoolPointer = 0;
12868
+ }
12869
+ mask[0] = randomPool[randomPoolPointer++];
12870
+ mask[1] = randomPool[randomPoolPointer++];
12871
+ mask[2] = randomPool[randomPoolPointer++];
12872
+ mask[3] = randomPool[randomPoolPointer++];
12776
12873
  }
12777
12874
  skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;
12778
12875
  offset = 6;
@@ -13507,7 +13604,7 @@ var require_websocket2 = __commonJS({
13507
13604
  var net = __require("net");
13508
13605
  var tls = __require("tls");
13509
13606
  var { randomBytes, createHash } = __require("crypto");
13510
- var { Readable } = __require("stream");
13607
+ var { Duplex, Readable } = __require("stream");
13511
13608
  var { URL: URL2 } = __require("url");
13512
13609
  var PerMessageDeflate = require_permessage_deflate();
13513
13610
  var Receiver2 = require_receiver();
@@ -13571,6 +13668,7 @@ var require_websocket2 = __commonJS({
13571
13668
  }
13572
13669
  initAsClient(this, address, protocols, options);
13573
13670
  } else {
13671
+ this._autoPong = options.autoPong;
13574
13672
  this._isServer = true;
13575
13673
  }
13576
13674
  }
@@ -13657,10 +13755,12 @@ var require_websocket2 = __commonJS({
13657
13755
  /**
13658
13756
  * Set up the socket and the internal resources.
13659
13757
  *
13660
- * @param {(net.Socket|tls.Socket)} socket The network socket between the
13661
- * server and client
13758
+ * @param {Duplex} socket The network socket between the server and client
13662
13759
  * @param {Buffer} head The first packet of the upgraded stream
13663
13760
  * @param {Object} options Options object
13761
+ * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether
13762
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
13763
+ * multiple times in the same tick
13664
13764
  * @param {Function} [options.generateMask] The function used to generate the
13665
13765
  * masking key
13666
13766
  * @param {Number} [options.maxPayload=0] The maximum allowed message size
@@ -13670,6 +13770,7 @@ var require_websocket2 = __commonJS({
13670
13770
  */
13671
13771
  setSocket(socket, head, options) {
13672
13772
  const receiver = new Receiver2({
13773
+ allowSynchronousEvents: options.allowSynchronousEvents,
13673
13774
  binaryType: this.binaryType,
13674
13775
  extensions: this._extensions,
13675
13776
  isServer: this._isServer,
@@ -13687,8 +13788,8 @@ var require_websocket2 = __commonJS({
13687
13788
  receiver.on("message", receiverOnMessage);
13688
13789
  receiver.on("ping", receiverOnPing);
13689
13790
  receiver.on("pong", receiverOnPong);
13690
- socket.setTimeout(0);
13691
- socket.setNoDelay();
13791
+ if (socket.setTimeout) socket.setTimeout(0);
13792
+ if (socket.setNoDelay) socket.setNoDelay();
13692
13793
  if (head.length > 0) socket.unshift(head);
13693
13794
  socket.on("close", socketOnClose);
13694
13795
  socket.on("data", socketOnData);
@@ -13739,7 +13840,8 @@ var require_websocket2 = __commonJS({
13739
13840
  if (this.readyState === _WebSocket.CLOSED) return;
13740
13841
  if (this.readyState === _WebSocket.CONNECTING) {
13741
13842
  const msg = "WebSocket was closed before the connection was established";
13742
- return abortHandshake(this, this._req, msg);
13843
+ abortHandshake(this, this._req, msg);
13844
+ return;
13743
13845
  }
13744
13846
  if (this.readyState === _WebSocket.CLOSING) {
13745
13847
  if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) {
@@ -13887,7 +13989,8 @@ var require_websocket2 = __commonJS({
13887
13989
  if (this.readyState === _WebSocket.CLOSED) return;
13888
13990
  if (this.readyState === _WebSocket.CONNECTING) {
13889
13991
  const msg = "WebSocket was closed before the connection was established";
13890
- return abortHandshake(this, this._req, msg);
13992
+ abortHandshake(this, this._req, msg);
13993
+ return;
13891
13994
  }
13892
13995
  if (this._socket) {
13893
13996
  this._readyState = _WebSocket.CLOSING;
@@ -13966,6 +14069,8 @@ var require_websocket2 = __commonJS({
13966
14069
  module.exports = WebSocket3;
13967
14070
  function initAsClient(websocket, address, protocols, options) {
13968
14071
  const opts = {
14072
+ allowSynchronousEvents: true,
14073
+ autoPong: true,
13969
14074
  protocolVersion: protocolVersions[1],
13970
14075
  maxPayload: 100 * 1024 * 1024,
13971
14076
  skipUTF8Validation: false,
@@ -13973,7 +14078,6 @@ var require_websocket2 = __commonJS({
13973
14078
  followRedirects: false,
13974
14079
  maxRedirects: 10,
13975
14080
  ...options,
13976
- createConnection: void 0,
13977
14081
  socketPath: void 0,
13978
14082
  hostname: void 0,
13979
14083
  protocol: void 0,
@@ -13983,6 +14087,7 @@ var require_websocket2 = __commonJS({
13983
14087
  path: void 0,
13984
14088
  port: void 0
13985
14089
  };
14090
+ websocket._autoPong = opts.autoPong;
13986
14091
  if (!protocolVersions.includes(opts.protocolVersion)) {
13987
14092
  throw new RangeError(
13988
14093
  `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`
@@ -13991,20 +14096,24 @@ var require_websocket2 = __commonJS({
13991
14096
  let parsedUrl;
13992
14097
  if (address instanceof URL2) {
13993
14098
  parsedUrl = address;
13994
- websocket._url = address.href;
13995
14099
  } else {
13996
14100
  try {
13997
14101
  parsedUrl = new URL2(address);
13998
14102
  } catch (e) {
13999
14103
  throw new SyntaxError(`Invalid URL: ${address}`);
14000
14104
  }
14001
- websocket._url = address;
14002
14105
  }
14106
+ if (parsedUrl.protocol === "http:") {
14107
+ parsedUrl.protocol = "ws:";
14108
+ } else if (parsedUrl.protocol === "https:") {
14109
+ parsedUrl.protocol = "wss:";
14110
+ }
14111
+ websocket._url = parsedUrl.href;
14003
14112
  const isSecure = parsedUrl.protocol === "wss:";
14004
14113
  const isIpcUrl = parsedUrl.protocol === "ws+unix:";
14005
14114
  let invalidUrlMessage;
14006
14115
  if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) {
14007
- invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`;
14116
+ invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"`;
14008
14117
  } else if (isIpcUrl && !parsedUrl.pathname) {
14009
14118
  invalidUrlMessage = "The URL's pathname is empty";
14010
14119
  } else if (parsedUrl.hash) {
@@ -14024,7 +14133,7 @@ var require_websocket2 = __commonJS({
14024
14133
  const request = isSecure ? https.request : http.request;
14025
14134
  const protocolSet = /* @__PURE__ */ new Set();
14026
14135
  let perMessageDeflate;
14027
- opts.createConnection = isSecure ? tlsConnect : netConnect;
14136
+ opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect);
14028
14137
  opts.defaultPort = opts.defaultPort || defaultPort;
14029
14138
  opts.port = parsedUrl.port || defaultPort;
14030
14139
  opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname;
@@ -14145,7 +14254,8 @@ var require_websocket2 = __commonJS({
14145
14254
  websocket.emit("upgrade", res);
14146
14255
  if (websocket.readyState !== WebSocket3.CONNECTING) return;
14147
14256
  req = websocket._req = null;
14148
- if (res.headers.upgrade.toLowerCase() !== "websocket") {
14257
+ const upgrade = res.headers.upgrade;
14258
+ if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") {
14149
14259
  abortHandshake(websocket, socket, "Invalid Upgrade header");
14150
14260
  return;
14151
14261
  }
@@ -14201,12 +14311,17 @@ var require_websocket2 = __commonJS({
14201
14311
  websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
14202
14312
  }
14203
14313
  websocket.setSocket(socket, head, {
14314
+ allowSynchronousEvents: opts.allowSynchronousEvents,
14204
14315
  generateMask: opts.generateMask,
14205
14316
  maxPayload: opts.maxPayload,
14206
14317
  skipUTF8Validation: opts.skipUTF8Validation
14207
14318
  });
14208
14319
  });
14209
- req.end();
14320
+ if (opts.finishRequest) {
14321
+ opts.finishRequest(req, websocket);
14322
+ } else {
14323
+ req.end();
14324
+ }
14210
14325
  }
14211
14326
  function emitErrorAndClose(websocket, err) {
14212
14327
  websocket._readyState = WebSocket3.CLOSING;
@@ -14251,7 +14366,7 @@ var require_websocket2 = __commonJS({
14251
14366
  const err = new Error(
14252
14367
  `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`
14253
14368
  );
14254
- cb(err);
14369
+ process.nextTick(cb, err);
14255
14370
  }
14256
14371
  }
14257
14372
  function receiverOnConclude(code, reason) {
@@ -14286,7 +14401,7 @@ var require_websocket2 = __commonJS({
14286
14401
  }
14287
14402
  function receiverOnPing(data) {
14288
14403
  const websocket = this[kWebSocket];
14289
- websocket.pong(data, !websocket._isServer, NOOP);
14404
+ if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);
14290
14405
  websocket.emit("ping", data);
14291
14406
  }
14292
14407
  function receiverOnPong(data) {
@@ -14489,9 +14604,7 @@ var require_websocket_server = __commonJS({
14489
14604
  init_esm_shims();
14490
14605
  var EventEmitter = __require("events");
14491
14606
  var http = __require("http");
14492
- var https = __require("https");
14493
- var net = __require("net");
14494
- var tls = __require("tls");
14607
+ var { Duplex } = __require("stream");
14495
14608
  var { createHash } = __require("crypto");
14496
14609
  var extension = require_extension();
14497
14610
  var PerMessageDeflate = require_permessage_deflate();
@@ -14507,6 +14620,11 @@ var require_websocket_server = __commonJS({
14507
14620
  * Create a `WebSocketServer` instance.
14508
14621
  *
14509
14622
  * @param {Object} options Configuration options
14623
+ * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
14624
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
14625
+ * multiple times in the same tick
14626
+ * @param {Boolean} [options.autoPong=true] Specifies whether or not to
14627
+ * automatically send a pong in response to a ping
14510
14628
  * @param {Number} [options.backlog=511] The maximum length of the queue of
14511
14629
  * pending connections
14512
14630
  * @param {Boolean} [options.clientTracking=true] Specifies whether or not to
@@ -14532,6 +14650,8 @@ var require_websocket_server = __commonJS({
14532
14650
  constructor(options, callback) {
14533
14651
  super();
14534
14652
  options = {
14653
+ allowSynchronousEvents: true,
14654
+ autoPong: true,
14535
14655
  maxPayload: 100 * 1024 * 1024,
14536
14656
  skipUTF8Validation: false,
14537
14657
  perMessageDeflate: false,
@@ -14667,8 +14787,7 @@ var require_websocket_server = __commonJS({
14667
14787
  * Handle a HTTP Upgrade request.
14668
14788
  *
14669
14789
  * @param {http.IncomingMessage} req The request object
14670
- * @param {(net.Socket|tls.Socket)} socket The network socket between the
14671
- * server and client
14790
+ * @param {Duplex} socket The network socket between the server and client
14672
14791
  * @param {Buffer} head The first packet of the upgraded stream
14673
14792
  * @param {Function} cb Callback
14674
14793
  * @public
@@ -14676,18 +14795,19 @@ var require_websocket_server = __commonJS({
14676
14795
  handleUpgrade(req, socket, head, cb) {
14677
14796
  socket.on("error", socketOnError);
14678
14797
  const key = req.headers["sec-websocket-key"];
14798
+ const upgrade = req.headers.upgrade;
14679
14799
  const version = +req.headers["sec-websocket-version"];
14680
14800
  if (req.method !== "GET") {
14681
14801
  const message = "Invalid HTTP method";
14682
14802
  abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);
14683
14803
  return;
14684
14804
  }
14685
- if (req.headers.upgrade.toLowerCase() !== "websocket") {
14805
+ if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") {
14686
14806
  const message = "Invalid Upgrade header";
14687
14807
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
14688
14808
  return;
14689
14809
  }
14690
- if (!key || !keyRegex.test(key)) {
14810
+ if (key === void 0 || !keyRegex.test(key)) {
14691
14811
  const message = "Missing or invalid Sec-WebSocket-Key header";
14692
14812
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
14693
14813
  return;
@@ -14766,8 +14886,7 @@ var require_websocket_server = __commonJS({
14766
14886
  * @param {String} key The value of the `Sec-WebSocket-Key` header
14767
14887
  * @param {Set} protocols The subprotocols
14768
14888
  * @param {http.IncomingMessage} req The request object
14769
- * @param {(net.Socket|tls.Socket)} socket The network socket between the
14770
- * server and client
14889
+ * @param {Duplex} socket The network socket between the server and client
14771
14890
  * @param {Buffer} head The first packet of the upgraded stream
14772
14891
  * @param {Function} cb Callback
14773
14892
  * @throws {Error} If called more than once with the same socket
@@ -14788,7 +14907,7 @@ var require_websocket_server = __commonJS({
14788
14907
  "Connection: Upgrade",
14789
14908
  `Sec-WebSocket-Accept: ${digest}`
14790
14909
  ];
14791
- const ws = new this.options.WebSocket(null);
14910
+ const ws = new this.options.WebSocket(null, void 0, this.options);
14792
14911
  if (protocols.size) {
14793
14912
  const protocol4 = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value;
14794
14913
  if (protocol4) {
@@ -14808,6 +14927,7 @@ var require_websocket_server = __commonJS({
14808
14927
  socket.write(headers.concat("\r\n").join("\r\n"));
14809
14928
  socket.removeListener("error", socketOnError);
14810
14929
  ws.setSocket(socket, head, {
14930
+ allowSynchronousEvents: this.options.allowSynchronousEvents,
14811
14931
  maxPayload: this.options.maxPayload,
14812
14932
  skipUTF8Validation: this.options.skipUTF8Validation
14813
14933
  });
@@ -15514,11 +15634,6 @@ var require_server = __commonJS({
15514
15634
  } else if ("websocket" === transportName) {
15515
15635
  transport.perMessageDeflate = this.opts.perMessageDeflate;
15516
15636
  }
15517
- if (req._query && req._query.b64) {
15518
- transport.supportsBinary = false;
15519
- } else {
15520
- transport.supportsBinary = true;
15521
- }
15522
15637
  } catch (e) {
15523
15638
  debug11('error handshaking to transport "%s"', transportName);
15524
15639
  this.emit("connection_error", {
@@ -15811,11 +15926,6 @@ var require_server = __commonJS({
15811
15926
  debug11("upgrading existing transport");
15812
15927
  websocket.removeListener("error", onUpgradeError);
15813
15928
  const transport = this.createTransport(req._query.transport, req);
15814
- if (req._query && req._query.b64) {
15815
- transport.supportsBinary = false;
15816
- } else {
15817
- transport.supportsBinary = true;
15818
- }
15819
15929
  transport.perMessageDeflate = this.opts.perMessageDeflate;
15820
15930
  client.maybeUpgrade(transport);
15821
15931
  }
@@ -16237,6 +16347,7 @@ var require_polling2 = __commonJS({
16237
16347
  */
16238
16348
  onRequest(req) {
16239
16349
  const res = req.res;
16350
+ req.res = null;
16240
16351
  if (req.getMethod() === "get") {
16241
16352
  this.onPollRequest(req, res);
16242
16353
  } else if (req.getMethod() === "post") {
@@ -16538,6 +16649,7 @@ var require_polling2 = __commonJS({
16538
16649
  if (ua && (~ua.indexOf(";MSIE") || ~ua.indexOf("Trident/"))) {
16539
16650
  headers["X-XSS-Protection"] = "0";
16540
16651
  }
16652
+ headers["cache-control"] = "no-store";
16541
16653
  this.emit("headers", headers, req);
16542
16654
  return headers;
16543
16655
  }
@@ -16962,9 +17074,9 @@ var require_engine_io = __commonJS({
16962
17074
  }
16963
17075
  });
16964
17076
 
16965
- // ../../node_modules/@socket.io/component-emitter/index.mjs
16966
- var component_emitter_exports = {};
16967
- __export(component_emitter_exports, {
17077
+ // ../../node_modules/@socket.io/component-emitter/lib/esm/index.js
17078
+ var esm_exports = {};
17079
+ __export(esm_exports, {
16968
17080
  Emitter: () => Emitter
16969
17081
  });
16970
17082
  function Emitter(obj) {
@@ -16976,8 +17088,8 @@ function mixin(obj) {
16976
17088
  }
16977
17089
  return obj;
16978
17090
  }
16979
- var init_component_emitter = __esm({
16980
- "../../node_modules/@socket.io/component-emitter/index.mjs"() {
17091
+ var init_esm = __esm({
17092
+ "../../node_modules/@socket.io/component-emitter/lib/esm/index.js"() {
16981
17093
  "use strict";
16982
17094
  init_esm_shims();
16983
17095
  Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {
@@ -17697,7 +17809,7 @@ var require_cjs2 = __commonJS({
17697
17809
  init_esm_shims();
17698
17810
  Object.defineProperty(exports, "__esModule", { value: true });
17699
17811
  exports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;
17700
- var component_emitter_1 = (init_component_emitter(), __toCommonJS(component_emitter_exports));
17812
+ var component_emitter_1 = (init_esm(), __toCommonJS(esm_exports));
17701
17813
  var binary_js_1 = require_binary();
17702
17814
  var is_binary_js_1 = require_is_binary();
17703
17815
  var debug_1 = require_src2();
@@ -26598,6 +26710,7 @@ var require_buffer_util3 = __commonJS({
26598
26710
  "use strict";
26599
26711
  init_esm_shims();
26600
26712
  var { EMPTY_BUFFER } = require_constants3();
26713
+ var FastBuffer = Buffer[Symbol.species];
26601
26714
  function concat(list, totalLength2) {
26602
26715
  if (list.length === 0) return EMPTY_BUFFER;
26603
26716
  if (list.length === 1) return list[0];
@@ -26608,7 +26721,9 @@ var require_buffer_util3 = __commonJS({
26608
26721
  target.set(buf, offset);
26609
26722
  offset += buf.length;
26610
26723
  }
26611
- if (offset < totalLength2) return target.slice(0, offset);
26724
+ if (offset < totalLength2) {
26725
+ return new FastBuffer(target.buffer, target.byteOffset, offset);
26726
+ }
26612
26727
  return target;
26613
26728
  }
26614
26729
  function _mask(source, mask, output, offset, length2) {
@@ -26622,19 +26737,19 @@ var require_buffer_util3 = __commonJS({
26622
26737
  }
26623
26738
  }
26624
26739
  function toArrayBuffer(buf) {
26625
- if (buf.byteLength === buf.buffer.byteLength) {
26740
+ if (buf.length === buf.buffer.byteLength) {
26626
26741
  return buf.buffer;
26627
26742
  }
26628
- return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
26743
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);
26629
26744
  }
26630
26745
  function toBuffer2(data) {
26631
26746
  toBuffer2.readOnly = true;
26632
26747
  if (Buffer.isBuffer(data)) return data;
26633
26748
  let buf;
26634
26749
  if (data instanceof ArrayBuffer) {
26635
- buf = Buffer.from(data);
26750
+ buf = new FastBuffer(data);
26636
26751
  } else if (ArrayBuffer.isView(data)) {
26637
- buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
26752
+ buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);
26638
26753
  } else {
26639
26754
  buf = Buffer.from(data);
26640
26755
  toBuffer2.readOnly = false;
@@ -26725,6 +26840,7 @@ var require_permessage_deflate3 = __commonJS({
26725
26840
  var bufferUtil = require_buffer_util3();
26726
26841
  var Limiter = require_limiter3();
26727
26842
  var { kStatusCode } = require_constants3();
26843
+ var FastBuffer = Buffer[Symbol.species];
26728
26844
  var TRAILER = Buffer.from([0, 0, 255, 255]);
26729
26845
  var kPerMessageDeflate = Symbol("permessage-deflate");
26730
26846
  var kTotalLength = Symbol("total-length");
@@ -27057,7 +27173,9 @@ var require_permessage_deflate3 = __commonJS({
27057
27173
  this._deflate[kBuffers],
27058
27174
  this._deflate[kTotalLength]
27059
27175
  );
27060
- if (fin) data2 = data2.slice(0, data2.length - 4);
27176
+ if (fin) {
27177
+ data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4);
27178
+ }
27061
27179
  this._deflate[kCallback] = null;
27062
27180
  this._deflate[kTotalLength] = 0;
27063
27181
  this._deflate[kBuffers] = [];
@@ -27098,6 +27216,7 @@ var require_validation3 = __commonJS({
27098
27216
  "../../node_modules/engine.io-client/node_modules/ws/lib/validation.js"(exports, module) {
27099
27217
  "use strict";
27100
27218
  init_esm_shims();
27219
+ var { isUtf8 } = __require("buffer");
27101
27220
  var tokenChars = [
27102
27221
  0,
27103
27222
  0,
@@ -27273,11 +27392,15 @@ var require_validation3 = __commonJS({
27273
27392
  isValidUTF8: _isValidUTF8,
27274
27393
  tokenChars
27275
27394
  };
27276
- if (!process.env.WS_NO_UTF_8_VALIDATE) {
27395
+ if (isUtf8) {
27396
+ module.exports.isValidUTF8 = function(buf) {
27397
+ return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);
27398
+ };
27399
+ } else if (!process.env.WS_NO_UTF_8_VALIDATE) {
27277
27400
  try {
27278
27401
  const isValidUTF8 = __require("utf-8-validate");
27279
27402
  module.exports.isValidUTF8 = function(buf) {
27280
- return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);
27403
+ return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);
27281
27404
  };
27282
27405
  } catch (e) {
27283
27406
  }
@@ -27300,17 +27423,22 @@ var require_receiver3 = __commonJS({
27300
27423
  } = require_constants3();
27301
27424
  var { concat, toArrayBuffer, unmask } = require_buffer_util3();
27302
27425
  var { isValidStatusCode, isValidUTF8 } = require_validation3();
27426
+ var FastBuffer = Buffer[Symbol.species];
27303
27427
  var GET_INFO = 0;
27304
27428
  var GET_PAYLOAD_LENGTH_16 = 1;
27305
27429
  var GET_PAYLOAD_LENGTH_64 = 2;
27306
27430
  var GET_MASK = 3;
27307
27431
  var GET_DATA = 4;
27308
27432
  var INFLATING = 5;
27433
+ var DEFER_EVENT = 6;
27309
27434
  var Receiver2 = class extends Writable {
27310
27435
  /**
27311
27436
  * Creates a Receiver instance.
27312
27437
  *
27313
27438
  * @param {Object} [options] Options object
27439
+ * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
27440
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
27441
+ * multiple times in the same tick
27314
27442
  * @param {String} [options.binaryType=nodebuffer] The type for binary data
27315
27443
  * @param {Object} [options.extensions] An object containing the negotiated
27316
27444
  * extensions
@@ -27322,6 +27450,7 @@ var require_receiver3 = __commonJS({
27322
27450
  */
27323
27451
  constructor(options = {}) {
27324
27452
  super();
27453
+ this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true;
27325
27454
  this._binaryType = options.binaryType || BINARY_TYPES[0];
27326
27455
  this._extensions = options.extensions || {};
27327
27456
  this._isServer = !!options.isServer;
@@ -27340,8 +27469,9 @@ var require_receiver3 = __commonJS({
27340
27469
  this._totalPayloadLength = 0;
27341
27470
  this._messageLength = 0;
27342
27471
  this._fragments = [];
27343
- this._state = GET_INFO;
27472
+ this._errored = false;
27344
27473
  this._loop = false;
27474
+ this._state = GET_INFO;
27345
27475
  }
27346
27476
  /**
27347
27477
  * Implements `Writable.prototype._write()`.
@@ -27369,8 +27499,12 @@ var require_receiver3 = __commonJS({
27369
27499
  if (n === this._buffers[0].length) return this._buffers.shift();
27370
27500
  if (n < this._buffers[0].length) {
27371
27501
  const buf = this._buffers[0];
27372
- this._buffers[0] = buf.slice(n);
27373
- return buf.slice(0, n);
27502
+ this._buffers[0] = new FastBuffer(
27503
+ buf.buffer,
27504
+ buf.byteOffset + n,
27505
+ buf.length - n
27506
+ );
27507
+ return new FastBuffer(buf.buffer, buf.byteOffset, n);
27374
27508
  }
27375
27509
  const dst = Buffer.allocUnsafe(n);
27376
27510
  do {
@@ -27380,7 +27514,11 @@ var require_receiver3 = __commonJS({
27380
27514
  dst.set(this._buffers.shift(), offset);
27381
27515
  } else {
27382
27516
  dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);
27383
- this._buffers[0] = buf.slice(n);
27517
+ this._buffers[0] = new FastBuffer(
27518
+ buf.buffer,
27519
+ buf.byteOffset + n,
27520
+ buf.length - n
27521
+ );
27384
27522
  }
27385
27523
  n -= buf.length;
27386
27524
  } while (n > 0);
@@ -27393,191 +27531,202 @@ var require_receiver3 = __commonJS({
27393
27531
  * @private
27394
27532
  */
27395
27533
  startLoop(cb) {
27396
- let err;
27397
27534
  this._loop = true;
27398
27535
  do {
27399
27536
  switch (this._state) {
27400
27537
  case GET_INFO:
27401
- err = this.getInfo();
27538
+ this.getInfo(cb);
27402
27539
  break;
27403
27540
  case GET_PAYLOAD_LENGTH_16:
27404
- err = this.getPayloadLength16();
27541
+ this.getPayloadLength16(cb);
27405
27542
  break;
27406
27543
  case GET_PAYLOAD_LENGTH_64:
27407
- err = this.getPayloadLength64();
27544
+ this.getPayloadLength64(cb);
27408
27545
  break;
27409
27546
  case GET_MASK:
27410
27547
  this.getMask();
27411
27548
  break;
27412
27549
  case GET_DATA:
27413
- err = this.getData(cb);
27550
+ this.getData(cb);
27414
27551
  break;
27415
- default:
27552
+ case INFLATING:
27553
+ case DEFER_EVENT:
27416
27554
  this._loop = false;
27417
27555
  return;
27418
27556
  }
27419
27557
  } while (this._loop);
27420
- cb(err);
27558
+ if (!this._errored) cb();
27421
27559
  }
27422
27560
  /**
27423
27561
  * Reads the first two bytes of a frame.
27424
27562
  *
27425
- * @return {(RangeError|undefined)} A possible error
27563
+ * @param {Function} cb Callback
27426
27564
  * @private
27427
27565
  */
27428
- getInfo() {
27566
+ getInfo(cb) {
27429
27567
  if (this._bufferedBytes < 2) {
27430
27568
  this._loop = false;
27431
27569
  return;
27432
27570
  }
27433
27571
  const buf = this.consume(2);
27434
27572
  if ((buf[0] & 48) !== 0) {
27435
- this._loop = false;
27436
- return error(
27573
+ const error = this.createError(
27437
27574
  RangeError,
27438
27575
  "RSV2 and RSV3 must be clear",
27439
27576
  true,
27440
27577
  1002,
27441
27578
  "WS_ERR_UNEXPECTED_RSV_2_3"
27442
27579
  );
27580
+ cb(error);
27581
+ return;
27443
27582
  }
27444
27583
  const compressed = (buf[0] & 64) === 64;
27445
27584
  if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {
27446
- this._loop = false;
27447
- return error(
27585
+ const error = this.createError(
27448
27586
  RangeError,
27449
27587
  "RSV1 must be clear",
27450
27588
  true,
27451
27589
  1002,
27452
27590
  "WS_ERR_UNEXPECTED_RSV_1"
27453
27591
  );
27592
+ cb(error);
27593
+ return;
27454
27594
  }
27455
27595
  this._fin = (buf[0] & 128) === 128;
27456
27596
  this._opcode = buf[0] & 15;
27457
27597
  this._payloadLength = buf[1] & 127;
27458
27598
  if (this._opcode === 0) {
27459
27599
  if (compressed) {
27460
- this._loop = false;
27461
- return error(
27600
+ const error = this.createError(
27462
27601
  RangeError,
27463
27602
  "RSV1 must be clear",
27464
27603
  true,
27465
27604
  1002,
27466
27605
  "WS_ERR_UNEXPECTED_RSV_1"
27467
27606
  );
27607
+ cb(error);
27608
+ return;
27468
27609
  }
27469
27610
  if (!this._fragmented) {
27470
- this._loop = false;
27471
- return error(
27611
+ const error = this.createError(
27472
27612
  RangeError,
27473
27613
  "invalid opcode 0",
27474
27614
  true,
27475
27615
  1002,
27476
27616
  "WS_ERR_INVALID_OPCODE"
27477
27617
  );
27618
+ cb(error);
27619
+ return;
27478
27620
  }
27479
27621
  this._opcode = this._fragmented;
27480
27622
  } else if (this._opcode === 1 || this._opcode === 2) {
27481
27623
  if (this._fragmented) {
27482
- this._loop = false;
27483
- return error(
27624
+ const error = this.createError(
27484
27625
  RangeError,
27485
27626
  `invalid opcode ${this._opcode}`,
27486
27627
  true,
27487
27628
  1002,
27488
27629
  "WS_ERR_INVALID_OPCODE"
27489
27630
  );
27631
+ cb(error);
27632
+ return;
27490
27633
  }
27491
27634
  this._compressed = compressed;
27492
27635
  } else if (this._opcode > 7 && this._opcode < 11) {
27493
27636
  if (!this._fin) {
27494
- this._loop = false;
27495
- return error(
27637
+ const error = this.createError(
27496
27638
  RangeError,
27497
27639
  "FIN must be set",
27498
27640
  true,
27499
27641
  1002,
27500
27642
  "WS_ERR_EXPECTED_FIN"
27501
27643
  );
27644
+ cb(error);
27645
+ return;
27502
27646
  }
27503
27647
  if (compressed) {
27504
- this._loop = false;
27505
- return error(
27648
+ const error = this.createError(
27506
27649
  RangeError,
27507
27650
  "RSV1 must be clear",
27508
27651
  true,
27509
27652
  1002,
27510
27653
  "WS_ERR_UNEXPECTED_RSV_1"
27511
27654
  );
27655
+ cb(error);
27656
+ return;
27512
27657
  }
27513
- if (this._payloadLength > 125) {
27514
- this._loop = false;
27515
- return error(
27658
+ if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) {
27659
+ const error = this.createError(
27516
27660
  RangeError,
27517
27661
  `invalid payload length ${this._payloadLength}`,
27518
27662
  true,
27519
27663
  1002,
27520
27664
  "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"
27521
27665
  );
27666
+ cb(error);
27667
+ return;
27522
27668
  }
27523
27669
  } else {
27524
- this._loop = false;
27525
- return error(
27670
+ const error = this.createError(
27526
27671
  RangeError,
27527
27672
  `invalid opcode ${this._opcode}`,
27528
27673
  true,
27529
27674
  1002,
27530
27675
  "WS_ERR_INVALID_OPCODE"
27531
27676
  );
27677
+ cb(error);
27678
+ return;
27532
27679
  }
27533
27680
  if (!this._fin && !this._fragmented) this._fragmented = this._opcode;
27534
27681
  this._masked = (buf[1] & 128) === 128;
27535
27682
  if (this._isServer) {
27536
27683
  if (!this._masked) {
27537
- this._loop = false;
27538
- return error(
27684
+ const error = this.createError(
27539
27685
  RangeError,
27540
27686
  "MASK must be set",
27541
27687
  true,
27542
27688
  1002,
27543
27689
  "WS_ERR_EXPECTED_MASK"
27544
27690
  );
27691
+ cb(error);
27692
+ return;
27545
27693
  }
27546
27694
  } else if (this._masked) {
27547
- this._loop = false;
27548
- return error(
27695
+ const error = this.createError(
27549
27696
  RangeError,
27550
27697
  "MASK must be clear",
27551
27698
  true,
27552
27699
  1002,
27553
27700
  "WS_ERR_UNEXPECTED_MASK"
27554
27701
  );
27702
+ cb(error);
27703
+ return;
27555
27704
  }
27556
27705
  if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;
27557
27706
  else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;
27558
- else return this.haveLength();
27707
+ else this.haveLength(cb);
27559
27708
  }
27560
27709
  /**
27561
27710
  * Gets extended payload length (7+16).
27562
27711
  *
27563
- * @return {(RangeError|undefined)} A possible error
27712
+ * @param {Function} cb Callback
27564
27713
  * @private
27565
27714
  */
27566
- getPayloadLength16() {
27715
+ getPayloadLength16(cb) {
27567
27716
  if (this._bufferedBytes < 2) {
27568
27717
  this._loop = false;
27569
27718
  return;
27570
27719
  }
27571
27720
  this._payloadLength = this.consume(2).readUInt16BE(0);
27572
- return this.haveLength();
27721
+ this.haveLength(cb);
27573
27722
  }
27574
27723
  /**
27575
27724
  * Gets extended payload length (7+64).
27576
27725
  *
27577
- * @return {(RangeError|undefined)} A possible error
27726
+ * @param {Function} cb Callback
27578
27727
  * @private
27579
27728
  */
27580
- getPayloadLength64() {
27729
+ getPayloadLength64(cb) {
27581
27730
  if (this._bufferedBytes < 8) {
27582
27731
  this._loop = false;
27583
27732
  return;
@@ -27585,36 +27734,38 @@ var require_receiver3 = __commonJS({
27585
27734
  const buf = this.consume(8);
27586
27735
  const num = buf.readUInt32BE(0);
27587
27736
  if (num > Math.pow(2, 53 - 32) - 1) {
27588
- this._loop = false;
27589
- return error(
27737
+ const error = this.createError(
27590
27738
  RangeError,
27591
27739
  "Unsupported WebSocket frame: payload length > 2^53 - 1",
27592
27740
  false,
27593
27741
  1009,
27594
27742
  "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"
27595
27743
  );
27744
+ cb(error);
27745
+ return;
27596
27746
  }
27597
27747
  this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);
27598
- return this.haveLength();
27748
+ this.haveLength(cb);
27599
27749
  }
27600
27750
  /**
27601
27751
  * Payload length has been read.
27602
27752
  *
27603
- * @return {(RangeError|undefined)} A possible error
27753
+ * @param {Function} cb Callback
27604
27754
  * @private
27605
27755
  */
27606
- haveLength() {
27756
+ haveLength(cb) {
27607
27757
  if (this._payloadLength && this._opcode < 8) {
27608
27758
  this._totalPayloadLength += this._payloadLength;
27609
27759
  if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {
27610
- this._loop = false;
27611
- return error(
27760
+ const error = this.createError(
27612
27761
  RangeError,
27613
27762
  "Max payload size exceeded",
27614
27763
  false,
27615
27764
  1009,
27616
27765
  "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
27617
27766
  );
27767
+ cb(error);
27768
+ return;
27618
27769
  }
27619
27770
  }
27620
27771
  if (this._masked) this._state = GET_MASK;
@@ -27637,7 +27788,6 @@ var require_receiver3 = __commonJS({
27637
27788
  * Reads data bytes.
27638
27789
  *
27639
27790
  * @param {Function} cb Callback
27640
- * @return {(Error|RangeError|undefined)} A possible error
27641
27791
  * @private
27642
27792
  */
27643
27793
  getData(cb) {
@@ -27652,7 +27802,10 @@ var require_receiver3 = __commonJS({
27652
27802
  unmask(data, this._mask);
27653
27803
  }
27654
27804
  }
27655
- if (this._opcode > 7) return this.controlMessage(data);
27805
+ if (this._opcode > 7) {
27806
+ this.controlMessage(data, cb);
27807
+ return;
27808
+ }
27656
27809
  if (this._compressed) {
27657
27810
  this._state = INFLATING;
27658
27811
  this.decompress(data, cb);
@@ -27662,7 +27815,7 @@ var require_receiver3 = __commonJS({
27662
27815
  this._messageLength = this._totalPayloadLength;
27663
27816
  this._fragments.push(data);
27664
27817
  }
27665
- return this.dataMessage();
27818
+ this.dataMessage(cb);
27666
27819
  }
27667
27820
  /**
27668
27821
  * Decompresses data.
@@ -27678,63 +27831,84 @@ var require_receiver3 = __commonJS({
27678
27831
  if (buf.length) {
27679
27832
  this._messageLength += buf.length;
27680
27833
  if (this._messageLength > this._maxPayload && this._maxPayload > 0) {
27681
- return cb(
27682
- error(
27683
- RangeError,
27684
- "Max payload size exceeded",
27685
- false,
27686
- 1009,
27687
- "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
27688
- )
27834
+ const error = this.createError(
27835
+ RangeError,
27836
+ "Max payload size exceeded",
27837
+ false,
27838
+ 1009,
27839
+ "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
27689
27840
  );
27841
+ cb(error);
27842
+ return;
27690
27843
  }
27691
27844
  this._fragments.push(buf);
27692
27845
  }
27693
- const er = this.dataMessage();
27694
- if (er) return cb(er);
27695
- this.startLoop(cb);
27846
+ this.dataMessage(cb);
27847
+ if (this._state === GET_INFO) this.startLoop(cb);
27696
27848
  });
27697
27849
  }
27698
27850
  /**
27699
27851
  * Handles a data message.
27700
27852
  *
27701
- * @return {(Error|undefined)} A possible error
27853
+ * @param {Function} cb Callback
27702
27854
  * @private
27703
27855
  */
27704
- dataMessage() {
27705
- if (this._fin) {
27706
- const messageLength = this._messageLength;
27707
- const fragments = this._fragments;
27708
- this._totalPayloadLength = 0;
27709
- this._messageLength = 0;
27710
- this._fragmented = 0;
27711
- this._fragments = [];
27712
- if (this._opcode === 2) {
27713
- let data;
27714
- if (this._binaryType === "nodebuffer") {
27715
- data = concat(fragments, messageLength);
27716
- } else if (this._binaryType === "arraybuffer") {
27717
- data = toArrayBuffer(concat(fragments, messageLength));
27718
- } else {
27719
- data = fragments;
27720
- }
27856
+ dataMessage(cb) {
27857
+ if (!this._fin) {
27858
+ this._state = GET_INFO;
27859
+ return;
27860
+ }
27861
+ const messageLength = this._messageLength;
27862
+ const fragments = this._fragments;
27863
+ this._totalPayloadLength = 0;
27864
+ this._messageLength = 0;
27865
+ this._fragmented = 0;
27866
+ this._fragments = [];
27867
+ if (this._opcode === 2) {
27868
+ let data;
27869
+ if (this._binaryType === "nodebuffer") {
27870
+ data = concat(fragments, messageLength);
27871
+ } else if (this._binaryType === "arraybuffer") {
27872
+ data = toArrayBuffer(concat(fragments, messageLength));
27873
+ } else {
27874
+ data = fragments;
27875
+ }
27876
+ if (this._allowSynchronousEvents) {
27721
27877
  this.emit("message", data, true);
27878
+ this._state = GET_INFO;
27722
27879
  } else {
27723
- const buf = concat(fragments, messageLength);
27724
- if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
27725
- this._loop = false;
27726
- return error(
27727
- Error,
27728
- "invalid UTF-8 sequence",
27729
- true,
27730
- 1007,
27731
- "WS_ERR_INVALID_UTF8"
27732
- );
27733
- }
27880
+ this._state = DEFER_EVENT;
27881
+ setImmediate(() => {
27882
+ this.emit("message", data, true);
27883
+ this._state = GET_INFO;
27884
+ this.startLoop(cb);
27885
+ });
27886
+ }
27887
+ } else {
27888
+ const buf = concat(fragments, messageLength);
27889
+ if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
27890
+ const error = this.createError(
27891
+ Error,
27892
+ "invalid UTF-8 sequence",
27893
+ true,
27894
+ 1007,
27895
+ "WS_ERR_INVALID_UTF8"
27896
+ );
27897
+ cb(error);
27898
+ return;
27899
+ }
27900
+ if (this._state === INFLATING || this._allowSynchronousEvents) {
27734
27901
  this.emit("message", buf, false);
27902
+ this._state = GET_INFO;
27903
+ } else {
27904
+ this._state = DEFER_EVENT;
27905
+ setImmediate(() => {
27906
+ this.emit("message", buf, false);
27907
+ this._state = GET_INFO;
27908
+ this.startLoop(cb);
27909
+ });
27735
27910
  }
27736
27911
  }
27737
- this._state = GET_INFO;
27738
27912
  }
27739
27913
  /**
27740
27914
  * Handles a control message.
@@ -27743,62 +27917,85 @@ var require_receiver3 = __commonJS({
27743
27917
  * @return {(Error|RangeError|undefined)} A possible error
27744
27918
  * @private
27745
27919
  */
27746
- controlMessage(data) {
27920
+ controlMessage(data, cb) {
27747
27921
  if (this._opcode === 8) {
27748
- this._loop = false;
27749
27922
  if (data.length === 0) {
27923
+ this._loop = false;
27750
27924
  this.emit("conclude", 1005, EMPTY_BUFFER);
27751
27925
  this.end();
27752
- } else if (data.length === 1) {
27753
- return error(
27754
- RangeError,
27755
- "invalid payload length 1",
27756
- true,
27757
- 1002,
27758
- "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"
27759
- );
27760
27926
  } else {
27761
27927
  const code = data.readUInt16BE(0);
27762
27928
  if (!isValidStatusCode(code)) {
27763
- return error(
27929
+ const error = this.createError(
27764
27930
  RangeError,
27765
27931
  `invalid status code ${code}`,
27766
27932
  true,
27767
27933
  1002,
27768
27934
  "WS_ERR_INVALID_CLOSE_CODE"
27769
27935
  );
27936
+ cb(error);
27937
+ return;
27770
27938
  }
27771
- const buf = data.slice(2);
27939
+ const buf = new FastBuffer(
27940
+ data.buffer,
27941
+ data.byteOffset + 2,
27942
+ data.length - 2
27943
+ );
27772
27944
  if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
27773
- return error(
27945
+ const error = this.createError(
27774
27946
  Error,
27775
27947
  "invalid UTF-8 sequence",
27776
27948
  true,
27777
27949
  1007,
27778
27950
  "WS_ERR_INVALID_UTF8"
27779
27951
  );
27952
+ cb(error);
27953
+ return;
27780
27954
  }
27955
+ this._loop = false;
27781
27956
  this.emit("conclude", code, buf);
27782
27957
  this.end();
27783
27958
  }
27784
- } else if (this._opcode === 9) {
27785
- this.emit("ping", data);
27959
+ this._state = GET_INFO;
27960
+ return;
27961
+ }
27962
+ if (this._allowSynchronousEvents) {
27963
+ this.emit(this._opcode === 9 ? "ping" : "pong", data);
27964
+ this._state = GET_INFO;
27786
27965
  } else {
27787
- this.emit("pong", data);
27966
+ this._state = DEFER_EVENT;
27967
+ setImmediate(() => {
27968
+ this.emit(this._opcode === 9 ? "ping" : "pong", data);
27969
+ this._state = GET_INFO;
27970
+ this.startLoop(cb);
27971
+ });
27788
27972
  }
27789
- this._state = GET_INFO;
27973
+ }
27974
+ /**
27975
+ * Builds an error object.
27976
+ *
27977
+ * @param {function(new:Error|RangeError)} ErrorCtor The error constructor
27978
+ * @param {String} message The error message
27979
+ * @param {Boolean} prefix Specifies whether or not to add a default prefix to
27980
+ * `message`
27981
+ * @param {Number} statusCode The status code
27982
+ * @param {String} errorCode The exposed error code
27983
+ * @return {(Error|RangeError)} The error
27984
+ * @private
27985
+ */
27986
+ createError(ErrorCtor, message, prefix, statusCode, errorCode) {
27987
+ this._loop = false;
27988
+ this._errored = true;
27989
+ const err = new ErrorCtor(
27990
+ prefix ? `Invalid WebSocket frame: ${message}` : message
27991
+ );
27992
+ Error.captureStackTrace(err, this.createError);
27993
+ err.code = errorCode;
27994
+ err[kStatusCode] = statusCode;
27995
+ return err;
27790
27996
  }
27791
27997
  };
27792
27998
  module.exports = Receiver2;
27793
- function error(ErrorCtor, message, prefix, statusCode, errorCode) {
27794
- const err = new ErrorCtor(
27795
- prefix ? `Invalid WebSocket frame: ${message}` : message
27796
- );
27797
- Error.captureStackTrace(err, error);
27798
- err.code = errorCode;
27799
- err[kStatusCode] = statusCode;
27800
- return err;
27801
- }
27802
27999
  }
27803
28000
  });
27804
28001
 
@@ -27807,8 +28004,7 @@ var require_sender3 = __commonJS({
27807
28004
  "../../node_modules/engine.io-client/node_modules/ws/lib/sender.js"(exports, module) {
27808
28005
  "use strict";
27809
28006
  init_esm_shims();
27810
- var net = __require("net");
27811
- var tls = __require("tls");
28007
+ var { Duplex } = __require("stream");
27812
28008
  var { randomFillSync } = __require("crypto");
27813
28009
  var PerMessageDeflate = require_permessage_deflate3();
27814
28010
  var { EMPTY_BUFFER } = require_constants3();
@@ -27816,11 +28012,14 @@ var require_sender3 = __commonJS({
27816
28012
  var { mask: applyMask, toBuffer: toBuffer2 } = require_buffer_util3();
27817
28013
  var kByteLength = Symbol("kByteLength");
27818
28014
  var maskBuffer = Buffer.alloc(4);
28015
+ var RANDOM_POOL_SIZE = 8 * 1024;
28016
+ var randomPool;
28017
+ var randomPoolPointer = RANDOM_POOL_SIZE;
27819
28018
  var Sender2 = class _Sender {
27820
28019
  /**
27821
28020
  * Creates a Sender instance.
27822
28021
  *
27823
- * @param {(net.Socket|tls.Socket)} socket The connection socket
28022
+ * @param {Duplex} socket The connection socket
27824
28023
  * @param {Object} [extensions] An object containing the negotiated extensions
27825
28024
  * @param {Function} [generateMask] The function used to generate the masking
27826
28025
  * key
@@ -27869,7 +28068,17 @@ var require_sender3 = __commonJS({
27869
28068
  if (options.generateMask) {
27870
28069
  options.generateMask(mask);
27871
28070
  } else {
27872
- randomFillSync(mask, 0, 4);
28071
+ if (randomPoolPointer === RANDOM_POOL_SIZE) {
28072
+ if (randomPool === void 0) {
28073
+ randomPool = Buffer.alloc(RANDOM_POOL_SIZE);
28074
+ }
28075
+ randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);
28076
+ randomPoolPointer = 0;
28077
+ }
28078
+ mask[0] = randomPool[randomPoolPointer++];
28079
+ mask[1] = randomPool[randomPoolPointer++];
28080
+ mask[2] = randomPool[randomPoolPointer++];
28081
+ mask[3] = randomPool[randomPoolPointer++];
27873
28082
  }
27874
28083
  skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;
27875
28084
  offset = 6;
@@ -28604,7 +28813,7 @@ var require_websocket5 = __commonJS({
28604
28813
  var net = __require("net");
28605
28814
  var tls = __require("tls");
28606
28815
  var { randomBytes, createHash } = __require("crypto");
28607
- var { Readable } = __require("stream");
28816
+ var { Duplex, Readable } = __require("stream");
28608
28817
  var { URL: URL2 } = __require("url");
28609
28818
  var PerMessageDeflate = require_permessage_deflate3();
28610
28819
  var Receiver2 = require_receiver3();
@@ -28668,6 +28877,7 @@ var require_websocket5 = __commonJS({
28668
28877
  }
28669
28878
  initAsClient(this, address, protocols, options);
28670
28879
  } else {
28880
+ this._autoPong = options.autoPong;
28671
28881
  this._isServer = true;
28672
28882
  }
28673
28883
  }
@@ -28754,10 +28964,12 @@ var require_websocket5 = __commonJS({
28754
28964
  /**
28755
28965
  * Set up the socket and the internal resources.
28756
28966
  *
28757
- * @param {(net.Socket|tls.Socket)} socket The network socket between the
28758
- * server and client
28967
+ * @param {Duplex} socket The network socket between the server and client
28759
28968
  * @param {Buffer} head The first packet of the upgraded stream
28760
28969
  * @param {Object} options Options object
28970
+ * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether
28971
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
28972
+ * multiple times in the same tick
28761
28973
  * @param {Function} [options.generateMask] The function used to generate the
28762
28974
  * masking key
28763
28975
  * @param {Number} [options.maxPayload=0] The maximum allowed message size
@@ -28767,6 +28979,7 @@ var require_websocket5 = __commonJS({
28767
28979
  */
28768
28980
  setSocket(socket, head, options) {
28769
28981
  const receiver = new Receiver2({
28982
+ allowSynchronousEvents: options.allowSynchronousEvents,
28770
28983
  binaryType: this.binaryType,
28771
28984
  extensions: this._extensions,
28772
28985
  isServer: this._isServer,
@@ -28784,8 +28997,8 @@ var require_websocket5 = __commonJS({
28784
28997
  receiver.on("message", receiverOnMessage);
28785
28998
  receiver.on("ping", receiverOnPing);
28786
28999
  receiver.on("pong", receiverOnPong);
28787
- socket.setTimeout(0);
28788
- socket.setNoDelay();
29000
+ if (socket.setTimeout) socket.setTimeout(0);
29001
+ if (socket.setNoDelay) socket.setNoDelay();
28789
29002
  if (head.length > 0) socket.unshift(head);
28790
29003
  socket.on("close", socketOnClose);
28791
29004
  socket.on("data", socketOnData);
@@ -28836,7 +29049,8 @@ var require_websocket5 = __commonJS({
28836
29049
  if (this.readyState === _WebSocket.CLOSED) return;
28837
29050
  if (this.readyState === _WebSocket.CONNECTING) {
28838
29051
  const msg = "WebSocket was closed before the connection was established";
28839
- return abortHandshake(this, this._req, msg);
29052
+ abortHandshake(this, this._req, msg);
29053
+ return;
28840
29054
  }
28841
29055
  if (this.readyState === _WebSocket.CLOSING) {
28842
29056
  if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) {
@@ -28984,7 +29198,8 @@ var require_websocket5 = __commonJS({
28984
29198
  if (this.readyState === _WebSocket.CLOSED) return;
28985
29199
  if (this.readyState === _WebSocket.CONNECTING) {
28986
29200
  const msg = "WebSocket was closed before the connection was established";
28987
- return abortHandshake(this, this._req, msg);
29201
+ abortHandshake(this, this._req, msg);
29202
+ return;
28988
29203
  }
28989
29204
  if (this._socket) {
28990
29205
  this._readyState = _WebSocket.CLOSING;
@@ -29063,6 +29278,8 @@ var require_websocket5 = __commonJS({
29063
29278
  module.exports = WebSocket3;
29064
29279
  function initAsClient(websocket, address, protocols, options) {
29065
29280
  const opts = {
29281
+ allowSynchronousEvents: true,
29282
+ autoPong: true,
29066
29283
  protocolVersion: protocolVersions[1],
29067
29284
  maxPayload: 100 * 1024 * 1024,
29068
29285
  skipUTF8Validation: false,
@@ -29070,7 +29287,6 @@ var require_websocket5 = __commonJS({
29070
29287
  followRedirects: false,
29071
29288
  maxRedirects: 10,
29072
29289
  ...options,
29073
- createConnection: void 0,
29074
29290
  socketPath: void 0,
29075
29291
  hostname: void 0,
29076
29292
  protocol: void 0,
@@ -29080,6 +29296,7 @@ var require_websocket5 = __commonJS({
29080
29296
  path: void 0,
29081
29297
  port: void 0
29082
29298
  };
29299
+ websocket._autoPong = opts.autoPong;
29083
29300
  if (!protocolVersions.includes(opts.protocolVersion)) {
29084
29301
  throw new RangeError(
29085
29302
  `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`
@@ -29088,20 +29305,24 @@ var require_websocket5 = __commonJS({
29088
29305
  let parsedUrl;
29089
29306
  if (address instanceof URL2) {
29090
29307
  parsedUrl = address;
29091
- websocket._url = address.href;
29092
29308
  } else {
29093
29309
  try {
29094
29310
  parsedUrl = new URL2(address);
29095
29311
  } catch (e) {
29096
29312
  throw new SyntaxError(`Invalid URL: ${address}`);
29097
29313
  }
29098
- websocket._url = address;
29099
29314
  }
29315
+ if (parsedUrl.protocol === "http:") {
29316
+ parsedUrl.protocol = "ws:";
29317
+ } else if (parsedUrl.protocol === "https:") {
29318
+ parsedUrl.protocol = "wss:";
29319
+ }
29320
+ websocket._url = parsedUrl.href;
29100
29321
  const isSecure = parsedUrl.protocol === "wss:";
29101
29322
  const isIpcUrl = parsedUrl.protocol === "ws+unix:";
29102
29323
  let invalidUrlMessage;
29103
29324
  if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) {
29104
- invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`;
29325
+ invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"`;
29105
29326
  } else if (isIpcUrl && !parsedUrl.pathname) {
29106
29327
  invalidUrlMessage = "The URL's pathname is empty";
29107
29328
  } else if (parsedUrl.hash) {
@@ -29121,7 +29342,7 @@ var require_websocket5 = __commonJS({
29121
29342
  const request = isSecure ? https.request : http.request;
29122
29343
  const protocolSet = /* @__PURE__ */ new Set();
29123
29344
  let perMessageDeflate;
29124
- opts.createConnection = isSecure ? tlsConnect : netConnect;
29345
+ opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect);
29125
29346
  opts.defaultPort = opts.defaultPort || defaultPort;
29126
29347
  opts.port = parsedUrl.port || defaultPort;
29127
29348
  opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname;
@@ -29242,7 +29463,8 @@ var require_websocket5 = __commonJS({
29242
29463
  websocket.emit("upgrade", res);
29243
29464
  if (websocket.readyState !== WebSocket3.CONNECTING) return;
29244
29465
  req = websocket._req = null;
29245
- if (res.headers.upgrade.toLowerCase() !== "websocket") {
29466
+ const upgrade = res.headers.upgrade;
29467
+ if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") {
29246
29468
  abortHandshake(websocket, socket, "Invalid Upgrade header");
29247
29469
  return;
29248
29470
  }
@@ -29298,12 +29520,17 @@ var require_websocket5 = __commonJS({
29298
29520
  websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
29299
29521
  }
29300
29522
  websocket.setSocket(socket, head, {
29523
+ allowSynchronousEvents: opts.allowSynchronousEvents,
29301
29524
  generateMask: opts.generateMask,
29302
29525
  maxPayload: opts.maxPayload,
29303
29526
  skipUTF8Validation: opts.skipUTF8Validation
29304
29527
  });
29305
29528
  });
29306
- req.end();
29529
+ if (opts.finishRequest) {
29530
+ opts.finishRequest(req, websocket);
29531
+ } else {
29532
+ req.end();
29533
+ }
29307
29534
  }
29308
29535
  function emitErrorAndClose(websocket, err) {
29309
29536
  websocket._readyState = WebSocket3.CLOSING;
@@ -29348,7 +29575,7 @@ var require_websocket5 = __commonJS({
29348
29575
  const err = new Error(
29349
29576
  `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`
29350
29577
  );
29351
- cb(err);
29578
+ process.nextTick(cb, err);
29352
29579
  }
29353
29580
  }
29354
29581
  function receiverOnConclude(code, reason) {
@@ -29383,7 +29610,7 @@ var require_websocket5 = __commonJS({
29383
29610
  }
29384
29611
  function receiverOnPing(data) {
29385
29612
  const websocket = this[kWebSocket];
29386
- websocket.pong(data, !websocket._isServer, NOOP);
29613
+ if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);
29387
29614
  websocket.emit("ping", data);
29388
29615
  }
29389
29616
  function receiverOnPong(data) {
@@ -29488,9 +29715,7 @@ var require_websocket_server3 = __commonJS({
29488
29715
  init_esm_shims();
29489
29716
  var EventEmitter = __require("events");
29490
29717
  var http = __require("http");
29491
- var https = __require("https");
29492
- var net = __require("net");
29493
- var tls = __require("tls");
29718
+ var { Duplex } = __require("stream");
29494
29719
  var { createHash } = __require("crypto");
29495
29720
  var extension = require_extension3();
29496
29721
  var PerMessageDeflate = require_permessage_deflate3();
@@ -29506,6 +29731,11 @@ var require_websocket_server3 = __commonJS({
29506
29731
  * Create a `WebSocketServer` instance.
29507
29732
  *
29508
29733
  * @param {Object} options Configuration options
29734
+ * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
29735
+ * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
29736
+ * multiple times in the same tick
29737
+ * @param {Boolean} [options.autoPong=true] Specifies whether or not to
29738
+ * automatically send a pong in response to a ping
29509
29739
  * @param {Number} [options.backlog=511] The maximum length of the queue of
29510
29740
  * pending connections
29511
29741
  * @param {Boolean} [options.clientTracking=true] Specifies whether or not to
@@ -29531,6 +29761,8 @@ var require_websocket_server3 = __commonJS({
29531
29761
  constructor(options, callback) {
29532
29762
  super();
29533
29763
  options = {
29764
+ allowSynchronousEvents: true,
29765
+ autoPong: true,
29534
29766
  maxPayload: 100 * 1024 * 1024,
29535
29767
  skipUTF8Validation: false,
29536
29768
  perMessageDeflate: false,
@@ -29666,8 +29898,7 @@ var require_websocket_server3 = __commonJS({
29666
29898
  * Handle a HTTP Upgrade request.
29667
29899
  *
29668
29900
  * @param {http.IncomingMessage} req The request object
29669
- * @param {(net.Socket|tls.Socket)} socket The network socket between the
29670
- * server and client
29901
+ * @param {Duplex} socket The network socket between the server and client
29671
29902
  * @param {Buffer} head The first packet of the upgraded stream
29672
29903
  * @param {Function} cb Callback
29673
29904
  * @public
@@ -29675,18 +29906,19 @@ var require_websocket_server3 = __commonJS({
29675
29906
  handleUpgrade(req, socket, head, cb) {
29676
29907
  socket.on("error", socketOnError);
29677
29908
  const key = req.headers["sec-websocket-key"];
29909
+ const upgrade = req.headers.upgrade;
29678
29910
  const version = +req.headers["sec-websocket-version"];
29679
29911
  if (req.method !== "GET") {
29680
29912
  const message = "Invalid HTTP method";
29681
29913
  abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);
29682
29914
  return;
29683
29915
  }
29684
- if (req.headers.upgrade.toLowerCase() !== "websocket") {
29916
+ if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") {
29685
29917
  const message = "Invalid Upgrade header";
29686
29918
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
29687
29919
  return;
29688
29920
  }
29689
- if (!key || !keyRegex.test(key)) {
29921
+ if (key === void 0 || !keyRegex.test(key)) {
29690
29922
  const message = "Missing or invalid Sec-WebSocket-Key header";
29691
29923
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
29692
29924
  return;
@@ -29765,8 +29997,7 @@ var require_websocket_server3 = __commonJS({
29765
29997
  * @param {String} key The value of the `Sec-WebSocket-Key` header
29766
29998
  * @param {Set} protocols The subprotocols
29767
29999
  * @param {http.IncomingMessage} req The request object
29768
- * @param {(net.Socket|tls.Socket)} socket The network socket between the
29769
- * server and client
30000
+ * @param {Duplex} socket The network socket between the server and client
29770
30001
  * @param {Buffer} head The first packet of the upgraded stream
29771
30002
  * @param {Function} cb Callback
29772
30003
  * @throws {Error} If called more than once with the same socket
@@ -29787,7 +30018,7 @@ var require_websocket_server3 = __commonJS({
29787
30018
  "Connection: Upgrade",
29788
30019
  `Sec-WebSocket-Accept: ${digest}`
29789
30020
  ];
29790
- const ws = new this.options.WebSocket(null);
30021
+ const ws = new this.options.WebSocket(null, void 0, this.options);
29791
30022
  if (protocols.size) {
29792
30023
  const protocol4 = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value;
29793
30024
  if (protocol4) {
@@ -29807,6 +30038,7 @@ var require_websocket_server3 = __commonJS({
29807
30038
  socket.write(headers.concat("\r\n").join("\r\n"));
29808
30039
  socket.removeListener("error", socketOnError);
29809
30040
  ws.setSocket(socket, head, {
30041
+ allowSynchronousEvents: this.options.allowSynchronousEvents,
29810
30042
  maxPayload: this.options.maxPayload,
29811
30043
  skipUTF8Validation: this.options.skipUTF8Validation
29812
30044
  });
@@ -35749,7 +35981,7 @@ function createPacketDecoderStream(maxPayload, binaryType) {
35749
35981
  var protocol = 4;
35750
35982
 
35751
35983
  // ../../node_modules/engine.io-client/build/esm-debug/transport.js
35752
- init_component_emitter();
35984
+ init_esm();
35753
35985
 
35754
35986
  // ../../node_modules/engine.io-client/build/esm-debug/util.js
35755
35987
  init_esm_shims();
@@ -36069,7 +36301,7 @@ var CookieJar = class {
36069
36301
  };
36070
36302
 
36071
36303
  // ../../node_modules/engine.io-client/build/esm-debug/transports/polling.js
36072
- init_component_emitter();
36304
+ init_esm();
36073
36305
  var debug2 = (0, import_debug2.default)("engine.io-client:polling");
36074
36306
  function empty() {
36075
36307
  }
@@ -36680,6 +36912,9 @@ var parts = [
36680
36912
  "anchor"
36681
36913
  ];
36682
36914
  function parse2(str) {
36915
+ if (str.length > 2e3) {
36916
+ throw "URI too long";
36917
+ }
36683
36918
  const src = str, b = str.indexOf("["), e = str.indexOf("]");
36684
36919
  if (b != -1 && e != -1) {
36685
36920
  str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ";") + str.substring(e, str.length);
@@ -36720,7 +36955,7 @@ function queryKey(uri, query) {
36720
36955
 
36721
36956
  // ../../node_modules/engine.io-client/build/esm-debug/socket.js
36722
36957
  var import_debug5 = __toESM(require_src4(), 1);
36723
- init_component_emitter();
36958
+ init_esm();
36724
36959
  var debug5 = (0, import_debug5.default)("engine.io-client:socket");
36725
36960
  var Socket2 = class _Socket extends Emitter {
36726
36961
  /**
@@ -37311,7 +37546,7 @@ __export(esm_debug_exports, {
37311
37546
  protocol: () => protocol3
37312
37547
  });
37313
37548
  init_esm_shims();
37314
- init_component_emitter();
37549
+ init_esm();
37315
37550
 
37316
37551
  // ../../node_modules/socket.io-parser/build/esm-debug/binary.js
37317
37552
  init_esm_shims();
@@ -37687,7 +37922,7 @@ function on(obj, ev, fn) {
37687
37922
  }
37688
37923
 
37689
37924
  // ../../node_modules/socket.io-client/build/esm-debug/socket.js
37690
- init_component_emitter();
37925
+ init_esm();
37691
37926
  var import_debug8 = __toESM(require_src5(), 1);
37692
37927
  var debug8 = (0, import_debug8.default)("socket.io-client:socket");
37693
37928
  var RESERVED_EVENTS2 = Object.freeze({
@@ -38513,7 +38748,7 @@ Backoff.prototype.setJitter = function(jitter) {
38513
38748
  };
38514
38749
 
38515
38750
  // ../../node_modules/socket.io-client/build/esm-debug/manager.js
38516
- init_component_emitter();
38751
+ init_esm();
38517
38752
  var import_debug9 = __toESM(require_src5(), 1);
38518
38753
  var debug9 = (0, import_debug9.default)("socket.io-client:manager");
38519
38754
  var Manager = class extends Emitter {
@@ -60838,13 +61073,13 @@ var testOverridesSchema = z.object({
60838
61073
  devEditorBaseUrl: z.string().url().optional(),
60839
61074
  inkDebug: z.boolean().optional(),
60840
61075
  minRetryTimeout: z.number().optional(),
61076
+ pollInterval: z.number().optional(),
60841
61077
  debounceQueueWait: z.number().optional(),
60842
61078
  sentryDsn: z.string().optional(),
60843
61079
  userBrowserTestEndpoint: z.string().url().optional(),
60844
61080
  dataDir: z.string().optional(),
60845
61081
  wixCliDependencyVersion: z.string().optional(),
60846
61082
  wixCliAppDependencyVersion: z.string().optional(),
60847
- appInstallationPollInterval: z.number().optional(),
60848
61083
  disableTTY: z.boolean().optional(),
60849
61084
  waitForLoginInterval: z.number().optional(),
60850
61085
  registryUrl: z.string().optional(),
@@ -61233,4 +61468,4 @@ fill-range/index.js:
61233
61468
  * Licensed under the MIT License.
61234
61469
  *)
61235
61470
  */
61236
- //# sourceMappingURL=chunk-5ZVEBKUO.js.map
61471
+ //# sourceMappingURL=chunk-6YVNZGPU.js.map