@wix/cli 1.1.59 → 1.1.60
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.
- package/build/{DevCommand-PLIPWJKO.js → DevCommand-AEGLMQVP.js} +12 -12
- package/build/{DevCommand-D6QHU2YA.js → DevCommand-GO3Z73V7.js} +13 -13
- package/build/{LoginCommand-NRZ4VWWM.js → LoginCommand-SGLKXJF6.js} +10 -10
- package/build/{LogoutCommand-INOYIE67.js → LogoutCommand-YL6M6BT7.js} +7 -7
- package/build/{WhoamiCommand-4V4GTNFW.js → WhoamiCommand-4EJZYY4W.js} +4 -4
- package/build/{chunk-U32RURCT.js → chunk-24KEFD7K.js} +5 -5
- package/build/{chunk-N5IXBRXL.js → chunk-2DE7QM5C.js} +2 -2
- package/build/{chunk-6F2RSXHN.js → chunk-2NWGTFAC.js} +3 -3
- package/build/{chunk-6F2RSXHN.js.map → chunk-2NWGTFAC.js.map} +1 -1
- package/build/{chunk-5ZVEBKUO.js → chunk-B23S4M74.js} +595 -360
- package/build/chunk-B23S4M74.js.map +1 -0
- package/build/{chunk-IFQQVSBK.js → chunk-BGKFJNUK.js} +2 -2
- package/build/{chunk-PNUERA4W.js → chunk-BVAC4BZH.js} +3 -3
- package/build/{chunk-AXVTET6V.js → chunk-CRXPC3TE.js} +2 -2
- package/build/{chunk-GLXEVSFE.js → chunk-DWEFYET4.js} +6 -6
- package/build/{chunk-JG7FKL4X.js → chunk-EDNJGHVN.js} +9 -4
- package/build/chunk-EDNJGHVN.js.map +1 -0
- package/build/{chunk-QGSHUCNV.js → chunk-GFSMOEGG.js} +7 -7
- package/build/{chunk-T4OH34QF.js → chunk-GG7YZNYL.js} +3 -1
- package/build/{chunk-T4OH34QF.js.map → chunk-GG7YZNYL.js.map} +1 -1
- package/build/{chunk-4HVBZRJL.js → chunk-GIS574I5.js} +2 -2
- package/build/{chunk-X7XOMWAQ.js → chunk-J2FXQRPG.js} +3 -3
- package/build/{chunk-BV3B44QL.js → chunk-LCYX5MZA.js} +2 -2
- package/build/{chunk-CS26555F.js → chunk-LPA74SM5.js} +5 -5
- package/build/{chunk-4OBSJ6OG.js → chunk-OISYBAR4.js} +4 -4
- package/build/{chunk-YUFAOC35.js → chunk-P5FUKDOS.js} +6 -6
- package/build/{chunk-F3E4MMLD.js → chunk-PGR3OZNK.js} +5 -5
- package/build/{chunk-VEVISRHN.js → chunk-QZJC3FP3.js} +5 -5
- package/build/{chunk-Z7P6TDPB.js → chunk-RNMVLLSA.js} +4 -4
- package/build/{chunk-CMXHWKEP.js → chunk-VNZYI6OK.js} +3 -3
- package/build/{chunk-V4DAKO7L.js → chunk-WVS26NCB.js} +6 -3
- package/build/chunk-WVS26NCB.js.map +1 -0
- package/build/{chunk-3RBFRZE2.js → chunk-XANTHYQG.js} +5 -5
- package/build/{chunk-3RBFRZE2.js.map → chunk-XANTHYQG.js.map} +1 -1
- package/build/{chunk-HYAIYTKF.js → chunk-XWFG3TRU.js} +16 -4
- package/build/{chunk-HYAIYTKF.js.map → chunk-XWFG3TRU.js.map} +1 -1
- package/build/{chunk-OOGMXJJV.js → chunk-YQ2ZYOKK.js} +4 -4
- package/build/{dev-TEWYYBKR.js → dev-72CJF6Z6.js} +20 -20
- package/build/index.js +24 -24
- package/build/{install-MTS6LPPU.js → install-7NZK44CY.js} +14 -14
- package/build/{preview-TDMPHSVV.js → preview-NIPXK2PL.js} +16 -16
- package/build/{publish-5VLMBE6J.js → publish-Z3WVKI47.js} +16 -16
- package/build/{render-command-FELGYBEY.js → render-command-GJLP3KAJ.js} +10 -10
- package/build/{render-command-7OMEGPW4.js → render-command-I6OSOLTK.js} +9 -9
- package/build/{render-command-UQPFUBIL.js → render-command-OTTR4HS4.js} +10 -10
- package/build/{run-command-3YTQS4ZX.js → run-command-BR7STFFP.js} +6 -6
- package/build/{src-4W2WPIAM.js → src-7HIQOGPY.js} +7 -7
- package/build/{src-Y334LPF5.js → src-IRKCACSZ.js} +6 -6
- package/build/{src-IBLQL7AB.js → src-QCND6FA3.js} +4 -4
- package/build/{src-LA3GYOE6.js → src-QJJ7EIYT.js} +6 -6
- package/build/{src-7NEL65ZK.js → src-U45WATPX.js} +17 -17
- package/build/{src-UWOBS6D7.js → src-U7SGKJCW.js} +2 -2
- package/build/{src-BMV74WCO.js → src-XSN6C5L2.js} +3 -3
- package/build/{sync-types-W3PVOJTK.js → sync-types-JLBBFIOB.js} +12 -12
- package/build/{uninstall-M4DEVSQC.js → uninstall-KQDD5ADQ.js} +14 -14
- package/package.json +3 -3
- package/build/chunk-5ZVEBKUO.js.map +0 -1
- package/build/chunk-JG7FKL4X.js.map +0 -1
- package/build/chunk-V4DAKO7L.js.map +0 -1
- /package/build/{DevCommand-PLIPWJKO.js.map → DevCommand-AEGLMQVP.js.map} +0 -0
- /package/build/{DevCommand-D6QHU2YA.js.map → DevCommand-GO3Z73V7.js.map} +0 -0
- /package/build/{LoginCommand-NRZ4VWWM.js.map → LoginCommand-SGLKXJF6.js.map} +0 -0
- /package/build/{LogoutCommand-INOYIE67.js.map → LogoutCommand-YL6M6BT7.js.map} +0 -0
- /package/build/{WhoamiCommand-4V4GTNFW.js.map → WhoamiCommand-4EJZYY4W.js.map} +0 -0
- /package/build/{chunk-U32RURCT.js.map → chunk-24KEFD7K.js.map} +0 -0
- /package/build/{chunk-N5IXBRXL.js.map → chunk-2DE7QM5C.js.map} +0 -0
- /package/build/{chunk-IFQQVSBK.js.map → chunk-BGKFJNUK.js.map} +0 -0
- /package/build/{chunk-PNUERA4W.js.map → chunk-BVAC4BZH.js.map} +0 -0
- /package/build/{chunk-AXVTET6V.js.map → chunk-CRXPC3TE.js.map} +0 -0
- /package/build/{chunk-GLXEVSFE.js.map → chunk-DWEFYET4.js.map} +0 -0
- /package/build/{chunk-QGSHUCNV.js.map → chunk-GFSMOEGG.js.map} +0 -0
- /package/build/{chunk-4HVBZRJL.js.map → chunk-GIS574I5.js.map} +0 -0
- /package/build/{chunk-X7XOMWAQ.js.map → chunk-J2FXQRPG.js.map} +0 -0
- /package/build/{chunk-BV3B44QL.js.map → chunk-LCYX5MZA.js.map} +0 -0
- /package/build/{chunk-CS26555F.js.map → chunk-LPA74SM5.js.map} +0 -0
- /package/build/{chunk-4OBSJ6OG.js.map → chunk-OISYBAR4.js.map} +0 -0
- /package/build/{chunk-YUFAOC35.js.map → chunk-P5FUKDOS.js.map} +0 -0
- /package/build/{chunk-F3E4MMLD.js.map → chunk-PGR3OZNK.js.map} +0 -0
- /package/build/{chunk-VEVISRHN.js.map → chunk-QZJC3FP3.js.map} +0 -0
- /package/build/{chunk-Z7P6TDPB.js.map → chunk-RNMVLLSA.js.map} +0 -0
- /package/build/{chunk-CMXHWKEP.js.map → chunk-VNZYI6OK.js.map} +0 -0
- /package/build/{chunk-OOGMXJJV.js.map → chunk-YQ2ZYOKK.js.map} +0 -0
- /package/build/{dev-TEWYYBKR.js.map → dev-72CJF6Z6.js.map} +0 -0
- /package/build/{install-MTS6LPPU.js.map → install-7NZK44CY.js.map} +0 -0
- /package/build/{preview-TDMPHSVV.js.map → preview-NIPXK2PL.js.map} +0 -0
- /package/build/{publish-5VLMBE6J.js.map → publish-Z3WVKI47.js.map} +0 -0
- /package/build/{render-command-FELGYBEY.js.map → render-command-GJLP3KAJ.js.map} +0 -0
- /package/build/{render-command-7OMEGPW4.js.map → render-command-I6OSOLTK.js.map} +0 -0
- /package/build/{render-command-UQPFUBIL.js.map → render-command-OTTR4HS4.js.map} +0 -0
- /package/build/{run-command-3YTQS4ZX.js.map → run-command-BR7STFFP.js.map} +0 -0
- /package/build/{src-4W2WPIAM.js.map → src-7HIQOGPY.js.map} +0 -0
- /package/build/{src-Y334LPF5.js.map → src-IRKCACSZ.js.map} +0 -0
- /package/build/{src-BMV74WCO.js.map → src-QCND6FA3.js.map} +0 -0
- /package/build/{src-LA3GYOE6.js.map → src-QJJ7EIYT.js.map} +0 -0
- /package/build/{src-7NEL65ZK.js.map → src-U45WATPX.js.map} +0 -0
- /package/build/{src-IBLQL7AB.js.map → src-U7SGKJCW.js.map} +0 -0
- /package/build/{src-UWOBS6D7.js.map → src-XSN6C5L2.js.map} +0 -0
- /package/build/{sync-types-W3PVOJTK.js.map → sync-types-JLBBFIOB.js.map} +0 -0
- /package/build/{uninstall-M4DEVSQC.js.map → uninstall-KQDD5ADQ.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-
|
|
8
|
+
} from "./chunk-OISYBAR4.js";
|
|
9
9
|
import {
|
|
10
10
|
require_ms
|
|
11
11
|
} from "./chunk-WN3D6AOY.js";
|
|
@@ -10221,15 +10221,17 @@ var require_transport = __commonJS({
|
|
|
10221
10221
|
/**
|
|
10222
10222
|
* Transport constructor.
|
|
10223
10223
|
*
|
|
10224
|
-
* @param {http.IncomingMessage}
|
|
10224
|
+
* @param {http.IncomingMessage} req
|
|
10225
10225
|
* @api public
|
|
10226
10226
|
*/
|
|
10227
10227
|
constructor(req) {
|
|
10228
10228
|
super();
|
|
10229
|
-
this.
|
|
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}
|
|
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.
|
|
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
|
-
|
|
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(
|
|
11110
|
-
|
|
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(
|
|
11139
|
-
|
|
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)
|
|
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.
|
|
11531
|
+
if (buf.length === buf.buffer.byteLength) {
|
|
11529
11532
|
return buf.buffer;
|
|
11530
11533
|
}
|
|
11531
|
-
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.
|
|
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 =
|
|
11541
|
+
buf = new FastBuffer(data);
|
|
11539
11542
|
} else if (ArrayBuffer.isView(data)) {
|
|
11540
|
-
buf =
|
|
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)
|
|
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 (
|
|
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 <
|
|
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.
|
|
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] =
|
|
12276
|
-
|
|
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] =
|
|
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
|
-
|
|
12329
|
+
this.getInfo(cb);
|
|
12305
12330
|
break;
|
|
12306
12331
|
case GET_PAYLOAD_LENGTH_16:
|
|
12307
|
-
|
|
12332
|
+
this.getPayloadLength16(cb);
|
|
12308
12333
|
break;
|
|
12309
12334
|
case GET_PAYLOAD_LENGTH_64:
|
|
12310
|
-
|
|
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
|
-
|
|
12341
|
+
this.getData(cb);
|
|
12317
12342
|
break;
|
|
12318
|
-
|
|
12343
|
+
case INFLATING:
|
|
12344
|
+
case DEFER_EVENT:
|
|
12319
12345
|
this._loop = false;
|
|
12320
12346
|
return;
|
|
12321
12347
|
}
|
|
12322
12348
|
} while (this._loop);
|
|
12323
|
-
cb(
|
|
12349
|
+
if (!this._errored) cb();
|
|
12324
12350
|
}
|
|
12325
12351
|
/**
|
|
12326
12352
|
* Reads the first two bytes of a frame.
|
|
12327
12353
|
*
|
|
12328
|
-
* @
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
12498
|
+
else this.haveLength(cb);
|
|
12462
12499
|
}
|
|
12463
12500
|
/**
|
|
12464
12501
|
* Gets extended payload length (7+16).
|
|
12465
12502
|
*
|
|
12466
|
-
* @
|
|
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
|
-
|
|
12512
|
+
this.haveLength(cb);
|
|
12476
12513
|
}
|
|
12477
12514
|
/**
|
|
12478
12515
|
* Gets extended payload length (7+64).
|
|
12479
12516
|
*
|
|
12480
|
-
* @
|
|
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
|
-
|
|
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
|
-
|
|
12539
|
+
this.haveLength(cb);
|
|
12502
12540
|
}
|
|
12503
12541
|
/**
|
|
12504
12542
|
* Payload length has been read.
|
|
12505
12543
|
*
|
|
12506
|
-
* @
|
|
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
|
-
|
|
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)
|
|
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
|
-
|
|
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
|
-
|
|
12585
|
-
|
|
12586
|
-
|
|
12587
|
-
|
|
12588
|
-
|
|
12589
|
-
|
|
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
|
-
|
|
12597
|
-
if (
|
|
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
|
-
* @
|
|
12644
|
+
* @param {Function} cb Callback
|
|
12605
12645
|
* @private
|
|
12606
12646
|
*/
|
|
12607
|
-
dataMessage() {
|
|
12608
|
-
if (this._fin) {
|
|
12609
|
-
|
|
12610
|
-
|
|
12611
|
-
|
|
12612
|
-
|
|
12613
|
-
|
|
12614
|
-
|
|
12615
|
-
|
|
12616
|
-
|
|
12617
|
-
|
|
12618
|
-
|
|
12619
|
-
|
|
12620
|
-
|
|
12621
|
-
|
|
12622
|
-
|
|
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
|
-
|
|
12627
|
-
|
|
12628
|
-
this.
|
|
12629
|
-
|
|
12630
|
-
|
|
12631
|
-
|
|
12632
|
-
|
|
12633
|
-
|
|
12634
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
12688
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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, !
|
|
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
|
|
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 {
|
|
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 (
|
|
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 (
|
|
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 {
|
|
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.
|
|
16966
|
-
var
|
|
16967
|
-
__export(
|
|
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
|
|
16980
|
-
"../../node_modules/@socket.io/component-emitter/index.
|
|
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 = (
|
|
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)
|
|
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.
|
|
26740
|
+
if (buf.length === buf.buffer.byteLength) {
|
|
26626
26741
|
return buf.buffer;
|
|
26627
26742
|
}
|
|
26628
|
-
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.
|
|
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 =
|
|
26750
|
+
buf = new FastBuffer(data);
|
|
26636
26751
|
} else if (ArrayBuffer.isView(data)) {
|
|
26637
|
-
buf =
|
|
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)
|
|
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 (
|
|
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 <
|
|
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.
|
|
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] =
|
|
27373
|
-
|
|
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] =
|
|
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
|
-
|
|
27538
|
+
this.getInfo(cb);
|
|
27402
27539
|
break;
|
|
27403
27540
|
case GET_PAYLOAD_LENGTH_16:
|
|
27404
|
-
|
|
27541
|
+
this.getPayloadLength16(cb);
|
|
27405
27542
|
break;
|
|
27406
27543
|
case GET_PAYLOAD_LENGTH_64:
|
|
27407
|
-
|
|
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
|
-
|
|
27550
|
+
this.getData(cb);
|
|
27414
27551
|
break;
|
|
27415
|
-
|
|
27552
|
+
case INFLATING:
|
|
27553
|
+
case DEFER_EVENT:
|
|
27416
27554
|
this._loop = false;
|
|
27417
27555
|
return;
|
|
27418
27556
|
}
|
|
27419
27557
|
} while (this._loop);
|
|
27420
|
-
cb(
|
|
27558
|
+
if (!this._errored) cb();
|
|
27421
27559
|
}
|
|
27422
27560
|
/**
|
|
27423
27561
|
* Reads the first two bytes of a frame.
|
|
27424
27562
|
*
|
|
27425
|
-
* @
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
27707
|
+
else this.haveLength(cb);
|
|
27559
27708
|
}
|
|
27560
27709
|
/**
|
|
27561
27710
|
* Gets extended payload length (7+16).
|
|
27562
27711
|
*
|
|
27563
|
-
* @
|
|
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
|
-
|
|
27721
|
+
this.haveLength(cb);
|
|
27573
27722
|
}
|
|
27574
27723
|
/**
|
|
27575
27724
|
* Gets extended payload length (7+64).
|
|
27576
27725
|
*
|
|
27577
|
-
* @
|
|
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
|
-
|
|
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
|
-
|
|
27748
|
+
this.haveLength(cb);
|
|
27599
27749
|
}
|
|
27600
27750
|
/**
|
|
27601
27751
|
* Payload length has been read.
|
|
27602
27752
|
*
|
|
27603
|
-
* @
|
|
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
|
-
|
|
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)
|
|
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
|
-
|
|
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
|
-
|
|
27682
|
-
|
|
27683
|
-
|
|
27684
|
-
|
|
27685
|
-
|
|
27686
|
-
|
|
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
|
-
|
|
27694
|
-
if (
|
|
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
|
-
* @
|
|
27853
|
+
* @param {Function} cb Callback
|
|
27702
27854
|
* @private
|
|
27703
27855
|
*/
|
|
27704
|
-
dataMessage() {
|
|
27705
|
-
if (this._fin) {
|
|
27706
|
-
|
|
27707
|
-
|
|
27708
|
-
|
|
27709
|
-
|
|
27710
|
-
|
|
27711
|
-
|
|
27712
|
-
|
|
27713
|
-
|
|
27714
|
-
|
|
27715
|
-
|
|
27716
|
-
|
|
27717
|
-
|
|
27718
|
-
|
|
27719
|
-
|
|
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
|
-
|
|
27724
|
-
|
|
27725
|
-
this.
|
|
27726
|
-
|
|
27727
|
-
|
|
27728
|
-
|
|
27729
|
-
|
|
27730
|
-
|
|
27731
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
27785
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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, !
|
|
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
|
|
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 {
|
|
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 (
|
|
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 (
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
@@ -61233,4 +61468,4 @@ fill-range/index.js:
|
|
|
61233
61468
|
* Licensed under the MIT License.
|
|
61234
61469
|
*)
|
|
61235
61470
|
*/
|
|
61236
|
-
//# sourceMappingURL=chunk-
|
|
61471
|
+
//# sourceMappingURL=chunk-B23S4M74.js.map
|