@blade-hq/agent-client 2612.0.0-beta.2 → 2612.0.0-beta.21
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/README.md +203 -19
- package/dist/blade-client.d.ts +13 -1
- package/dist/{chunk-PWJJJATA.js → chunk-J3XXTHHK.js} +1723 -701
- package/dist/chunk-J3XXTHHK.js.map +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.js +9 -1
- package/dist/internal.d.ts +9 -3
- package/dist/internal.js +13 -1
- package/dist/internal.js.map +1 -1
- package/dist/resources/auth.d.ts +3 -1
- package/dist/resources/chat-groups.d.ts +92 -0
- package/dist/resources/headless.d.ts +5 -0
- package/dist/resources/models.d.ts +6 -1
- package/dist/resources/plugins.d.ts +1 -0
- package/dist/resources/sessions.d.ts +96 -11
- package/dist/schemas/context-attachments.d.ts +16 -0
- package/dist/schemas/event.d.ts +2 -0
- package/dist/schemas/message-utils.d.ts +3 -9
- package/dist/schemas/message.d.ts +18 -1
- package/dist/schemas/plugin-refs.d.ts +15 -0
- package/dist/schemas/projection.d.ts +31 -0
- package/dist/schemas/session.d.ts +2 -42
- package/dist/schemas/topic-assets.d.ts +7 -0
- package/dist/server-clock.d.ts +2 -0
- package/dist/session/agent-session.d.ts +51 -7
- package/dist/session/background.d.ts +14 -0
- package/dist/session/events.d.ts +0 -1
- package/dist/session/hub.d.ts +3 -0
- package/dist/session/log-cursor.d.ts +14 -0
- package/dist/session/state.d.ts +2 -1
- package/dist/session/workflow.d.ts +10 -3
- package/dist/shared/projection/builder.d.ts +5 -0
- package/dist/shared/projection/helpers.d.ts +2 -0
- package/dist/shared/projection/index.d.ts +1 -0
- package/dist/shared/projection/workflow.d.ts +24 -0
- package/dist/tool-provider.d.ts +51 -0
- package/dist/types/socket-events.d.ts +179 -6
- package/node_modules/engine.io-client/build/cjs/globals.node.d.ts +2 -3
- package/node_modules/engine.io-client/build/cjs/index.d.ts +3 -3
- package/node_modules/engine.io-client/build/cjs/index.js +1 -4
- package/node_modules/engine.io-client/build/cjs/socket.d.ts +39 -82
- package/node_modules/engine.io-client/build/cjs/socket.js +151 -218
- package/node_modules/engine.io-client/build/cjs/transport.d.ts +1 -1
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.d.ts +4 -4
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js +2 -2
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.js +17 -7
- package/node_modules/engine.io-client/build/cjs/transports/websocket.node.js +17 -7
- package/node_modules/engine.io-client/build/esm/globals.node.d.ts +2 -3
- package/node_modules/engine.io-client/build/esm/index.d.ts +3 -3
- package/node_modules/engine.io-client/build/esm/index.js +1 -2
- package/node_modules/engine.io-client/build/esm/socket.d.ts +39 -82
- package/node_modules/engine.io-client/build/esm/socket.js +141 -206
- package/node_modules/engine.io-client/build/esm/transport.d.ts +1 -1
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.d.ts +4 -4
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +2 -2
- package/node_modules/engine.io-client/build/esm-debug/globals.node.d.ts +2 -3
- package/node_modules/engine.io-client/build/esm-debug/index.d.ts +3 -3
- package/node_modules/engine.io-client/build/esm-debug/index.js +1 -2
- package/node_modules/engine.io-client/build/esm-debug/socket.d.ts +39 -82
- package/node_modules/engine.io-client/build/esm-debug/socket.js +150 -215
- package/node_modules/engine.io-client/build/esm-debug/transport.d.ts +1 -1
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.d.ts +4 -4
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.js +2 -2
- package/node_modules/engine.io-client/dist/engine.io.esm.min.js +3 -3
- package/node_modules/engine.io-client/dist/engine.io.esm.min.js.map +1 -1
- package/node_modules/engine.io-client/dist/engine.io.js +164 -239
- package/node_modules/engine.io-client/dist/engine.io.js.map +1 -1
- package/node_modules/engine.io-client/dist/engine.io.min.js +3 -3
- package/node_modules/engine.io-client/dist/engine.io.min.js.map +1 -1
- package/node_modules/engine.io-client/package.json +2 -2
- package/node_modules/socket.io-parser/build/cjs/binary.js +4 -1
- package/node_modules/socket.io-parser/build/cjs/index.d.ts +14 -4
- package/node_modules/socket.io-parser/build/cjs/index.js +18 -11
- package/node_modules/socket.io-parser/build/esm/binary.js +4 -1
- package/node_modules/socket.io-parser/build/esm/index.d.ts +14 -4
- package/node_modules/socket.io-parser/build/esm/index.js +14 -10
- package/node_modules/socket.io-parser/build/esm-debug/binary.js +4 -1
- package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +14 -4
- package/node_modules/socket.io-parser/build/esm-debug/index.js +14 -10
- package/node_modules/socket.io-parser/package.json +1 -1
- package/node_modules/ws/index.js +15 -6
- package/node_modules/ws/lib/constants.js +1 -0
- package/node_modules/ws/lib/permessage-deflate.js +9 -7
- package/node_modules/ws/lib/receiver.js +37 -0
- package/node_modules/ws/lib/sender.js +6 -1
- package/node_modules/ws/lib/websocket-server.js +18 -6
- package/node_modules/ws/lib/websocket.js +50 -17
- package/node_modules/ws/package.json +8 -3
- package/node_modules/ws/wrapper.mjs +14 -1
- package/package.json +4 -4
- package/public-api.md +335 -28
- package/dist/chunk-PWJJJATA.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Engine.IO v6.6.
|
|
3
|
-
* (c) 2014-
|
|
2
|
+
* Engine.IO v6.6.7
|
|
3
|
+
* (c) 2014-2026 Guillermo Rauch
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
@@ -1769,8 +1769,8 @@
|
|
|
1769
1769
|
/**
|
|
1770
1770
|
* Sends data.
|
|
1771
1771
|
*
|
|
1772
|
-
* @param {String} data to send.
|
|
1773
|
-
* @param {Function} called upon flush.
|
|
1772
|
+
* @param {String} data - data to send.
|
|
1773
|
+
* @param {Function} fn - called upon flush.
|
|
1774
1774
|
* @private
|
|
1775
1775
|
*/
|
|
1776
1776
|
_inheritsLoose(BaseXHR, _Polling);
|
|
@@ -2347,40 +2347,31 @@
|
|
|
2347
2347
|
}
|
|
2348
2348
|
/**
|
|
2349
2349
|
* This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established
|
|
2350
|
-
* with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.
|
|
2350
|
+
* with one of the available low-level transports, like HTTP long-polling, WebSocket, or WebTransport.
|
|
2351
2351
|
*
|
|
2352
|
-
* This class comes
|
|
2353
|
-
*
|
|
2354
|
-
*
|
|
2355
|
-
* In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.
|
|
2352
|
+
* This class comes with an upgrade mechanism, which means that once the connection is established with the first
|
|
2353
|
+
* low-level transport, it will try to upgrade to a better transport.
|
|
2356
2354
|
*
|
|
2357
2355
|
* @example
|
|
2358
|
-
* import {
|
|
2356
|
+
* import { Socket } from "engine.io-client";
|
|
2359
2357
|
*
|
|
2360
|
-
* const socket = new
|
|
2361
|
-
* transports: [WebSocket]
|
|
2362
|
-
* });
|
|
2358
|
+
* const socket = new Socket();
|
|
2363
2359
|
*
|
|
2364
2360
|
* socket.on("open", () => {
|
|
2365
2361
|
* socket.send("hello");
|
|
2366
2362
|
* });
|
|
2367
2363
|
*
|
|
2368
|
-
* @see SocketWithUpgrade
|
|
2369
|
-
* @see Socket
|
|
2370
2364
|
*/
|
|
2371
|
-
var
|
|
2372
|
-
|
|
2373
|
-
* Socket constructor.
|
|
2374
|
-
*
|
|
2375
|
-
* @param {String|Object} uri - uri or options
|
|
2376
|
-
* @param {Object} opts - options
|
|
2377
|
-
*/
|
|
2378
|
-
function SocketWithoutUpgrade(uri, opts) {
|
|
2365
|
+
var Socket = /*#__PURE__*/function (_Emitter) {
|
|
2366
|
+
function Socket(uri) {
|
|
2379
2367
|
var _this;
|
|
2368
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2369
|
+
var _a, _b;
|
|
2380
2370
|
_this = _Emitter.call(this) || this;
|
|
2381
2371
|
_this.binaryType = defaultBinaryType;
|
|
2382
2372
|
_this.writeBuffer = [];
|
|
2383
2373
|
_this._prevBufferLen = 0;
|
|
2374
|
+
_this._upgrades = [];
|
|
2384
2375
|
_this._pingInterval = -1;
|
|
2385
2376
|
_this._pingTimeout = -1;
|
|
2386
2377
|
_this._maxPayload = -1;
|
|
@@ -2410,13 +2401,22 @@
|
|
|
2410
2401
|
}
|
|
2411
2402
|
_this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost");
|
|
2412
2403
|
_this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : _this.secure ? "443" : "80");
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
_this.
|
|
2419
|
-
|
|
2404
|
+
if (opts.transportImplementations && opts.transports) {
|
|
2405
|
+
throw new Error("specifying both 'transportImplementations' and 'transports' options is not supported");
|
|
2406
|
+
}
|
|
2407
|
+
if (opts.transportImplementations || ((_a = opts.transports) === null || _a === void 0 ? void 0 : _a.length) && typeof opts.transports[0] === "function") {
|
|
2408
|
+
// 'transports' option as an array of transport implementations is kept for backward compatibility
|
|
2409
|
+
_this.transports = [];
|
|
2410
|
+
_this._transportsByName = Object.create(null);
|
|
2411
|
+
((_b = opts.transportImplementations) !== null && _b !== void 0 ? _b : opts.transports).forEach(function (t) {
|
|
2412
|
+
var transportName = t.prototype.name;
|
|
2413
|
+
_this.transports.push(transportName);
|
|
2414
|
+
_this._transportsByName[transportName] = t;
|
|
2415
|
+
});
|
|
2416
|
+
} else {
|
|
2417
|
+
_this.transports = opts.transports ? _toConsumableArray(opts.transports) : ["polling", "websocket", "webtransport"];
|
|
2418
|
+
_this._transportsByName = transports;
|
|
2419
|
+
}
|
|
2420
2420
|
_this.opts = _extends({
|
|
2421
2421
|
path: "/engine.io",
|
|
2422
2422
|
agent: false,
|
|
@@ -2473,8 +2473,8 @@
|
|
|
2473
2473
|
* @return {Transport}
|
|
2474
2474
|
* @private
|
|
2475
2475
|
*/
|
|
2476
|
-
_inheritsLoose(
|
|
2477
|
-
var _proto =
|
|
2476
|
+
_inheritsLoose(Socket, _Emitter);
|
|
2477
|
+
var _proto = Socket.prototype;
|
|
2478
2478
|
_proto.createTransport = function createTransport(name) {
|
|
2479
2479
|
debug('creating transport "%s"', name);
|
|
2480
2480
|
var query = _extends({}, this.opts.query);
|
|
@@ -2508,7 +2508,7 @@
|
|
|
2508
2508
|
}, 0);
|
|
2509
2509
|
return;
|
|
2510
2510
|
}
|
|
2511
|
-
var transportName = this.opts.rememberUpgrade &&
|
|
2511
|
+
var transportName = this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1 ? "websocket" : this.transports[0];
|
|
2512
2512
|
this.readyState = "opening";
|
|
2513
2513
|
var transport = this.createTransport(transportName);
|
|
2514
2514
|
transport.open();
|
|
@@ -2533,6 +2533,112 @@
|
|
|
2533
2533
|
return _this3._onClose("transport close", reason);
|
|
2534
2534
|
});
|
|
2535
2535
|
}
|
|
2536
|
+
/**
|
|
2537
|
+
* Probes a transport.
|
|
2538
|
+
*
|
|
2539
|
+
* @param {String} name - transport name
|
|
2540
|
+
* @private
|
|
2541
|
+
*/;
|
|
2542
|
+
_proto._probe = function _probe(name) {
|
|
2543
|
+
var _this4 = this;
|
|
2544
|
+
debug('probing transport "%s"', name);
|
|
2545
|
+
var transport = this.createTransport(name);
|
|
2546
|
+
var failed = false;
|
|
2547
|
+
Socket.priorWebsocketSuccess = false;
|
|
2548
|
+
var onTransportOpen = function onTransportOpen() {
|
|
2549
|
+
if (failed) return;
|
|
2550
|
+
debug('probe transport "%s" opened', name);
|
|
2551
|
+
transport.send([{
|
|
2552
|
+
type: "ping",
|
|
2553
|
+
data: "probe"
|
|
2554
|
+
}]);
|
|
2555
|
+
transport.once("packet", function (msg) {
|
|
2556
|
+
if (failed) return;
|
|
2557
|
+
if ("pong" === msg.type && "probe" === msg.data) {
|
|
2558
|
+
debug('probe transport "%s" pong', name);
|
|
2559
|
+
_this4.upgrading = true;
|
|
2560
|
+
_this4.emitReserved("upgrading", transport);
|
|
2561
|
+
if (!transport) return;
|
|
2562
|
+
Socket.priorWebsocketSuccess = "websocket" === transport.name;
|
|
2563
|
+
debug('pausing current transport "%s"', _this4.transport.name);
|
|
2564
|
+
_this4.transport.pause(function () {
|
|
2565
|
+
if (failed) return;
|
|
2566
|
+
if ("closed" === _this4.readyState) return;
|
|
2567
|
+
debug("changing transport and sending upgrade packet");
|
|
2568
|
+
cleanup();
|
|
2569
|
+
_this4.setTransport(transport);
|
|
2570
|
+
transport.send([{
|
|
2571
|
+
type: "upgrade"
|
|
2572
|
+
}]);
|
|
2573
|
+
_this4.emitReserved("upgrade", transport);
|
|
2574
|
+
transport = null;
|
|
2575
|
+
_this4.upgrading = false;
|
|
2576
|
+
_this4.flush();
|
|
2577
|
+
});
|
|
2578
|
+
} else {
|
|
2579
|
+
debug('probe transport "%s" failed', name);
|
|
2580
|
+
var err = new Error("probe error");
|
|
2581
|
+
// @ts-ignore
|
|
2582
|
+
err.transport = transport.name;
|
|
2583
|
+
_this4.emitReserved("upgradeError", err);
|
|
2584
|
+
}
|
|
2585
|
+
});
|
|
2586
|
+
};
|
|
2587
|
+
function freezeTransport() {
|
|
2588
|
+
if (failed) return;
|
|
2589
|
+
// Any callback called by transport should be ignored since now
|
|
2590
|
+
failed = true;
|
|
2591
|
+
cleanup();
|
|
2592
|
+
transport.close();
|
|
2593
|
+
transport = null;
|
|
2594
|
+
}
|
|
2595
|
+
// Handle any error that happens while probing
|
|
2596
|
+
var onerror = function onerror(err) {
|
|
2597
|
+
var error = new Error("probe error: " + err);
|
|
2598
|
+
// @ts-ignore
|
|
2599
|
+
error.transport = transport.name;
|
|
2600
|
+
freezeTransport();
|
|
2601
|
+
debug('probe transport "%s" failed because of error: %s', name, err);
|
|
2602
|
+
_this4.emitReserved("upgradeError", error);
|
|
2603
|
+
};
|
|
2604
|
+
function onTransportClose() {
|
|
2605
|
+
onerror("transport closed");
|
|
2606
|
+
}
|
|
2607
|
+
// When the socket is closed while we're probing
|
|
2608
|
+
function onclose() {
|
|
2609
|
+
onerror("socket closed");
|
|
2610
|
+
}
|
|
2611
|
+
// When the socket is upgraded while we're probing
|
|
2612
|
+
function onupgrade(to) {
|
|
2613
|
+
if (transport && to.name !== transport.name) {
|
|
2614
|
+
debug('"%s" works - aborting "%s"', to.name, transport.name);
|
|
2615
|
+
freezeTransport();
|
|
2616
|
+
}
|
|
2617
|
+
}
|
|
2618
|
+
// Remove all listeners on the transport and on self
|
|
2619
|
+
var cleanup = function cleanup() {
|
|
2620
|
+
transport.removeListener("open", onTransportOpen);
|
|
2621
|
+
transport.removeListener("error", onerror);
|
|
2622
|
+
transport.removeListener("close", onTransportClose);
|
|
2623
|
+
_this4.off("close", onclose);
|
|
2624
|
+
_this4.off("upgrading", onupgrade);
|
|
2625
|
+
};
|
|
2626
|
+
transport.once("open", onTransportOpen);
|
|
2627
|
+
transport.once("error", onerror);
|
|
2628
|
+
transport.once("close", onTransportClose);
|
|
2629
|
+
this.once("close", onclose);
|
|
2630
|
+
this.once("upgrading", onupgrade);
|
|
2631
|
+
if (this._upgrades.indexOf("webtransport") !== -1 && name !== "webtransport") {
|
|
2632
|
+
// favor WebTransport
|
|
2633
|
+
this.setTimeoutFn(function () {
|
|
2634
|
+
if (!failed) {
|
|
2635
|
+
transport.open();
|
|
2636
|
+
}
|
|
2637
|
+
}, 200);
|
|
2638
|
+
} else {
|
|
2639
|
+
transport.open();
|
|
2640
|
+
}
|
|
2641
|
+
}
|
|
2536
2642
|
/**
|
|
2537
2643
|
* Called when connection is deemed open.
|
|
2538
2644
|
*
|
|
@@ -2541,9 +2647,15 @@
|
|
|
2541
2647
|
_proto.onOpen = function onOpen() {
|
|
2542
2648
|
debug("socket open");
|
|
2543
2649
|
this.readyState = "open";
|
|
2544
|
-
|
|
2650
|
+
Socket.priorWebsocketSuccess = "websocket" === this.transport.name;
|
|
2545
2651
|
this.emitReserved("open");
|
|
2546
2652
|
this.flush();
|
|
2653
|
+
if ("open" === this.readyState && this.opts.upgrade) {
|
|
2654
|
+
debug("starting upgrade probes");
|
|
2655
|
+
for (var i = 0; i < this._upgrades.length; i++) {
|
|
2656
|
+
this._probe(this._upgrades[i]);
|
|
2657
|
+
}
|
|
2658
|
+
}
|
|
2547
2659
|
}
|
|
2548
2660
|
/**
|
|
2549
2661
|
* Handles a packet.
|
|
@@ -2591,6 +2703,7 @@
|
|
|
2591
2703
|
this.emitReserved("handshake", data);
|
|
2592
2704
|
this.id = data.sid;
|
|
2593
2705
|
this.transport.query.sid = data.sid;
|
|
2706
|
+
this._upgrades = this._filterUpgrades(data.upgrades);
|
|
2594
2707
|
this._pingInterval = data.pingInterval;
|
|
2595
2708
|
this._pingTimeout = data.pingTimeout;
|
|
2596
2709
|
this._maxPayload = data.maxPayload;
|
|
@@ -2605,12 +2718,12 @@
|
|
|
2605
2718
|
* @private
|
|
2606
2719
|
*/;
|
|
2607
2720
|
_proto._resetPingTimeout = function _resetPingTimeout() {
|
|
2608
|
-
var
|
|
2721
|
+
var _this5 = this;
|
|
2609
2722
|
this.clearTimeoutFn(this._pingTimeoutTimer);
|
|
2610
2723
|
var delay = this._pingInterval + this._pingTimeout;
|
|
2611
2724
|
this._pingTimeoutTime = Date.now() + delay;
|
|
2612
2725
|
this._pingTimeoutTimer = this.setTimeoutFn(function () {
|
|
2613
|
-
|
|
2726
|
+
_this5._onClose("ping timeout");
|
|
2614
2727
|
}, delay);
|
|
2615
2728
|
if (this.opts.autoUnref) {
|
|
2616
2729
|
this._pingTimeoutTimer.unref();
|
|
@@ -2686,14 +2799,14 @@
|
|
|
2686
2799
|
*/
|
|
2687
2800
|
/* private */;
|
|
2688
2801
|
_proto._hasPingExpired = function _hasPingExpired() {
|
|
2689
|
-
var
|
|
2802
|
+
var _this6 = this;
|
|
2690
2803
|
if (!this._pingTimeoutTime) return true;
|
|
2691
2804
|
var hasExpired = Date.now() > this._pingTimeoutTime;
|
|
2692
2805
|
if (hasExpired) {
|
|
2693
2806
|
debug("throttled timer detected, scheduling connection close");
|
|
2694
2807
|
this._pingTimeoutTime = 0;
|
|
2695
2808
|
nextTick(function () {
|
|
2696
|
-
|
|
2809
|
+
_this6._onClose("ping timeout");
|
|
2697
2810
|
}, this.setTimeoutFn);
|
|
2698
2811
|
}
|
|
2699
2812
|
return hasExpired;
|
|
@@ -2725,7 +2838,7 @@
|
|
|
2725
2838
|
/**
|
|
2726
2839
|
* Sends a packet.
|
|
2727
2840
|
*
|
|
2728
|
-
* @param {String} type
|
|
2841
|
+
* @param {String} type - packet type.
|
|
2729
2842
|
* @param {String} data.
|
|
2730
2843
|
* @param {Object} options.
|
|
2731
2844
|
* @param {Function} fn - callback function.
|
|
@@ -2759,27 +2872,27 @@
|
|
|
2759
2872
|
* Closes the connection.
|
|
2760
2873
|
*/;
|
|
2761
2874
|
_proto.close = function close() {
|
|
2762
|
-
var
|
|
2875
|
+
var _this7 = this;
|
|
2763
2876
|
var close = function close() {
|
|
2764
|
-
|
|
2877
|
+
_this7._onClose("forced close");
|
|
2765
2878
|
debug("socket closing - telling transport to close");
|
|
2766
|
-
|
|
2879
|
+
_this7.transport.close();
|
|
2767
2880
|
};
|
|
2768
2881
|
var cleanupAndClose = function cleanupAndClose() {
|
|
2769
|
-
|
|
2770
|
-
|
|
2882
|
+
_this7.off("upgrade", cleanupAndClose);
|
|
2883
|
+
_this7.off("upgradeError", cleanupAndClose);
|
|
2771
2884
|
close();
|
|
2772
2885
|
};
|
|
2773
2886
|
var waitForUpgrade = function waitForUpgrade() {
|
|
2774
2887
|
// wait for upgrade to finish since we can't send packets while pausing a transport
|
|
2775
|
-
|
|
2776
|
-
|
|
2888
|
+
_this7.once("upgrade", cleanupAndClose);
|
|
2889
|
+
_this7.once("upgradeError", cleanupAndClose);
|
|
2777
2890
|
};
|
|
2778
2891
|
if ("opening" === this.readyState || "open" === this.readyState) {
|
|
2779
2892
|
this.readyState = "closing";
|
|
2780
2893
|
if (this.writeBuffer.length) {
|
|
2781
2894
|
this.once("drain", function () {
|
|
2782
|
-
if (
|
|
2895
|
+
if (_this7.upgrading) {
|
|
2783
2896
|
waitForUpgrade();
|
|
2784
2897
|
} else {
|
|
2785
2898
|
close();
|
|
@@ -2800,7 +2913,7 @@
|
|
|
2800
2913
|
*/;
|
|
2801
2914
|
_proto._onError = function _onError(err) {
|
|
2802
2915
|
debug("socket error %j", err);
|
|
2803
|
-
|
|
2916
|
+
Socket.priorWebsocketSuccess = false;
|
|
2804
2917
|
if (this.opts.tryAllTransports && this.transports.length > 1 && this.readyState === "opening") {
|
|
2805
2918
|
debug("trying next transport");
|
|
2806
2919
|
this.transports.shift();
|
|
@@ -2848,160 +2961,6 @@
|
|
|
2848
2961
|
this.writeBuffer = [];
|
|
2849
2962
|
this._prevBufferLen = 0;
|
|
2850
2963
|
}
|
|
2851
|
-
};
|
|
2852
|
-
return SocketWithoutUpgrade;
|
|
2853
|
-
}(Emitter);
|
|
2854
|
-
SocketWithoutUpgrade.protocol = protocol;
|
|
2855
|
-
/**
|
|
2856
|
-
* This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established
|
|
2857
|
-
* with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.
|
|
2858
|
-
*
|
|
2859
|
-
* This class comes with an upgrade mechanism, which means that once the connection is established with the first
|
|
2860
|
-
* low-level transport, it will try to upgrade to a better transport.
|
|
2861
|
-
*
|
|
2862
|
-
* In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.
|
|
2863
|
-
*
|
|
2864
|
-
* @example
|
|
2865
|
-
* import { SocketWithUpgrade, WebSocket } from "engine.io-client";
|
|
2866
|
-
*
|
|
2867
|
-
* const socket = new SocketWithUpgrade({
|
|
2868
|
-
* transports: [WebSocket]
|
|
2869
|
-
* });
|
|
2870
|
-
*
|
|
2871
|
-
* socket.on("open", () => {
|
|
2872
|
-
* socket.send("hello");
|
|
2873
|
-
* });
|
|
2874
|
-
*
|
|
2875
|
-
* @see SocketWithoutUpgrade
|
|
2876
|
-
* @see Socket
|
|
2877
|
-
*/
|
|
2878
|
-
var SocketWithUpgrade = /*#__PURE__*/function (_SocketWithoutUpgrade) {
|
|
2879
|
-
function SocketWithUpgrade() {
|
|
2880
|
-
var _this7;
|
|
2881
|
-
_this7 = _SocketWithoutUpgrade.apply(this, arguments) || this;
|
|
2882
|
-
_this7._upgrades = [];
|
|
2883
|
-
return _this7;
|
|
2884
|
-
}
|
|
2885
|
-
_inheritsLoose(SocketWithUpgrade, _SocketWithoutUpgrade);
|
|
2886
|
-
var _proto2 = SocketWithUpgrade.prototype;
|
|
2887
|
-
_proto2.onOpen = function onOpen() {
|
|
2888
|
-
_SocketWithoutUpgrade.prototype.onOpen.call(this);
|
|
2889
|
-
if ("open" === this.readyState && this.opts.upgrade) {
|
|
2890
|
-
debug("starting upgrade probes");
|
|
2891
|
-
for (var i = 0; i < this._upgrades.length; i++) {
|
|
2892
|
-
this._probe(this._upgrades[i]);
|
|
2893
|
-
}
|
|
2894
|
-
}
|
|
2895
|
-
}
|
|
2896
|
-
/**
|
|
2897
|
-
* Probes a transport.
|
|
2898
|
-
*
|
|
2899
|
-
* @param {String} name - transport name
|
|
2900
|
-
* @private
|
|
2901
|
-
*/;
|
|
2902
|
-
_proto2._probe = function _probe(name) {
|
|
2903
|
-
var _this8 = this;
|
|
2904
|
-
debug('probing transport "%s"', name);
|
|
2905
|
-
var transport = this.createTransport(name);
|
|
2906
|
-
var failed = false;
|
|
2907
|
-
SocketWithoutUpgrade.priorWebsocketSuccess = false;
|
|
2908
|
-
var onTransportOpen = function onTransportOpen() {
|
|
2909
|
-
if (failed) return;
|
|
2910
|
-
debug('probe transport "%s" opened', name);
|
|
2911
|
-
transport.send([{
|
|
2912
|
-
type: "ping",
|
|
2913
|
-
data: "probe"
|
|
2914
|
-
}]);
|
|
2915
|
-
transport.once("packet", function (msg) {
|
|
2916
|
-
if (failed) return;
|
|
2917
|
-
if ("pong" === msg.type && "probe" === msg.data) {
|
|
2918
|
-
debug('probe transport "%s" pong', name);
|
|
2919
|
-
_this8.upgrading = true;
|
|
2920
|
-
_this8.emitReserved("upgrading", transport);
|
|
2921
|
-
if (!transport) return;
|
|
2922
|
-
SocketWithoutUpgrade.priorWebsocketSuccess = "websocket" === transport.name;
|
|
2923
|
-
debug('pausing current transport "%s"', _this8.transport.name);
|
|
2924
|
-
_this8.transport.pause(function () {
|
|
2925
|
-
if (failed) return;
|
|
2926
|
-
if ("closed" === _this8.readyState) return;
|
|
2927
|
-
debug("changing transport and sending upgrade packet");
|
|
2928
|
-
cleanup();
|
|
2929
|
-
_this8.setTransport(transport);
|
|
2930
|
-
transport.send([{
|
|
2931
|
-
type: "upgrade"
|
|
2932
|
-
}]);
|
|
2933
|
-
_this8.emitReserved("upgrade", transport);
|
|
2934
|
-
transport = null;
|
|
2935
|
-
_this8.upgrading = false;
|
|
2936
|
-
_this8.flush();
|
|
2937
|
-
});
|
|
2938
|
-
} else {
|
|
2939
|
-
debug('probe transport "%s" failed', name);
|
|
2940
|
-
var err = new Error("probe error");
|
|
2941
|
-
// @ts-ignore
|
|
2942
|
-
err.transport = transport.name;
|
|
2943
|
-
_this8.emitReserved("upgradeError", err);
|
|
2944
|
-
}
|
|
2945
|
-
});
|
|
2946
|
-
};
|
|
2947
|
-
function freezeTransport() {
|
|
2948
|
-
if (failed) return;
|
|
2949
|
-
// Any callback called by transport should be ignored since now
|
|
2950
|
-
failed = true;
|
|
2951
|
-
cleanup();
|
|
2952
|
-
transport.close();
|
|
2953
|
-
transport = null;
|
|
2954
|
-
}
|
|
2955
|
-
// Handle any error that happens while probing
|
|
2956
|
-
var onerror = function onerror(err) {
|
|
2957
|
-
var error = new Error("probe error: " + err);
|
|
2958
|
-
// @ts-ignore
|
|
2959
|
-
error.transport = transport.name;
|
|
2960
|
-
freezeTransport();
|
|
2961
|
-
debug('probe transport "%s" failed because of error: %s', name, err);
|
|
2962
|
-
_this8.emitReserved("upgradeError", error);
|
|
2963
|
-
};
|
|
2964
|
-
function onTransportClose() {
|
|
2965
|
-
onerror("transport closed");
|
|
2966
|
-
}
|
|
2967
|
-
// When the socket is closed while we're probing
|
|
2968
|
-
function onclose() {
|
|
2969
|
-
onerror("socket closed");
|
|
2970
|
-
}
|
|
2971
|
-
// When the socket is upgraded while we're probing
|
|
2972
|
-
function onupgrade(to) {
|
|
2973
|
-
if (transport && to.name !== transport.name) {
|
|
2974
|
-
debug('"%s" works - aborting "%s"', to.name, transport.name);
|
|
2975
|
-
freezeTransport();
|
|
2976
|
-
}
|
|
2977
|
-
}
|
|
2978
|
-
// Remove all listeners on the transport and on self
|
|
2979
|
-
var cleanup = function cleanup() {
|
|
2980
|
-
transport.removeListener("open", onTransportOpen);
|
|
2981
|
-
transport.removeListener("error", onerror);
|
|
2982
|
-
transport.removeListener("close", onTransportClose);
|
|
2983
|
-
_this8.off("close", onclose);
|
|
2984
|
-
_this8.off("upgrading", onupgrade);
|
|
2985
|
-
};
|
|
2986
|
-
transport.once("open", onTransportOpen);
|
|
2987
|
-
transport.once("error", onerror);
|
|
2988
|
-
transport.once("close", onTransportClose);
|
|
2989
|
-
this.once("close", onclose);
|
|
2990
|
-
this.once("upgrading", onupgrade);
|
|
2991
|
-
if (this._upgrades.indexOf("webtransport") !== -1 && name !== "webtransport") {
|
|
2992
|
-
// favor WebTransport
|
|
2993
|
-
this.setTimeoutFn(function () {
|
|
2994
|
-
if (!failed) {
|
|
2995
|
-
transport.open();
|
|
2996
|
-
}
|
|
2997
|
-
}, 200);
|
|
2998
|
-
} else {
|
|
2999
|
-
transport.open();
|
|
3000
|
-
}
|
|
3001
|
-
};
|
|
3002
|
-
_proto2.onHandshake = function onHandshake(data) {
|
|
3003
|
-
this._upgrades = this._filterUpgrades(data.upgrades);
|
|
3004
|
-
_SocketWithoutUpgrade.prototype.onHandshake.call(this, data);
|
|
3005
2964
|
}
|
|
3006
2965
|
/**
|
|
3007
2966
|
* Filters upgrades, returning only those matching client transports.
|
|
@@ -3009,50 +2968,16 @@
|
|
|
3009
2968
|
* @param {Array} upgrades - server upgrades
|
|
3010
2969
|
* @private
|
|
3011
2970
|
*/;
|
|
3012
|
-
|
|
2971
|
+
_proto._filterUpgrades = function _filterUpgrades(upgrades) {
|
|
3013
2972
|
var filteredUpgrades = [];
|
|
3014
2973
|
for (var i = 0; i < upgrades.length; i++) {
|
|
3015
2974
|
if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]);
|
|
3016
2975
|
}
|
|
3017
2976
|
return filteredUpgrades;
|
|
3018
2977
|
};
|
|
3019
|
-
return SocketWithUpgrade;
|
|
3020
|
-
}(SocketWithoutUpgrade);
|
|
3021
|
-
/**
|
|
3022
|
-
* This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established
|
|
3023
|
-
* with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.
|
|
3024
|
-
*
|
|
3025
|
-
* This class comes with an upgrade mechanism, which means that once the connection is established with the first
|
|
3026
|
-
* low-level transport, it will try to upgrade to a better transport.
|
|
3027
|
-
*
|
|
3028
|
-
* @example
|
|
3029
|
-
* import { Socket } from "engine.io-client";
|
|
3030
|
-
*
|
|
3031
|
-
* const socket = new Socket();
|
|
3032
|
-
*
|
|
3033
|
-
* socket.on("open", () => {
|
|
3034
|
-
* socket.send("hello");
|
|
3035
|
-
* });
|
|
3036
|
-
*
|
|
3037
|
-
* @see SocketWithoutUpgrade
|
|
3038
|
-
* @see SocketWithUpgrade
|
|
3039
|
-
*/
|
|
3040
|
-
var Socket = /*#__PURE__*/function (_SocketWithUpgrade) {
|
|
3041
|
-
function Socket(uri) {
|
|
3042
|
-
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3043
|
-
var o = _typeof(uri) === "object" ? uri : opts;
|
|
3044
|
-
if (!o.transports || o.transports && typeof o.transports[0] === "string") {
|
|
3045
|
-
o.transports = (o.transports || ["polling", "websocket", "webtransport"]).map(function (transportName) {
|
|
3046
|
-
return transports[transportName];
|
|
3047
|
-
}).filter(function (t) {
|
|
3048
|
-
return !!t;
|
|
3049
|
-
});
|
|
3050
|
-
}
|
|
3051
|
-
return _SocketWithUpgrade.call(this, uri, o) || this;
|
|
3052
|
-
}
|
|
3053
|
-
_inheritsLoose(Socket, _SocketWithUpgrade);
|
|
3054
2978
|
return Socket;
|
|
3055
|
-
}(
|
|
2979
|
+
}(Emitter);
|
|
2980
|
+
Socket.protocol = protocol;
|
|
3056
2981
|
|
|
3057
2982
|
var browserEntrypoint = (function (uri, opts) {
|
|
3058
2983
|
return new Socket(uri, opts);
|