elit 3.6.5 → 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/README.md +6 -0
- package/dist/build.cjs +421 -331
- package/dist/build.d.ts +1 -16
- 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 +21608 -20241
- package/dist/cli.d.ts +19 -37
- package/dist/cli.mjs +21262 -19910
- package/dist/config.cjs +357 -350
- package/dist/config.d.ts +19 -240
- 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 -59
- 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 -1522
- package/dist/desktop-auto-render.d.ts +4 -9
- package/dist/desktop-auto-render.js +1695 -1517
- package/dist/desktop-auto-render.mjs +1696 -1518
- 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 -590
- package/dist/dom.d.ts +2 -15
- package/dist/dom.js +714 -587
- package/dist/dom.mjs +716 -589
- package/dist/el.cjs +62 -52
- package/dist/el.d.ts +5 -10
- 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 -7690
- package/dist/index.d.ts +8 -3
- package/dist/index.js +7486 -7676
- package/dist/index.mjs +7497 -7686
- 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 -8869
- package/dist/native.d.ts +7 -8
- package/dist/native.js +8682 -8935
- package/dist/native.mjs +8615 -8868
- 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 -31
- package/dist/render-context.js +11 -2
- package/dist/render-context.mjs +11 -2
- package/dist/router.cjs +787 -645
- package/dist/router.d.ts +8 -12
- package/dist/router.js +786 -644
- package/dist/router.mjs +786 -644
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.js +1 -1
- package/dist/runtime.mjs +1 -1
- package/dist/server.cjs +3315 -2603
- package/dist/server.d.ts +49 -4
- package/dist/server.js +7611 -2834
- package/dist/server.mjs +3317 -2607
- package/dist/smtp-server.cjs +128 -0
- package/dist/smtp-server.d.ts +27 -0
- package/dist/smtp-server.js +4199 -0
- package/dist/smtp-server.mjs +100 -0
- package/dist/state-DvEkDehk.d.ts +195 -0
- package/dist/state.cjs +768 -658
- package/dist/state.d.ts +11 -69
- package/dist/state.js +760 -650
- package/dist/state.mjs +767 -657
- 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 +71 -226
- package/dist/universal.cjs +1 -1
- package/dist/universal.d.ts +1 -5
- 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 +16 -1
- package/vendor/epaint-0.31.1/src/image.rs +418 -0
- package/dist/server-CcBFc2F5.d.ts +0 -449
package/dist/ws.mjs
CHANGED
|
@@ -6,17 +6,7 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
6
6
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
-
// src/ws.ts
|
|
10
|
-
import { EventEmitter } from "events";
|
|
11
|
-
|
|
12
|
-
// src/runtime.ts
|
|
13
|
-
var runtime = (() => {
|
|
14
|
-
if (typeof Deno !== "undefined") return "deno";
|
|
15
|
-
if (typeof Bun !== "undefined") return "bun";
|
|
16
|
-
return "node";
|
|
17
|
-
})();
|
|
18
|
-
|
|
19
|
-
// src/ws.ts
|
|
9
|
+
// src/server/ws/constants.ts
|
|
20
10
|
var ReadyState = /* @__PURE__ */ ((ReadyState2) => {
|
|
21
11
|
ReadyState2[ReadyState2["CONNECTING"] = 0] = "CONNECTING";
|
|
22
12
|
ReadyState2[ReadyState2["OPEN"] = 1] = "OPEN";
|
|
@@ -41,6 +31,18 @@ var CLOSE_CODES = {
|
|
|
41
31
|
BAD_GATEWAY: 1014,
|
|
42
32
|
TLS_HANDSHAKE_FAIL: 1015
|
|
43
33
|
};
|
|
34
|
+
|
|
35
|
+
// src/server/ws/server.ts
|
|
36
|
+
import { EventEmitter as EventEmitter2 } from "events";
|
|
37
|
+
|
|
38
|
+
// src/shares/runtime.ts
|
|
39
|
+
var runtime = (() => {
|
|
40
|
+
if (typeof Deno !== "undefined") return "deno";
|
|
41
|
+
if (typeof Bun !== "undefined") return "bun";
|
|
42
|
+
return "node";
|
|
43
|
+
})();
|
|
44
|
+
|
|
45
|
+
// src/server/ws/utils.ts
|
|
44
46
|
function queueCallback(callback, error) {
|
|
45
47
|
if (callback) {
|
|
46
48
|
queueMicrotask(() => callback(error));
|
|
@@ -56,6 +58,73 @@ function getRequestPath(url) {
|
|
|
56
58
|
const [pathname = "/"] = (url || "/").split("?");
|
|
57
59
|
return pathname || "/";
|
|
58
60
|
}
|
|
61
|
+
function isIgnorableConnectionError(error) {
|
|
62
|
+
const errorCode = error?.code;
|
|
63
|
+
return errorCode === "ECONNABORTED" || errorCode === "ECONNRESET" || errorCode === "EPIPE";
|
|
64
|
+
}
|
|
65
|
+
function coerceBunMessage(message) {
|
|
66
|
+
const isBinary = typeof message !== "string";
|
|
67
|
+
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));
|
|
68
|
+
return { payload, isBinary };
|
|
69
|
+
}
|
|
70
|
+
function parseFrame(data) {
|
|
71
|
+
if (data.length < 2) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const firstByte = data[0];
|
|
75
|
+
const secondByte = data[1];
|
|
76
|
+
const opcode = firstByte & 15;
|
|
77
|
+
const isMasked = (secondByte & 128) === 128;
|
|
78
|
+
let payloadLength = secondByte & 127;
|
|
79
|
+
let offset = 2;
|
|
80
|
+
if (payloadLength === 126) {
|
|
81
|
+
payloadLength = data.readUInt16BE(2);
|
|
82
|
+
offset = 4;
|
|
83
|
+
} else if (payloadLength === 127) {
|
|
84
|
+
payloadLength = Number(data.readBigUInt64BE(2));
|
|
85
|
+
offset = 10;
|
|
86
|
+
}
|
|
87
|
+
let payload = data.subarray(offset);
|
|
88
|
+
if (isMasked) {
|
|
89
|
+
const maskKey = data.subarray(offset, offset + 4);
|
|
90
|
+
payload = data.subarray(offset + 4, offset + 4 + payloadLength);
|
|
91
|
+
for (let index = 0; index < payload.length; index += 1) {
|
|
92
|
+
payload[index] ^= maskKey[index % 4];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (opcode === 1) {
|
|
96
|
+
return payload.toString("utf8");
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
function createFrame(data) {
|
|
101
|
+
const payload = typeof data === "string" ? Buffer.from(data) : data;
|
|
102
|
+
const payloadLength = Buffer.isBuffer(payload) ? payload.length : 0;
|
|
103
|
+
let frame;
|
|
104
|
+
let offset = 2;
|
|
105
|
+
if (payloadLength < 126) {
|
|
106
|
+
frame = Buffer.allocUnsafe(2 + payloadLength);
|
|
107
|
+
frame[1] = payloadLength;
|
|
108
|
+
} else if (payloadLength < 65536) {
|
|
109
|
+
frame = Buffer.allocUnsafe(4 + payloadLength);
|
|
110
|
+
frame[1] = 126;
|
|
111
|
+
frame.writeUInt16BE(payloadLength, 2);
|
|
112
|
+
offset = 4;
|
|
113
|
+
} else {
|
|
114
|
+
frame = Buffer.allocUnsafe(10 + payloadLength);
|
|
115
|
+
frame[1] = 127;
|
|
116
|
+
frame.writeBigUInt64BE(BigInt(payloadLength), 2);
|
|
117
|
+
offset = 10;
|
|
118
|
+
}
|
|
119
|
+
frame[0] = 129;
|
|
120
|
+
if (Buffer.isBuffer(payload)) {
|
|
121
|
+
payload.copy(frame, offset);
|
|
122
|
+
}
|
|
123
|
+
return frame;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// src/server/ws/websocket.ts
|
|
127
|
+
import { EventEmitter } from "events";
|
|
59
128
|
var WebSocket = class extends EventEmitter {
|
|
60
129
|
constructor(address, protocols, _options) {
|
|
61
130
|
super();
|
|
@@ -86,12 +155,13 @@ var WebSocket = class extends EventEmitter {
|
|
|
86
155
|
};
|
|
87
156
|
}
|
|
88
157
|
/**
|
|
89
|
-
* Send data through WebSocket
|
|
158
|
+
* Send data through WebSocket.
|
|
90
159
|
*/
|
|
91
160
|
send(data, options, callback) {
|
|
92
161
|
const cb = typeof options === "function" ? options : callback;
|
|
93
162
|
if (this.readyState !== 1 /* OPEN */) {
|
|
94
|
-
|
|
163
|
+
queueCallback(cb, new Error("WebSocket is not open"));
|
|
164
|
+
return;
|
|
95
165
|
}
|
|
96
166
|
try {
|
|
97
167
|
this._socket.send(data);
|
|
@@ -101,7 +171,7 @@ var WebSocket = class extends EventEmitter {
|
|
|
101
171
|
}
|
|
102
172
|
}
|
|
103
173
|
/**
|
|
104
|
-
* Close the WebSocket connection
|
|
174
|
+
* Close the WebSocket connection.
|
|
105
175
|
*/
|
|
106
176
|
close(code, reason) {
|
|
107
177
|
if (this.readyState === 3 /* CLOSED */ || this.readyState === 2 /* CLOSING */) {
|
|
@@ -111,42 +181,44 @@ var WebSocket = class extends EventEmitter {
|
|
|
111
181
|
this._socket.close(code, typeof reason === "string" ? reason : reason?.toString());
|
|
112
182
|
}
|
|
113
183
|
/**
|
|
114
|
-
* Pause the socket (no-op for native WebSocket)
|
|
184
|
+
* Pause the socket (no-op for native WebSocket).
|
|
115
185
|
*/
|
|
116
186
|
pause() {
|
|
117
187
|
}
|
|
118
188
|
/**
|
|
119
|
-
* Resume the socket (no-op for native WebSocket)
|
|
189
|
+
* Resume the socket (no-op for native WebSocket).
|
|
120
190
|
*/
|
|
121
191
|
resume() {
|
|
122
192
|
}
|
|
123
193
|
/**
|
|
124
|
-
* Send a ping frame (no-op for native WebSocket)
|
|
194
|
+
* Send a ping frame (no-op for native WebSocket).
|
|
125
195
|
*/
|
|
126
196
|
ping(_data, _mask, callback) {
|
|
127
197
|
queueCallback(callback);
|
|
128
198
|
}
|
|
129
199
|
/**
|
|
130
|
-
* Send a pong frame (no-op for native WebSocket)
|
|
200
|
+
* Send a pong frame (no-op for native WebSocket).
|
|
131
201
|
*/
|
|
132
202
|
pong(_data, _mask, callback) {
|
|
133
203
|
queueCallback(callback);
|
|
134
204
|
}
|
|
135
205
|
/**
|
|
136
|
-
* Terminate the connection
|
|
206
|
+
* Terminate the connection.
|
|
137
207
|
*/
|
|
138
208
|
terminate() {
|
|
139
209
|
this._socket.close();
|
|
140
210
|
this.readyState = 3 /* CLOSED */;
|
|
141
211
|
}
|
|
142
212
|
/**
|
|
143
|
-
* Get buffered amount
|
|
213
|
+
* Get buffered amount.
|
|
144
214
|
*/
|
|
145
215
|
get bufferedAmount() {
|
|
146
216
|
return this._socket.bufferedAmount || 0;
|
|
147
217
|
}
|
|
148
218
|
};
|
|
149
|
-
|
|
219
|
+
|
|
220
|
+
// src/server/ws/server.ts
|
|
221
|
+
var WebSocketServer = class extends EventEmitter2 {
|
|
150
222
|
constructor(options, callback) {
|
|
151
223
|
super();
|
|
152
224
|
this.clients = /* @__PURE__ */ new Set();
|
|
@@ -157,8 +229,7 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
157
229
|
if (options?.server) {
|
|
158
230
|
this._httpServer = options.server;
|
|
159
231
|
this._setupUpgradeHandler();
|
|
160
|
-
} else if (options?.noServer) {
|
|
161
|
-
} else {
|
|
232
|
+
} else if (!options?.noServer) {
|
|
162
233
|
const http = __require("http");
|
|
163
234
|
this._httpServer = http.createServer();
|
|
164
235
|
this._ownsHttpServer = true;
|
|
@@ -192,7 +263,7 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
192
263
|
});
|
|
193
264
|
}
|
|
194
265
|
/**
|
|
195
|
-
* Handle HTTP upgrade for WebSocket
|
|
266
|
+
* Handle HTTP upgrade for WebSocket.
|
|
196
267
|
*/
|
|
197
268
|
handleUpgrade(request, socket, _head, callback) {
|
|
198
269
|
const key = request.headers["sec-websocket-key"];
|
|
@@ -222,7 +293,7 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
222
293
|
}
|
|
223
294
|
_createClientFromSocket(socket) {
|
|
224
295
|
const client = Object.create(WebSocket.prototype);
|
|
225
|
-
|
|
296
|
+
EventEmitter2.call(client);
|
|
226
297
|
client.readyState = 1 /* OPEN */;
|
|
227
298
|
client.url = "ws://localhost";
|
|
228
299
|
client.protocol = "";
|
|
@@ -231,7 +302,7 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
231
302
|
client._socket = socket;
|
|
232
303
|
socket.on("data", (data) => {
|
|
233
304
|
try {
|
|
234
|
-
const message =
|
|
305
|
+
const message = parseFrame(data);
|
|
235
306
|
if (message) {
|
|
236
307
|
client.emit("message", message, false);
|
|
237
308
|
}
|
|
@@ -244,33 +315,31 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
244
315
|
client.emit("close", CLOSE_CODES.NORMAL, "");
|
|
245
316
|
});
|
|
246
317
|
socket.on("error", (error) => {
|
|
247
|
-
|
|
248
|
-
if (errorCode === "ECONNABORTED" || errorCode === "ECONNRESET" || errorCode === "EPIPE") {
|
|
318
|
+
if (isIgnorableConnectionError(error)) {
|
|
249
319
|
return;
|
|
250
320
|
}
|
|
251
321
|
client.emit("error", error);
|
|
252
322
|
});
|
|
253
323
|
client.send = (data, _options, callback) => {
|
|
254
324
|
if (!socket.writable || client.readyState !== 1 /* OPEN */) {
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
queueCallback(callback,
|
|
325
|
+
const error = new Error("WebSocket is not open");
|
|
326
|
+
error.code = "WS_NOT_OPEN";
|
|
327
|
+
queueCallback(callback, error);
|
|
258
328
|
return;
|
|
259
329
|
}
|
|
260
330
|
try {
|
|
261
|
-
const frame =
|
|
262
|
-
socket.write(frame, (
|
|
263
|
-
if (
|
|
264
|
-
const errorCode = err.code;
|
|
265
|
-
if (errorCode !== "ECONNABORTED" && errorCode !== "ECONNRESET" && errorCode !== "EPIPE") {
|
|
266
|
-
queueCallback(callback, err);
|
|
267
|
-
} else {
|
|
268
|
-
client.readyState = 3 /* CLOSED */;
|
|
269
|
-
queueCallback(callback);
|
|
270
|
-
}
|
|
271
|
-
} else {
|
|
331
|
+
const frame = createFrame(data);
|
|
332
|
+
socket.write(frame, (error) => {
|
|
333
|
+
if (!error) {
|
|
272
334
|
queueCallback(callback);
|
|
335
|
+
return;
|
|
273
336
|
}
|
|
337
|
+
if (isIgnorableConnectionError(error)) {
|
|
338
|
+
client.readyState = 3 /* CLOSED */;
|
|
339
|
+
queueCallback(callback);
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
queueCallback(callback, error);
|
|
274
343
|
});
|
|
275
344
|
} catch (error) {
|
|
276
345
|
queueCallback(callback, error);
|
|
@@ -284,7 +353,7 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
284
353
|
}
|
|
285
354
|
_createClientFromBunSocket(socket) {
|
|
286
355
|
const client = Object.create(WebSocket.prototype);
|
|
287
|
-
|
|
356
|
+
EventEmitter2.call(client);
|
|
288
357
|
client.readyState = 1 /* OPEN */;
|
|
289
358
|
client.url = "ws://localhost";
|
|
290
359
|
client.protocol = "";
|
|
@@ -308,7 +377,7 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
308
377
|
return;
|
|
309
378
|
}
|
|
310
379
|
client.readyState = 2 /* CLOSING */;
|
|
311
|
-
socket.close(code ?? CLOSE_CODES.NORMAL, reason);
|
|
380
|
+
socket.close(code ?? CLOSE_CODES.NORMAL, typeof reason === "string" ? reason : reason?.toString());
|
|
312
381
|
};
|
|
313
382
|
client.terminate = () => {
|
|
314
383
|
socket.close();
|
|
@@ -339,8 +408,7 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
339
408
|
if (!client) {
|
|
340
409
|
return;
|
|
341
410
|
}
|
|
342
|
-
const isBinary =
|
|
343
|
-
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));
|
|
411
|
+
const { payload, isBinary } = coerceBunMessage(message);
|
|
344
412
|
client.emit("message", payload, isBinary);
|
|
345
413
|
}
|
|
346
414
|
_handleBunClose(socket, code, reason) {
|
|
@@ -352,77 +420,24 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
352
420
|
client.emit("close", code, typeof reason === "string" ? reason : reason?.toString() || "");
|
|
353
421
|
this.clients.delete(client);
|
|
354
422
|
}
|
|
355
|
-
_parseFrame(data) {
|
|
356
|
-
if (data.length < 2) return null;
|
|
357
|
-
const firstByte = data[0];
|
|
358
|
-
const secondByte = data[1];
|
|
359
|
-
const opcode = firstByte & 15;
|
|
360
|
-
const isMasked = (secondByte & 128) === 128;
|
|
361
|
-
let payloadLength = secondByte & 127;
|
|
362
|
-
let offset = 2;
|
|
363
|
-
if (payloadLength === 126) {
|
|
364
|
-
payloadLength = data.readUInt16BE(2);
|
|
365
|
-
offset = 4;
|
|
366
|
-
} else if (payloadLength === 127) {
|
|
367
|
-
payloadLength = Number(data.readBigUInt64BE(2));
|
|
368
|
-
offset = 10;
|
|
369
|
-
}
|
|
370
|
-
let payload = data.subarray(offset);
|
|
371
|
-
if (isMasked) {
|
|
372
|
-
const maskKey = data.subarray(offset, offset + 4);
|
|
373
|
-
payload = data.subarray(offset + 4, offset + 4 + payloadLength);
|
|
374
|
-
for (let i = 0; i < payload.length; i++) {
|
|
375
|
-
payload[i] ^= maskKey[i % 4];
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
if (opcode === 1) {
|
|
379
|
-
return payload.toString("utf8");
|
|
380
|
-
}
|
|
381
|
-
return null;
|
|
382
|
-
}
|
|
383
|
-
_createFrame(data) {
|
|
384
|
-
const payload = typeof data === "string" ? Buffer.from(data) : data;
|
|
385
|
-
const payloadLength = Buffer.isBuffer(payload) ? payload.length : 0;
|
|
386
|
-
let frame;
|
|
387
|
-
let offset = 2;
|
|
388
|
-
if (payloadLength < 126) {
|
|
389
|
-
frame = Buffer.allocUnsafe(2 + payloadLength);
|
|
390
|
-
frame[1] = payloadLength;
|
|
391
|
-
} else if (payloadLength < 65536) {
|
|
392
|
-
frame = Buffer.allocUnsafe(4 + payloadLength);
|
|
393
|
-
frame[1] = 126;
|
|
394
|
-
frame.writeUInt16BE(payloadLength, 2);
|
|
395
|
-
offset = 4;
|
|
396
|
-
} else {
|
|
397
|
-
frame = Buffer.allocUnsafe(10 + payloadLength);
|
|
398
|
-
frame[1] = 127;
|
|
399
|
-
frame.writeBigUInt64BE(BigInt(payloadLength), 2);
|
|
400
|
-
offset = 10;
|
|
401
|
-
}
|
|
402
|
-
frame[0] = 129;
|
|
403
|
-
if (Buffer.isBuffer(payload)) {
|
|
404
|
-
payload.copy(frame, offset);
|
|
405
|
-
}
|
|
406
|
-
return frame;
|
|
407
|
-
}
|
|
408
423
|
/**
|
|
409
|
-
* Close the server
|
|
424
|
+
* Close the server.
|
|
410
425
|
*/
|
|
411
426
|
close(callback) {
|
|
412
427
|
this.clients.forEach((client) => client.close());
|
|
413
428
|
this.clients.clear();
|
|
414
429
|
if (this._httpServer && this._ownsHttpServer) {
|
|
415
430
|
this._httpServer.close(callback);
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
this.emit("close");
|
|
421
|
-
queueCallback(callback);
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
if (runtime === "bun" && this._httpServer?.unregisterWebSocketServer) {
|
|
434
|
+
this._httpServer.unregisterWebSocketServer(this);
|
|
422
435
|
}
|
|
436
|
+
this.emit("close");
|
|
437
|
+
queueCallback(callback);
|
|
423
438
|
}
|
|
424
439
|
/**
|
|
425
|
-
* Check if server should handle request
|
|
440
|
+
* Check if server should handle request.
|
|
426
441
|
*/
|
|
427
442
|
shouldHandle(request) {
|
|
428
443
|
if (this.path && getRequestPath(request.url) !== this.path) {
|
|
@@ -431,10 +446,10 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
431
446
|
return true;
|
|
432
447
|
}
|
|
433
448
|
/**
|
|
434
|
-
* Get server address
|
|
449
|
+
* Get server address.
|
|
435
450
|
*/
|
|
436
451
|
address() {
|
|
437
|
-
if (this._httpServer
|
|
452
|
+
if (this._httpServer?.address) {
|
|
438
453
|
return this._httpServer.address();
|
|
439
454
|
}
|
|
440
455
|
return null;
|
|
@@ -443,9 +458,13 @@ var WebSocketServer = class extends EventEmitter {
|
|
|
443
458
|
function createWebSocketServer(options, callback) {
|
|
444
459
|
return new WebSocketServer(options, callback);
|
|
445
460
|
}
|
|
461
|
+
|
|
462
|
+
// src/server/ws/runtime.ts
|
|
446
463
|
function getRuntime() {
|
|
447
464
|
return runtime;
|
|
448
465
|
}
|
|
466
|
+
|
|
467
|
+
// src/server/ws/ws.ts
|
|
449
468
|
var ws_default = {
|
|
450
469
|
WebSocket,
|
|
451
470
|
WebSocketServer,
|