elit 3.6.6 → 3.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.lock +1 -1
- package/Cargo.toml +1 -1
- package/dist/build.cjs +421 -331
- package/dist/build.d.ts +1 -19
- package/dist/build.js +420 -330
- package/dist/build.mjs +420 -330
- package/dist/chokidar.cjs +219 -182
- package/dist/chokidar.d.ts +25 -10
- package/dist/chokidar.js +217 -182
- package/dist/chokidar.mjs +218 -183
- package/dist/cli.cjs +22439 -21563
- package/dist/cli.d.ts +19 -37
- package/dist/cli.mjs +24113 -23252
- package/dist/config.cjs +357 -350
- package/dist/config.d.ts +17 -245
- package/dist/config.js +520 -515
- package/dist/config.mjs +346 -341
- package/dist/contracts-BeW9k0yZ.d.ts +54 -0
- package/dist/contracts-D7KIS-TK.d.ts +36 -0
- package/dist/coverage.cjs +448 -485
- package/dist/coverage.d.ts +13 -62
- package/dist/coverage.js +447 -484
- package/dist/coverage.mjs +447 -484
- package/dist/database.cjs +819 -828
- package/dist/database.d.ts +8 -24
- package/dist/database.js +818 -829
- package/dist/database.mjs +818 -829
- package/dist/desktop-auto-render.cjs +1700 -1523
- package/dist/desktop-auto-render.d.ts +4 -12
- package/dist/desktop-auto-render.js +1695 -1518
- package/dist/desktop-auto-render.mjs +1696 -1519
- package/dist/desktop.cjs +3 -1
- package/dist/desktop.d.ts +4 -1
- package/dist/desktop.js +1 -1
- package/dist/desktop.mjs +1 -1
- package/dist/dev-build.cjs +830 -0
- package/dist/dev-build.d.ts +53 -0
- package/dist/dev-build.js +3318 -0
- package/dist/dev-build.mjs +797 -0
- package/dist/dom.cjs +717 -591
- package/dist/dom.d.ts +2 -17
- package/dist/dom.js +714 -588
- package/dist/dom.mjs +716 -590
- package/dist/el.cjs +62 -52
- package/dist/el.d.ts +5 -12
- package/dist/el.js +60 -52
- package/dist/el.mjs +60 -52
- package/dist/fs.cjs +72 -63
- package/dist/fs.d.ts +22 -19
- package/dist/fs.js +71 -62
- package/dist/fs.mjs +71 -62
- package/dist/hmr.cjs +40 -14
- package/dist/hmr.d.ts +11 -23
- package/dist/hmr.js +38 -14
- package/dist/hmr.mjs +38 -14
- package/dist/http.cjs +251 -99
- package/dist/http.d.ts +38 -104
- package/dist/http.js +249 -99
- package/dist/http.mjs +249 -99
- package/dist/https.cjs +524 -228
- package/dist/https.d.ts +44 -36
- package/dist/https.js +520 -226
- package/dist/https.mjs +522 -228
- package/dist/index.cjs +7502 -7691
- package/dist/index.d.ts +6 -3
- package/dist/index.js +7486 -7677
- package/dist/index.mjs +7497 -7687
- package/dist/mime-types.cjs +10 -4
- package/dist/mime-types.d.ts +8 -11
- package/dist/mime-types.js +9 -3
- package/dist/mime-types.mjs +9 -3
- package/dist/native.cjs +8616 -8870
- package/dist/native.d.ts +7 -10
- package/dist/native.js +8682 -8936
- package/dist/native.mjs +8615 -8869
- package/dist/path.cjs +83 -77
- package/dist/path.d.ts +29 -29
- package/dist/path.js +82 -76
- package/dist/path.mjs +82 -76
- package/dist/pm.cjs +3300 -0
- package/dist/pm.d.ts +256 -0
- package/dist/pm.js +5638 -0
- package/dist/pm.mjs +3196 -0
- package/dist/preview-build.cjs +712 -0
- package/dist/preview-build.d.ts +59 -0
- package/dist/preview-build.js +3194 -0
- package/dist/preview-build.mjs +676 -0
- package/dist/render-context.cjs +13 -2
- package/dist/render-context.d.ts +9 -34
- package/dist/render-context.js +11 -2
- package/dist/render-context.mjs +11 -2
- package/dist/router.cjs +787 -646
- package/dist/router.d.ts +8 -14
- package/dist/router.js +786 -645
- package/dist/router.mjs +786 -645
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.js +1 -1
- package/dist/runtime.mjs +1 -1
- package/dist/server.cjs +3254 -2684
- package/dist/server.d.ts +47 -5
- package/dist/server.js +3427 -2859
- package/dist/server.mjs +3397 -2829
- package/dist/smtp-server.cjs +16 -3
- package/dist/smtp-server.d.ts +12 -26
- package/dist/smtp-server.js +18 -5
- package/dist/smtp-server.mjs +16 -3
- package/dist/state-DvEkDehk.d.ts +195 -0
- package/dist/state.cjs +768 -659
- package/dist/state.d.ts +11 -71
- package/dist/state.js +760 -651
- package/dist/state.mjs +767 -658
- package/dist/style.cjs +1011 -968
- package/dist/style.d.ts +13 -127
- package/dist/style.js +1009 -970
- package/dist/style.mjs +1011 -971
- package/dist/test-reporter.cjs +332 -316
- package/dist/test-reporter.d.ts +28 -33
- package/dist/test-reporter.js +328 -312
- package/dist/test-reporter.mjs +328 -312
- package/dist/test-runtime.cjs +927 -968
- package/dist/test-runtime.d.ts +24 -99
- package/dist/test-runtime.js +922 -965
- package/dist/test-runtime.mjs +922 -965
- package/dist/test.cjs +4428 -4273
- package/dist/test.d.ts +2 -8
- package/dist/test.js +4307 -4154
- package/dist/test.mjs +4419 -4267
- package/dist/types-BONVzPtp.d.ts +59 -0
- package/dist/types-BR4wMiVx.d.ts +32 -0
- package/dist/types-C4gKykuG.d.ts +23 -0
- package/dist/types-CIhpN1-K.d.ts +64 -0
- package/dist/types-Ckj8md_j.d.ts +84 -0
- package/dist/types-CpjQTAkX.d.ts +24 -0
- package/dist/types-D0LjrYjS.d.ts +14 -0
- package/dist/types-DAisuVr5.d.ts +75 -0
- package/dist/types-tJn88E1N.d.ts +242 -0
- package/dist/types.d.ts +50 -237
- package/dist/universal.cjs +1 -1
- package/dist/universal.d.ts +1 -7
- package/dist/universal.js +1 -1
- package/dist/universal.mjs +1 -1
- package/dist/websocket-XfyK23zD.d.ts +119 -0
- package/dist/ws.cjs +129 -108
- package/dist/ws.d.ts +21 -131
- package/dist/ws.js +128 -109
- package/dist/ws.mjs +128 -109
- package/dist/wss.cjs +757 -479
- package/dist/wss.d.ts +31 -28
- package/dist/wss.js +755 -479
- package/dist/wss.mjs +758 -482
- package/package.json +8 -1
- package/vendor/epaint-0.31.1/src/image.rs +418 -0
- package/dist/server-uMQvZAll.d.ts +0 -458
package/dist/ws.js
CHANGED
|
@@ -7,17 +7,7 @@
|
|
|
7
7
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
8
8
|
});
|
|
9
9
|
|
|
10
|
-
// src/ws.ts
|
|
11
|
-
var import_events = __require("events");
|
|
12
|
-
|
|
13
|
-
// src/runtime.ts
|
|
14
|
-
var runtime = (() => {
|
|
15
|
-
if (typeof Deno !== "undefined") return "deno";
|
|
16
|
-
if (typeof Bun !== "undefined") return "bun";
|
|
17
|
-
return "node";
|
|
18
|
-
})();
|
|
19
|
-
|
|
20
|
-
// src/ws.ts
|
|
10
|
+
// src/server/ws/constants.ts
|
|
21
11
|
var ReadyState = /* @__PURE__ */ ((ReadyState2) => {
|
|
22
12
|
ReadyState2[ReadyState2["CONNECTING"] = 0] = "CONNECTING";
|
|
23
13
|
ReadyState2[ReadyState2["OPEN"] = 1] = "OPEN";
|
|
@@ -42,6 +32,18 @@
|
|
|
42
32
|
BAD_GATEWAY: 1014,
|
|
43
33
|
TLS_HANDSHAKE_FAIL: 1015
|
|
44
34
|
};
|
|
35
|
+
|
|
36
|
+
// src/server/ws/server.ts
|
|
37
|
+
var import_events2 = __require("events");
|
|
38
|
+
|
|
39
|
+
// src/shares/runtime.ts
|
|
40
|
+
var runtime = (() => {
|
|
41
|
+
if (typeof Deno !== "undefined") return "deno";
|
|
42
|
+
if (typeof Bun !== "undefined") return "bun";
|
|
43
|
+
return "node";
|
|
44
|
+
})();
|
|
45
|
+
|
|
46
|
+
// src/server/ws/utils.ts
|
|
45
47
|
function queueCallback(callback, error) {
|
|
46
48
|
if (callback) {
|
|
47
49
|
queueMicrotask(() => callback(error));
|
|
@@ -57,6 +59,73 @@
|
|
|
57
59
|
const [pathname = "/"] = (url || "/").split("?");
|
|
58
60
|
return pathname || "/";
|
|
59
61
|
}
|
|
62
|
+
function isIgnorableConnectionError(error) {
|
|
63
|
+
const errorCode = error?.code;
|
|
64
|
+
return errorCode === "ECONNABORTED" || errorCode === "ECONNRESET" || errorCode === "EPIPE";
|
|
65
|
+
}
|
|
66
|
+
function coerceBunMessage(message) {
|
|
67
|
+
const isBinary = typeof message !== "string";
|
|
68
|
+
const payload = typeof message === "string" ? message : message instanceof ArrayBuffer ? Buffer.from(message) : ArrayBuffer.isView(message) ? Buffer.from(message.buffer, message.byteOffset, message.byteLength) : Buffer.from(String(message));
|
|
69
|
+
return { payload, isBinary };
|
|
70
|
+
}
|
|
71
|
+
function parseFrame(data) {
|
|
72
|
+
if (data.length < 2) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const firstByte = data[0];
|
|
76
|
+
const secondByte = data[1];
|
|
77
|
+
const opcode = firstByte & 15;
|
|
78
|
+
const isMasked = (secondByte & 128) === 128;
|
|
79
|
+
let payloadLength = secondByte & 127;
|
|
80
|
+
let offset = 2;
|
|
81
|
+
if (payloadLength === 126) {
|
|
82
|
+
payloadLength = data.readUInt16BE(2);
|
|
83
|
+
offset = 4;
|
|
84
|
+
} else if (payloadLength === 127) {
|
|
85
|
+
payloadLength = Number(data.readBigUInt64BE(2));
|
|
86
|
+
offset = 10;
|
|
87
|
+
}
|
|
88
|
+
let payload = data.subarray(offset);
|
|
89
|
+
if (isMasked) {
|
|
90
|
+
const maskKey = data.subarray(offset, offset + 4);
|
|
91
|
+
payload = data.subarray(offset + 4, offset + 4 + payloadLength);
|
|
92
|
+
for (let index = 0; index < payload.length; index += 1) {
|
|
93
|
+
payload[index] ^= maskKey[index % 4];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (opcode === 1) {
|
|
97
|
+
return payload.toString("utf8");
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
function createFrame(data) {
|
|
102
|
+
const payload = typeof data === "string" ? Buffer.from(data) : data;
|
|
103
|
+
const payloadLength = Buffer.isBuffer(payload) ? payload.length : 0;
|
|
104
|
+
let frame;
|
|
105
|
+
let offset = 2;
|
|
106
|
+
if (payloadLength < 126) {
|
|
107
|
+
frame = Buffer.allocUnsafe(2 + payloadLength);
|
|
108
|
+
frame[1] = payloadLength;
|
|
109
|
+
} else if (payloadLength < 65536) {
|
|
110
|
+
frame = Buffer.allocUnsafe(4 + payloadLength);
|
|
111
|
+
frame[1] = 126;
|
|
112
|
+
frame.writeUInt16BE(payloadLength, 2);
|
|
113
|
+
offset = 4;
|
|
114
|
+
} else {
|
|
115
|
+
frame = Buffer.allocUnsafe(10 + payloadLength);
|
|
116
|
+
frame[1] = 127;
|
|
117
|
+
frame.writeBigUInt64BE(BigInt(payloadLength), 2);
|
|
118
|
+
offset = 10;
|
|
119
|
+
}
|
|
120
|
+
frame[0] = 129;
|
|
121
|
+
if (Buffer.isBuffer(payload)) {
|
|
122
|
+
payload.copy(frame, offset);
|
|
123
|
+
}
|
|
124
|
+
return frame;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// src/server/ws/websocket.ts
|
|
128
|
+
var import_events = __require("events");
|
|
60
129
|
var WebSocket = class extends import_events.EventEmitter {
|
|
61
130
|
constructor(address, protocols, _options) {
|
|
62
131
|
super();
|
|
@@ -87,12 +156,13 @@
|
|
|
87
156
|
};
|
|
88
157
|
}
|
|
89
158
|
/**
|
|
90
|
-
* Send data through WebSocket
|
|
159
|
+
* Send data through WebSocket.
|
|
91
160
|
*/
|
|
92
161
|
send(data, options, callback) {
|
|
93
162
|
const cb = typeof options === "function" ? options : callback;
|
|
94
163
|
if (this.readyState !== 1 /* OPEN */) {
|
|
95
|
-
|
|
164
|
+
queueCallback(cb, new Error("WebSocket is not open"));
|
|
165
|
+
return;
|
|
96
166
|
}
|
|
97
167
|
try {
|
|
98
168
|
this._socket.send(data);
|
|
@@ -102,7 +172,7 @@
|
|
|
102
172
|
}
|
|
103
173
|
}
|
|
104
174
|
/**
|
|
105
|
-
* Close the WebSocket connection
|
|
175
|
+
* Close the WebSocket connection.
|
|
106
176
|
*/
|
|
107
177
|
close(code, reason) {
|
|
108
178
|
if (this.readyState === 3 /* CLOSED */ || this.readyState === 2 /* CLOSING */) {
|
|
@@ -112,42 +182,44 @@
|
|
|
112
182
|
this._socket.close(code, typeof reason === "string" ? reason : reason?.toString());
|
|
113
183
|
}
|
|
114
184
|
/**
|
|
115
|
-
* Pause the socket (no-op for native WebSocket)
|
|
185
|
+
* Pause the socket (no-op for native WebSocket).
|
|
116
186
|
*/
|
|
117
187
|
pause() {
|
|
118
188
|
}
|
|
119
189
|
/**
|
|
120
|
-
* Resume the socket (no-op for native WebSocket)
|
|
190
|
+
* Resume the socket (no-op for native WebSocket).
|
|
121
191
|
*/
|
|
122
192
|
resume() {
|
|
123
193
|
}
|
|
124
194
|
/**
|
|
125
|
-
* Send a ping frame (no-op for native WebSocket)
|
|
195
|
+
* Send a ping frame (no-op for native WebSocket).
|
|
126
196
|
*/
|
|
127
197
|
ping(_data, _mask, callback) {
|
|
128
198
|
queueCallback(callback);
|
|
129
199
|
}
|
|
130
200
|
/**
|
|
131
|
-
* Send a pong frame (no-op for native WebSocket)
|
|
201
|
+
* Send a pong frame (no-op for native WebSocket).
|
|
132
202
|
*/
|
|
133
203
|
pong(_data, _mask, callback) {
|
|
134
204
|
queueCallback(callback);
|
|
135
205
|
}
|
|
136
206
|
/**
|
|
137
|
-
* Terminate the connection
|
|
207
|
+
* Terminate the connection.
|
|
138
208
|
*/
|
|
139
209
|
terminate() {
|
|
140
210
|
this._socket.close();
|
|
141
211
|
this.readyState = 3 /* CLOSED */;
|
|
142
212
|
}
|
|
143
213
|
/**
|
|
144
|
-
* Get buffered amount
|
|
214
|
+
* Get buffered amount.
|
|
145
215
|
*/
|
|
146
216
|
get bufferedAmount() {
|
|
147
217
|
return this._socket.bufferedAmount || 0;
|
|
148
218
|
}
|
|
149
219
|
};
|
|
150
|
-
|
|
220
|
+
|
|
221
|
+
// src/server/ws/server.ts
|
|
222
|
+
var WebSocketServer = class extends import_events2.EventEmitter {
|
|
151
223
|
constructor(options, callback) {
|
|
152
224
|
super();
|
|
153
225
|
this.clients = /* @__PURE__ */ new Set();
|
|
@@ -158,8 +230,7 @@
|
|
|
158
230
|
if (options?.server) {
|
|
159
231
|
this._httpServer = options.server;
|
|
160
232
|
this._setupUpgradeHandler();
|
|
161
|
-
} else if (options?.noServer) {
|
|
162
|
-
} else {
|
|
233
|
+
} else if (!options?.noServer) {
|
|
163
234
|
const http = __require("http");
|
|
164
235
|
this._httpServer = http.createServer();
|
|
165
236
|
this._ownsHttpServer = true;
|
|
@@ -193,7 +264,7 @@
|
|
|
193
264
|
});
|
|
194
265
|
}
|
|
195
266
|
/**
|
|
196
|
-
* Handle HTTP upgrade for WebSocket
|
|
267
|
+
* Handle HTTP upgrade for WebSocket.
|
|
197
268
|
*/
|
|
198
269
|
handleUpgrade(request, socket, _head, callback) {
|
|
199
270
|
const key = request.headers["sec-websocket-key"];
|
|
@@ -223,7 +294,7 @@
|
|
|
223
294
|
}
|
|
224
295
|
_createClientFromSocket(socket) {
|
|
225
296
|
const client = Object.create(WebSocket.prototype);
|
|
226
|
-
|
|
297
|
+
import_events2.EventEmitter.call(client);
|
|
227
298
|
client.readyState = 1 /* OPEN */;
|
|
228
299
|
client.url = "ws://localhost";
|
|
229
300
|
client.protocol = "";
|
|
@@ -232,7 +303,7 @@
|
|
|
232
303
|
client._socket = socket;
|
|
233
304
|
socket.on("data", (data) => {
|
|
234
305
|
try {
|
|
235
|
-
const message =
|
|
306
|
+
const message = parseFrame(data);
|
|
236
307
|
if (message) {
|
|
237
308
|
client.emit("message", message, false);
|
|
238
309
|
}
|
|
@@ -245,33 +316,31 @@
|
|
|
245
316
|
client.emit("close", CLOSE_CODES.NORMAL, "");
|
|
246
317
|
});
|
|
247
318
|
socket.on("error", (error) => {
|
|
248
|
-
|
|
249
|
-
if (errorCode === "ECONNABORTED" || errorCode === "ECONNRESET" || errorCode === "EPIPE") {
|
|
319
|
+
if (isIgnorableConnectionError(error)) {
|
|
250
320
|
return;
|
|
251
321
|
}
|
|
252
322
|
client.emit("error", error);
|
|
253
323
|
});
|
|
254
324
|
client.send = (data, _options, callback) => {
|
|
255
325
|
if (!socket.writable || client.readyState !== 1 /* OPEN */) {
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
queueCallback(callback,
|
|
326
|
+
const error = new Error("WebSocket is not open");
|
|
327
|
+
error.code = "WS_NOT_OPEN";
|
|
328
|
+
queueCallback(callback, error);
|
|
259
329
|
return;
|
|
260
330
|
}
|
|
261
331
|
try {
|
|
262
|
-
const frame =
|
|
263
|
-
socket.write(frame, (
|
|
264
|
-
if (
|
|
265
|
-
const errorCode = err.code;
|
|
266
|
-
if (errorCode !== "ECONNABORTED" && errorCode !== "ECONNRESET" && errorCode !== "EPIPE") {
|
|
267
|
-
queueCallback(callback, err);
|
|
268
|
-
} else {
|
|
269
|
-
client.readyState = 3 /* CLOSED */;
|
|
270
|
-
queueCallback(callback);
|
|
271
|
-
}
|
|
272
|
-
} else {
|
|
332
|
+
const frame = createFrame(data);
|
|
333
|
+
socket.write(frame, (error) => {
|
|
334
|
+
if (!error) {
|
|
273
335
|
queueCallback(callback);
|
|
336
|
+
return;
|
|
274
337
|
}
|
|
338
|
+
if (isIgnorableConnectionError(error)) {
|
|
339
|
+
client.readyState = 3 /* CLOSED */;
|
|
340
|
+
queueCallback(callback);
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
queueCallback(callback, error);
|
|
275
344
|
});
|
|
276
345
|
} catch (error) {
|
|
277
346
|
queueCallback(callback, error);
|
|
@@ -285,7 +354,7 @@
|
|
|
285
354
|
}
|
|
286
355
|
_createClientFromBunSocket(socket) {
|
|
287
356
|
const client = Object.create(WebSocket.prototype);
|
|
288
|
-
|
|
357
|
+
import_events2.EventEmitter.call(client);
|
|
289
358
|
client.readyState = 1 /* OPEN */;
|
|
290
359
|
client.url = "ws://localhost";
|
|
291
360
|
client.protocol = "";
|
|
@@ -309,7 +378,7 @@
|
|
|
309
378
|
return;
|
|
310
379
|
}
|
|
311
380
|
client.readyState = 2 /* CLOSING */;
|
|
312
|
-
socket.close(code ?? CLOSE_CODES.NORMAL, reason);
|
|
381
|
+
socket.close(code ?? CLOSE_CODES.NORMAL, typeof reason === "string" ? reason : reason?.toString());
|
|
313
382
|
};
|
|
314
383
|
client.terminate = () => {
|
|
315
384
|
socket.close();
|
|
@@ -340,8 +409,7 @@
|
|
|
340
409
|
if (!client) {
|
|
341
410
|
return;
|
|
342
411
|
}
|
|
343
|
-
const isBinary =
|
|
344
|
-
const payload = typeof message === "string" ? message : message instanceof ArrayBuffer ? Buffer.from(message) : ArrayBuffer.isView(message) ? Buffer.from(message.buffer, message.byteOffset, message.byteLength) : Buffer.from(String(message));
|
|
412
|
+
const { payload, isBinary } = coerceBunMessage(message);
|
|
345
413
|
client.emit("message", payload, isBinary);
|
|
346
414
|
}
|
|
347
415
|
_handleBunClose(socket, code, reason) {
|
|
@@ -353,77 +421,24 @@
|
|
|
353
421
|
client.emit("close", code, typeof reason === "string" ? reason : reason?.toString() || "");
|
|
354
422
|
this.clients.delete(client);
|
|
355
423
|
}
|
|
356
|
-
_parseFrame(data) {
|
|
357
|
-
if (data.length < 2) return null;
|
|
358
|
-
const firstByte = data[0];
|
|
359
|
-
const secondByte = data[1];
|
|
360
|
-
const opcode = firstByte & 15;
|
|
361
|
-
const isMasked = (secondByte & 128) === 128;
|
|
362
|
-
let payloadLength = secondByte & 127;
|
|
363
|
-
let offset = 2;
|
|
364
|
-
if (payloadLength === 126) {
|
|
365
|
-
payloadLength = data.readUInt16BE(2);
|
|
366
|
-
offset = 4;
|
|
367
|
-
} else if (payloadLength === 127) {
|
|
368
|
-
payloadLength = Number(data.readBigUInt64BE(2));
|
|
369
|
-
offset = 10;
|
|
370
|
-
}
|
|
371
|
-
let payload = data.subarray(offset);
|
|
372
|
-
if (isMasked) {
|
|
373
|
-
const maskKey = data.subarray(offset, offset + 4);
|
|
374
|
-
payload = data.subarray(offset + 4, offset + 4 + payloadLength);
|
|
375
|
-
for (let i = 0; i < payload.length; i++) {
|
|
376
|
-
payload[i] ^= maskKey[i % 4];
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
if (opcode === 1) {
|
|
380
|
-
return payload.toString("utf8");
|
|
381
|
-
}
|
|
382
|
-
return null;
|
|
383
|
-
}
|
|
384
|
-
_createFrame(data) {
|
|
385
|
-
const payload = typeof data === "string" ? Buffer.from(data) : data;
|
|
386
|
-
const payloadLength = Buffer.isBuffer(payload) ? payload.length : 0;
|
|
387
|
-
let frame;
|
|
388
|
-
let offset = 2;
|
|
389
|
-
if (payloadLength < 126) {
|
|
390
|
-
frame = Buffer.allocUnsafe(2 + payloadLength);
|
|
391
|
-
frame[1] = payloadLength;
|
|
392
|
-
} else if (payloadLength < 65536) {
|
|
393
|
-
frame = Buffer.allocUnsafe(4 + payloadLength);
|
|
394
|
-
frame[1] = 126;
|
|
395
|
-
frame.writeUInt16BE(payloadLength, 2);
|
|
396
|
-
offset = 4;
|
|
397
|
-
} else {
|
|
398
|
-
frame = Buffer.allocUnsafe(10 + payloadLength);
|
|
399
|
-
frame[1] = 127;
|
|
400
|
-
frame.writeBigUInt64BE(BigInt(payloadLength), 2);
|
|
401
|
-
offset = 10;
|
|
402
|
-
}
|
|
403
|
-
frame[0] = 129;
|
|
404
|
-
if (Buffer.isBuffer(payload)) {
|
|
405
|
-
payload.copy(frame, offset);
|
|
406
|
-
}
|
|
407
|
-
return frame;
|
|
408
|
-
}
|
|
409
424
|
/**
|
|
410
|
-
* Close the server
|
|
425
|
+
* Close the server.
|
|
411
426
|
*/
|
|
412
427
|
close(callback) {
|
|
413
428
|
this.clients.forEach((client) => client.close());
|
|
414
429
|
this.clients.clear();
|
|
415
430
|
if (this._httpServer && this._ownsHttpServer) {
|
|
416
431
|
this._httpServer.close(callback);
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
this.emit("close");
|
|
422
|
-
queueCallback(callback);
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
if (runtime === "bun" && this._httpServer?.unregisterWebSocketServer) {
|
|
435
|
+
this._httpServer.unregisterWebSocketServer(this);
|
|
423
436
|
}
|
|
437
|
+
this.emit("close");
|
|
438
|
+
queueCallback(callback);
|
|
424
439
|
}
|
|
425
440
|
/**
|
|
426
|
-
* Check if server should handle request
|
|
441
|
+
* Check if server should handle request.
|
|
427
442
|
*/
|
|
428
443
|
shouldHandle(request) {
|
|
429
444
|
if (this.path && getRequestPath(request.url) !== this.path) {
|
|
@@ -432,10 +447,10 @@
|
|
|
432
447
|
return true;
|
|
433
448
|
}
|
|
434
449
|
/**
|
|
435
|
-
* Get server address
|
|
450
|
+
* Get server address.
|
|
436
451
|
*/
|
|
437
452
|
address() {
|
|
438
|
-
if (this._httpServer
|
|
453
|
+
if (this._httpServer?.address) {
|
|
439
454
|
return this._httpServer.address();
|
|
440
455
|
}
|
|
441
456
|
return null;
|
|
@@ -444,9 +459,13 @@
|
|
|
444
459
|
function createWebSocketServer(options, callback) {
|
|
445
460
|
return new WebSocketServer(options, callback);
|
|
446
461
|
}
|
|
462
|
+
|
|
463
|
+
// src/server/ws/runtime.ts
|
|
447
464
|
function getRuntime() {
|
|
448
465
|
return runtime;
|
|
449
466
|
}
|
|
467
|
+
|
|
468
|
+
// src/server/ws/ws.ts
|
|
450
469
|
var ws_default = {
|
|
451
470
|
WebSocket,
|
|
452
471
|
WebSocketServer,
|