@kohost/api-client 3.0.0-beta.4 → 3.0.0-beta.41

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 (167) hide show
  1. package/README.md +71 -0
  2. package/dist/cjs/AMQPClient.js +425 -0
  3. package/dist/cjs/Client.js +1702 -1112
  4. package/dist/cjs/Commands.js +308 -93
  5. package/dist/cjs/Errors.js +24 -22
  6. package/dist/cjs/Events.js +225 -45
  7. package/dist/cjs/Models.js +1447 -555
  8. package/dist/cjs/SocketIoClient.js +66 -0
  9. package/dist/cjs/defs.js +37 -47
  10. package/dist/cjs/index.cjs.js +4 -0
  11. package/dist/cjs/utils.js +257 -15
  12. package/dist/esm/Client.js +1992 -1274
  13. package/dist/esm/Client.js.map +4 -4
  14. package/dist/esm/Commands.js +308 -93
  15. package/dist/esm/Commands.js.map +3 -3
  16. package/dist/esm/Errors.js +24 -22
  17. package/dist/esm/Errors.js.map +1 -1
  18. package/dist/esm/Events.js +225 -45
  19. package/dist/esm/Events.js.map +3 -3
  20. package/dist/esm/Models.js +2062 -551
  21. package/dist/esm/Models.js.map +4 -4
  22. package/dist/esm/SocketIoClient.js +4546 -0
  23. package/dist/esm/SocketIoClient.js.map +7 -0
  24. package/dist/esm/defs.js +394 -276
  25. package/dist/esm/defs.js.map +4 -4
  26. package/dist/esm/index.js +11 -10
  27. package/dist/esm/utils.js +640 -63
  28. package/dist/esm/utils.js.map +3 -3
  29. package/dist/useCases/AddDefaultScenesToRooms.js +2 -2
  30. package/dist/useCases/AddScenesToRoom.js +2 -2
  31. package/dist/useCases/AdminUpdateCustomer.js +32 -0
  32. package/dist/useCases/AssignSpaceToReservation.js +32 -0
  33. package/dist/useCases/BatchNotifyCheckIn.js +32 -0
  34. package/dist/useCases/BatchNotifyPreArrival.js +2 -2
  35. package/dist/useCases/CheckInReservation.js +2 -2
  36. package/dist/useCases/CheckVerificationCode.js +2 -2
  37. package/dist/useCases/CreateAlarm.js +2 -2
  38. package/dist/useCases/CreateCamera.js +2 -2
  39. package/dist/useCases/CreateCourtesy.js +2 -2
  40. package/dist/useCases/CreateDefaultScenes.js +2 -2
  41. package/dist/useCases/CreateDimmer.js +2 -2
  42. package/dist/useCases/CreateDiscoveredDevice.js +2 -2
  43. package/dist/useCases/CreateDiscoveredDeviceAssociation.js +2 -2
  44. package/dist/useCases/CreateImageUploadEndpoint.js +32 -0
  45. package/dist/useCases/CreateLock.js +2 -2
  46. package/dist/useCases/{CreateSource.js → CreateMediaSource.js} +3 -3
  47. package/dist/useCases/CreateOrganization.js +32 -0
  48. package/dist/useCases/{AdminCreateProperty.js → CreateProperty.js} +3 -3
  49. package/dist/useCases/CreateReservation.js +2 -2
  50. package/dist/useCases/CreateRoom.js +2 -2
  51. package/dist/useCases/CreateRoomInSpace.js +2 -2
  52. package/dist/useCases/CreateSpace.js +2 -2
  53. package/dist/useCases/{CreateIntegration.js → CreateSpaceType.js} +3 -3
  54. package/dist/useCases/CreateSwitch.js +2 -2
  55. package/dist/useCases/CreateThermostat.js +2 -2
  56. package/dist/useCases/CreateTicket.js +2 -2
  57. package/dist/useCases/CreateTicketMessage.js +2 -2
  58. package/dist/useCases/CreateUser.js +2 -2
  59. package/dist/useCases/CreateWindowCovering.js +2 -2
  60. package/dist/useCases/DeleteAlarm.js +2 -2
  61. package/dist/useCases/DeleteCamera.js +2 -2
  62. package/dist/useCases/DeleteCourtesy.js +2 -2
  63. package/dist/useCases/DeleteDimmer.js +2 -2
  64. package/dist/useCases/DeleteDiscoveredDevice.js +2 -2
  65. package/dist/useCases/DeleteLock.js +2 -2
  66. package/dist/useCases/DeleteMediaFile.js +32 -0
  67. package/dist/useCases/{DeleteSource.js → DeleteMediaSource.js} +3 -3
  68. package/dist/useCases/DeleteReservation.js +2 -2
  69. package/dist/useCases/DeleteRoom.js +2 -2
  70. package/dist/useCases/DeleteSpace.js +2 -2
  71. package/dist/useCases/DeleteSpaceType.js +32 -0
  72. package/dist/useCases/DeleteSwitch.js +2 -2
  73. package/dist/useCases/DeleteThermostat.js +2 -2
  74. package/dist/useCases/DeleteTicket.js +2 -2
  75. package/dist/useCases/DeleteUser.js +2 -2
  76. package/dist/useCases/DeleteWindowCovering.js +2 -2
  77. package/dist/useCases/DescribeAlarm.js +2 -2
  78. package/dist/useCases/DescribeCamera.js +2 -2
  79. package/dist/useCases/DescribeCourtesy.js +2 -2
  80. package/dist/useCases/DescribeDimmer.js +2 -2
  81. package/dist/useCases/DescribeDiscoveredDevice.js +2 -2
  82. package/dist/useCases/DescribeLock.js +2 -2
  83. package/dist/useCases/DescribeLockCredential.js +32 -0
  84. package/dist/useCases/{DescribeSource.js → DescribeMediaSource.js} +3 -3
  85. package/dist/useCases/DescribeMyAccessCredentials.js +32 -0
  86. package/dist/useCases/DescribeMyProperty.js +2 -2
  87. package/dist/useCases/DescribeOrganization.js +32 -0
  88. package/dist/useCases/{DescribeIntegration.js → DescribeProperty.js} +3 -3
  89. package/dist/useCases/DescribeReservation.js +2 -2
  90. package/dist/useCases/DescribeReservationCheckinStatus.js +2 -2
  91. package/dist/useCases/DescribeRoom.js +2 -2
  92. package/dist/useCases/DescribeSelf.js +2 -2
  93. package/dist/useCases/DescribeSpace.js +2 -2
  94. package/dist/useCases/{DeleteIntegration.js → DescribeSpaceType.js} +3 -3
  95. package/dist/useCases/DescribeSwitch.js +2 -2
  96. package/dist/useCases/DescribeThermostat.js +2 -2
  97. package/dist/useCases/DescribeTicket.js +2 -2
  98. package/dist/useCases/DescribeUser.js +2 -2
  99. package/dist/useCases/DescribeWindowCovering.js +2 -2
  100. package/dist/useCases/DiscoverReservations.js +2 -2
  101. package/dist/useCases/EmailUserAccountSetup.js +2 -2
  102. package/dist/useCases/ListAlarms.js +2 -2
  103. package/dist/useCases/ListCameras.js +2 -2
  104. package/dist/useCases/ListCourtesy.js +2 -2
  105. package/dist/useCases/ListDimmers.js +2 -2
  106. package/dist/useCases/ListDiscoveredDevices.js +2 -2
  107. package/dist/useCases/ListLocks.js +2 -2
  108. package/dist/useCases/{ListSources.js → ListMediaSources.js} +3 -3
  109. package/dist/useCases/ListMyReservations.js +2 -2
  110. package/dist/useCases/ListMySpaces.js +2 -2
  111. package/dist/useCases/ListMyTickets.js +32 -0
  112. package/dist/useCases/ListOrganizations.js +32 -0
  113. package/dist/useCases/{AdminListCustomers.js → ListProperties.js} +3 -3
  114. package/dist/useCases/ListReservations.js +2 -2
  115. package/dist/useCases/ListRooms.js +2 -2
  116. package/dist/useCases/ListRoomsInSpace.js +2 -2
  117. package/dist/useCases/{AdminListProperties.js → ListSpaceTypes.js} +3 -3
  118. package/dist/useCases/ListSpaces.js +2 -2
  119. package/dist/useCases/ListSwitches.js +2 -2
  120. package/dist/useCases/{ListIntegrations.js → ListTeam.js} +3 -3
  121. package/dist/useCases/ListThermostats.js +2 -2
  122. package/dist/useCases/ListTickets.js +2 -2
  123. package/dist/useCases/ListUserReservations.js +2 -2
  124. package/dist/useCases/{AdminDescribeProperty.js → ListUserSpaces.js} +3 -3
  125. package/dist/useCases/ListUsers.js +2 -2
  126. package/dist/useCases/ListWindowCoverings.js +2 -2
  127. package/dist/useCases/LoginUser.js +2 -2
  128. package/dist/useCases/{CreateIntegrationDeviceMapEntry.js → LogoutUser.js} +3 -3
  129. package/dist/useCases/MatchUserIdentification.js +2 -2
  130. package/dist/useCases/OCRDocument.js +2 -2
  131. package/dist/useCases/RefreshToken.js +2 -2
  132. package/dist/useCases/RequestLoginLink.js +3 -3
  133. package/dist/useCases/RequestMyKeyToken.js +32 -0
  134. package/dist/useCases/SendCheckInSMS.js +32 -0
  135. package/dist/useCases/SendPreArrivalEmail.js +2 -2
  136. package/dist/useCases/SendPreArrivalSMS.js +2 -2
  137. package/dist/useCases/SendVerificationCode.js +2 -2
  138. package/dist/useCases/SetCamera.js +2 -2
  139. package/dist/useCases/SetCourtesy.js +2 -2
  140. package/dist/useCases/{SetSource.js → SetDimmer.js} +3 -3
  141. package/dist/useCases/SetLock.js +2 -2
  142. package/dist/useCases/SetMediaSource.js +32 -0
  143. package/dist/useCases/SetSwitch.js +2 -2
  144. package/dist/useCases/SetThermostat.js +2 -2
  145. package/dist/useCases/SetWindowCovering.js +2 -2
  146. package/dist/useCases/UpdateAlarm.js +2 -2
  147. package/dist/useCases/UpdateCamera.js +2 -2
  148. package/dist/useCases/UpdateCourtesy.js +2 -2
  149. package/dist/useCases/UpdateDimmer.js +2 -2
  150. package/dist/useCases/UpdateDiscoveredDevice.js +2 -2
  151. package/dist/useCases/UpdateLock.js +2 -2
  152. package/dist/useCases/{UpdateSource.js → UpdateMediaSource.js} +3 -3
  153. package/dist/useCases/UpdateMessageReadStatus.js +2 -2
  154. package/dist/useCases/{AdminUpdateProperty.js → UpdateProperty.js} +3 -3
  155. package/dist/useCases/UpdateReservation.js +2 -2
  156. package/dist/useCases/UpdateRoom.js +2 -2
  157. package/dist/useCases/UpdateSelf.js +2 -2
  158. package/dist/useCases/UpdateSpace.js +2 -2
  159. package/dist/useCases/{UpdateIntegration.js → UpdateSpaceType.js} +3 -3
  160. package/dist/useCases/UpdateSwitch.js +2 -2
  161. package/dist/useCases/UpdateThermostat.js +2 -2
  162. package/dist/useCases/UpdateTicket.js +2 -2
  163. package/dist/useCases/UpdateTicketStatus.js +2 -2
  164. package/dist/useCases/UpdateUser.js +2 -2
  165. package/dist/useCases/UpdateWindowCovering.js +2 -2
  166. package/dist/useCases/UpsertDiscoveredDevice.js +2 -2
  167. package/package.json +14 -3
@@ -0,0 +1,4546 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
+ var __commonJS = (cb, mod) => function __require() {
5
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
6
+ };
7
+
8
+ // node_modules/engine.io-parser/build/cjs/commons.js
9
+ var require_commons = __commonJS({
10
+ "node_modules/engine.io-parser/build/cjs/commons.js"(exports) {
11
+ "use strict";
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ERROR_PACKET = exports.PACKET_TYPES_REVERSE = exports.PACKET_TYPES = void 0;
14
+ var PACKET_TYPES = /* @__PURE__ */ Object.create(null);
15
+ exports.PACKET_TYPES = PACKET_TYPES;
16
+ PACKET_TYPES["open"] = "0";
17
+ PACKET_TYPES["close"] = "1";
18
+ PACKET_TYPES["ping"] = "2";
19
+ PACKET_TYPES["pong"] = "3";
20
+ PACKET_TYPES["message"] = "4";
21
+ PACKET_TYPES["upgrade"] = "5";
22
+ PACKET_TYPES["noop"] = "6";
23
+ var PACKET_TYPES_REVERSE = /* @__PURE__ */ Object.create(null);
24
+ exports.PACKET_TYPES_REVERSE = PACKET_TYPES_REVERSE;
25
+ Object.keys(PACKET_TYPES).forEach((key) => {
26
+ PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;
27
+ });
28
+ var ERROR_PACKET = { type: "error", data: "parser error" };
29
+ exports.ERROR_PACKET = ERROR_PACKET;
30
+ }
31
+ });
32
+
33
+ // node_modules/engine.io-parser/build/cjs/encodePacket.browser.js
34
+ var require_encodePacket_browser = __commonJS({
35
+ "node_modules/engine.io-parser/build/cjs/encodePacket.browser.js"(exports) {
36
+ "use strict";
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ var commons_js_1 = require_commons();
39
+ var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]";
40
+ var withNativeArrayBuffer = typeof ArrayBuffer === "function";
41
+ var isView = /* @__PURE__ */ __name((obj) => {
42
+ return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;
43
+ }, "isView");
44
+ var encodePacket = /* @__PURE__ */ __name(({ type, data }, supportsBinary, callback) => {
45
+ if (withNativeBlob && data instanceof Blob) {
46
+ if (supportsBinary) {
47
+ return callback(data);
48
+ } else {
49
+ return encodeBlobAsBase64(data, callback);
50
+ }
51
+ } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {
52
+ if (supportsBinary) {
53
+ return callback(data);
54
+ } else {
55
+ return encodeBlobAsBase64(new Blob([data]), callback);
56
+ }
57
+ }
58
+ return callback(commons_js_1.PACKET_TYPES[type] + (data || ""));
59
+ }, "encodePacket");
60
+ var encodeBlobAsBase64 = /* @__PURE__ */ __name((data, callback) => {
61
+ const fileReader = new FileReader();
62
+ fileReader.onload = function() {
63
+ const content = fileReader.result.split(",")[1];
64
+ callback("b" + (content || ""));
65
+ };
66
+ return fileReader.readAsDataURL(data);
67
+ }, "encodeBlobAsBase64");
68
+ exports.default = encodePacket;
69
+ }
70
+ });
71
+
72
+ // node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js
73
+ var require_base64_arraybuffer = __commonJS({
74
+ "node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js"(exports) {
75
+ "use strict";
76
+ Object.defineProperty(exports, "__esModule", { value: true });
77
+ exports.decode = exports.encode = void 0;
78
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
79
+ var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
80
+ for (let i = 0; i < chars.length; i++) {
81
+ lookup[chars.charCodeAt(i)] = i;
82
+ }
83
+ var encode = /* @__PURE__ */ __name((arraybuffer) => {
84
+ let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = "";
85
+ for (i = 0; i < len; i += 3) {
86
+ base64 += chars[bytes[i] >> 2];
87
+ base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
88
+ base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
89
+ base64 += chars[bytes[i + 2] & 63];
90
+ }
91
+ if (len % 3 === 2) {
92
+ base64 = base64.substring(0, base64.length - 1) + "=";
93
+ } else if (len % 3 === 1) {
94
+ base64 = base64.substring(0, base64.length - 2) + "==";
95
+ }
96
+ return base64;
97
+ }, "encode");
98
+ exports.encode = encode;
99
+ var decode = /* @__PURE__ */ __name((base64) => {
100
+ let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
101
+ if (base64[base64.length - 1] === "=") {
102
+ bufferLength--;
103
+ if (base64[base64.length - 2] === "=") {
104
+ bufferLength--;
105
+ }
106
+ }
107
+ const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
108
+ for (i = 0; i < len; i += 4) {
109
+ encoded1 = lookup[base64.charCodeAt(i)];
110
+ encoded2 = lookup[base64.charCodeAt(i + 1)];
111
+ encoded3 = lookup[base64.charCodeAt(i + 2)];
112
+ encoded4 = lookup[base64.charCodeAt(i + 3)];
113
+ bytes[p++] = encoded1 << 2 | encoded2 >> 4;
114
+ bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
115
+ bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
116
+ }
117
+ return arraybuffer;
118
+ }, "decode");
119
+ exports.decode = decode;
120
+ }
121
+ });
122
+
123
+ // node_modules/engine.io-parser/build/cjs/decodePacket.browser.js
124
+ var require_decodePacket_browser = __commonJS({
125
+ "node_modules/engine.io-parser/build/cjs/decodePacket.browser.js"(exports) {
126
+ "use strict";
127
+ Object.defineProperty(exports, "__esModule", { value: true });
128
+ var commons_js_1 = require_commons();
129
+ var base64_arraybuffer_js_1 = require_base64_arraybuffer();
130
+ var withNativeArrayBuffer = typeof ArrayBuffer === "function";
131
+ var decodePacket = /* @__PURE__ */ __name((encodedPacket, binaryType) => {
132
+ if (typeof encodedPacket !== "string") {
133
+ return {
134
+ type: "message",
135
+ data: mapBinary(encodedPacket, binaryType)
136
+ };
137
+ }
138
+ const type = encodedPacket.charAt(0);
139
+ if (type === "b") {
140
+ return {
141
+ type: "message",
142
+ data: decodeBase64Packet(encodedPacket.substring(1), binaryType)
143
+ };
144
+ }
145
+ const packetType = commons_js_1.PACKET_TYPES_REVERSE[type];
146
+ if (!packetType) {
147
+ return commons_js_1.ERROR_PACKET;
148
+ }
149
+ return encodedPacket.length > 1 ? {
150
+ type: commons_js_1.PACKET_TYPES_REVERSE[type],
151
+ data: encodedPacket.substring(1)
152
+ } : {
153
+ type: commons_js_1.PACKET_TYPES_REVERSE[type]
154
+ };
155
+ }, "decodePacket");
156
+ var decodeBase64Packet = /* @__PURE__ */ __name((data, binaryType) => {
157
+ if (withNativeArrayBuffer) {
158
+ const decoded = (0, base64_arraybuffer_js_1.decode)(data);
159
+ return mapBinary(decoded, binaryType);
160
+ } else {
161
+ return { base64: true, data };
162
+ }
163
+ }, "decodeBase64Packet");
164
+ var mapBinary = /* @__PURE__ */ __name((data, binaryType) => {
165
+ switch (binaryType) {
166
+ case "blob":
167
+ return data instanceof ArrayBuffer ? new Blob([data]) : data;
168
+ case "arraybuffer":
169
+ default:
170
+ return data;
171
+ }
172
+ }, "mapBinary");
173
+ exports.default = decodePacket;
174
+ }
175
+ });
176
+
177
+ // node_modules/engine.io-parser/build/cjs/index.js
178
+ var require_cjs = __commonJS({
179
+ "node_modules/engine.io-parser/build/cjs/index.js"(exports) {
180
+ "use strict";
181
+ Object.defineProperty(exports, "__esModule", { value: true });
182
+ exports.decodePayload = exports.decodePacket = exports.encodePayload = exports.encodePacket = exports.protocol = void 0;
183
+ var encodePacket_js_1 = require_encodePacket_browser();
184
+ exports.encodePacket = encodePacket_js_1.default;
185
+ var decodePacket_js_1 = require_decodePacket_browser();
186
+ exports.decodePacket = decodePacket_js_1.default;
187
+ var SEPARATOR = String.fromCharCode(30);
188
+ var encodePayload = /* @__PURE__ */ __name((packets, callback) => {
189
+ const length = packets.length;
190
+ const encodedPackets = new Array(length);
191
+ let count = 0;
192
+ packets.forEach((packet, i) => {
193
+ (0, encodePacket_js_1.default)(packet, false, (encodedPacket) => {
194
+ encodedPackets[i] = encodedPacket;
195
+ if (++count === length) {
196
+ callback(encodedPackets.join(SEPARATOR));
197
+ }
198
+ });
199
+ });
200
+ }, "encodePayload");
201
+ exports.encodePayload = encodePayload;
202
+ var decodePayload = /* @__PURE__ */ __name((encodedPayload, binaryType) => {
203
+ const encodedPackets = encodedPayload.split(SEPARATOR);
204
+ const packets = [];
205
+ for (let i = 0; i < encodedPackets.length; i++) {
206
+ const decodedPacket = (0, decodePacket_js_1.default)(encodedPackets[i], binaryType);
207
+ packets.push(decodedPacket);
208
+ if (decodedPacket.type === "error") {
209
+ break;
210
+ }
211
+ }
212
+ return packets;
213
+ }, "decodePayload");
214
+ exports.decodePayload = decodePayload;
215
+ exports.protocol = 4;
216
+ }
217
+ });
218
+
219
+ // node_modules/@socket.io/component-emitter/index.js
220
+ var require_component_emitter = __commonJS({
221
+ "node_modules/@socket.io/component-emitter/index.js"(exports) {
222
+ exports.Emitter = Emitter;
223
+ function Emitter(obj) {
224
+ if (obj)
225
+ return mixin(obj);
226
+ }
227
+ __name(Emitter, "Emitter");
228
+ function mixin(obj) {
229
+ for (var key in Emitter.prototype) {
230
+ obj[key] = Emitter.prototype[key];
231
+ }
232
+ return obj;
233
+ }
234
+ __name(mixin, "mixin");
235
+ Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {
236
+ this._callbacks = this._callbacks || {};
237
+ (this._callbacks["$" + event] = this._callbacks["$" + event] || []).push(fn);
238
+ return this;
239
+ };
240
+ Emitter.prototype.once = function(event, fn) {
241
+ function on() {
242
+ this.off(event, on);
243
+ fn.apply(this, arguments);
244
+ }
245
+ __name(on, "on");
246
+ on.fn = fn;
247
+ this.on(event, on);
248
+ return this;
249
+ };
250
+ Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {
251
+ this._callbacks = this._callbacks || {};
252
+ if (0 == arguments.length) {
253
+ this._callbacks = {};
254
+ return this;
255
+ }
256
+ var callbacks = this._callbacks["$" + event];
257
+ if (!callbacks)
258
+ return this;
259
+ if (1 == arguments.length) {
260
+ delete this._callbacks["$" + event];
261
+ return this;
262
+ }
263
+ var cb;
264
+ for (var i = 0; i < callbacks.length; i++) {
265
+ cb = callbacks[i];
266
+ if (cb === fn || cb.fn === fn) {
267
+ callbacks.splice(i, 1);
268
+ break;
269
+ }
270
+ }
271
+ if (callbacks.length === 0) {
272
+ delete this._callbacks["$" + event];
273
+ }
274
+ return this;
275
+ };
276
+ Emitter.prototype.emit = function(event) {
277
+ this._callbacks = this._callbacks || {};
278
+ var args = new Array(arguments.length - 1), callbacks = this._callbacks["$" + event];
279
+ for (var i = 1; i < arguments.length; i++) {
280
+ args[i - 1] = arguments[i];
281
+ }
282
+ if (callbacks) {
283
+ callbacks = callbacks.slice(0);
284
+ for (var i = 0, len = callbacks.length; i < len; ++i) {
285
+ callbacks[i].apply(this, args);
286
+ }
287
+ }
288
+ return this;
289
+ };
290
+ Emitter.prototype.emitReserved = Emitter.prototype.emit;
291
+ Emitter.prototype.listeners = function(event) {
292
+ this._callbacks = this._callbacks || {};
293
+ return this._callbacks["$" + event] || [];
294
+ };
295
+ Emitter.prototype.hasListeners = function(event) {
296
+ return !!this.listeners(event).length;
297
+ };
298
+ }
299
+ });
300
+
301
+ // node_modules/engine.io-client/build/cjs/globalThis.browser.js
302
+ var require_globalThis_browser = __commonJS({
303
+ "node_modules/engine.io-client/build/cjs/globalThis.browser.js"(exports) {
304
+ "use strict";
305
+ Object.defineProperty(exports, "__esModule", { value: true });
306
+ exports.globalThisShim = void 0;
307
+ exports.globalThisShim = (() => {
308
+ if (typeof self !== "undefined") {
309
+ return self;
310
+ } else if (typeof window !== "undefined") {
311
+ return window;
312
+ } else {
313
+ return Function("return this")();
314
+ }
315
+ })();
316
+ }
317
+ });
318
+
319
+ // node_modules/engine.io-client/build/cjs/util.js
320
+ var require_util = __commonJS({
321
+ "node_modules/engine.io-client/build/cjs/util.js"(exports) {
322
+ "use strict";
323
+ Object.defineProperty(exports, "__esModule", { value: true });
324
+ exports.byteLength = exports.installTimerFunctions = exports.pick = void 0;
325
+ var globalThis_js_1 = require_globalThis_browser();
326
+ function pick(obj, ...attr) {
327
+ return attr.reduce((acc, k) => {
328
+ if (obj.hasOwnProperty(k)) {
329
+ acc[k] = obj[k];
330
+ }
331
+ return acc;
332
+ }, {});
333
+ }
334
+ __name(pick, "pick");
335
+ exports.pick = pick;
336
+ var NATIVE_SET_TIMEOUT = globalThis_js_1.globalThisShim.setTimeout;
337
+ var NATIVE_CLEAR_TIMEOUT = globalThis_js_1.globalThisShim.clearTimeout;
338
+ function installTimerFunctions(obj, opts) {
339
+ if (opts.useNativeTimers) {
340
+ obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis_js_1.globalThisShim);
341
+ obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis_js_1.globalThisShim);
342
+ } else {
343
+ obj.setTimeoutFn = globalThis_js_1.globalThisShim.setTimeout.bind(globalThis_js_1.globalThisShim);
344
+ obj.clearTimeoutFn = globalThis_js_1.globalThisShim.clearTimeout.bind(globalThis_js_1.globalThisShim);
345
+ }
346
+ }
347
+ __name(installTimerFunctions, "installTimerFunctions");
348
+ exports.installTimerFunctions = installTimerFunctions;
349
+ var BASE64_OVERHEAD = 1.33;
350
+ function byteLength(obj) {
351
+ if (typeof obj === "string") {
352
+ return utf8Length(obj);
353
+ }
354
+ return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);
355
+ }
356
+ __name(byteLength, "byteLength");
357
+ exports.byteLength = byteLength;
358
+ function utf8Length(str) {
359
+ let c = 0, length = 0;
360
+ for (let i = 0, l = str.length; i < l; i++) {
361
+ c = str.charCodeAt(i);
362
+ if (c < 128) {
363
+ length += 1;
364
+ } else if (c < 2048) {
365
+ length += 2;
366
+ } else if (c < 55296 || c >= 57344) {
367
+ length += 3;
368
+ } else {
369
+ i++;
370
+ length += 4;
371
+ }
372
+ }
373
+ return length;
374
+ }
375
+ __name(utf8Length, "utf8Length");
376
+ }
377
+ });
378
+
379
+ // node_modules/ms/index.js
380
+ var require_ms = __commonJS({
381
+ "node_modules/ms/index.js"(exports, module) {
382
+ var s = 1e3;
383
+ var m = s * 60;
384
+ var h = m * 60;
385
+ var d = h * 24;
386
+ var w = d * 7;
387
+ var y = d * 365.25;
388
+ module.exports = function(val, options) {
389
+ options = options || {};
390
+ var type = typeof val;
391
+ if (type === "string" && val.length > 0) {
392
+ return parse(val);
393
+ } else if (type === "number" && isFinite(val)) {
394
+ return options.long ? fmtLong(val) : fmtShort(val);
395
+ }
396
+ throw new Error(
397
+ "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
398
+ );
399
+ };
400
+ function parse(str) {
401
+ str = String(str);
402
+ if (str.length > 100) {
403
+ return;
404
+ }
405
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
406
+ str
407
+ );
408
+ if (!match) {
409
+ return;
410
+ }
411
+ var n = parseFloat(match[1]);
412
+ var type = (match[2] || "ms").toLowerCase();
413
+ switch (type) {
414
+ case "years":
415
+ case "year":
416
+ case "yrs":
417
+ case "yr":
418
+ case "y":
419
+ return n * y;
420
+ case "weeks":
421
+ case "week":
422
+ case "w":
423
+ return n * w;
424
+ case "days":
425
+ case "day":
426
+ case "d":
427
+ return n * d;
428
+ case "hours":
429
+ case "hour":
430
+ case "hrs":
431
+ case "hr":
432
+ case "h":
433
+ return n * h;
434
+ case "minutes":
435
+ case "minute":
436
+ case "mins":
437
+ case "min":
438
+ case "m":
439
+ return n * m;
440
+ case "seconds":
441
+ case "second":
442
+ case "secs":
443
+ case "sec":
444
+ case "s":
445
+ return n * s;
446
+ case "milliseconds":
447
+ case "millisecond":
448
+ case "msecs":
449
+ case "msec":
450
+ case "ms":
451
+ return n;
452
+ default:
453
+ return void 0;
454
+ }
455
+ }
456
+ __name(parse, "parse");
457
+ function fmtShort(ms) {
458
+ var msAbs = Math.abs(ms);
459
+ if (msAbs >= d) {
460
+ return Math.round(ms / d) + "d";
461
+ }
462
+ if (msAbs >= h) {
463
+ return Math.round(ms / h) + "h";
464
+ }
465
+ if (msAbs >= m) {
466
+ return Math.round(ms / m) + "m";
467
+ }
468
+ if (msAbs >= s) {
469
+ return Math.round(ms / s) + "s";
470
+ }
471
+ return ms + "ms";
472
+ }
473
+ __name(fmtShort, "fmtShort");
474
+ function fmtLong(ms) {
475
+ var msAbs = Math.abs(ms);
476
+ if (msAbs >= d) {
477
+ return plural(ms, msAbs, d, "day");
478
+ }
479
+ if (msAbs >= h) {
480
+ return plural(ms, msAbs, h, "hour");
481
+ }
482
+ if (msAbs >= m) {
483
+ return plural(ms, msAbs, m, "minute");
484
+ }
485
+ if (msAbs >= s) {
486
+ return plural(ms, msAbs, s, "second");
487
+ }
488
+ return ms + " ms";
489
+ }
490
+ __name(fmtLong, "fmtLong");
491
+ function plural(ms, msAbs, n, name) {
492
+ var isPlural = msAbs >= n * 1.5;
493
+ return Math.round(ms / n) + " " + name + (isPlural ? "s" : "");
494
+ }
495
+ __name(plural, "plural");
496
+ }
497
+ });
498
+
499
+ // node_modules/debug/src/common.js
500
+ var require_common = __commonJS({
501
+ "node_modules/debug/src/common.js"(exports, module) {
502
+ function setup(env) {
503
+ createDebug.debug = createDebug;
504
+ createDebug.default = createDebug;
505
+ createDebug.coerce = coerce;
506
+ createDebug.disable = disable;
507
+ createDebug.enable = enable;
508
+ createDebug.enabled = enabled;
509
+ createDebug.humanize = require_ms();
510
+ createDebug.destroy = destroy;
511
+ Object.keys(env).forEach((key) => {
512
+ createDebug[key] = env[key];
513
+ });
514
+ createDebug.names = [];
515
+ createDebug.skips = [];
516
+ createDebug.formatters = {};
517
+ function selectColor(namespace) {
518
+ let hash = 0;
519
+ for (let i = 0; i < namespace.length; i++) {
520
+ hash = (hash << 5) - hash + namespace.charCodeAt(i);
521
+ hash |= 0;
522
+ }
523
+ return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
524
+ }
525
+ __name(selectColor, "selectColor");
526
+ createDebug.selectColor = selectColor;
527
+ function createDebug(namespace) {
528
+ let prevTime;
529
+ let enableOverride = null;
530
+ let namespacesCache;
531
+ let enabledCache;
532
+ function debug(...args) {
533
+ if (!debug.enabled) {
534
+ return;
535
+ }
536
+ const self2 = debug;
537
+ const curr = Number(/* @__PURE__ */ new Date());
538
+ const ms = curr - (prevTime || curr);
539
+ self2.diff = ms;
540
+ self2.prev = prevTime;
541
+ self2.curr = curr;
542
+ prevTime = curr;
543
+ args[0] = createDebug.coerce(args[0]);
544
+ if (typeof args[0] !== "string") {
545
+ args.unshift("%O");
546
+ }
547
+ let index = 0;
548
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
549
+ if (match === "%%") {
550
+ return "%";
551
+ }
552
+ index++;
553
+ const formatter = createDebug.formatters[format];
554
+ if (typeof formatter === "function") {
555
+ const val = args[index];
556
+ match = formatter.call(self2, val);
557
+ args.splice(index, 1);
558
+ index--;
559
+ }
560
+ return match;
561
+ });
562
+ createDebug.formatArgs.call(self2, args);
563
+ const logFn = self2.log || createDebug.log;
564
+ logFn.apply(self2, args);
565
+ }
566
+ __name(debug, "debug");
567
+ debug.namespace = namespace;
568
+ debug.useColors = createDebug.useColors();
569
+ debug.color = createDebug.selectColor(namespace);
570
+ debug.extend = extend;
571
+ debug.destroy = createDebug.destroy;
572
+ Object.defineProperty(debug, "enabled", {
573
+ enumerable: true,
574
+ configurable: false,
575
+ get: () => {
576
+ if (enableOverride !== null) {
577
+ return enableOverride;
578
+ }
579
+ if (namespacesCache !== createDebug.namespaces) {
580
+ namespacesCache = createDebug.namespaces;
581
+ enabledCache = createDebug.enabled(namespace);
582
+ }
583
+ return enabledCache;
584
+ },
585
+ set: (v) => {
586
+ enableOverride = v;
587
+ }
588
+ });
589
+ if (typeof createDebug.init === "function") {
590
+ createDebug.init(debug);
591
+ }
592
+ return debug;
593
+ }
594
+ __name(createDebug, "createDebug");
595
+ function extend(namespace, delimiter) {
596
+ const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
597
+ newDebug.log = this.log;
598
+ return newDebug;
599
+ }
600
+ __name(extend, "extend");
601
+ function enable(namespaces) {
602
+ createDebug.save(namespaces);
603
+ createDebug.namespaces = namespaces;
604
+ createDebug.names = [];
605
+ createDebug.skips = [];
606
+ let i;
607
+ const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
608
+ const len = split.length;
609
+ for (i = 0; i < len; i++) {
610
+ if (!split[i]) {
611
+ continue;
612
+ }
613
+ namespaces = split[i].replace(/\*/g, ".*?");
614
+ if (namespaces[0] === "-") {
615
+ createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$"));
616
+ } else {
617
+ createDebug.names.push(new RegExp("^" + namespaces + "$"));
618
+ }
619
+ }
620
+ }
621
+ __name(enable, "enable");
622
+ function disable() {
623
+ const namespaces = [
624
+ ...createDebug.names.map(toNamespace),
625
+ ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace)
626
+ ].join(",");
627
+ createDebug.enable("");
628
+ return namespaces;
629
+ }
630
+ __name(disable, "disable");
631
+ function enabled(name) {
632
+ if (name[name.length - 1] === "*") {
633
+ return true;
634
+ }
635
+ let i;
636
+ let len;
637
+ for (i = 0, len = createDebug.skips.length; i < len; i++) {
638
+ if (createDebug.skips[i].test(name)) {
639
+ return false;
640
+ }
641
+ }
642
+ for (i = 0, len = createDebug.names.length; i < len; i++) {
643
+ if (createDebug.names[i].test(name)) {
644
+ return true;
645
+ }
646
+ }
647
+ return false;
648
+ }
649
+ __name(enabled, "enabled");
650
+ function toNamespace(regexp) {
651
+ return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
652
+ }
653
+ __name(toNamespace, "toNamespace");
654
+ function coerce(val) {
655
+ if (val instanceof Error) {
656
+ return val.stack || val.message;
657
+ }
658
+ return val;
659
+ }
660
+ __name(coerce, "coerce");
661
+ function destroy() {
662
+ console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
663
+ }
664
+ __name(destroy, "destroy");
665
+ createDebug.enable(createDebug.load());
666
+ return createDebug;
667
+ }
668
+ __name(setup, "setup");
669
+ module.exports = setup;
670
+ }
671
+ });
672
+
673
+ // node_modules/debug/src/browser.js
674
+ var require_browser = __commonJS({
675
+ "node_modules/debug/src/browser.js"(exports, module) {
676
+ exports.formatArgs = formatArgs;
677
+ exports.save = save;
678
+ exports.load = load;
679
+ exports.useColors = useColors;
680
+ exports.storage = localstorage();
681
+ exports.destroy = (() => {
682
+ let warned = false;
683
+ return () => {
684
+ if (!warned) {
685
+ warned = true;
686
+ console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
687
+ }
688
+ };
689
+ })();
690
+ exports.colors = [
691
+ "#0000CC",
692
+ "#0000FF",
693
+ "#0033CC",
694
+ "#0033FF",
695
+ "#0066CC",
696
+ "#0066FF",
697
+ "#0099CC",
698
+ "#0099FF",
699
+ "#00CC00",
700
+ "#00CC33",
701
+ "#00CC66",
702
+ "#00CC99",
703
+ "#00CCCC",
704
+ "#00CCFF",
705
+ "#3300CC",
706
+ "#3300FF",
707
+ "#3333CC",
708
+ "#3333FF",
709
+ "#3366CC",
710
+ "#3366FF",
711
+ "#3399CC",
712
+ "#3399FF",
713
+ "#33CC00",
714
+ "#33CC33",
715
+ "#33CC66",
716
+ "#33CC99",
717
+ "#33CCCC",
718
+ "#33CCFF",
719
+ "#6600CC",
720
+ "#6600FF",
721
+ "#6633CC",
722
+ "#6633FF",
723
+ "#66CC00",
724
+ "#66CC33",
725
+ "#9900CC",
726
+ "#9900FF",
727
+ "#9933CC",
728
+ "#9933FF",
729
+ "#99CC00",
730
+ "#99CC33",
731
+ "#CC0000",
732
+ "#CC0033",
733
+ "#CC0066",
734
+ "#CC0099",
735
+ "#CC00CC",
736
+ "#CC00FF",
737
+ "#CC3300",
738
+ "#CC3333",
739
+ "#CC3366",
740
+ "#CC3399",
741
+ "#CC33CC",
742
+ "#CC33FF",
743
+ "#CC6600",
744
+ "#CC6633",
745
+ "#CC9900",
746
+ "#CC9933",
747
+ "#CCCC00",
748
+ "#CCCC33",
749
+ "#FF0000",
750
+ "#FF0033",
751
+ "#FF0066",
752
+ "#FF0099",
753
+ "#FF00CC",
754
+ "#FF00FF",
755
+ "#FF3300",
756
+ "#FF3333",
757
+ "#FF3366",
758
+ "#FF3399",
759
+ "#FF33CC",
760
+ "#FF33FF",
761
+ "#FF6600",
762
+ "#FF6633",
763
+ "#FF9900",
764
+ "#FF9933",
765
+ "#FFCC00",
766
+ "#FFCC33"
767
+ ];
768
+ function useColors() {
769
+ if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
770
+ return true;
771
+ }
772
+ if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
773
+ return false;
774
+ }
775
+ return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
776
+ typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
777
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
778
+ typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
779
+ typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
780
+ }
781
+ __name(useColors, "useColors");
782
+ function formatArgs(args) {
783
+ args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff);
784
+ if (!this.useColors) {
785
+ return;
786
+ }
787
+ const c = "color: " + this.color;
788
+ args.splice(1, 0, c, "color: inherit");
789
+ let index = 0;
790
+ let lastC = 0;
791
+ args[0].replace(/%[a-zA-Z%]/g, (match) => {
792
+ if (match === "%%") {
793
+ return;
794
+ }
795
+ index++;
796
+ if (match === "%c") {
797
+ lastC = index;
798
+ }
799
+ });
800
+ args.splice(lastC, 0, c);
801
+ }
802
+ __name(formatArgs, "formatArgs");
803
+ exports.log = console.debug || console.log || (() => {
804
+ });
805
+ function save(namespaces) {
806
+ try {
807
+ if (namespaces) {
808
+ exports.storage.setItem("debug", namespaces);
809
+ } else {
810
+ exports.storage.removeItem("debug");
811
+ }
812
+ } catch (error) {
813
+ }
814
+ }
815
+ __name(save, "save");
816
+ function load() {
817
+ let r;
818
+ try {
819
+ r = exports.storage.getItem("debug");
820
+ } catch (error) {
821
+ }
822
+ if (!r && typeof process !== "undefined" && "env" in process) {
823
+ r = process.env.DEBUG;
824
+ }
825
+ return r;
826
+ }
827
+ __name(load, "load");
828
+ function localstorage() {
829
+ try {
830
+ return localStorage;
831
+ } catch (error) {
832
+ }
833
+ }
834
+ __name(localstorage, "localstorage");
835
+ module.exports = require_common()(exports);
836
+ var { formatters } = module.exports;
837
+ formatters.j = function(v) {
838
+ try {
839
+ return JSON.stringify(v);
840
+ } catch (error) {
841
+ return "[UnexpectedJSONParseError]: " + error.message;
842
+ }
843
+ };
844
+ }
845
+ });
846
+
847
+ // node_modules/engine.io-client/build/cjs/transport.js
848
+ var require_transport = __commonJS({
849
+ "node_modules/engine.io-client/build/cjs/transport.js"(exports) {
850
+ "use strict";
851
+ var __importDefault = exports && exports.__importDefault || function(mod) {
852
+ return mod && mod.__esModule ? mod : { "default": mod };
853
+ };
854
+ Object.defineProperty(exports, "__esModule", { value: true });
855
+ exports.Transport = void 0;
856
+ var engine_io_parser_1 = require_cjs();
857
+ var component_emitter_1 = require_component_emitter();
858
+ var util_js_1 = require_util();
859
+ var debug_1 = __importDefault(require_browser());
860
+ var debug = (0, debug_1.default)("engine.io-client:transport");
861
+ var TransportError = class extends Error {
862
+ constructor(reason, description, context) {
863
+ super(reason);
864
+ this.description = description;
865
+ this.context = context;
866
+ this.type = "TransportError";
867
+ }
868
+ };
869
+ __name(TransportError, "TransportError");
870
+ var Transport = class extends component_emitter_1.Emitter {
871
+ /**
872
+ * Transport abstract constructor.
873
+ *
874
+ * @param {Object} opts - options
875
+ * @protected
876
+ */
877
+ constructor(opts) {
878
+ super();
879
+ this.writable = false;
880
+ (0, util_js_1.installTimerFunctions)(this, opts);
881
+ this.opts = opts;
882
+ this.query = opts.query;
883
+ this.socket = opts.socket;
884
+ }
885
+ /**
886
+ * Emits an error.
887
+ *
888
+ * @param {String} reason
889
+ * @param description
890
+ * @param context - the error context
891
+ * @return {Transport} for chaining
892
+ * @protected
893
+ */
894
+ onError(reason, description, context) {
895
+ super.emitReserved("error", new TransportError(reason, description, context));
896
+ return this;
897
+ }
898
+ /**
899
+ * Opens the transport.
900
+ */
901
+ open() {
902
+ this.readyState = "opening";
903
+ this.doOpen();
904
+ return this;
905
+ }
906
+ /**
907
+ * Closes the transport.
908
+ */
909
+ close() {
910
+ if (this.readyState === "opening" || this.readyState === "open") {
911
+ this.doClose();
912
+ this.onClose();
913
+ }
914
+ return this;
915
+ }
916
+ /**
917
+ * Sends multiple packets.
918
+ *
919
+ * @param {Array} packets
920
+ */
921
+ send(packets) {
922
+ if (this.readyState === "open") {
923
+ this.write(packets);
924
+ } else {
925
+ debug("transport is not open, discarding packets");
926
+ }
927
+ }
928
+ /**
929
+ * Called upon open
930
+ *
931
+ * @protected
932
+ */
933
+ onOpen() {
934
+ this.readyState = "open";
935
+ this.writable = true;
936
+ super.emitReserved("open");
937
+ }
938
+ /**
939
+ * Called with data.
940
+ *
941
+ * @param {String} data
942
+ * @protected
943
+ */
944
+ onData(data) {
945
+ const packet = (0, engine_io_parser_1.decodePacket)(data, this.socket.binaryType);
946
+ this.onPacket(packet);
947
+ }
948
+ /**
949
+ * Called with a decoded packet.
950
+ *
951
+ * @protected
952
+ */
953
+ onPacket(packet) {
954
+ super.emitReserved("packet", packet);
955
+ }
956
+ /**
957
+ * Called upon close.
958
+ *
959
+ * @protected
960
+ */
961
+ onClose(details) {
962
+ this.readyState = "closed";
963
+ super.emitReserved("close", details);
964
+ }
965
+ /**
966
+ * Pauses the transport, in order not to lose packets during an upgrade.
967
+ *
968
+ * @param onPause
969
+ */
970
+ pause(onPause) {
971
+ }
972
+ };
973
+ __name(Transport, "Transport");
974
+ exports.Transport = Transport;
975
+ }
976
+ });
977
+
978
+ // node_modules/engine.io-client/build/cjs/contrib/yeast.js
979
+ var require_yeast = __commonJS({
980
+ "node_modules/engine.io-client/build/cjs/contrib/yeast.js"(exports) {
981
+ "use strict";
982
+ Object.defineProperty(exports, "__esModule", { value: true });
983
+ exports.yeast = exports.decode = exports.encode = void 0;
984
+ var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split("");
985
+ var length = 64;
986
+ var map = {};
987
+ var seed = 0;
988
+ var i = 0;
989
+ var prev;
990
+ function encode(num) {
991
+ let encoded = "";
992
+ do {
993
+ encoded = alphabet[num % length] + encoded;
994
+ num = Math.floor(num / length);
995
+ } while (num > 0);
996
+ return encoded;
997
+ }
998
+ __name(encode, "encode");
999
+ exports.encode = encode;
1000
+ function decode(str) {
1001
+ let decoded = 0;
1002
+ for (i = 0; i < str.length; i++) {
1003
+ decoded = decoded * length + map[str.charAt(i)];
1004
+ }
1005
+ return decoded;
1006
+ }
1007
+ __name(decode, "decode");
1008
+ exports.decode = decode;
1009
+ function yeast() {
1010
+ const now = encode(+/* @__PURE__ */ new Date());
1011
+ if (now !== prev)
1012
+ return seed = 0, prev = now;
1013
+ return now + "." + encode(seed++);
1014
+ }
1015
+ __name(yeast, "yeast");
1016
+ exports.yeast = yeast;
1017
+ for (; i < length; i++)
1018
+ map[alphabet[i]] = i;
1019
+ }
1020
+ });
1021
+
1022
+ // node_modules/engine.io-client/build/cjs/contrib/parseqs.js
1023
+ var require_parseqs = __commonJS({
1024
+ "node_modules/engine.io-client/build/cjs/contrib/parseqs.js"(exports) {
1025
+ "use strict";
1026
+ Object.defineProperty(exports, "__esModule", { value: true });
1027
+ exports.decode = exports.encode = void 0;
1028
+ function encode(obj) {
1029
+ let str = "";
1030
+ for (let i in obj) {
1031
+ if (obj.hasOwnProperty(i)) {
1032
+ if (str.length)
1033
+ str += "&";
1034
+ str += encodeURIComponent(i) + "=" + encodeURIComponent(obj[i]);
1035
+ }
1036
+ }
1037
+ return str;
1038
+ }
1039
+ __name(encode, "encode");
1040
+ exports.encode = encode;
1041
+ function decode(qs) {
1042
+ let qry = {};
1043
+ let pairs = qs.split("&");
1044
+ for (let i = 0, l = pairs.length; i < l; i++) {
1045
+ let pair = pairs[i].split("=");
1046
+ qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
1047
+ }
1048
+ return qry;
1049
+ }
1050
+ __name(decode, "decode");
1051
+ exports.decode = decode;
1052
+ }
1053
+ });
1054
+
1055
+ // node_modules/engine.io-client/build/cjs/contrib/has-cors.js
1056
+ var require_has_cors = __commonJS({
1057
+ "node_modules/engine.io-client/build/cjs/contrib/has-cors.js"(exports) {
1058
+ "use strict";
1059
+ Object.defineProperty(exports, "__esModule", { value: true });
1060
+ exports.hasCORS = void 0;
1061
+ var value = false;
1062
+ try {
1063
+ value = typeof XMLHttpRequest !== "undefined" && "withCredentials" in new XMLHttpRequest();
1064
+ } catch (err) {
1065
+ }
1066
+ exports.hasCORS = value;
1067
+ }
1068
+ });
1069
+
1070
+ // node_modules/engine.io-client/build/cjs/transports/xmlhttprequest.browser.js
1071
+ var require_xmlhttprequest_browser = __commonJS({
1072
+ "node_modules/engine.io-client/build/cjs/transports/xmlhttprequest.browser.js"(exports) {
1073
+ "use strict";
1074
+ Object.defineProperty(exports, "__esModule", { value: true });
1075
+ exports.XHR = void 0;
1076
+ var has_cors_js_1 = require_has_cors();
1077
+ var globalThis_js_1 = require_globalThis_browser();
1078
+ function XHR(opts) {
1079
+ const xdomain = opts.xdomain;
1080
+ try {
1081
+ if ("undefined" !== typeof XMLHttpRequest && (!xdomain || has_cors_js_1.hasCORS)) {
1082
+ return new XMLHttpRequest();
1083
+ }
1084
+ } catch (e) {
1085
+ }
1086
+ if (!xdomain) {
1087
+ try {
1088
+ return new globalThis_js_1.globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP");
1089
+ } catch (e) {
1090
+ }
1091
+ }
1092
+ }
1093
+ __name(XHR, "XHR");
1094
+ exports.XHR = XHR;
1095
+ }
1096
+ });
1097
+
1098
+ // node_modules/engine.io-client/build/cjs/transports/polling.js
1099
+ var require_polling = __commonJS({
1100
+ "node_modules/engine.io-client/build/cjs/transports/polling.js"(exports) {
1101
+ "use strict";
1102
+ var __importDefault = exports && exports.__importDefault || function(mod) {
1103
+ return mod && mod.__esModule ? mod : { "default": mod };
1104
+ };
1105
+ Object.defineProperty(exports, "__esModule", { value: true });
1106
+ exports.Request = exports.Polling = void 0;
1107
+ var transport_js_1 = require_transport();
1108
+ var debug_1 = __importDefault(require_browser());
1109
+ var yeast_js_1 = require_yeast();
1110
+ var parseqs_js_1 = require_parseqs();
1111
+ var engine_io_parser_1 = require_cjs();
1112
+ var xmlhttprequest_js_1 = require_xmlhttprequest_browser();
1113
+ var component_emitter_1 = require_component_emitter();
1114
+ var util_js_1 = require_util();
1115
+ var globalThis_js_1 = require_globalThis_browser();
1116
+ var debug = (0, debug_1.default)("engine.io-client:polling");
1117
+ function empty() {
1118
+ }
1119
+ __name(empty, "empty");
1120
+ var hasXHR2 = function() {
1121
+ const xhr = new xmlhttprequest_js_1.XHR({
1122
+ xdomain: false
1123
+ });
1124
+ return null != xhr.responseType;
1125
+ }();
1126
+ var Polling = class extends transport_js_1.Transport {
1127
+ /**
1128
+ * XHR Polling constructor.
1129
+ *
1130
+ * @param {Object} opts
1131
+ * @package
1132
+ */
1133
+ constructor(opts) {
1134
+ super(opts);
1135
+ this.polling = false;
1136
+ if (typeof location !== "undefined") {
1137
+ const isSSL = "https:" === location.protocol;
1138
+ let port = location.port;
1139
+ if (!port) {
1140
+ port = isSSL ? "443" : "80";
1141
+ }
1142
+ this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port;
1143
+ this.xs = opts.secure !== isSSL;
1144
+ }
1145
+ const forceBase64 = opts && opts.forceBase64;
1146
+ this.supportsBinary = hasXHR2 && !forceBase64;
1147
+ }
1148
+ get name() {
1149
+ return "polling";
1150
+ }
1151
+ /**
1152
+ * Opens the socket (triggers polling). We write a PING message to determine
1153
+ * when the transport is open.
1154
+ *
1155
+ * @protected
1156
+ */
1157
+ doOpen() {
1158
+ this.poll();
1159
+ }
1160
+ /**
1161
+ * Pauses polling.
1162
+ *
1163
+ * @param {Function} onPause - callback upon buffers are flushed and transport is paused
1164
+ * @package
1165
+ */
1166
+ pause(onPause) {
1167
+ this.readyState = "pausing";
1168
+ const pause = /* @__PURE__ */ __name(() => {
1169
+ debug("paused");
1170
+ this.readyState = "paused";
1171
+ onPause();
1172
+ }, "pause");
1173
+ if (this.polling || !this.writable) {
1174
+ let total = 0;
1175
+ if (this.polling) {
1176
+ debug("we are currently polling - waiting to pause");
1177
+ total++;
1178
+ this.once("pollComplete", function() {
1179
+ debug("pre-pause polling complete");
1180
+ --total || pause();
1181
+ });
1182
+ }
1183
+ if (!this.writable) {
1184
+ debug("we are currently writing - waiting to pause");
1185
+ total++;
1186
+ this.once("drain", function() {
1187
+ debug("pre-pause writing complete");
1188
+ --total || pause();
1189
+ });
1190
+ }
1191
+ } else {
1192
+ pause();
1193
+ }
1194
+ }
1195
+ /**
1196
+ * Starts polling cycle.
1197
+ *
1198
+ * @private
1199
+ */
1200
+ poll() {
1201
+ debug("polling");
1202
+ this.polling = true;
1203
+ this.doPoll();
1204
+ this.emitReserved("poll");
1205
+ }
1206
+ /**
1207
+ * Overloads onData to detect payloads.
1208
+ *
1209
+ * @protected
1210
+ */
1211
+ onData(data) {
1212
+ debug("polling got data %s", data);
1213
+ const callback = /* @__PURE__ */ __name((packet) => {
1214
+ if ("opening" === this.readyState && packet.type === "open") {
1215
+ this.onOpen();
1216
+ }
1217
+ if ("close" === packet.type) {
1218
+ this.onClose({ description: "transport closed by the server" });
1219
+ return false;
1220
+ }
1221
+ this.onPacket(packet);
1222
+ }, "callback");
1223
+ (0, engine_io_parser_1.decodePayload)(data, this.socket.binaryType).forEach(callback);
1224
+ if ("closed" !== this.readyState) {
1225
+ this.polling = false;
1226
+ this.emitReserved("pollComplete");
1227
+ if ("open" === this.readyState) {
1228
+ this.poll();
1229
+ } else {
1230
+ debug('ignoring poll - transport state "%s"', this.readyState);
1231
+ }
1232
+ }
1233
+ }
1234
+ /**
1235
+ * For polling, send a close packet.
1236
+ *
1237
+ * @protected
1238
+ */
1239
+ doClose() {
1240
+ const close = /* @__PURE__ */ __name(() => {
1241
+ debug("writing close packet");
1242
+ this.write([{ type: "close" }]);
1243
+ }, "close");
1244
+ if ("open" === this.readyState) {
1245
+ debug("transport open - closing");
1246
+ close();
1247
+ } else {
1248
+ debug("transport not open - deferring close");
1249
+ this.once("open", close);
1250
+ }
1251
+ }
1252
+ /**
1253
+ * Writes a packets payload.
1254
+ *
1255
+ * @param {Array} packets - data packets
1256
+ * @protected
1257
+ */
1258
+ write(packets) {
1259
+ this.writable = false;
1260
+ (0, engine_io_parser_1.encodePayload)(packets, (data) => {
1261
+ this.doWrite(data, () => {
1262
+ this.writable = true;
1263
+ this.emitReserved("drain");
1264
+ });
1265
+ });
1266
+ }
1267
+ /**
1268
+ * Generates uri for connection.
1269
+ *
1270
+ * @private
1271
+ */
1272
+ uri() {
1273
+ let query = this.query || {};
1274
+ const schema = this.opts.secure ? "https" : "http";
1275
+ let port = "";
1276
+ if (false !== this.opts.timestampRequests) {
1277
+ query[this.opts.timestampParam] = (0, yeast_js_1.yeast)();
1278
+ }
1279
+ if (!this.supportsBinary && !query.sid) {
1280
+ query.b64 = 1;
1281
+ }
1282
+ if (this.opts.port && ("https" === schema && Number(this.opts.port) !== 443 || "http" === schema && Number(this.opts.port) !== 80)) {
1283
+ port = ":" + this.opts.port;
1284
+ }
1285
+ const encodedQuery = (0, parseqs_js_1.encode)(query);
1286
+ const ipv6 = this.opts.hostname.indexOf(":") !== -1;
1287
+ return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : "");
1288
+ }
1289
+ /**
1290
+ * Creates a request.
1291
+ *
1292
+ * @param {String} method
1293
+ * @private
1294
+ */
1295
+ request(opts = {}) {
1296
+ Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);
1297
+ return new Request(this.uri(), opts);
1298
+ }
1299
+ /**
1300
+ * Sends data.
1301
+ *
1302
+ * @param {String} data to send.
1303
+ * @param {Function} called upon flush.
1304
+ * @private
1305
+ */
1306
+ doWrite(data, fn) {
1307
+ const req = this.request({
1308
+ method: "POST",
1309
+ data
1310
+ });
1311
+ req.on("success", fn);
1312
+ req.on("error", (xhrStatus, context) => {
1313
+ this.onError("xhr post error", xhrStatus, context);
1314
+ });
1315
+ }
1316
+ /**
1317
+ * Starts a poll cycle.
1318
+ *
1319
+ * @private
1320
+ */
1321
+ doPoll() {
1322
+ debug("xhr poll");
1323
+ const req = this.request();
1324
+ req.on("data", this.onData.bind(this));
1325
+ req.on("error", (xhrStatus, context) => {
1326
+ this.onError("xhr poll error", xhrStatus, context);
1327
+ });
1328
+ this.pollXhr = req;
1329
+ }
1330
+ };
1331
+ __name(Polling, "Polling");
1332
+ exports.Polling = Polling;
1333
+ var Request = class extends component_emitter_1.Emitter {
1334
+ /**
1335
+ * Request constructor
1336
+ *
1337
+ * @param {Object} options
1338
+ * @package
1339
+ */
1340
+ constructor(uri, opts) {
1341
+ super();
1342
+ (0, util_js_1.installTimerFunctions)(this, opts);
1343
+ this.opts = opts;
1344
+ this.method = opts.method || "GET";
1345
+ this.uri = uri;
1346
+ this.async = false !== opts.async;
1347
+ this.data = void 0 !== opts.data ? opts.data : null;
1348
+ this.create();
1349
+ }
1350
+ /**
1351
+ * Creates the XHR object and sends the request.
1352
+ *
1353
+ * @private
1354
+ */
1355
+ create() {
1356
+ const opts = (0, util_js_1.pick)(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref");
1357
+ opts.xdomain = !!this.opts.xd;
1358
+ opts.xscheme = !!this.opts.xs;
1359
+ const xhr = this.xhr = new xmlhttprequest_js_1.XHR(opts);
1360
+ try {
1361
+ debug("xhr open %s: %s", this.method, this.uri);
1362
+ xhr.open(this.method, this.uri, this.async);
1363
+ try {
1364
+ if (this.opts.extraHeaders) {
1365
+ xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);
1366
+ for (let i in this.opts.extraHeaders) {
1367
+ if (this.opts.extraHeaders.hasOwnProperty(i)) {
1368
+ xhr.setRequestHeader(i, this.opts.extraHeaders[i]);
1369
+ }
1370
+ }
1371
+ }
1372
+ } catch (e) {
1373
+ }
1374
+ if ("POST" === this.method) {
1375
+ try {
1376
+ xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8");
1377
+ } catch (e) {
1378
+ }
1379
+ }
1380
+ try {
1381
+ xhr.setRequestHeader("Accept", "*/*");
1382
+ } catch (e) {
1383
+ }
1384
+ if ("withCredentials" in xhr) {
1385
+ xhr.withCredentials = this.opts.withCredentials;
1386
+ }
1387
+ if (this.opts.requestTimeout) {
1388
+ xhr.timeout = this.opts.requestTimeout;
1389
+ }
1390
+ xhr.onreadystatechange = () => {
1391
+ if (4 !== xhr.readyState)
1392
+ return;
1393
+ if (200 === xhr.status || 1223 === xhr.status) {
1394
+ this.onLoad();
1395
+ } else {
1396
+ this.setTimeoutFn(() => {
1397
+ this.onError(typeof xhr.status === "number" ? xhr.status : 0);
1398
+ }, 0);
1399
+ }
1400
+ };
1401
+ debug("xhr data %s", this.data);
1402
+ xhr.send(this.data);
1403
+ } catch (e) {
1404
+ this.setTimeoutFn(() => {
1405
+ this.onError(e);
1406
+ }, 0);
1407
+ return;
1408
+ }
1409
+ if (typeof document !== "undefined") {
1410
+ this.index = Request.requestsCount++;
1411
+ Request.requests[this.index] = this;
1412
+ }
1413
+ }
1414
+ /**
1415
+ * Called upon error.
1416
+ *
1417
+ * @private
1418
+ */
1419
+ onError(err) {
1420
+ this.emitReserved("error", err, this.xhr);
1421
+ this.cleanup(true);
1422
+ }
1423
+ /**
1424
+ * Cleans up house.
1425
+ *
1426
+ * @private
1427
+ */
1428
+ cleanup(fromError) {
1429
+ if ("undefined" === typeof this.xhr || null === this.xhr) {
1430
+ return;
1431
+ }
1432
+ this.xhr.onreadystatechange = empty;
1433
+ if (fromError) {
1434
+ try {
1435
+ this.xhr.abort();
1436
+ } catch (e) {
1437
+ }
1438
+ }
1439
+ if (typeof document !== "undefined") {
1440
+ delete Request.requests[this.index];
1441
+ }
1442
+ this.xhr = null;
1443
+ }
1444
+ /**
1445
+ * Called upon load.
1446
+ *
1447
+ * @private
1448
+ */
1449
+ onLoad() {
1450
+ const data = this.xhr.responseText;
1451
+ if (data !== null) {
1452
+ this.emitReserved("data", data);
1453
+ this.emitReserved("success");
1454
+ this.cleanup();
1455
+ }
1456
+ }
1457
+ /**
1458
+ * Aborts the request.
1459
+ *
1460
+ * @package
1461
+ */
1462
+ abort() {
1463
+ this.cleanup();
1464
+ }
1465
+ };
1466
+ __name(Request, "Request");
1467
+ exports.Request = Request;
1468
+ Request.requestsCount = 0;
1469
+ Request.requests = {};
1470
+ if (typeof document !== "undefined") {
1471
+ if (typeof attachEvent === "function") {
1472
+ attachEvent("onunload", unloadHandler);
1473
+ } else if (typeof addEventListener === "function") {
1474
+ const terminationEvent = "onpagehide" in globalThis_js_1.globalThisShim ? "pagehide" : "unload";
1475
+ addEventListener(terminationEvent, unloadHandler, false);
1476
+ }
1477
+ }
1478
+ function unloadHandler() {
1479
+ for (let i in Request.requests) {
1480
+ if (Request.requests.hasOwnProperty(i)) {
1481
+ Request.requests[i].abort();
1482
+ }
1483
+ }
1484
+ }
1485
+ __name(unloadHandler, "unloadHandler");
1486
+ }
1487
+ });
1488
+
1489
+ // node_modules/engine.io-client/build/cjs/transports/websocket-constructor.browser.js
1490
+ var require_websocket_constructor_browser = __commonJS({
1491
+ "node_modules/engine.io-client/build/cjs/transports/websocket-constructor.browser.js"(exports) {
1492
+ "use strict";
1493
+ Object.defineProperty(exports, "__esModule", { value: true });
1494
+ exports.defaultBinaryType = exports.usingBrowserWebSocket = exports.WebSocket = exports.nextTick = void 0;
1495
+ var globalThis_js_1 = require_globalThis_browser();
1496
+ exports.nextTick = (() => {
1497
+ const isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function";
1498
+ if (isPromiseAvailable) {
1499
+ return (cb) => Promise.resolve().then(cb);
1500
+ } else {
1501
+ return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);
1502
+ }
1503
+ })();
1504
+ exports.WebSocket = globalThis_js_1.globalThisShim.WebSocket || globalThis_js_1.globalThisShim.MozWebSocket;
1505
+ exports.usingBrowserWebSocket = true;
1506
+ exports.defaultBinaryType = "arraybuffer";
1507
+ }
1508
+ });
1509
+
1510
+ // node_modules/engine.io-client/build/cjs/transports/websocket.js
1511
+ var require_websocket = __commonJS({
1512
+ "node_modules/engine.io-client/build/cjs/transports/websocket.js"(exports) {
1513
+ "use strict";
1514
+ var __importDefault = exports && exports.__importDefault || function(mod) {
1515
+ return mod && mod.__esModule ? mod : { "default": mod };
1516
+ };
1517
+ Object.defineProperty(exports, "__esModule", { value: true });
1518
+ exports.WS = void 0;
1519
+ var transport_js_1 = require_transport();
1520
+ var parseqs_js_1 = require_parseqs();
1521
+ var yeast_js_1 = require_yeast();
1522
+ var util_js_1 = require_util();
1523
+ var websocket_constructor_js_1 = require_websocket_constructor_browser();
1524
+ var debug_1 = __importDefault(require_browser());
1525
+ var engine_io_parser_1 = require_cjs();
1526
+ var debug = (0, debug_1.default)("engine.io-client:websocket");
1527
+ var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative";
1528
+ var WS = class extends transport_js_1.Transport {
1529
+ /**
1530
+ * WebSocket transport constructor.
1531
+ *
1532
+ * @param {Object} opts - connection options
1533
+ * @protected
1534
+ */
1535
+ constructor(opts) {
1536
+ super(opts);
1537
+ this.supportsBinary = !opts.forceBase64;
1538
+ }
1539
+ get name() {
1540
+ return "websocket";
1541
+ }
1542
+ doOpen() {
1543
+ if (!this.check()) {
1544
+ return;
1545
+ }
1546
+ const uri = this.uri();
1547
+ const protocols = this.opts.protocols;
1548
+ const opts = isReactNative ? {} : (0, util_js_1.pick)(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity");
1549
+ if (this.opts.extraHeaders) {
1550
+ opts.headers = this.opts.extraHeaders;
1551
+ }
1552
+ try {
1553
+ this.ws = websocket_constructor_js_1.usingBrowserWebSocket && !isReactNative ? protocols ? new websocket_constructor_js_1.WebSocket(uri, protocols) : new websocket_constructor_js_1.WebSocket(uri) : new websocket_constructor_js_1.WebSocket(uri, protocols, opts);
1554
+ } catch (err) {
1555
+ return this.emitReserved("error", err);
1556
+ }
1557
+ this.ws.binaryType = this.socket.binaryType || websocket_constructor_js_1.defaultBinaryType;
1558
+ this.addEventListeners();
1559
+ }
1560
+ /**
1561
+ * Adds event listeners to the socket
1562
+ *
1563
+ * @private
1564
+ */
1565
+ addEventListeners() {
1566
+ this.ws.onopen = () => {
1567
+ if (this.opts.autoUnref) {
1568
+ this.ws._socket.unref();
1569
+ }
1570
+ this.onOpen();
1571
+ };
1572
+ this.ws.onclose = (closeEvent) => this.onClose({
1573
+ description: "websocket connection closed",
1574
+ context: closeEvent
1575
+ });
1576
+ this.ws.onmessage = (ev) => this.onData(ev.data);
1577
+ this.ws.onerror = (e) => this.onError("websocket error", e);
1578
+ }
1579
+ write(packets) {
1580
+ this.writable = false;
1581
+ for (let i = 0; i < packets.length; i++) {
1582
+ const packet = packets[i];
1583
+ const lastPacket = i === packets.length - 1;
1584
+ (0, engine_io_parser_1.encodePacket)(packet, this.supportsBinary, (data) => {
1585
+ const opts = {};
1586
+ if (!websocket_constructor_js_1.usingBrowserWebSocket) {
1587
+ if (packet.options) {
1588
+ opts.compress = packet.options.compress;
1589
+ }
1590
+ if (this.opts.perMessageDeflate) {
1591
+ const len = (
1592
+ // @ts-ignore
1593
+ "string" === typeof data ? Buffer.byteLength(data) : data.length
1594
+ );
1595
+ if (len < this.opts.perMessageDeflate.threshold) {
1596
+ opts.compress = false;
1597
+ }
1598
+ }
1599
+ }
1600
+ try {
1601
+ if (websocket_constructor_js_1.usingBrowserWebSocket) {
1602
+ this.ws.send(data);
1603
+ } else {
1604
+ this.ws.send(data, opts);
1605
+ }
1606
+ } catch (e) {
1607
+ debug("websocket closed before onclose event");
1608
+ }
1609
+ if (lastPacket) {
1610
+ (0, websocket_constructor_js_1.nextTick)(() => {
1611
+ this.writable = true;
1612
+ this.emitReserved("drain");
1613
+ }, this.setTimeoutFn);
1614
+ }
1615
+ });
1616
+ }
1617
+ }
1618
+ doClose() {
1619
+ if (typeof this.ws !== "undefined") {
1620
+ this.ws.close();
1621
+ this.ws = null;
1622
+ }
1623
+ }
1624
+ /**
1625
+ * Generates uri for connection.
1626
+ *
1627
+ * @private
1628
+ */
1629
+ uri() {
1630
+ let query = this.query || {};
1631
+ const schema = this.opts.secure ? "wss" : "ws";
1632
+ let port = "";
1633
+ if (this.opts.port && ("wss" === schema && Number(this.opts.port) !== 443 || "ws" === schema && Number(this.opts.port) !== 80)) {
1634
+ port = ":" + this.opts.port;
1635
+ }
1636
+ if (this.opts.timestampRequests) {
1637
+ query[this.opts.timestampParam] = (0, yeast_js_1.yeast)();
1638
+ }
1639
+ if (!this.supportsBinary) {
1640
+ query.b64 = 1;
1641
+ }
1642
+ const encodedQuery = (0, parseqs_js_1.encode)(query);
1643
+ const ipv6 = this.opts.hostname.indexOf(":") !== -1;
1644
+ return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : "");
1645
+ }
1646
+ /**
1647
+ * Feature detection for WebSocket.
1648
+ *
1649
+ * @return {Boolean} whether this transport is available.
1650
+ * @private
1651
+ */
1652
+ check() {
1653
+ return !!websocket_constructor_js_1.WebSocket;
1654
+ }
1655
+ };
1656
+ __name(WS, "WS");
1657
+ exports.WS = WS;
1658
+ }
1659
+ });
1660
+
1661
+ // node_modules/engine.io-client/build/cjs/transports/index.js
1662
+ var require_transports = __commonJS({
1663
+ "node_modules/engine.io-client/build/cjs/transports/index.js"(exports) {
1664
+ "use strict";
1665
+ Object.defineProperty(exports, "__esModule", { value: true });
1666
+ exports.transports = void 0;
1667
+ var polling_js_1 = require_polling();
1668
+ var websocket_js_1 = require_websocket();
1669
+ exports.transports = {
1670
+ websocket: websocket_js_1.WS,
1671
+ polling: polling_js_1.Polling
1672
+ };
1673
+ }
1674
+ });
1675
+
1676
+ // node_modules/engine.io-client/build/cjs/contrib/parseuri.js
1677
+ var require_parseuri = __commonJS({
1678
+ "node_modules/engine.io-client/build/cjs/contrib/parseuri.js"(exports) {
1679
+ "use strict";
1680
+ Object.defineProperty(exports, "__esModule", { value: true });
1681
+ exports.parse = void 0;
1682
+ var re = /^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
1683
+ var parts = [
1684
+ "source",
1685
+ "protocol",
1686
+ "authority",
1687
+ "userInfo",
1688
+ "user",
1689
+ "password",
1690
+ "host",
1691
+ "port",
1692
+ "relative",
1693
+ "path",
1694
+ "directory",
1695
+ "file",
1696
+ "query",
1697
+ "anchor"
1698
+ ];
1699
+ function parse(str) {
1700
+ const src = str, b = str.indexOf("["), e = str.indexOf("]");
1701
+ if (b != -1 && e != -1) {
1702
+ str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ";") + str.substring(e, str.length);
1703
+ }
1704
+ let m = re.exec(str || ""), uri = {}, i = 14;
1705
+ while (i--) {
1706
+ uri[parts[i]] = m[i] || "";
1707
+ }
1708
+ if (b != -1 && e != -1) {
1709
+ uri.source = src;
1710
+ uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ":");
1711
+ uri.authority = uri.authority.replace("[", "").replace("]", "").replace(/;/g, ":");
1712
+ uri.ipv6uri = true;
1713
+ }
1714
+ uri.pathNames = pathNames(uri, uri["path"]);
1715
+ uri.queryKey = queryKey(uri, uri["query"]);
1716
+ return uri;
1717
+ }
1718
+ __name(parse, "parse");
1719
+ exports.parse = parse;
1720
+ function pathNames(obj, path) {
1721
+ const regx = /\/{2,9}/g, names = path.replace(regx, "/").split("/");
1722
+ if (path.slice(0, 1) == "/" || path.length === 0) {
1723
+ names.splice(0, 1);
1724
+ }
1725
+ if (path.slice(-1) == "/") {
1726
+ names.splice(names.length - 1, 1);
1727
+ }
1728
+ return names;
1729
+ }
1730
+ __name(pathNames, "pathNames");
1731
+ function queryKey(uri, query) {
1732
+ const data = {};
1733
+ query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {
1734
+ if ($1) {
1735
+ data[$1] = $2;
1736
+ }
1737
+ });
1738
+ return data;
1739
+ }
1740
+ __name(queryKey, "queryKey");
1741
+ }
1742
+ });
1743
+
1744
+ // node_modules/engine.io-client/build/cjs/socket.js
1745
+ var require_socket = __commonJS({
1746
+ "node_modules/engine.io-client/build/cjs/socket.js"(exports) {
1747
+ "use strict";
1748
+ var __importDefault = exports && exports.__importDefault || function(mod) {
1749
+ return mod && mod.__esModule ? mod : { "default": mod };
1750
+ };
1751
+ Object.defineProperty(exports, "__esModule", { value: true });
1752
+ exports.Socket = void 0;
1753
+ var index_js_1 = require_transports();
1754
+ var util_js_1 = require_util();
1755
+ var parseqs_js_1 = require_parseqs();
1756
+ var parseuri_js_1 = require_parseuri();
1757
+ var debug_1 = __importDefault(require_browser());
1758
+ var component_emitter_1 = require_component_emitter();
1759
+ var engine_io_parser_1 = require_cjs();
1760
+ var debug = (0, debug_1.default)("engine.io-client:socket");
1761
+ var Socket = class extends component_emitter_1.Emitter {
1762
+ /**
1763
+ * Socket constructor.
1764
+ *
1765
+ * @param {String|Object} uri - uri or options
1766
+ * @param {Object} opts - options
1767
+ */
1768
+ constructor(uri, opts = {}) {
1769
+ super();
1770
+ this.writeBuffer = [];
1771
+ if (uri && "object" === typeof uri) {
1772
+ opts = uri;
1773
+ uri = null;
1774
+ }
1775
+ if (uri) {
1776
+ uri = (0, parseuri_js_1.parse)(uri);
1777
+ opts.hostname = uri.host;
1778
+ opts.secure = uri.protocol === "https" || uri.protocol === "wss";
1779
+ opts.port = uri.port;
1780
+ if (uri.query)
1781
+ opts.query = uri.query;
1782
+ } else if (opts.host) {
1783
+ opts.hostname = (0, parseuri_js_1.parse)(opts.host).host;
1784
+ }
1785
+ (0, util_js_1.installTimerFunctions)(this, opts);
1786
+ this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol;
1787
+ if (opts.hostname && !opts.port) {
1788
+ opts.port = this.secure ? "443" : "80";
1789
+ }
1790
+ this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost");
1791
+ this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : this.secure ? "443" : "80");
1792
+ this.transports = opts.transports || ["polling", "websocket"];
1793
+ this.writeBuffer = [];
1794
+ this.prevBufferLen = 0;
1795
+ this.opts = Object.assign({
1796
+ path: "/engine.io",
1797
+ agent: false,
1798
+ withCredentials: false,
1799
+ upgrade: true,
1800
+ timestampParam: "t",
1801
+ rememberUpgrade: false,
1802
+ addTrailingSlash: true,
1803
+ rejectUnauthorized: true,
1804
+ perMessageDeflate: {
1805
+ threshold: 1024
1806
+ },
1807
+ transportOptions: {},
1808
+ closeOnBeforeunload: true
1809
+ }, opts);
1810
+ this.opts.path = this.opts.path.replace(/\/$/, "") + (this.opts.addTrailingSlash ? "/" : "");
1811
+ if (typeof this.opts.query === "string") {
1812
+ this.opts.query = (0, parseqs_js_1.decode)(this.opts.query);
1813
+ }
1814
+ this.id = null;
1815
+ this.upgrades = null;
1816
+ this.pingInterval = null;
1817
+ this.pingTimeout = null;
1818
+ this.pingTimeoutTimer = null;
1819
+ if (typeof addEventListener === "function") {
1820
+ if (this.opts.closeOnBeforeunload) {
1821
+ this.beforeunloadEventListener = () => {
1822
+ if (this.transport) {
1823
+ this.transport.removeAllListeners();
1824
+ this.transport.close();
1825
+ }
1826
+ };
1827
+ addEventListener("beforeunload", this.beforeunloadEventListener, false);
1828
+ }
1829
+ if (this.hostname !== "localhost") {
1830
+ this.offlineEventListener = () => {
1831
+ this.onClose("transport close", {
1832
+ description: "network connection lost"
1833
+ });
1834
+ };
1835
+ addEventListener("offline", this.offlineEventListener, false);
1836
+ }
1837
+ }
1838
+ this.open();
1839
+ }
1840
+ /**
1841
+ * Creates transport of the given type.
1842
+ *
1843
+ * @param {String} name - transport name
1844
+ * @return {Transport}
1845
+ * @private
1846
+ */
1847
+ createTransport(name) {
1848
+ debug('creating transport "%s"', name);
1849
+ const query = Object.assign({}, this.opts.query);
1850
+ query.EIO = engine_io_parser_1.protocol;
1851
+ query.transport = name;
1852
+ if (this.id)
1853
+ query.sid = this.id;
1854
+ const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {
1855
+ query,
1856
+ socket: this,
1857
+ hostname: this.hostname,
1858
+ secure: this.secure,
1859
+ port: this.port
1860
+ });
1861
+ debug("options: %j", opts);
1862
+ return new index_js_1.transports[name](opts);
1863
+ }
1864
+ /**
1865
+ * Initializes transport to use and starts probe.
1866
+ *
1867
+ * @private
1868
+ */
1869
+ open() {
1870
+ let transport;
1871
+ if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) {
1872
+ transport = "websocket";
1873
+ } else if (0 === this.transports.length) {
1874
+ this.setTimeoutFn(() => {
1875
+ this.emitReserved("error", "No transports available");
1876
+ }, 0);
1877
+ return;
1878
+ } else {
1879
+ transport = this.transports[0];
1880
+ }
1881
+ this.readyState = "opening";
1882
+ try {
1883
+ transport = this.createTransport(transport);
1884
+ } catch (e) {
1885
+ debug("error while creating transport: %s", e);
1886
+ this.transports.shift();
1887
+ this.open();
1888
+ return;
1889
+ }
1890
+ transport.open();
1891
+ this.setTransport(transport);
1892
+ }
1893
+ /**
1894
+ * Sets the current transport. Disables the existing one (if any).
1895
+ *
1896
+ * @private
1897
+ */
1898
+ setTransport(transport) {
1899
+ debug("setting transport %s", transport.name);
1900
+ if (this.transport) {
1901
+ debug("clearing existing transport %s", this.transport.name);
1902
+ this.transport.removeAllListeners();
1903
+ }
1904
+ this.transport = transport;
1905
+ transport.on("drain", this.onDrain.bind(this)).on("packet", this.onPacket.bind(this)).on("error", this.onError.bind(this)).on("close", (reason) => this.onClose("transport close", reason));
1906
+ }
1907
+ /**
1908
+ * Probes a transport.
1909
+ *
1910
+ * @param {String} name - transport name
1911
+ * @private
1912
+ */
1913
+ probe(name) {
1914
+ debug('probing transport "%s"', name);
1915
+ let transport = this.createTransport(name);
1916
+ let failed = false;
1917
+ Socket.priorWebsocketSuccess = false;
1918
+ const onTransportOpen = /* @__PURE__ */ __name(() => {
1919
+ if (failed)
1920
+ return;
1921
+ debug('probe transport "%s" opened', name);
1922
+ transport.send([{ type: "ping", data: "probe" }]);
1923
+ transport.once("packet", (msg) => {
1924
+ if (failed)
1925
+ return;
1926
+ if ("pong" === msg.type && "probe" === msg.data) {
1927
+ debug('probe transport "%s" pong', name);
1928
+ this.upgrading = true;
1929
+ this.emitReserved("upgrading", transport);
1930
+ if (!transport)
1931
+ return;
1932
+ Socket.priorWebsocketSuccess = "websocket" === transport.name;
1933
+ debug('pausing current transport "%s"', this.transport.name);
1934
+ this.transport.pause(() => {
1935
+ if (failed)
1936
+ return;
1937
+ if ("closed" === this.readyState)
1938
+ return;
1939
+ debug("changing transport and sending upgrade packet");
1940
+ cleanup();
1941
+ this.setTransport(transport);
1942
+ transport.send([{ type: "upgrade" }]);
1943
+ this.emitReserved("upgrade", transport);
1944
+ transport = null;
1945
+ this.upgrading = false;
1946
+ this.flush();
1947
+ });
1948
+ } else {
1949
+ debug('probe transport "%s" failed', name);
1950
+ const err = new Error("probe error");
1951
+ err.transport = transport.name;
1952
+ this.emitReserved("upgradeError", err);
1953
+ }
1954
+ });
1955
+ }, "onTransportOpen");
1956
+ function freezeTransport() {
1957
+ if (failed)
1958
+ return;
1959
+ failed = true;
1960
+ cleanup();
1961
+ transport.close();
1962
+ transport = null;
1963
+ }
1964
+ __name(freezeTransport, "freezeTransport");
1965
+ const onerror = /* @__PURE__ */ __name((err) => {
1966
+ const error = new Error("probe error: " + err);
1967
+ error.transport = transport.name;
1968
+ freezeTransport();
1969
+ debug('probe transport "%s" failed because of error: %s', name, err);
1970
+ this.emitReserved("upgradeError", error);
1971
+ }, "onerror");
1972
+ function onTransportClose() {
1973
+ onerror("transport closed");
1974
+ }
1975
+ __name(onTransportClose, "onTransportClose");
1976
+ function onclose() {
1977
+ onerror("socket closed");
1978
+ }
1979
+ __name(onclose, "onclose");
1980
+ function onupgrade(to) {
1981
+ if (transport && to.name !== transport.name) {
1982
+ debug('"%s" works - aborting "%s"', to.name, transport.name);
1983
+ freezeTransport();
1984
+ }
1985
+ }
1986
+ __name(onupgrade, "onupgrade");
1987
+ const cleanup = /* @__PURE__ */ __name(() => {
1988
+ transport.removeListener("open", onTransportOpen);
1989
+ transport.removeListener("error", onerror);
1990
+ transport.removeListener("close", onTransportClose);
1991
+ this.off("close", onclose);
1992
+ this.off("upgrading", onupgrade);
1993
+ }, "cleanup");
1994
+ transport.once("open", onTransportOpen);
1995
+ transport.once("error", onerror);
1996
+ transport.once("close", onTransportClose);
1997
+ this.once("close", onclose);
1998
+ this.once("upgrading", onupgrade);
1999
+ transport.open();
2000
+ }
2001
+ /**
2002
+ * Called when connection is deemed open.
2003
+ *
2004
+ * @private
2005
+ */
2006
+ onOpen() {
2007
+ debug("socket open");
2008
+ this.readyState = "open";
2009
+ Socket.priorWebsocketSuccess = "websocket" === this.transport.name;
2010
+ this.emitReserved("open");
2011
+ this.flush();
2012
+ if ("open" === this.readyState && this.opts.upgrade) {
2013
+ debug("starting upgrade probes");
2014
+ let i = 0;
2015
+ const l = this.upgrades.length;
2016
+ for (; i < l; i++) {
2017
+ this.probe(this.upgrades[i]);
2018
+ }
2019
+ }
2020
+ }
2021
+ /**
2022
+ * Handles a packet.
2023
+ *
2024
+ * @private
2025
+ */
2026
+ onPacket(packet) {
2027
+ if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
2028
+ debug('socket receive: type "%s", data "%s"', packet.type, packet.data);
2029
+ this.emitReserved("packet", packet);
2030
+ this.emitReserved("heartbeat");
2031
+ switch (packet.type) {
2032
+ case "open":
2033
+ this.onHandshake(JSON.parse(packet.data));
2034
+ break;
2035
+ case "ping":
2036
+ this.resetPingTimeout();
2037
+ this.sendPacket("pong");
2038
+ this.emitReserved("ping");
2039
+ this.emitReserved("pong");
2040
+ break;
2041
+ case "error":
2042
+ const err = new Error("server error");
2043
+ err.code = packet.data;
2044
+ this.onError(err);
2045
+ break;
2046
+ case "message":
2047
+ this.emitReserved("data", packet.data);
2048
+ this.emitReserved("message", packet.data);
2049
+ break;
2050
+ }
2051
+ } else {
2052
+ debug('packet received with socket readyState "%s"', this.readyState);
2053
+ }
2054
+ }
2055
+ /**
2056
+ * Called upon handshake completion.
2057
+ *
2058
+ * @param {Object} data - handshake obj
2059
+ * @private
2060
+ */
2061
+ onHandshake(data) {
2062
+ this.emitReserved("handshake", data);
2063
+ this.id = data.sid;
2064
+ this.transport.query.sid = data.sid;
2065
+ this.upgrades = this.filterUpgrades(data.upgrades);
2066
+ this.pingInterval = data.pingInterval;
2067
+ this.pingTimeout = data.pingTimeout;
2068
+ this.maxPayload = data.maxPayload;
2069
+ this.onOpen();
2070
+ if ("closed" === this.readyState)
2071
+ return;
2072
+ this.resetPingTimeout();
2073
+ }
2074
+ /**
2075
+ * Sets and resets ping timeout timer based on server pings.
2076
+ *
2077
+ * @private
2078
+ */
2079
+ resetPingTimeout() {
2080
+ this.clearTimeoutFn(this.pingTimeoutTimer);
2081
+ this.pingTimeoutTimer = this.setTimeoutFn(() => {
2082
+ this.onClose("ping timeout");
2083
+ }, this.pingInterval + this.pingTimeout);
2084
+ if (this.opts.autoUnref) {
2085
+ this.pingTimeoutTimer.unref();
2086
+ }
2087
+ }
2088
+ /**
2089
+ * Called on `drain` event
2090
+ *
2091
+ * @private
2092
+ */
2093
+ onDrain() {
2094
+ this.writeBuffer.splice(0, this.prevBufferLen);
2095
+ this.prevBufferLen = 0;
2096
+ if (0 === this.writeBuffer.length) {
2097
+ this.emitReserved("drain");
2098
+ } else {
2099
+ this.flush();
2100
+ }
2101
+ }
2102
+ /**
2103
+ * Flush write buffers.
2104
+ *
2105
+ * @private
2106
+ */
2107
+ flush() {
2108
+ if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {
2109
+ const packets = this.getWritablePackets();
2110
+ debug("flushing %d packets in socket", packets.length);
2111
+ this.transport.send(packets);
2112
+ this.prevBufferLen = packets.length;
2113
+ this.emitReserved("flush");
2114
+ }
2115
+ }
2116
+ /**
2117
+ * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP
2118
+ * long-polling)
2119
+ *
2120
+ * @private
2121
+ */
2122
+ getWritablePackets() {
2123
+ const shouldCheckPayloadSize = this.maxPayload && this.transport.name === "polling" && this.writeBuffer.length > 1;
2124
+ if (!shouldCheckPayloadSize) {
2125
+ return this.writeBuffer;
2126
+ }
2127
+ let payloadSize = 1;
2128
+ for (let i = 0; i < this.writeBuffer.length; i++) {
2129
+ const data = this.writeBuffer[i].data;
2130
+ if (data) {
2131
+ payloadSize += (0, util_js_1.byteLength)(data);
2132
+ }
2133
+ if (i > 0 && payloadSize > this.maxPayload) {
2134
+ debug("only send %d out of %d packets", i, this.writeBuffer.length);
2135
+ return this.writeBuffer.slice(0, i);
2136
+ }
2137
+ payloadSize += 2;
2138
+ }
2139
+ debug("payload size is %d (max: %d)", payloadSize, this.maxPayload);
2140
+ return this.writeBuffer;
2141
+ }
2142
+ /**
2143
+ * Sends a message.
2144
+ *
2145
+ * @param {String} msg - message.
2146
+ * @param {Object} options.
2147
+ * @param {Function} callback function.
2148
+ * @return {Socket} for chaining.
2149
+ */
2150
+ write(msg, options, fn) {
2151
+ this.sendPacket("message", msg, options, fn);
2152
+ return this;
2153
+ }
2154
+ send(msg, options, fn) {
2155
+ this.sendPacket("message", msg, options, fn);
2156
+ return this;
2157
+ }
2158
+ /**
2159
+ * Sends a packet.
2160
+ *
2161
+ * @param {String} type: packet type.
2162
+ * @param {String} data.
2163
+ * @param {Object} options.
2164
+ * @param {Function} fn - callback function.
2165
+ * @private
2166
+ */
2167
+ sendPacket(type, data, options, fn) {
2168
+ if ("function" === typeof data) {
2169
+ fn = data;
2170
+ data = void 0;
2171
+ }
2172
+ if ("function" === typeof options) {
2173
+ fn = options;
2174
+ options = null;
2175
+ }
2176
+ if ("closing" === this.readyState || "closed" === this.readyState) {
2177
+ return;
2178
+ }
2179
+ options = options || {};
2180
+ options.compress = false !== options.compress;
2181
+ const packet = {
2182
+ type,
2183
+ data,
2184
+ options
2185
+ };
2186
+ this.emitReserved("packetCreate", packet);
2187
+ this.writeBuffer.push(packet);
2188
+ if (fn)
2189
+ this.once("flush", fn);
2190
+ this.flush();
2191
+ }
2192
+ /**
2193
+ * Closes the connection.
2194
+ */
2195
+ close() {
2196
+ const close = /* @__PURE__ */ __name(() => {
2197
+ this.onClose("forced close");
2198
+ debug("socket closing - telling transport to close");
2199
+ this.transport.close();
2200
+ }, "close");
2201
+ const cleanupAndClose = /* @__PURE__ */ __name(() => {
2202
+ this.off("upgrade", cleanupAndClose);
2203
+ this.off("upgradeError", cleanupAndClose);
2204
+ close();
2205
+ }, "cleanupAndClose");
2206
+ const waitForUpgrade = /* @__PURE__ */ __name(() => {
2207
+ this.once("upgrade", cleanupAndClose);
2208
+ this.once("upgradeError", cleanupAndClose);
2209
+ }, "waitForUpgrade");
2210
+ if ("opening" === this.readyState || "open" === this.readyState) {
2211
+ this.readyState = "closing";
2212
+ if (this.writeBuffer.length) {
2213
+ this.once("drain", () => {
2214
+ if (this.upgrading) {
2215
+ waitForUpgrade();
2216
+ } else {
2217
+ close();
2218
+ }
2219
+ });
2220
+ } else if (this.upgrading) {
2221
+ waitForUpgrade();
2222
+ } else {
2223
+ close();
2224
+ }
2225
+ }
2226
+ return this;
2227
+ }
2228
+ /**
2229
+ * Called upon transport error
2230
+ *
2231
+ * @private
2232
+ */
2233
+ onError(err) {
2234
+ debug("socket error %j", err);
2235
+ Socket.priorWebsocketSuccess = false;
2236
+ this.emitReserved("error", err);
2237
+ this.onClose("transport error", err);
2238
+ }
2239
+ /**
2240
+ * Called upon transport close.
2241
+ *
2242
+ * @private
2243
+ */
2244
+ onClose(reason, description) {
2245
+ if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
2246
+ debug('socket close with reason: "%s"', reason);
2247
+ this.clearTimeoutFn(this.pingTimeoutTimer);
2248
+ this.transport.removeAllListeners("close");
2249
+ this.transport.close();
2250
+ this.transport.removeAllListeners();
2251
+ if (typeof removeEventListener === "function") {
2252
+ removeEventListener("beforeunload", this.beforeunloadEventListener, false);
2253
+ removeEventListener("offline", this.offlineEventListener, false);
2254
+ }
2255
+ this.readyState = "closed";
2256
+ this.id = null;
2257
+ this.emitReserved("close", reason, description);
2258
+ this.writeBuffer = [];
2259
+ this.prevBufferLen = 0;
2260
+ }
2261
+ }
2262
+ /**
2263
+ * Filters upgrades, returning only those matching client transports.
2264
+ *
2265
+ * @param {Array} upgrades - server upgrades
2266
+ * @private
2267
+ */
2268
+ filterUpgrades(upgrades) {
2269
+ const filteredUpgrades = [];
2270
+ let i = 0;
2271
+ const j = upgrades.length;
2272
+ for (; i < j; i++) {
2273
+ if (~this.transports.indexOf(upgrades[i]))
2274
+ filteredUpgrades.push(upgrades[i]);
2275
+ }
2276
+ return filteredUpgrades;
2277
+ }
2278
+ };
2279
+ __name(Socket, "Socket");
2280
+ exports.Socket = Socket;
2281
+ Socket.protocol = engine_io_parser_1.protocol;
2282
+ }
2283
+ });
2284
+
2285
+ // node_modules/engine.io-client/build/cjs/index.js
2286
+ var require_cjs2 = __commonJS({
2287
+ "node_modules/engine.io-client/build/cjs/index.js"(exports) {
2288
+ "use strict";
2289
+ Object.defineProperty(exports, "__esModule", { value: true });
2290
+ exports.nextTick = exports.parse = exports.installTimerFunctions = exports.transports = exports.Transport = exports.protocol = exports.Socket = void 0;
2291
+ var socket_js_1 = require_socket();
2292
+ Object.defineProperty(exports, "Socket", { enumerable: true, get: function() {
2293
+ return socket_js_1.Socket;
2294
+ } });
2295
+ exports.protocol = socket_js_1.Socket.protocol;
2296
+ var transport_js_1 = require_transport();
2297
+ Object.defineProperty(exports, "Transport", { enumerable: true, get: function() {
2298
+ return transport_js_1.Transport;
2299
+ } });
2300
+ var index_js_1 = require_transports();
2301
+ Object.defineProperty(exports, "transports", { enumerable: true, get: function() {
2302
+ return index_js_1.transports;
2303
+ } });
2304
+ var util_js_1 = require_util();
2305
+ Object.defineProperty(exports, "installTimerFunctions", { enumerable: true, get: function() {
2306
+ return util_js_1.installTimerFunctions;
2307
+ } });
2308
+ var parseuri_js_1 = require_parseuri();
2309
+ Object.defineProperty(exports, "parse", { enumerable: true, get: function() {
2310
+ return parseuri_js_1.parse;
2311
+ } });
2312
+ var websocket_constructor_js_1 = require_websocket_constructor_browser();
2313
+ Object.defineProperty(exports, "nextTick", { enumerable: true, get: function() {
2314
+ return websocket_constructor_js_1.nextTick;
2315
+ } });
2316
+ }
2317
+ });
2318
+
2319
+ // node_modules/socket.io-client/build/cjs/url.js
2320
+ var require_url = __commonJS({
2321
+ "node_modules/socket.io-client/build/cjs/url.js"(exports) {
2322
+ "use strict";
2323
+ var __importDefault = exports && exports.__importDefault || function(mod) {
2324
+ return mod && mod.__esModule ? mod : { "default": mod };
2325
+ };
2326
+ Object.defineProperty(exports, "__esModule", { value: true });
2327
+ exports.url = void 0;
2328
+ var engine_io_client_1 = require_cjs2();
2329
+ var debug_1 = __importDefault(require_browser());
2330
+ var debug = debug_1.default("socket.io-client:url");
2331
+ function url(uri, path = "", loc) {
2332
+ let obj = uri;
2333
+ loc = loc || typeof location !== "undefined" && location;
2334
+ if (null == uri)
2335
+ uri = loc.protocol + "//" + loc.host;
2336
+ if (typeof uri === "string") {
2337
+ if ("/" === uri.charAt(0)) {
2338
+ if ("/" === uri.charAt(1)) {
2339
+ uri = loc.protocol + uri;
2340
+ } else {
2341
+ uri = loc.host + uri;
2342
+ }
2343
+ }
2344
+ if (!/^(https?|wss?):\/\//.test(uri)) {
2345
+ debug("protocol-less url %s", uri);
2346
+ if ("undefined" !== typeof loc) {
2347
+ uri = loc.protocol + "//" + uri;
2348
+ } else {
2349
+ uri = "https://" + uri;
2350
+ }
2351
+ }
2352
+ debug("parse %s", uri);
2353
+ obj = engine_io_client_1.parse(uri);
2354
+ }
2355
+ if (!obj.port) {
2356
+ if (/^(http|ws)$/.test(obj.protocol)) {
2357
+ obj.port = "80";
2358
+ } else if (/^(http|ws)s$/.test(obj.protocol)) {
2359
+ obj.port = "443";
2360
+ }
2361
+ }
2362
+ obj.path = obj.path || "/";
2363
+ const ipv6 = obj.host.indexOf(":") !== -1;
2364
+ const host = ipv6 ? "[" + obj.host + "]" : obj.host;
2365
+ obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
2366
+ obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port);
2367
+ return obj;
2368
+ }
2369
+ __name(url, "url");
2370
+ exports.url = url;
2371
+ }
2372
+ });
2373
+
2374
+ // node_modules/socket.io-parser/build/cjs/is-binary.js
2375
+ var require_is_binary = __commonJS({
2376
+ "node_modules/socket.io-parser/build/cjs/is-binary.js"(exports) {
2377
+ "use strict";
2378
+ Object.defineProperty(exports, "__esModule", { value: true });
2379
+ exports.hasBinary = exports.isBinary = void 0;
2380
+ var withNativeArrayBuffer = typeof ArrayBuffer === "function";
2381
+ var isView = /* @__PURE__ */ __name((obj) => {
2382
+ return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;
2383
+ }, "isView");
2384
+ var toString = Object.prototype.toString;
2385
+ var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && toString.call(Blob) === "[object BlobConstructor]";
2386
+ var withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString.call(File) === "[object FileConstructor]";
2387
+ function isBinary(obj) {
2388
+ return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File;
2389
+ }
2390
+ __name(isBinary, "isBinary");
2391
+ exports.isBinary = isBinary;
2392
+ function hasBinary(obj, toJSON) {
2393
+ if (!obj || typeof obj !== "object") {
2394
+ return false;
2395
+ }
2396
+ if (Array.isArray(obj)) {
2397
+ for (let i = 0, l = obj.length; i < l; i++) {
2398
+ if (hasBinary(obj[i])) {
2399
+ return true;
2400
+ }
2401
+ }
2402
+ return false;
2403
+ }
2404
+ if (isBinary(obj)) {
2405
+ return true;
2406
+ }
2407
+ if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 1) {
2408
+ return hasBinary(obj.toJSON(), true);
2409
+ }
2410
+ for (const key in obj) {
2411
+ if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {
2412
+ return true;
2413
+ }
2414
+ }
2415
+ return false;
2416
+ }
2417
+ __name(hasBinary, "hasBinary");
2418
+ exports.hasBinary = hasBinary;
2419
+ }
2420
+ });
2421
+
2422
+ // node_modules/socket.io-parser/build/cjs/binary.js
2423
+ var require_binary = __commonJS({
2424
+ "node_modules/socket.io-parser/build/cjs/binary.js"(exports) {
2425
+ "use strict";
2426
+ Object.defineProperty(exports, "__esModule", { value: true });
2427
+ exports.reconstructPacket = exports.deconstructPacket = void 0;
2428
+ var is_binary_js_1 = require_is_binary();
2429
+ function deconstructPacket(packet) {
2430
+ const buffers = [];
2431
+ const packetData = packet.data;
2432
+ const pack = packet;
2433
+ pack.data = _deconstructPacket(packetData, buffers);
2434
+ pack.attachments = buffers.length;
2435
+ return { packet: pack, buffers };
2436
+ }
2437
+ __name(deconstructPacket, "deconstructPacket");
2438
+ exports.deconstructPacket = deconstructPacket;
2439
+ function _deconstructPacket(data, buffers) {
2440
+ if (!data)
2441
+ return data;
2442
+ if ((0, is_binary_js_1.isBinary)(data)) {
2443
+ const placeholder = { _placeholder: true, num: buffers.length };
2444
+ buffers.push(data);
2445
+ return placeholder;
2446
+ } else if (Array.isArray(data)) {
2447
+ const newData = new Array(data.length);
2448
+ for (let i = 0; i < data.length; i++) {
2449
+ newData[i] = _deconstructPacket(data[i], buffers);
2450
+ }
2451
+ return newData;
2452
+ } else if (typeof data === "object" && !(data instanceof Date)) {
2453
+ const newData = {};
2454
+ for (const key in data) {
2455
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
2456
+ newData[key] = _deconstructPacket(data[key], buffers);
2457
+ }
2458
+ }
2459
+ return newData;
2460
+ }
2461
+ return data;
2462
+ }
2463
+ __name(_deconstructPacket, "_deconstructPacket");
2464
+ function reconstructPacket(packet, buffers) {
2465
+ packet.data = _reconstructPacket(packet.data, buffers);
2466
+ delete packet.attachments;
2467
+ return packet;
2468
+ }
2469
+ __name(reconstructPacket, "reconstructPacket");
2470
+ exports.reconstructPacket = reconstructPacket;
2471
+ function _reconstructPacket(data, buffers) {
2472
+ if (!data)
2473
+ return data;
2474
+ if (data && data._placeholder === true) {
2475
+ const isIndexValid = typeof data.num === "number" && data.num >= 0 && data.num < buffers.length;
2476
+ if (isIndexValid) {
2477
+ return buffers[data.num];
2478
+ } else {
2479
+ throw new Error("illegal attachments");
2480
+ }
2481
+ } else if (Array.isArray(data)) {
2482
+ for (let i = 0; i < data.length; i++) {
2483
+ data[i] = _reconstructPacket(data[i], buffers);
2484
+ }
2485
+ } else if (typeof data === "object") {
2486
+ for (const key in data) {
2487
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
2488
+ data[key] = _reconstructPacket(data[key], buffers);
2489
+ }
2490
+ }
2491
+ }
2492
+ return data;
2493
+ }
2494
+ __name(_reconstructPacket, "_reconstructPacket");
2495
+ }
2496
+ });
2497
+
2498
+ // node_modules/socket.io-parser/build/cjs/index.js
2499
+ var require_cjs3 = __commonJS({
2500
+ "node_modules/socket.io-parser/build/cjs/index.js"(exports) {
2501
+ "use strict";
2502
+ Object.defineProperty(exports, "__esModule", { value: true });
2503
+ exports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;
2504
+ var component_emitter_1 = require_component_emitter();
2505
+ var binary_js_1 = require_binary();
2506
+ var is_binary_js_1 = require_is_binary();
2507
+ var debug_1 = require_browser();
2508
+ var debug = (0, debug_1.default)("socket.io-parser");
2509
+ var RESERVED_EVENTS = [
2510
+ "connect",
2511
+ "connect_error",
2512
+ "disconnect",
2513
+ "disconnecting",
2514
+ "newListener",
2515
+ "removeListener"
2516
+ // used by the Node.js EventEmitter
2517
+ ];
2518
+ exports.protocol = 5;
2519
+ var PacketType;
2520
+ (function(PacketType2) {
2521
+ PacketType2[PacketType2["CONNECT"] = 0] = "CONNECT";
2522
+ PacketType2[PacketType2["DISCONNECT"] = 1] = "DISCONNECT";
2523
+ PacketType2[PacketType2["EVENT"] = 2] = "EVENT";
2524
+ PacketType2[PacketType2["ACK"] = 3] = "ACK";
2525
+ PacketType2[PacketType2["CONNECT_ERROR"] = 4] = "CONNECT_ERROR";
2526
+ PacketType2[PacketType2["BINARY_EVENT"] = 5] = "BINARY_EVENT";
2527
+ PacketType2[PacketType2["BINARY_ACK"] = 6] = "BINARY_ACK";
2528
+ })(PacketType = exports.PacketType || (exports.PacketType = {}));
2529
+ var Encoder = class {
2530
+ /**
2531
+ * Encoder constructor
2532
+ *
2533
+ * @param {function} replacer - custom replacer to pass down to JSON.parse
2534
+ */
2535
+ constructor(replacer) {
2536
+ this.replacer = replacer;
2537
+ }
2538
+ /**
2539
+ * Encode a packet as a single string if non-binary, or as a
2540
+ * buffer sequence, depending on packet type.
2541
+ *
2542
+ * @param {Object} obj - packet object
2543
+ */
2544
+ encode(obj) {
2545
+ debug("encoding packet %j", obj);
2546
+ if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {
2547
+ if ((0, is_binary_js_1.hasBinary)(obj)) {
2548
+ return this.encodeAsBinary({
2549
+ type: obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK,
2550
+ nsp: obj.nsp,
2551
+ data: obj.data,
2552
+ id: obj.id
2553
+ });
2554
+ }
2555
+ }
2556
+ return [this.encodeAsString(obj)];
2557
+ }
2558
+ /**
2559
+ * Encode packet as string.
2560
+ */
2561
+ encodeAsString(obj) {
2562
+ let str = "" + obj.type;
2563
+ if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {
2564
+ str += obj.attachments + "-";
2565
+ }
2566
+ if (obj.nsp && "/" !== obj.nsp) {
2567
+ str += obj.nsp + ",";
2568
+ }
2569
+ if (null != obj.id) {
2570
+ str += obj.id;
2571
+ }
2572
+ if (null != obj.data) {
2573
+ str += JSON.stringify(obj.data, this.replacer);
2574
+ }
2575
+ debug("encoded %j as %s", obj, str);
2576
+ return str;
2577
+ }
2578
+ /**
2579
+ * Encode packet as 'buffer sequence' by removing blobs, and
2580
+ * deconstructing packet into object with placeholders and
2581
+ * a list of buffers.
2582
+ */
2583
+ encodeAsBinary(obj) {
2584
+ const deconstruction = (0, binary_js_1.deconstructPacket)(obj);
2585
+ const pack = this.encodeAsString(deconstruction.packet);
2586
+ const buffers = deconstruction.buffers;
2587
+ buffers.unshift(pack);
2588
+ return buffers;
2589
+ }
2590
+ };
2591
+ __name(Encoder, "Encoder");
2592
+ exports.Encoder = Encoder;
2593
+ function isObject(value) {
2594
+ return Object.prototype.toString.call(value) === "[object Object]";
2595
+ }
2596
+ __name(isObject, "isObject");
2597
+ var Decoder = class extends component_emitter_1.Emitter {
2598
+ /**
2599
+ * Decoder constructor
2600
+ *
2601
+ * @param {function} reviver - custom reviver to pass down to JSON.stringify
2602
+ */
2603
+ constructor(reviver) {
2604
+ super();
2605
+ this.reviver = reviver;
2606
+ }
2607
+ /**
2608
+ * Decodes an encoded packet string into packet JSON.
2609
+ *
2610
+ * @param {String} obj - encoded packet
2611
+ */
2612
+ add(obj) {
2613
+ let packet;
2614
+ if (typeof obj === "string") {
2615
+ if (this.reconstructor) {
2616
+ throw new Error("got plaintext data when reconstructing a packet");
2617
+ }
2618
+ packet = this.decodeString(obj);
2619
+ const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;
2620
+ if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {
2621
+ packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;
2622
+ this.reconstructor = new BinaryReconstructor(packet);
2623
+ if (packet.attachments === 0) {
2624
+ super.emitReserved("decoded", packet);
2625
+ }
2626
+ } else {
2627
+ super.emitReserved("decoded", packet);
2628
+ }
2629
+ } else if ((0, is_binary_js_1.isBinary)(obj) || obj.base64) {
2630
+ if (!this.reconstructor) {
2631
+ throw new Error("got binary data when not reconstructing a packet");
2632
+ } else {
2633
+ packet = this.reconstructor.takeBinaryData(obj);
2634
+ if (packet) {
2635
+ this.reconstructor = null;
2636
+ super.emitReserved("decoded", packet);
2637
+ }
2638
+ }
2639
+ } else {
2640
+ throw new Error("Unknown type: " + obj);
2641
+ }
2642
+ }
2643
+ /**
2644
+ * Decode a packet String (JSON data)
2645
+ *
2646
+ * @param {String} str
2647
+ * @return {Object} packet
2648
+ */
2649
+ decodeString(str) {
2650
+ let i = 0;
2651
+ const p = {
2652
+ type: Number(str.charAt(0))
2653
+ };
2654
+ if (PacketType[p.type] === void 0) {
2655
+ throw new Error("unknown packet type " + p.type);
2656
+ }
2657
+ if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {
2658
+ const start = i + 1;
2659
+ while (str.charAt(++i) !== "-" && i != str.length) {
2660
+ }
2661
+ const buf = str.substring(start, i);
2662
+ if (buf != Number(buf) || str.charAt(i) !== "-") {
2663
+ throw new Error("Illegal attachments");
2664
+ }
2665
+ p.attachments = Number(buf);
2666
+ }
2667
+ if ("/" === str.charAt(i + 1)) {
2668
+ const start = i + 1;
2669
+ while (++i) {
2670
+ const c = str.charAt(i);
2671
+ if ("," === c)
2672
+ break;
2673
+ if (i === str.length)
2674
+ break;
2675
+ }
2676
+ p.nsp = str.substring(start, i);
2677
+ } else {
2678
+ p.nsp = "/";
2679
+ }
2680
+ const next = str.charAt(i + 1);
2681
+ if ("" !== next && Number(next) == next) {
2682
+ const start = i + 1;
2683
+ while (++i) {
2684
+ const c = str.charAt(i);
2685
+ if (null == c || Number(c) != c) {
2686
+ --i;
2687
+ break;
2688
+ }
2689
+ if (i === str.length)
2690
+ break;
2691
+ }
2692
+ p.id = Number(str.substring(start, i + 1));
2693
+ }
2694
+ if (str.charAt(++i)) {
2695
+ const payload = this.tryParse(str.substr(i));
2696
+ if (Decoder.isPayloadValid(p.type, payload)) {
2697
+ p.data = payload;
2698
+ } else {
2699
+ throw new Error("invalid payload");
2700
+ }
2701
+ }
2702
+ debug("decoded %s as %j", str, p);
2703
+ return p;
2704
+ }
2705
+ tryParse(str) {
2706
+ try {
2707
+ return JSON.parse(str, this.reviver);
2708
+ } catch (e) {
2709
+ return false;
2710
+ }
2711
+ }
2712
+ static isPayloadValid(type, payload) {
2713
+ switch (type) {
2714
+ case PacketType.CONNECT:
2715
+ return isObject(payload);
2716
+ case PacketType.DISCONNECT:
2717
+ return payload === void 0;
2718
+ case PacketType.CONNECT_ERROR:
2719
+ return typeof payload === "string" || isObject(payload);
2720
+ case PacketType.EVENT:
2721
+ case PacketType.BINARY_EVENT:
2722
+ return Array.isArray(payload) && (typeof payload[0] === "number" || typeof payload[0] === "string" && RESERVED_EVENTS.indexOf(payload[0]) === -1);
2723
+ case PacketType.ACK:
2724
+ case PacketType.BINARY_ACK:
2725
+ return Array.isArray(payload);
2726
+ }
2727
+ }
2728
+ /**
2729
+ * Deallocates a parser's resources
2730
+ */
2731
+ destroy() {
2732
+ if (this.reconstructor) {
2733
+ this.reconstructor.finishedReconstruction();
2734
+ this.reconstructor = null;
2735
+ }
2736
+ }
2737
+ };
2738
+ __name(Decoder, "Decoder");
2739
+ exports.Decoder = Decoder;
2740
+ var BinaryReconstructor = class {
2741
+ constructor(packet) {
2742
+ this.packet = packet;
2743
+ this.buffers = [];
2744
+ this.reconPack = packet;
2745
+ }
2746
+ /**
2747
+ * Method to be called when binary data received from connection
2748
+ * after a BINARY_EVENT packet.
2749
+ *
2750
+ * @param {Buffer | ArrayBuffer} binData - the raw binary data received
2751
+ * @return {null | Object} returns null if more binary data is expected or
2752
+ * a reconstructed packet object if all buffers have been received.
2753
+ */
2754
+ takeBinaryData(binData) {
2755
+ this.buffers.push(binData);
2756
+ if (this.buffers.length === this.reconPack.attachments) {
2757
+ const packet = (0, binary_js_1.reconstructPacket)(this.reconPack, this.buffers);
2758
+ this.finishedReconstruction();
2759
+ return packet;
2760
+ }
2761
+ return null;
2762
+ }
2763
+ /**
2764
+ * Cleans up binary packet reconstruction variables.
2765
+ */
2766
+ finishedReconstruction() {
2767
+ this.reconPack = null;
2768
+ this.buffers = [];
2769
+ }
2770
+ };
2771
+ __name(BinaryReconstructor, "BinaryReconstructor");
2772
+ }
2773
+ });
2774
+
2775
+ // node_modules/socket.io-client/build/cjs/on.js
2776
+ var require_on = __commonJS({
2777
+ "node_modules/socket.io-client/build/cjs/on.js"(exports) {
2778
+ "use strict";
2779
+ Object.defineProperty(exports, "__esModule", { value: true });
2780
+ exports.on = void 0;
2781
+ function on(obj, ev, fn) {
2782
+ obj.on(ev, fn);
2783
+ return /* @__PURE__ */ __name(function subDestroy() {
2784
+ obj.off(ev, fn);
2785
+ }, "subDestroy");
2786
+ }
2787
+ __name(on, "on");
2788
+ exports.on = on;
2789
+ }
2790
+ });
2791
+
2792
+ // node_modules/socket.io-client/build/cjs/socket.js
2793
+ var require_socket2 = __commonJS({
2794
+ "node_modules/socket.io-client/build/cjs/socket.js"(exports) {
2795
+ "use strict";
2796
+ var __importDefault = exports && exports.__importDefault || function(mod) {
2797
+ return mod && mod.__esModule ? mod : { "default": mod };
2798
+ };
2799
+ Object.defineProperty(exports, "__esModule", { value: true });
2800
+ exports.Socket = void 0;
2801
+ var socket_io_parser_1 = require_cjs3();
2802
+ var on_js_1 = require_on();
2803
+ var component_emitter_1 = require_component_emitter();
2804
+ var debug_1 = __importDefault(require_browser());
2805
+ var debug = debug_1.default("socket.io-client:socket");
2806
+ var RESERVED_EVENTS = Object.freeze({
2807
+ connect: 1,
2808
+ connect_error: 1,
2809
+ disconnect: 1,
2810
+ disconnecting: 1,
2811
+ // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener
2812
+ newListener: 1,
2813
+ removeListener: 1
2814
+ });
2815
+ var Socket = class extends component_emitter_1.Emitter {
2816
+ /**
2817
+ * `Socket` constructor.
2818
+ */
2819
+ constructor(io, nsp, opts) {
2820
+ super();
2821
+ this.connected = false;
2822
+ this.recovered = false;
2823
+ this.receiveBuffer = [];
2824
+ this.sendBuffer = [];
2825
+ this._queue = [];
2826
+ this._queueSeq = 0;
2827
+ this.ids = 0;
2828
+ this.acks = {};
2829
+ this.flags = {};
2830
+ this.io = io;
2831
+ this.nsp = nsp;
2832
+ if (opts && opts.auth) {
2833
+ this.auth = opts.auth;
2834
+ }
2835
+ this._opts = Object.assign({}, opts);
2836
+ if (this.io._autoConnect)
2837
+ this.open();
2838
+ }
2839
+ /**
2840
+ * Whether the socket is currently disconnected
2841
+ *
2842
+ * @example
2843
+ * const socket = io();
2844
+ *
2845
+ * socket.on("connect", () => {
2846
+ * console.log(socket.disconnected); // false
2847
+ * });
2848
+ *
2849
+ * socket.on("disconnect", () => {
2850
+ * console.log(socket.disconnected); // true
2851
+ * });
2852
+ */
2853
+ get disconnected() {
2854
+ return !this.connected;
2855
+ }
2856
+ /**
2857
+ * Subscribe to open, close and packet events
2858
+ *
2859
+ * @private
2860
+ */
2861
+ subEvents() {
2862
+ if (this.subs)
2863
+ return;
2864
+ const io = this.io;
2865
+ this.subs = [
2866
+ on_js_1.on(io, "open", this.onopen.bind(this)),
2867
+ on_js_1.on(io, "packet", this.onpacket.bind(this)),
2868
+ on_js_1.on(io, "error", this.onerror.bind(this)),
2869
+ on_js_1.on(io, "close", this.onclose.bind(this))
2870
+ ];
2871
+ }
2872
+ /**
2873
+ * Whether the Socket will try to reconnect when its Manager connects or reconnects.
2874
+ *
2875
+ * @example
2876
+ * const socket = io();
2877
+ *
2878
+ * console.log(socket.active); // true
2879
+ *
2880
+ * socket.on("disconnect", (reason) => {
2881
+ * if (reason === "io server disconnect") {
2882
+ * // the disconnection was initiated by the server, you need to manually reconnect
2883
+ * console.log(socket.active); // false
2884
+ * }
2885
+ * // else the socket will automatically try to reconnect
2886
+ * console.log(socket.active); // true
2887
+ * });
2888
+ */
2889
+ get active() {
2890
+ return !!this.subs;
2891
+ }
2892
+ /**
2893
+ * "Opens" the socket.
2894
+ *
2895
+ * @example
2896
+ * const socket = io({
2897
+ * autoConnect: false
2898
+ * });
2899
+ *
2900
+ * socket.connect();
2901
+ */
2902
+ connect() {
2903
+ if (this.connected)
2904
+ return this;
2905
+ this.subEvents();
2906
+ if (!this.io["_reconnecting"])
2907
+ this.io.open();
2908
+ if ("open" === this.io._readyState)
2909
+ this.onopen();
2910
+ return this;
2911
+ }
2912
+ /**
2913
+ * Alias for {@link connect()}.
2914
+ */
2915
+ open() {
2916
+ return this.connect();
2917
+ }
2918
+ /**
2919
+ * Sends a `message` event.
2920
+ *
2921
+ * This method mimics the WebSocket.send() method.
2922
+ *
2923
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send
2924
+ *
2925
+ * @example
2926
+ * socket.send("hello");
2927
+ *
2928
+ * // this is equivalent to
2929
+ * socket.emit("message", "hello");
2930
+ *
2931
+ * @return self
2932
+ */
2933
+ send(...args) {
2934
+ args.unshift("message");
2935
+ this.emit.apply(this, args);
2936
+ return this;
2937
+ }
2938
+ /**
2939
+ * Override `emit`.
2940
+ * If the event is in `events`, it's emitted normally.
2941
+ *
2942
+ * @example
2943
+ * socket.emit("hello", "world");
2944
+ *
2945
+ * // all serializable datastructures are supported (no need to call JSON.stringify)
2946
+ * socket.emit("hello", 1, "2", { 3: ["4"], 5: Uint8Array.from([6]) });
2947
+ *
2948
+ * // with an acknowledgement from the server
2949
+ * socket.emit("hello", "world", (val) => {
2950
+ * // ...
2951
+ * });
2952
+ *
2953
+ * @return self
2954
+ */
2955
+ emit(ev, ...args) {
2956
+ if (RESERVED_EVENTS.hasOwnProperty(ev)) {
2957
+ throw new Error('"' + ev.toString() + '" is a reserved event name');
2958
+ }
2959
+ args.unshift(ev);
2960
+ if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {
2961
+ this._addToQueue(args);
2962
+ return this;
2963
+ }
2964
+ const packet = {
2965
+ type: socket_io_parser_1.PacketType.EVENT,
2966
+ data: args
2967
+ };
2968
+ packet.options = {};
2969
+ packet.options.compress = this.flags.compress !== false;
2970
+ if ("function" === typeof args[args.length - 1]) {
2971
+ const id = this.ids++;
2972
+ debug("emitting packet with ack id %d", id);
2973
+ const ack = args.pop();
2974
+ this._registerAckCallback(id, ack);
2975
+ packet.id = id;
2976
+ }
2977
+ const isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;
2978
+ const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);
2979
+ if (discardPacket) {
2980
+ debug("discard packet as the transport is not currently writable");
2981
+ } else if (this.connected) {
2982
+ this.notifyOutgoingListeners(packet);
2983
+ this.packet(packet);
2984
+ } else {
2985
+ this.sendBuffer.push(packet);
2986
+ }
2987
+ this.flags = {};
2988
+ return this;
2989
+ }
2990
+ /**
2991
+ * @private
2992
+ */
2993
+ _registerAckCallback(id, ack) {
2994
+ var _a;
2995
+ const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;
2996
+ if (timeout === void 0) {
2997
+ this.acks[id] = ack;
2998
+ return;
2999
+ }
3000
+ const timer = this.io.setTimeoutFn(() => {
3001
+ delete this.acks[id];
3002
+ for (let i = 0; i < this.sendBuffer.length; i++) {
3003
+ if (this.sendBuffer[i].id === id) {
3004
+ debug("removing packet with ack id %d from the buffer", id);
3005
+ this.sendBuffer.splice(i, 1);
3006
+ }
3007
+ }
3008
+ debug("event with ack id %d has timed out after %d ms", id, timeout);
3009
+ ack.call(this, new Error("operation has timed out"));
3010
+ }, timeout);
3011
+ this.acks[id] = (...args) => {
3012
+ this.io.clearTimeoutFn(timer);
3013
+ ack.apply(this, [null, ...args]);
3014
+ };
3015
+ }
3016
+ /**
3017
+ * Emits an event and waits for an acknowledgement
3018
+ *
3019
+ * @example
3020
+ * // without timeout
3021
+ * const response = await socket.emitWithAck("hello", "world");
3022
+ *
3023
+ * // with a specific timeout
3024
+ * try {
3025
+ * const response = await socket.timeout(1000).emitWithAck("hello", "world");
3026
+ * } catch (err) {
3027
+ * // the server did not acknowledge the event in the given delay
3028
+ * }
3029
+ *
3030
+ * @return a Promise that will be fulfilled when the server acknowledges the event
3031
+ */
3032
+ emitWithAck(ev, ...args) {
3033
+ const withErr = this.flags.timeout !== void 0 || this._opts.ackTimeout !== void 0;
3034
+ return new Promise((resolve, reject) => {
3035
+ args.push((arg1, arg2) => {
3036
+ if (withErr) {
3037
+ return arg1 ? reject(arg1) : resolve(arg2);
3038
+ } else {
3039
+ return resolve(arg1);
3040
+ }
3041
+ });
3042
+ this.emit(ev, ...args);
3043
+ });
3044
+ }
3045
+ /**
3046
+ * Add the packet to the queue.
3047
+ * @param args
3048
+ * @private
3049
+ */
3050
+ _addToQueue(args) {
3051
+ let ack;
3052
+ if (typeof args[args.length - 1] === "function") {
3053
+ ack = args.pop();
3054
+ }
3055
+ const packet = {
3056
+ id: this._queueSeq++,
3057
+ tryCount: 0,
3058
+ pending: false,
3059
+ args,
3060
+ flags: Object.assign({ fromQueue: true }, this.flags)
3061
+ };
3062
+ args.push((err, ...responseArgs) => {
3063
+ if (packet !== this._queue[0]) {
3064
+ return;
3065
+ }
3066
+ const hasError = err !== null;
3067
+ if (hasError) {
3068
+ if (packet.tryCount > this._opts.retries) {
3069
+ debug("packet [%d] is discarded after %d tries", packet.id, packet.tryCount);
3070
+ this._queue.shift();
3071
+ if (ack) {
3072
+ ack(err);
3073
+ }
3074
+ }
3075
+ } else {
3076
+ debug("packet [%d] was successfully sent", packet.id);
3077
+ this._queue.shift();
3078
+ if (ack) {
3079
+ ack(null, ...responseArgs);
3080
+ }
3081
+ }
3082
+ packet.pending = false;
3083
+ return this._drainQueue();
3084
+ });
3085
+ this._queue.push(packet);
3086
+ this._drainQueue();
3087
+ }
3088
+ /**
3089
+ * Send the first packet of the queue, and wait for an acknowledgement from the server.
3090
+ * @param force - whether to resend a packet that has not been acknowledged yet
3091
+ *
3092
+ * @private
3093
+ */
3094
+ _drainQueue(force = false) {
3095
+ debug("draining queue");
3096
+ if (!this.connected || this._queue.length === 0) {
3097
+ return;
3098
+ }
3099
+ const packet = this._queue[0];
3100
+ if (packet.pending && !force) {
3101
+ debug("packet [%d] has already been sent and is waiting for an ack", packet.id);
3102
+ return;
3103
+ }
3104
+ packet.pending = true;
3105
+ packet.tryCount++;
3106
+ debug("sending packet [%d] (try n\xB0%d)", packet.id, packet.tryCount);
3107
+ this.flags = packet.flags;
3108
+ this.emit.apply(this, packet.args);
3109
+ }
3110
+ /**
3111
+ * Sends a packet.
3112
+ *
3113
+ * @param packet
3114
+ * @private
3115
+ */
3116
+ packet(packet) {
3117
+ packet.nsp = this.nsp;
3118
+ this.io._packet(packet);
3119
+ }
3120
+ /**
3121
+ * Called upon engine `open`.
3122
+ *
3123
+ * @private
3124
+ */
3125
+ onopen() {
3126
+ debug("transport is open - connecting");
3127
+ if (typeof this.auth == "function") {
3128
+ this.auth((data) => {
3129
+ this._sendConnectPacket(data);
3130
+ });
3131
+ } else {
3132
+ this._sendConnectPacket(this.auth);
3133
+ }
3134
+ }
3135
+ /**
3136
+ * Sends a CONNECT packet to initiate the Socket.IO session.
3137
+ *
3138
+ * @param data
3139
+ * @private
3140
+ */
3141
+ _sendConnectPacket(data) {
3142
+ this.packet({
3143
+ type: socket_io_parser_1.PacketType.CONNECT,
3144
+ data: this._pid ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data) : data
3145
+ });
3146
+ }
3147
+ /**
3148
+ * Called upon engine or manager `error`.
3149
+ *
3150
+ * @param err
3151
+ * @private
3152
+ */
3153
+ onerror(err) {
3154
+ if (!this.connected) {
3155
+ this.emitReserved("connect_error", err);
3156
+ }
3157
+ }
3158
+ /**
3159
+ * Called upon engine `close`.
3160
+ *
3161
+ * @param reason
3162
+ * @param description
3163
+ * @private
3164
+ */
3165
+ onclose(reason, description) {
3166
+ debug("close (%s)", reason);
3167
+ this.connected = false;
3168
+ delete this.id;
3169
+ this.emitReserved("disconnect", reason, description);
3170
+ }
3171
+ /**
3172
+ * Called with socket packet.
3173
+ *
3174
+ * @param packet
3175
+ * @private
3176
+ */
3177
+ onpacket(packet) {
3178
+ const sameNamespace = packet.nsp === this.nsp;
3179
+ if (!sameNamespace)
3180
+ return;
3181
+ switch (packet.type) {
3182
+ case socket_io_parser_1.PacketType.CONNECT:
3183
+ if (packet.data && packet.data.sid) {
3184
+ this.onconnect(packet.data.sid, packet.data.pid);
3185
+ } else {
3186
+ this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));
3187
+ }
3188
+ break;
3189
+ case socket_io_parser_1.PacketType.EVENT:
3190
+ case socket_io_parser_1.PacketType.BINARY_EVENT:
3191
+ this.onevent(packet);
3192
+ break;
3193
+ case socket_io_parser_1.PacketType.ACK:
3194
+ case socket_io_parser_1.PacketType.BINARY_ACK:
3195
+ this.onack(packet);
3196
+ break;
3197
+ case socket_io_parser_1.PacketType.DISCONNECT:
3198
+ this.ondisconnect();
3199
+ break;
3200
+ case socket_io_parser_1.PacketType.CONNECT_ERROR:
3201
+ this.destroy();
3202
+ const err = new Error(packet.data.message);
3203
+ err.data = packet.data.data;
3204
+ this.emitReserved("connect_error", err);
3205
+ break;
3206
+ }
3207
+ }
3208
+ /**
3209
+ * Called upon a server event.
3210
+ *
3211
+ * @param packet
3212
+ * @private
3213
+ */
3214
+ onevent(packet) {
3215
+ const args = packet.data || [];
3216
+ debug("emitting event %j", args);
3217
+ if (null != packet.id) {
3218
+ debug("attaching ack callback to event");
3219
+ args.push(this.ack(packet.id));
3220
+ }
3221
+ if (this.connected) {
3222
+ this.emitEvent(args);
3223
+ } else {
3224
+ this.receiveBuffer.push(Object.freeze(args));
3225
+ }
3226
+ }
3227
+ emitEvent(args) {
3228
+ if (this._anyListeners && this._anyListeners.length) {
3229
+ const listeners = this._anyListeners.slice();
3230
+ for (const listener of listeners) {
3231
+ listener.apply(this, args);
3232
+ }
3233
+ }
3234
+ super.emit.apply(this, args);
3235
+ if (this._pid && args.length && typeof args[args.length - 1] === "string") {
3236
+ this._lastOffset = args[args.length - 1];
3237
+ }
3238
+ }
3239
+ /**
3240
+ * Produces an ack callback to emit with an event.
3241
+ *
3242
+ * @private
3243
+ */
3244
+ ack(id) {
3245
+ const self2 = this;
3246
+ let sent = false;
3247
+ return function(...args) {
3248
+ if (sent)
3249
+ return;
3250
+ sent = true;
3251
+ debug("sending ack %j", args);
3252
+ self2.packet({
3253
+ type: socket_io_parser_1.PacketType.ACK,
3254
+ id,
3255
+ data: args
3256
+ });
3257
+ };
3258
+ }
3259
+ /**
3260
+ * Called upon a server acknowlegement.
3261
+ *
3262
+ * @param packet
3263
+ * @private
3264
+ */
3265
+ onack(packet) {
3266
+ const ack = this.acks[packet.id];
3267
+ if ("function" === typeof ack) {
3268
+ debug("calling ack %s with %j", packet.id, packet.data);
3269
+ ack.apply(this, packet.data);
3270
+ delete this.acks[packet.id];
3271
+ } else {
3272
+ debug("bad ack %s", packet.id);
3273
+ }
3274
+ }
3275
+ /**
3276
+ * Called upon server connect.
3277
+ *
3278
+ * @private
3279
+ */
3280
+ onconnect(id, pid) {
3281
+ debug("socket connected with id %s", id);
3282
+ this.id = id;
3283
+ this.recovered = pid && this._pid === pid;
3284
+ this._pid = pid;
3285
+ this.connected = true;
3286
+ this.emitBuffered();
3287
+ this.emitReserved("connect");
3288
+ this._drainQueue(true);
3289
+ }
3290
+ /**
3291
+ * Emit buffered events (received and emitted).
3292
+ *
3293
+ * @private
3294
+ */
3295
+ emitBuffered() {
3296
+ this.receiveBuffer.forEach((args) => this.emitEvent(args));
3297
+ this.receiveBuffer = [];
3298
+ this.sendBuffer.forEach((packet) => {
3299
+ this.notifyOutgoingListeners(packet);
3300
+ this.packet(packet);
3301
+ });
3302
+ this.sendBuffer = [];
3303
+ }
3304
+ /**
3305
+ * Called upon server disconnect.
3306
+ *
3307
+ * @private
3308
+ */
3309
+ ondisconnect() {
3310
+ debug("server disconnect (%s)", this.nsp);
3311
+ this.destroy();
3312
+ this.onclose("io server disconnect");
3313
+ }
3314
+ /**
3315
+ * Called upon forced client/server side disconnections,
3316
+ * this method ensures the manager stops tracking us and
3317
+ * that reconnections don't get triggered for this.
3318
+ *
3319
+ * @private
3320
+ */
3321
+ destroy() {
3322
+ if (this.subs) {
3323
+ this.subs.forEach((subDestroy) => subDestroy());
3324
+ this.subs = void 0;
3325
+ }
3326
+ this.io["_destroy"](this);
3327
+ }
3328
+ /**
3329
+ * Disconnects the socket manually. In that case, the socket will not try to reconnect.
3330
+ *
3331
+ * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.
3332
+ *
3333
+ * @example
3334
+ * const socket = io();
3335
+ *
3336
+ * socket.on("disconnect", (reason) => {
3337
+ * // console.log(reason); prints "io client disconnect"
3338
+ * });
3339
+ *
3340
+ * socket.disconnect();
3341
+ *
3342
+ * @return self
3343
+ */
3344
+ disconnect() {
3345
+ if (this.connected) {
3346
+ debug("performing disconnect (%s)", this.nsp);
3347
+ this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });
3348
+ }
3349
+ this.destroy();
3350
+ if (this.connected) {
3351
+ this.onclose("io client disconnect");
3352
+ }
3353
+ return this;
3354
+ }
3355
+ /**
3356
+ * Alias for {@link disconnect()}.
3357
+ *
3358
+ * @return self
3359
+ */
3360
+ close() {
3361
+ return this.disconnect();
3362
+ }
3363
+ /**
3364
+ * Sets the compress flag.
3365
+ *
3366
+ * @example
3367
+ * socket.compress(false).emit("hello");
3368
+ *
3369
+ * @param compress - if `true`, compresses the sending data
3370
+ * @return self
3371
+ */
3372
+ compress(compress) {
3373
+ this.flags.compress = compress;
3374
+ return this;
3375
+ }
3376
+ /**
3377
+ * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not
3378
+ * ready to send messages.
3379
+ *
3380
+ * @example
3381
+ * socket.volatile.emit("hello"); // the server may or may not receive it
3382
+ *
3383
+ * @returns self
3384
+ */
3385
+ get volatile() {
3386
+ this.flags.volatile = true;
3387
+ return this;
3388
+ }
3389
+ /**
3390
+ * Sets a modifier for a subsequent event emission that the callback will be called with an error when the
3391
+ * given number of milliseconds have elapsed without an acknowledgement from the server:
3392
+ *
3393
+ * @example
3394
+ * socket.timeout(5000).emit("my-event", (err) => {
3395
+ * if (err) {
3396
+ * // the server did not acknowledge the event in the given delay
3397
+ * }
3398
+ * });
3399
+ *
3400
+ * @returns self
3401
+ */
3402
+ timeout(timeout) {
3403
+ this.flags.timeout = timeout;
3404
+ return this;
3405
+ }
3406
+ /**
3407
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
3408
+ * callback.
3409
+ *
3410
+ * @example
3411
+ * socket.onAny((event, ...args) => {
3412
+ * console.log(`got ${event}`);
3413
+ * });
3414
+ *
3415
+ * @param listener
3416
+ */
3417
+ onAny(listener) {
3418
+ this._anyListeners = this._anyListeners || [];
3419
+ this._anyListeners.push(listener);
3420
+ return this;
3421
+ }
3422
+ /**
3423
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
3424
+ * callback. The listener is added to the beginning of the listeners array.
3425
+ *
3426
+ * @example
3427
+ * socket.prependAny((event, ...args) => {
3428
+ * console.log(`got event ${event}`);
3429
+ * });
3430
+ *
3431
+ * @param listener
3432
+ */
3433
+ prependAny(listener) {
3434
+ this._anyListeners = this._anyListeners || [];
3435
+ this._anyListeners.unshift(listener);
3436
+ return this;
3437
+ }
3438
+ /**
3439
+ * Removes the listener that will be fired when any event is emitted.
3440
+ *
3441
+ * @example
3442
+ * const catchAllListener = (event, ...args) => {
3443
+ * console.log(`got event ${event}`);
3444
+ * }
3445
+ *
3446
+ * socket.onAny(catchAllListener);
3447
+ *
3448
+ * // remove a specific listener
3449
+ * socket.offAny(catchAllListener);
3450
+ *
3451
+ * // or remove all listeners
3452
+ * socket.offAny();
3453
+ *
3454
+ * @param listener
3455
+ */
3456
+ offAny(listener) {
3457
+ if (!this._anyListeners) {
3458
+ return this;
3459
+ }
3460
+ if (listener) {
3461
+ const listeners = this._anyListeners;
3462
+ for (let i = 0; i < listeners.length; i++) {
3463
+ if (listener === listeners[i]) {
3464
+ listeners.splice(i, 1);
3465
+ return this;
3466
+ }
3467
+ }
3468
+ } else {
3469
+ this._anyListeners = [];
3470
+ }
3471
+ return this;
3472
+ }
3473
+ /**
3474
+ * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
3475
+ * e.g. to remove listeners.
3476
+ */
3477
+ listenersAny() {
3478
+ return this._anyListeners || [];
3479
+ }
3480
+ /**
3481
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
3482
+ * callback.
3483
+ *
3484
+ * Note: acknowledgements sent to the server are not included.
3485
+ *
3486
+ * @example
3487
+ * socket.onAnyOutgoing((event, ...args) => {
3488
+ * console.log(`sent event ${event}`);
3489
+ * });
3490
+ *
3491
+ * @param listener
3492
+ */
3493
+ onAnyOutgoing(listener) {
3494
+ this._anyOutgoingListeners = this._anyOutgoingListeners || [];
3495
+ this._anyOutgoingListeners.push(listener);
3496
+ return this;
3497
+ }
3498
+ /**
3499
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
3500
+ * callback. The listener is added to the beginning of the listeners array.
3501
+ *
3502
+ * Note: acknowledgements sent to the server are not included.
3503
+ *
3504
+ * @example
3505
+ * socket.prependAnyOutgoing((event, ...args) => {
3506
+ * console.log(`sent event ${event}`);
3507
+ * });
3508
+ *
3509
+ * @param listener
3510
+ */
3511
+ prependAnyOutgoing(listener) {
3512
+ this._anyOutgoingListeners = this._anyOutgoingListeners || [];
3513
+ this._anyOutgoingListeners.unshift(listener);
3514
+ return this;
3515
+ }
3516
+ /**
3517
+ * Removes the listener that will be fired when any event is emitted.
3518
+ *
3519
+ * @example
3520
+ * const catchAllListener = (event, ...args) => {
3521
+ * console.log(`sent event ${event}`);
3522
+ * }
3523
+ *
3524
+ * socket.onAnyOutgoing(catchAllListener);
3525
+ *
3526
+ * // remove a specific listener
3527
+ * socket.offAnyOutgoing(catchAllListener);
3528
+ *
3529
+ * // or remove all listeners
3530
+ * socket.offAnyOutgoing();
3531
+ *
3532
+ * @param [listener] - the catch-all listener (optional)
3533
+ */
3534
+ offAnyOutgoing(listener) {
3535
+ if (!this._anyOutgoingListeners) {
3536
+ return this;
3537
+ }
3538
+ if (listener) {
3539
+ const listeners = this._anyOutgoingListeners;
3540
+ for (let i = 0; i < listeners.length; i++) {
3541
+ if (listener === listeners[i]) {
3542
+ listeners.splice(i, 1);
3543
+ return this;
3544
+ }
3545
+ }
3546
+ } else {
3547
+ this._anyOutgoingListeners = [];
3548
+ }
3549
+ return this;
3550
+ }
3551
+ /**
3552
+ * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
3553
+ * e.g. to remove listeners.
3554
+ */
3555
+ listenersAnyOutgoing() {
3556
+ return this._anyOutgoingListeners || [];
3557
+ }
3558
+ /**
3559
+ * Notify the listeners for each packet sent
3560
+ *
3561
+ * @param packet
3562
+ *
3563
+ * @private
3564
+ */
3565
+ notifyOutgoingListeners(packet) {
3566
+ if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {
3567
+ const listeners = this._anyOutgoingListeners.slice();
3568
+ for (const listener of listeners) {
3569
+ listener.apply(this, packet.data);
3570
+ }
3571
+ }
3572
+ }
3573
+ };
3574
+ __name(Socket, "Socket");
3575
+ exports.Socket = Socket;
3576
+ }
3577
+ });
3578
+
3579
+ // node_modules/socket.io-client/build/cjs/contrib/backo2.js
3580
+ var require_backo2 = __commonJS({
3581
+ "node_modules/socket.io-client/build/cjs/contrib/backo2.js"(exports) {
3582
+ "use strict";
3583
+ Object.defineProperty(exports, "__esModule", { value: true });
3584
+ exports.Backoff = void 0;
3585
+ function Backoff(opts) {
3586
+ opts = opts || {};
3587
+ this.ms = opts.min || 100;
3588
+ this.max = opts.max || 1e4;
3589
+ this.factor = opts.factor || 2;
3590
+ this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
3591
+ this.attempts = 0;
3592
+ }
3593
+ __name(Backoff, "Backoff");
3594
+ exports.Backoff = Backoff;
3595
+ Backoff.prototype.duration = function() {
3596
+ var ms = this.ms * Math.pow(this.factor, this.attempts++);
3597
+ if (this.jitter) {
3598
+ var rand = Math.random();
3599
+ var deviation = Math.floor(rand * this.jitter * ms);
3600
+ ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
3601
+ }
3602
+ return Math.min(ms, this.max) | 0;
3603
+ };
3604
+ Backoff.prototype.reset = function() {
3605
+ this.attempts = 0;
3606
+ };
3607
+ Backoff.prototype.setMin = function(min) {
3608
+ this.ms = min;
3609
+ };
3610
+ Backoff.prototype.setMax = function(max) {
3611
+ this.max = max;
3612
+ };
3613
+ Backoff.prototype.setJitter = function(jitter) {
3614
+ this.jitter = jitter;
3615
+ };
3616
+ }
3617
+ });
3618
+
3619
+ // node_modules/socket.io-client/build/cjs/manager.js
3620
+ var require_manager = __commonJS({
3621
+ "node_modules/socket.io-client/build/cjs/manager.js"(exports) {
3622
+ "use strict";
3623
+ var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
3624
+ if (k2 === void 0)
3625
+ k2 = k;
3626
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3627
+ return m[k];
3628
+ } });
3629
+ } : function(o, m, k, k2) {
3630
+ if (k2 === void 0)
3631
+ k2 = k;
3632
+ o[k2] = m[k];
3633
+ });
3634
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
3635
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3636
+ } : function(o, v) {
3637
+ o["default"] = v;
3638
+ });
3639
+ var __importStar = exports && exports.__importStar || function(mod) {
3640
+ if (mod && mod.__esModule)
3641
+ return mod;
3642
+ var result = {};
3643
+ if (mod != null) {
3644
+ for (var k in mod)
3645
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3646
+ __createBinding(result, mod, k);
3647
+ }
3648
+ __setModuleDefault(result, mod);
3649
+ return result;
3650
+ };
3651
+ var __importDefault = exports && exports.__importDefault || function(mod) {
3652
+ return mod && mod.__esModule ? mod : { "default": mod };
3653
+ };
3654
+ Object.defineProperty(exports, "__esModule", { value: true });
3655
+ exports.Manager = void 0;
3656
+ var engine_io_client_1 = require_cjs2();
3657
+ var socket_js_1 = require_socket2();
3658
+ var parser = __importStar(require_cjs3());
3659
+ var on_js_1 = require_on();
3660
+ var backo2_js_1 = require_backo2();
3661
+ var component_emitter_1 = require_component_emitter();
3662
+ var debug_1 = __importDefault(require_browser());
3663
+ var debug = debug_1.default("socket.io-client:manager");
3664
+ var Manager = class extends component_emitter_1.Emitter {
3665
+ constructor(uri, opts) {
3666
+ var _a;
3667
+ super();
3668
+ this.nsps = {};
3669
+ this.subs = [];
3670
+ if (uri && "object" === typeof uri) {
3671
+ opts = uri;
3672
+ uri = void 0;
3673
+ }
3674
+ opts = opts || {};
3675
+ opts.path = opts.path || "/socket.io";
3676
+ this.opts = opts;
3677
+ engine_io_client_1.installTimerFunctions(this, opts);
3678
+ this.reconnection(opts.reconnection !== false);
3679
+ this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
3680
+ this.reconnectionDelay(opts.reconnectionDelay || 1e3);
3681
+ this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3);
3682
+ this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);
3683
+ this.backoff = new backo2_js_1.Backoff({
3684
+ min: this.reconnectionDelay(),
3685
+ max: this.reconnectionDelayMax(),
3686
+ jitter: this.randomizationFactor()
3687
+ });
3688
+ this.timeout(null == opts.timeout ? 2e4 : opts.timeout);
3689
+ this._readyState = "closed";
3690
+ this.uri = uri;
3691
+ const _parser = opts.parser || parser;
3692
+ this.encoder = new _parser.Encoder();
3693
+ this.decoder = new _parser.Decoder();
3694
+ this._autoConnect = opts.autoConnect !== false;
3695
+ if (this._autoConnect)
3696
+ this.open();
3697
+ }
3698
+ reconnection(v) {
3699
+ if (!arguments.length)
3700
+ return this._reconnection;
3701
+ this._reconnection = !!v;
3702
+ return this;
3703
+ }
3704
+ reconnectionAttempts(v) {
3705
+ if (v === void 0)
3706
+ return this._reconnectionAttempts;
3707
+ this._reconnectionAttempts = v;
3708
+ return this;
3709
+ }
3710
+ reconnectionDelay(v) {
3711
+ var _a;
3712
+ if (v === void 0)
3713
+ return this._reconnectionDelay;
3714
+ this._reconnectionDelay = v;
3715
+ (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);
3716
+ return this;
3717
+ }
3718
+ randomizationFactor(v) {
3719
+ var _a;
3720
+ if (v === void 0)
3721
+ return this._randomizationFactor;
3722
+ this._randomizationFactor = v;
3723
+ (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);
3724
+ return this;
3725
+ }
3726
+ reconnectionDelayMax(v) {
3727
+ var _a;
3728
+ if (v === void 0)
3729
+ return this._reconnectionDelayMax;
3730
+ this._reconnectionDelayMax = v;
3731
+ (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);
3732
+ return this;
3733
+ }
3734
+ timeout(v) {
3735
+ if (!arguments.length)
3736
+ return this._timeout;
3737
+ this._timeout = v;
3738
+ return this;
3739
+ }
3740
+ /**
3741
+ * Starts trying to reconnect if reconnection is enabled and we have not
3742
+ * started reconnecting yet
3743
+ *
3744
+ * @private
3745
+ */
3746
+ maybeReconnectOnOpen() {
3747
+ if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {
3748
+ this.reconnect();
3749
+ }
3750
+ }
3751
+ /**
3752
+ * Sets the current transport `socket`.
3753
+ *
3754
+ * @param {Function} fn - optional, callback
3755
+ * @return self
3756
+ * @public
3757
+ */
3758
+ open(fn) {
3759
+ debug("readyState %s", this._readyState);
3760
+ if (~this._readyState.indexOf("open"))
3761
+ return this;
3762
+ debug("opening %s", this.uri);
3763
+ this.engine = new engine_io_client_1.Socket(this.uri, this.opts);
3764
+ const socket = this.engine;
3765
+ const self2 = this;
3766
+ this._readyState = "opening";
3767
+ this.skipReconnect = false;
3768
+ const openSubDestroy = on_js_1.on(socket, "open", function() {
3769
+ self2.onopen();
3770
+ fn && fn();
3771
+ });
3772
+ const errorSub = on_js_1.on(socket, "error", (err) => {
3773
+ debug("error");
3774
+ self2.cleanup();
3775
+ self2._readyState = "closed";
3776
+ this.emitReserved("error", err);
3777
+ if (fn) {
3778
+ fn(err);
3779
+ } else {
3780
+ self2.maybeReconnectOnOpen();
3781
+ }
3782
+ });
3783
+ if (false !== this._timeout) {
3784
+ const timeout = this._timeout;
3785
+ debug("connect attempt will timeout after %d", timeout);
3786
+ if (timeout === 0) {
3787
+ openSubDestroy();
3788
+ }
3789
+ const timer = this.setTimeoutFn(() => {
3790
+ debug("connect attempt timed out after %d", timeout);
3791
+ openSubDestroy();
3792
+ socket.close();
3793
+ socket.emit("error", new Error("timeout"));
3794
+ }, timeout);
3795
+ if (this.opts.autoUnref) {
3796
+ timer.unref();
3797
+ }
3798
+ this.subs.push(/* @__PURE__ */ __name(function subDestroy() {
3799
+ clearTimeout(timer);
3800
+ }, "subDestroy"));
3801
+ }
3802
+ this.subs.push(openSubDestroy);
3803
+ this.subs.push(errorSub);
3804
+ return this;
3805
+ }
3806
+ /**
3807
+ * Alias for open()
3808
+ *
3809
+ * @return self
3810
+ * @public
3811
+ */
3812
+ connect(fn) {
3813
+ return this.open(fn);
3814
+ }
3815
+ /**
3816
+ * Called upon transport open.
3817
+ *
3818
+ * @private
3819
+ */
3820
+ onopen() {
3821
+ debug("open");
3822
+ this.cleanup();
3823
+ this._readyState = "open";
3824
+ this.emitReserved("open");
3825
+ const socket = this.engine;
3826
+ this.subs.push(on_js_1.on(socket, "ping", this.onping.bind(this)), on_js_1.on(socket, "data", this.ondata.bind(this)), on_js_1.on(socket, "error", this.onerror.bind(this)), on_js_1.on(socket, "close", this.onclose.bind(this)), on_js_1.on(this.decoder, "decoded", this.ondecoded.bind(this)));
3827
+ }
3828
+ /**
3829
+ * Called upon a ping.
3830
+ *
3831
+ * @private
3832
+ */
3833
+ onping() {
3834
+ this.emitReserved("ping");
3835
+ }
3836
+ /**
3837
+ * Called with data.
3838
+ *
3839
+ * @private
3840
+ */
3841
+ ondata(data) {
3842
+ try {
3843
+ this.decoder.add(data);
3844
+ } catch (e) {
3845
+ this.onclose("parse error", e);
3846
+ }
3847
+ }
3848
+ /**
3849
+ * Called when parser fully decodes a packet.
3850
+ *
3851
+ * @private
3852
+ */
3853
+ ondecoded(packet) {
3854
+ engine_io_client_1.nextTick(() => {
3855
+ this.emitReserved("packet", packet);
3856
+ }, this.setTimeoutFn);
3857
+ }
3858
+ /**
3859
+ * Called upon socket error.
3860
+ *
3861
+ * @private
3862
+ */
3863
+ onerror(err) {
3864
+ debug("error", err);
3865
+ this.emitReserved("error", err);
3866
+ }
3867
+ /**
3868
+ * Creates a new socket for the given `nsp`.
3869
+ *
3870
+ * @return {Socket}
3871
+ * @public
3872
+ */
3873
+ socket(nsp, opts) {
3874
+ let socket = this.nsps[nsp];
3875
+ if (!socket) {
3876
+ socket = new socket_js_1.Socket(this, nsp, opts);
3877
+ this.nsps[nsp] = socket;
3878
+ } else if (this._autoConnect && !socket.active) {
3879
+ socket.connect();
3880
+ }
3881
+ return socket;
3882
+ }
3883
+ /**
3884
+ * Called upon a socket close.
3885
+ *
3886
+ * @param socket
3887
+ * @private
3888
+ */
3889
+ _destroy(socket) {
3890
+ const nsps = Object.keys(this.nsps);
3891
+ for (const nsp of nsps) {
3892
+ const socket2 = this.nsps[nsp];
3893
+ if (socket2.active) {
3894
+ debug("socket %s is still active, skipping close", nsp);
3895
+ return;
3896
+ }
3897
+ }
3898
+ this._close();
3899
+ }
3900
+ /**
3901
+ * Writes a packet.
3902
+ *
3903
+ * @param packet
3904
+ * @private
3905
+ */
3906
+ _packet(packet) {
3907
+ debug("writing packet %j", packet);
3908
+ const encodedPackets = this.encoder.encode(packet);
3909
+ for (let i = 0; i < encodedPackets.length; i++) {
3910
+ this.engine.write(encodedPackets[i], packet.options);
3911
+ }
3912
+ }
3913
+ /**
3914
+ * Clean up transport subscriptions and packet buffer.
3915
+ *
3916
+ * @private
3917
+ */
3918
+ cleanup() {
3919
+ debug("cleanup");
3920
+ this.subs.forEach((subDestroy) => subDestroy());
3921
+ this.subs.length = 0;
3922
+ this.decoder.destroy();
3923
+ }
3924
+ /**
3925
+ * Close the current socket.
3926
+ *
3927
+ * @private
3928
+ */
3929
+ _close() {
3930
+ debug("disconnect");
3931
+ this.skipReconnect = true;
3932
+ this._reconnecting = false;
3933
+ this.onclose("forced close");
3934
+ if (this.engine)
3935
+ this.engine.close();
3936
+ }
3937
+ /**
3938
+ * Alias for close()
3939
+ *
3940
+ * @private
3941
+ */
3942
+ disconnect() {
3943
+ return this._close();
3944
+ }
3945
+ /**
3946
+ * Called upon engine close.
3947
+ *
3948
+ * @private
3949
+ */
3950
+ onclose(reason, description) {
3951
+ debug("closed due to %s", reason);
3952
+ this.cleanup();
3953
+ this.backoff.reset();
3954
+ this._readyState = "closed";
3955
+ this.emitReserved("close", reason, description);
3956
+ if (this._reconnection && !this.skipReconnect) {
3957
+ this.reconnect();
3958
+ }
3959
+ }
3960
+ /**
3961
+ * Attempt a reconnection.
3962
+ *
3963
+ * @private
3964
+ */
3965
+ reconnect() {
3966
+ if (this._reconnecting || this.skipReconnect)
3967
+ return this;
3968
+ const self2 = this;
3969
+ if (this.backoff.attempts >= this._reconnectionAttempts) {
3970
+ debug("reconnect failed");
3971
+ this.backoff.reset();
3972
+ this.emitReserved("reconnect_failed");
3973
+ this._reconnecting = false;
3974
+ } else {
3975
+ const delay = this.backoff.duration();
3976
+ debug("will wait %dms before reconnect attempt", delay);
3977
+ this._reconnecting = true;
3978
+ const timer = this.setTimeoutFn(() => {
3979
+ if (self2.skipReconnect)
3980
+ return;
3981
+ debug("attempting reconnect");
3982
+ this.emitReserved("reconnect_attempt", self2.backoff.attempts);
3983
+ if (self2.skipReconnect)
3984
+ return;
3985
+ self2.open((err) => {
3986
+ if (err) {
3987
+ debug("reconnect attempt error");
3988
+ self2._reconnecting = false;
3989
+ self2.reconnect();
3990
+ this.emitReserved("reconnect_error", err);
3991
+ } else {
3992
+ debug("reconnect success");
3993
+ self2.onreconnect();
3994
+ }
3995
+ });
3996
+ }, delay);
3997
+ if (this.opts.autoUnref) {
3998
+ timer.unref();
3999
+ }
4000
+ this.subs.push(/* @__PURE__ */ __name(function subDestroy() {
4001
+ clearTimeout(timer);
4002
+ }, "subDestroy"));
4003
+ }
4004
+ }
4005
+ /**
4006
+ * Called upon successful reconnect.
4007
+ *
4008
+ * @private
4009
+ */
4010
+ onreconnect() {
4011
+ const attempt = this.backoff.attempts;
4012
+ this._reconnecting = false;
4013
+ this.backoff.reset();
4014
+ this.emitReserved("reconnect", attempt);
4015
+ }
4016
+ };
4017
+ __name(Manager, "Manager");
4018
+ exports.Manager = Manager;
4019
+ }
4020
+ });
4021
+
4022
+ // node_modules/socket.io-client/build/cjs/index.js
4023
+ var require_cjs4 = __commonJS({
4024
+ "node_modules/socket.io-client/build/cjs/index.js"(exports, module) {
4025
+ "use strict";
4026
+ var __importDefault = exports && exports.__importDefault || function(mod) {
4027
+ return mod && mod.__esModule ? mod : { "default": mod };
4028
+ };
4029
+ Object.defineProperty(exports, "__esModule", { value: true });
4030
+ exports.default = exports.connect = exports.io = exports.Socket = exports.Manager = exports.protocol = void 0;
4031
+ var url_js_1 = require_url();
4032
+ var manager_js_1 = require_manager();
4033
+ Object.defineProperty(exports, "Manager", { enumerable: true, get: function() {
4034
+ return manager_js_1.Manager;
4035
+ } });
4036
+ var socket_js_1 = require_socket2();
4037
+ Object.defineProperty(exports, "Socket", { enumerable: true, get: function() {
4038
+ return socket_js_1.Socket;
4039
+ } });
4040
+ var debug_1 = __importDefault(require_browser());
4041
+ var debug = debug_1.default("socket.io-client");
4042
+ var cache = {};
4043
+ function lookup(uri, opts) {
4044
+ if (typeof uri === "object") {
4045
+ opts = uri;
4046
+ uri = void 0;
4047
+ }
4048
+ opts = opts || {};
4049
+ const parsed = url_js_1.url(uri, opts.path || "/socket.io");
4050
+ const source = parsed.source;
4051
+ const id = parsed.id;
4052
+ const path = parsed.path;
4053
+ const sameNamespace = cache[id] && path in cache[id]["nsps"];
4054
+ const newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace;
4055
+ let io;
4056
+ if (newConnection) {
4057
+ debug("ignoring socket cache for %s", source);
4058
+ io = new manager_js_1.Manager(source, opts);
4059
+ } else {
4060
+ if (!cache[id]) {
4061
+ debug("new io instance for %s", source);
4062
+ cache[id] = new manager_js_1.Manager(source, opts);
4063
+ }
4064
+ io = cache[id];
4065
+ }
4066
+ if (parsed.query && !opts.query) {
4067
+ opts.query = parsed.queryKey;
4068
+ }
4069
+ return io.socket(parsed.path, opts);
4070
+ }
4071
+ __name(lookup, "lookup");
4072
+ exports.io = lookup;
4073
+ exports.connect = lookup;
4074
+ exports.default = lookup;
4075
+ Object.assign(lookup, {
4076
+ Manager: manager_js_1.Manager,
4077
+ Socket: socket_js_1.Socket,
4078
+ io: lookup,
4079
+ connect: lookup
4080
+ });
4081
+ var socket_io_parser_1 = require_cjs3();
4082
+ Object.defineProperty(exports, "protocol", { enumerable: true, get: function() {
4083
+ return socket_io_parser_1.protocol;
4084
+ } });
4085
+ module.exports = lookup;
4086
+ }
4087
+ });
4088
+
4089
+ // node_modules/events/events.js
4090
+ var require_events = __commonJS({
4091
+ "node_modules/events/events.js"(exports, module) {
4092
+ "use strict";
4093
+ var R = typeof Reflect === "object" ? Reflect : null;
4094
+ var ReflectApply = R && typeof R.apply === "function" ? R.apply : /* @__PURE__ */ __name(function ReflectApply2(target, receiver, args) {
4095
+ return Function.prototype.apply.call(target, receiver, args);
4096
+ }, "ReflectApply");
4097
+ var ReflectOwnKeys;
4098
+ if (R && typeof R.ownKeys === "function") {
4099
+ ReflectOwnKeys = R.ownKeys;
4100
+ } else if (Object.getOwnPropertySymbols) {
4101
+ ReflectOwnKeys = /* @__PURE__ */ __name(function ReflectOwnKeys2(target) {
4102
+ return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
4103
+ }, "ReflectOwnKeys");
4104
+ } else {
4105
+ ReflectOwnKeys = /* @__PURE__ */ __name(function ReflectOwnKeys2(target) {
4106
+ return Object.getOwnPropertyNames(target);
4107
+ }, "ReflectOwnKeys");
4108
+ }
4109
+ function ProcessEmitWarning(warning) {
4110
+ if (console && console.warn)
4111
+ console.warn(warning);
4112
+ }
4113
+ __name(ProcessEmitWarning, "ProcessEmitWarning");
4114
+ var NumberIsNaN = Number.isNaN || /* @__PURE__ */ __name(function NumberIsNaN2(value) {
4115
+ return value !== value;
4116
+ }, "NumberIsNaN");
4117
+ function EventEmitter() {
4118
+ EventEmitter.init.call(this);
4119
+ }
4120
+ __name(EventEmitter, "EventEmitter");
4121
+ module.exports = EventEmitter;
4122
+ module.exports.once = once;
4123
+ EventEmitter.EventEmitter = EventEmitter;
4124
+ EventEmitter.prototype._events = void 0;
4125
+ EventEmitter.prototype._eventsCount = 0;
4126
+ EventEmitter.prototype._maxListeners = void 0;
4127
+ var defaultMaxListeners = 10;
4128
+ function checkListener(listener) {
4129
+ if (typeof listener !== "function") {
4130
+ throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
4131
+ }
4132
+ }
4133
+ __name(checkListener, "checkListener");
4134
+ Object.defineProperty(EventEmitter, "defaultMaxListeners", {
4135
+ enumerable: true,
4136
+ get: function() {
4137
+ return defaultMaxListeners;
4138
+ },
4139
+ set: function(arg) {
4140
+ if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) {
4141
+ throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + ".");
4142
+ }
4143
+ defaultMaxListeners = arg;
4144
+ }
4145
+ });
4146
+ EventEmitter.init = function() {
4147
+ if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) {
4148
+ this._events = /* @__PURE__ */ Object.create(null);
4149
+ this._eventsCount = 0;
4150
+ }
4151
+ this._maxListeners = this._maxListeners || void 0;
4152
+ };
4153
+ EventEmitter.prototype.setMaxListeners = /* @__PURE__ */ __name(function setMaxListeners(n) {
4154
+ if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) {
4155
+ throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + ".");
4156
+ }
4157
+ this._maxListeners = n;
4158
+ return this;
4159
+ }, "setMaxListeners");
4160
+ function _getMaxListeners(that) {
4161
+ if (that._maxListeners === void 0)
4162
+ return EventEmitter.defaultMaxListeners;
4163
+ return that._maxListeners;
4164
+ }
4165
+ __name(_getMaxListeners, "_getMaxListeners");
4166
+ EventEmitter.prototype.getMaxListeners = /* @__PURE__ */ __name(function getMaxListeners() {
4167
+ return _getMaxListeners(this);
4168
+ }, "getMaxListeners");
4169
+ EventEmitter.prototype.emit = /* @__PURE__ */ __name(function emit(type) {
4170
+ var args = [];
4171
+ for (var i = 1; i < arguments.length; i++)
4172
+ args.push(arguments[i]);
4173
+ var doError = type === "error";
4174
+ var events = this._events;
4175
+ if (events !== void 0)
4176
+ doError = doError && events.error === void 0;
4177
+ else if (!doError)
4178
+ return false;
4179
+ if (doError) {
4180
+ var er;
4181
+ if (args.length > 0)
4182
+ er = args[0];
4183
+ if (er instanceof Error) {
4184
+ throw er;
4185
+ }
4186
+ var err = new Error("Unhandled error." + (er ? " (" + er.message + ")" : ""));
4187
+ err.context = er;
4188
+ throw err;
4189
+ }
4190
+ var handler = events[type];
4191
+ if (handler === void 0)
4192
+ return false;
4193
+ if (typeof handler === "function") {
4194
+ ReflectApply(handler, this, args);
4195
+ } else {
4196
+ var len = handler.length;
4197
+ var listeners = arrayClone(handler, len);
4198
+ for (var i = 0; i < len; ++i)
4199
+ ReflectApply(listeners[i], this, args);
4200
+ }
4201
+ return true;
4202
+ }, "emit");
4203
+ function _addListener(target, type, listener, prepend) {
4204
+ var m;
4205
+ var events;
4206
+ var existing;
4207
+ checkListener(listener);
4208
+ events = target._events;
4209
+ if (events === void 0) {
4210
+ events = target._events = /* @__PURE__ */ Object.create(null);
4211
+ target._eventsCount = 0;
4212
+ } else {
4213
+ if (events.newListener !== void 0) {
4214
+ target.emit(
4215
+ "newListener",
4216
+ type,
4217
+ listener.listener ? listener.listener : listener
4218
+ );
4219
+ events = target._events;
4220
+ }
4221
+ existing = events[type];
4222
+ }
4223
+ if (existing === void 0) {
4224
+ existing = events[type] = listener;
4225
+ ++target._eventsCount;
4226
+ } else {
4227
+ if (typeof existing === "function") {
4228
+ existing = events[type] = prepend ? [listener, existing] : [existing, listener];
4229
+ } else if (prepend) {
4230
+ existing.unshift(listener);
4231
+ } else {
4232
+ existing.push(listener);
4233
+ }
4234
+ m = _getMaxListeners(target);
4235
+ if (m > 0 && existing.length > m && !existing.warned) {
4236
+ existing.warned = true;
4237
+ var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit");
4238
+ w.name = "MaxListenersExceededWarning";
4239
+ w.emitter = target;
4240
+ w.type = type;
4241
+ w.count = existing.length;
4242
+ ProcessEmitWarning(w);
4243
+ }
4244
+ }
4245
+ return target;
4246
+ }
4247
+ __name(_addListener, "_addListener");
4248
+ EventEmitter.prototype.addListener = /* @__PURE__ */ __name(function addListener(type, listener) {
4249
+ return _addListener(this, type, listener, false);
4250
+ }, "addListener");
4251
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
4252
+ EventEmitter.prototype.prependListener = /* @__PURE__ */ __name(function prependListener(type, listener) {
4253
+ return _addListener(this, type, listener, true);
4254
+ }, "prependListener");
4255
+ function onceWrapper() {
4256
+ if (!this.fired) {
4257
+ this.target.removeListener(this.type, this.wrapFn);
4258
+ this.fired = true;
4259
+ if (arguments.length === 0)
4260
+ return this.listener.call(this.target);
4261
+ return this.listener.apply(this.target, arguments);
4262
+ }
4263
+ }
4264
+ __name(onceWrapper, "onceWrapper");
4265
+ function _onceWrap(target, type, listener) {
4266
+ var state = { fired: false, wrapFn: void 0, target, type, listener };
4267
+ var wrapped = onceWrapper.bind(state);
4268
+ wrapped.listener = listener;
4269
+ state.wrapFn = wrapped;
4270
+ return wrapped;
4271
+ }
4272
+ __name(_onceWrap, "_onceWrap");
4273
+ EventEmitter.prototype.once = /* @__PURE__ */ __name(function once2(type, listener) {
4274
+ checkListener(listener);
4275
+ this.on(type, _onceWrap(this, type, listener));
4276
+ return this;
4277
+ }, "once");
4278
+ EventEmitter.prototype.prependOnceListener = /* @__PURE__ */ __name(function prependOnceListener(type, listener) {
4279
+ checkListener(listener);
4280
+ this.prependListener(type, _onceWrap(this, type, listener));
4281
+ return this;
4282
+ }, "prependOnceListener");
4283
+ EventEmitter.prototype.removeListener = /* @__PURE__ */ __name(function removeListener(type, listener) {
4284
+ var list, events, position, i, originalListener;
4285
+ checkListener(listener);
4286
+ events = this._events;
4287
+ if (events === void 0)
4288
+ return this;
4289
+ list = events[type];
4290
+ if (list === void 0)
4291
+ return this;
4292
+ if (list === listener || list.listener === listener) {
4293
+ if (--this._eventsCount === 0)
4294
+ this._events = /* @__PURE__ */ Object.create(null);
4295
+ else {
4296
+ delete events[type];
4297
+ if (events.removeListener)
4298
+ this.emit("removeListener", type, list.listener || listener);
4299
+ }
4300
+ } else if (typeof list !== "function") {
4301
+ position = -1;
4302
+ for (i = list.length - 1; i >= 0; i--) {
4303
+ if (list[i] === listener || list[i].listener === listener) {
4304
+ originalListener = list[i].listener;
4305
+ position = i;
4306
+ break;
4307
+ }
4308
+ }
4309
+ if (position < 0)
4310
+ return this;
4311
+ if (position === 0)
4312
+ list.shift();
4313
+ else {
4314
+ spliceOne(list, position);
4315
+ }
4316
+ if (list.length === 1)
4317
+ events[type] = list[0];
4318
+ if (events.removeListener !== void 0)
4319
+ this.emit("removeListener", type, originalListener || listener);
4320
+ }
4321
+ return this;
4322
+ }, "removeListener");
4323
+ EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
4324
+ EventEmitter.prototype.removeAllListeners = /* @__PURE__ */ __name(function removeAllListeners(type) {
4325
+ var listeners, events, i;
4326
+ events = this._events;
4327
+ if (events === void 0)
4328
+ return this;
4329
+ if (events.removeListener === void 0) {
4330
+ if (arguments.length === 0) {
4331
+ this._events = /* @__PURE__ */ Object.create(null);
4332
+ this._eventsCount = 0;
4333
+ } else if (events[type] !== void 0) {
4334
+ if (--this._eventsCount === 0)
4335
+ this._events = /* @__PURE__ */ Object.create(null);
4336
+ else
4337
+ delete events[type];
4338
+ }
4339
+ return this;
4340
+ }
4341
+ if (arguments.length === 0) {
4342
+ var keys = Object.keys(events);
4343
+ var key;
4344
+ for (i = 0; i < keys.length; ++i) {
4345
+ key = keys[i];
4346
+ if (key === "removeListener")
4347
+ continue;
4348
+ this.removeAllListeners(key);
4349
+ }
4350
+ this.removeAllListeners("removeListener");
4351
+ this._events = /* @__PURE__ */ Object.create(null);
4352
+ this._eventsCount = 0;
4353
+ return this;
4354
+ }
4355
+ listeners = events[type];
4356
+ if (typeof listeners === "function") {
4357
+ this.removeListener(type, listeners);
4358
+ } else if (listeners !== void 0) {
4359
+ for (i = listeners.length - 1; i >= 0; i--) {
4360
+ this.removeListener(type, listeners[i]);
4361
+ }
4362
+ }
4363
+ return this;
4364
+ }, "removeAllListeners");
4365
+ function _listeners(target, type, unwrap) {
4366
+ var events = target._events;
4367
+ if (events === void 0)
4368
+ return [];
4369
+ var evlistener = events[type];
4370
+ if (evlistener === void 0)
4371
+ return [];
4372
+ if (typeof evlistener === "function")
4373
+ return unwrap ? [evlistener.listener || evlistener] : [evlistener];
4374
+ return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
4375
+ }
4376
+ __name(_listeners, "_listeners");
4377
+ EventEmitter.prototype.listeners = /* @__PURE__ */ __name(function listeners(type) {
4378
+ return _listeners(this, type, true);
4379
+ }, "listeners");
4380
+ EventEmitter.prototype.rawListeners = /* @__PURE__ */ __name(function rawListeners(type) {
4381
+ return _listeners(this, type, false);
4382
+ }, "rawListeners");
4383
+ EventEmitter.listenerCount = function(emitter, type) {
4384
+ if (typeof emitter.listenerCount === "function") {
4385
+ return emitter.listenerCount(type);
4386
+ } else {
4387
+ return listenerCount.call(emitter, type);
4388
+ }
4389
+ };
4390
+ EventEmitter.prototype.listenerCount = listenerCount;
4391
+ function listenerCount(type) {
4392
+ var events = this._events;
4393
+ if (events !== void 0) {
4394
+ var evlistener = events[type];
4395
+ if (typeof evlistener === "function") {
4396
+ return 1;
4397
+ } else if (evlistener !== void 0) {
4398
+ return evlistener.length;
4399
+ }
4400
+ }
4401
+ return 0;
4402
+ }
4403
+ __name(listenerCount, "listenerCount");
4404
+ EventEmitter.prototype.eventNames = /* @__PURE__ */ __name(function eventNames() {
4405
+ return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
4406
+ }, "eventNames");
4407
+ function arrayClone(arr, n) {
4408
+ var copy = new Array(n);
4409
+ for (var i = 0; i < n; ++i)
4410
+ copy[i] = arr[i];
4411
+ return copy;
4412
+ }
4413
+ __name(arrayClone, "arrayClone");
4414
+ function spliceOne(list, index) {
4415
+ for (; index + 1 < list.length; index++)
4416
+ list[index] = list[index + 1];
4417
+ list.pop();
4418
+ }
4419
+ __name(spliceOne, "spliceOne");
4420
+ function unwrapListeners(arr) {
4421
+ var ret = new Array(arr.length);
4422
+ for (var i = 0; i < ret.length; ++i) {
4423
+ ret[i] = arr[i].listener || arr[i];
4424
+ }
4425
+ return ret;
4426
+ }
4427
+ __name(unwrapListeners, "unwrapListeners");
4428
+ function once(emitter, name) {
4429
+ return new Promise(function(resolve, reject) {
4430
+ function errorListener(err) {
4431
+ emitter.removeListener(name, resolver);
4432
+ reject(err);
4433
+ }
4434
+ __name(errorListener, "errorListener");
4435
+ function resolver() {
4436
+ if (typeof emitter.removeListener === "function") {
4437
+ emitter.removeListener("error", errorListener);
4438
+ }
4439
+ resolve([].slice.call(arguments));
4440
+ }
4441
+ __name(resolver, "resolver");
4442
+ ;
4443
+ eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
4444
+ if (name !== "error") {
4445
+ addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
4446
+ }
4447
+ });
4448
+ }
4449
+ __name(once, "once");
4450
+ function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
4451
+ if (typeof emitter.on === "function") {
4452
+ eventTargetAgnosticAddListener(emitter, "error", handler, flags);
4453
+ }
4454
+ }
4455
+ __name(addErrorHandlerIfEventEmitter, "addErrorHandlerIfEventEmitter");
4456
+ function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
4457
+ if (typeof emitter.on === "function") {
4458
+ if (flags.once) {
4459
+ emitter.once(name, listener);
4460
+ } else {
4461
+ emitter.on(name, listener);
4462
+ }
4463
+ } else if (typeof emitter.addEventListener === "function") {
4464
+ emitter.addEventListener(name, /* @__PURE__ */ __name(function wrapListener(arg) {
4465
+ if (flags.once) {
4466
+ emitter.removeEventListener(name, wrapListener);
4467
+ }
4468
+ listener(arg);
4469
+ }, "wrapListener"));
4470
+ } else {
4471
+ throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
4472
+ }
4473
+ }
4474
+ __name(eventTargetAgnosticAddListener, "eventTargetAgnosticAddListener");
4475
+ }
4476
+ });
4477
+
4478
+ // src/SocketIoClient/index.js
4479
+ var require_SocketIoClient = __commonJS({
4480
+ "src/SocketIoClient/index.js"(exports, module) {
4481
+ var io = require_cjs4();
4482
+ var { EventEmitter } = require_events();
4483
+ module.exports = /* @__PURE__ */ __name(class SocketIoClient extends EventEmitter {
4484
+ constructor(config = { url: null, propertyId: null, options: {} }) {
4485
+ super();
4486
+ if (!config.url)
4487
+ throw new Error("Websocket URL / endpoint not provided");
4488
+ if (!config.propertyId)
4489
+ throw new Error("Property ID not provided");
4490
+ this.url = config.url;
4491
+ this.propertyId = config.propertyId;
4492
+ this.options = {
4493
+ autoConnect: false,
4494
+ forceNew: false,
4495
+ reconnection: true,
4496
+ reconnectionAttempts: Infinity,
4497
+ reconnectionDelay: 1e3,
4498
+ withCredentials: true,
4499
+ transports: ["websocket", "polling"],
4500
+ upgrade: true,
4501
+ ...config.options
4502
+ };
4503
+ this.socket = io(this.url, this.options);
4504
+ this.socket.on("connect", () => {
4505
+ this.emit("connect", this.socket);
4506
+ });
4507
+ this.socket.on("disconnect", (reason) => {
4508
+ this.emit("disconnect", reason);
4509
+ });
4510
+ this.socket.on("reconnect_attempt", (data) => {
4511
+ this.emit("reconnect_attempt", data);
4512
+ });
4513
+ this.socket.on("connect_error", (error) => {
4514
+ this.emit("connect_error", error);
4515
+ });
4516
+ }
4517
+ get connected() {
4518
+ return this.socket?.connected || false;
4519
+ }
4520
+ get disconnected() {
4521
+ return this.socket?.disconnected || false;
4522
+ }
4523
+ connect() {
4524
+ this.socket.connect();
4525
+ }
4526
+ disconnect() {
4527
+ this.socket.disconnect();
4528
+ }
4529
+ reconnect() {
4530
+ this.disconnect();
4531
+ this.connect();
4532
+ }
4533
+ subscribe(event, callback) {
4534
+ this.socket.on(event, callback);
4535
+ }
4536
+ unsubscribe(event, callback) {
4537
+ this.socket.off(event, callback);
4538
+ }
4539
+ send(event, { data = {}, query = {}, ...rest }) {
4540
+ this.socket.emit(event, { data, query, ...rest });
4541
+ }
4542
+ }, "SocketIoClient");
4543
+ }
4544
+ });
4545
+ export default require_SocketIoClient();
4546
+ //# sourceMappingURL=SocketIoClient.js.map