@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.
Files changed (92) hide show
  1. package/README.md +203 -19
  2. package/dist/blade-client.d.ts +13 -1
  3. package/dist/{chunk-PWJJJATA.js → chunk-J3XXTHHK.js} +1723 -701
  4. package/dist/chunk-J3XXTHHK.js.map +1 -0
  5. package/dist/index.d.ts +12 -3
  6. package/dist/index.js +9 -1
  7. package/dist/internal.d.ts +9 -3
  8. package/dist/internal.js +13 -1
  9. package/dist/internal.js.map +1 -1
  10. package/dist/resources/auth.d.ts +3 -1
  11. package/dist/resources/chat-groups.d.ts +92 -0
  12. package/dist/resources/headless.d.ts +5 -0
  13. package/dist/resources/models.d.ts +6 -1
  14. package/dist/resources/plugins.d.ts +1 -0
  15. package/dist/resources/sessions.d.ts +96 -11
  16. package/dist/schemas/context-attachments.d.ts +16 -0
  17. package/dist/schemas/event.d.ts +2 -0
  18. package/dist/schemas/message-utils.d.ts +3 -9
  19. package/dist/schemas/message.d.ts +18 -1
  20. package/dist/schemas/plugin-refs.d.ts +15 -0
  21. package/dist/schemas/projection.d.ts +31 -0
  22. package/dist/schemas/session.d.ts +2 -42
  23. package/dist/schemas/topic-assets.d.ts +7 -0
  24. package/dist/server-clock.d.ts +2 -0
  25. package/dist/session/agent-session.d.ts +51 -7
  26. package/dist/session/background.d.ts +14 -0
  27. package/dist/session/events.d.ts +0 -1
  28. package/dist/session/hub.d.ts +3 -0
  29. package/dist/session/log-cursor.d.ts +14 -0
  30. package/dist/session/state.d.ts +2 -1
  31. package/dist/session/workflow.d.ts +10 -3
  32. package/dist/shared/projection/builder.d.ts +5 -0
  33. package/dist/shared/projection/helpers.d.ts +2 -0
  34. package/dist/shared/projection/index.d.ts +1 -0
  35. package/dist/shared/projection/workflow.d.ts +24 -0
  36. package/dist/tool-provider.d.ts +51 -0
  37. package/dist/types/socket-events.d.ts +179 -6
  38. package/node_modules/engine.io-client/build/cjs/globals.node.d.ts +2 -3
  39. package/node_modules/engine.io-client/build/cjs/index.d.ts +3 -3
  40. package/node_modules/engine.io-client/build/cjs/index.js +1 -4
  41. package/node_modules/engine.io-client/build/cjs/socket.d.ts +39 -82
  42. package/node_modules/engine.io-client/build/cjs/socket.js +151 -218
  43. package/node_modules/engine.io-client/build/cjs/transport.d.ts +1 -1
  44. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.d.ts +4 -4
  45. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js +2 -2
  46. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.js +17 -7
  47. package/node_modules/engine.io-client/build/cjs/transports/websocket.node.js +17 -7
  48. package/node_modules/engine.io-client/build/esm/globals.node.d.ts +2 -3
  49. package/node_modules/engine.io-client/build/esm/index.d.ts +3 -3
  50. package/node_modules/engine.io-client/build/esm/index.js +1 -2
  51. package/node_modules/engine.io-client/build/esm/socket.d.ts +39 -82
  52. package/node_modules/engine.io-client/build/esm/socket.js +141 -206
  53. package/node_modules/engine.io-client/build/esm/transport.d.ts +1 -1
  54. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.d.ts +4 -4
  55. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +2 -2
  56. package/node_modules/engine.io-client/build/esm-debug/globals.node.d.ts +2 -3
  57. package/node_modules/engine.io-client/build/esm-debug/index.d.ts +3 -3
  58. package/node_modules/engine.io-client/build/esm-debug/index.js +1 -2
  59. package/node_modules/engine.io-client/build/esm-debug/socket.d.ts +39 -82
  60. package/node_modules/engine.io-client/build/esm-debug/socket.js +150 -215
  61. package/node_modules/engine.io-client/build/esm-debug/transport.d.ts +1 -1
  62. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.d.ts +4 -4
  63. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.js +2 -2
  64. package/node_modules/engine.io-client/dist/engine.io.esm.min.js +3 -3
  65. package/node_modules/engine.io-client/dist/engine.io.esm.min.js.map +1 -1
  66. package/node_modules/engine.io-client/dist/engine.io.js +164 -239
  67. package/node_modules/engine.io-client/dist/engine.io.js.map +1 -1
  68. package/node_modules/engine.io-client/dist/engine.io.min.js +3 -3
  69. package/node_modules/engine.io-client/dist/engine.io.min.js.map +1 -1
  70. package/node_modules/engine.io-client/package.json +2 -2
  71. package/node_modules/socket.io-parser/build/cjs/binary.js +4 -1
  72. package/node_modules/socket.io-parser/build/cjs/index.d.ts +14 -4
  73. package/node_modules/socket.io-parser/build/cjs/index.js +18 -11
  74. package/node_modules/socket.io-parser/build/esm/binary.js +4 -1
  75. package/node_modules/socket.io-parser/build/esm/index.d.ts +14 -4
  76. package/node_modules/socket.io-parser/build/esm/index.js +14 -10
  77. package/node_modules/socket.io-parser/build/esm-debug/binary.js +4 -1
  78. package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +14 -4
  79. package/node_modules/socket.io-parser/build/esm-debug/index.js +14 -10
  80. package/node_modules/socket.io-parser/package.json +1 -1
  81. package/node_modules/ws/index.js +15 -6
  82. package/node_modules/ws/lib/constants.js +1 -0
  83. package/node_modules/ws/lib/permessage-deflate.js +9 -7
  84. package/node_modules/ws/lib/receiver.js +37 -0
  85. package/node_modules/ws/lib/sender.js +6 -1
  86. package/node_modules/ws/lib/websocket-server.js +18 -6
  87. package/node_modules/ws/lib/websocket.js +50 -17
  88. package/node_modules/ws/package.json +8 -3
  89. package/node_modules/ws/wrapper.mjs +14 -1
  90. package/package.json +4 -4
  91. package/public-api.md +335 -28
  92. package/dist/chunk-PWJJJATA.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Engine.IO v6.6.4
3
- * (c) 2014-2025 Guillermo Rauch
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 without upgrade mechanism, which means that it will keep the first low-level transport that
2353
- * successfully establishes the connection.
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 { SocketWithoutUpgrade, WebSocket } from "engine.io-client";
2356
+ * import { Socket } from "engine.io-client";
2359
2357
  *
2360
- * const socket = new SocketWithoutUpgrade({
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 SocketWithoutUpgrade = /*#__PURE__*/function (_Emitter) {
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
- _this.transports = [];
2414
- _this._transportsByName = {};
2415
- opts.transports.forEach(function (t) {
2416
- var transportName = t.prototype.name;
2417
- _this.transports.push(transportName);
2418
- _this._transportsByName[transportName] = t;
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(SocketWithoutUpgrade, _Emitter);
2477
- var _proto = SocketWithoutUpgrade.prototype;
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 && SocketWithoutUpgrade.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1 ? "websocket" : this.transports[0];
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
- SocketWithoutUpgrade.priorWebsocketSuccess = "websocket" === this.transport.name;
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 _this4 = this;
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
- _this4._onClose("ping timeout");
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 _this5 = this;
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
- _this5._onClose("ping timeout");
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: packet 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 _this6 = this;
2875
+ var _this7 = this;
2763
2876
  var close = function close() {
2764
- _this6._onClose("forced close");
2877
+ _this7._onClose("forced close");
2765
2878
  debug("socket closing - telling transport to close");
2766
- _this6.transport.close();
2879
+ _this7.transport.close();
2767
2880
  };
2768
2881
  var cleanupAndClose = function cleanupAndClose() {
2769
- _this6.off("upgrade", cleanupAndClose);
2770
- _this6.off("upgradeError", cleanupAndClose);
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
- _this6.once("upgrade", cleanupAndClose);
2776
- _this6.once("upgradeError", cleanupAndClose);
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 (_this6.upgrading) {
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
- SocketWithoutUpgrade.priorWebsocketSuccess = false;
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
- _proto2._filterUpgrades = function _filterUpgrades(upgrades) {
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
- }(SocketWithUpgrade);
2979
+ }(Emitter);
2980
+ Socket.protocol = protocol;
3056
2981
 
3057
2982
  var browserEntrypoint = (function (uri, opts) {
3058
2983
  return new Socket(uri, opts);