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.
Files changed (153) hide show
  1. package/Cargo.lock +1 -1
  2. package/Cargo.toml +1 -1
  3. package/dist/build.cjs +421 -331
  4. package/dist/build.d.ts +1 -19
  5. package/dist/build.js +420 -330
  6. package/dist/build.mjs +420 -330
  7. package/dist/chokidar.cjs +219 -182
  8. package/dist/chokidar.d.ts +25 -10
  9. package/dist/chokidar.js +217 -182
  10. package/dist/chokidar.mjs +218 -183
  11. package/dist/cli.cjs +22439 -21563
  12. package/dist/cli.d.ts +19 -37
  13. package/dist/cli.mjs +24113 -23252
  14. package/dist/config.cjs +357 -350
  15. package/dist/config.d.ts +17 -245
  16. package/dist/config.js +520 -515
  17. package/dist/config.mjs +346 -341
  18. package/dist/contracts-BeW9k0yZ.d.ts +54 -0
  19. package/dist/contracts-D7KIS-TK.d.ts +36 -0
  20. package/dist/coverage.cjs +448 -485
  21. package/dist/coverage.d.ts +13 -62
  22. package/dist/coverage.js +447 -484
  23. package/dist/coverage.mjs +447 -484
  24. package/dist/database.cjs +819 -828
  25. package/dist/database.d.ts +8 -24
  26. package/dist/database.js +818 -829
  27. package/dist/database.mjs +818 -829
  28. package/dist/desktop-auto-render.cjs +1700 -1523
  29. package/dist/desktop-auto-render.d.ts +4 -12
  30. package/dist/desktop-auto-render.js +1695 -1518
  31. package/dist/desktop-auto-render.mjs +1696 -1519
  32. package/dist/desktop.cjs +3 -1
  33. package/dist/desktop.d.ts +4 -1
  34. package/dist/desktop.js +1 -1
  35. package/dist/desktop.mjs +1 -1
  36. package/dist/dev-build.cjs +830 -0
  37. package/dist/dev-build.d.ts +53 -0
  38. package/dist/dev-build.js +3318 -0
  39. package/dist/dev-build.mjs +797 -0
  40. package/dist/dom.cjs +717 -591
  41. package/dist/dom.d.ts +2 -17
  42. package/dist/dom.js +714 -588
  43. package/dist/dom.mjs +716 -590
  44. package/dist/el.cjs +62 -52
  45. package/dist/el.d.ts +5 -12
  46. package/dist/el.js +60 -52
  47. package/dist/el.mjs +60 -52
  48. package/dist/fs.cjs +72 -63
  49. package/dist/fs.d.ts +22 -19
  50. package/dist/fs.js +71 -62
  51. package/dist/fs.mjs +71 -62
  52. package/dist/hmr.cjs +40 -14
  53. package/dist/hmr.d.ts +11 -23
  54. package/dist/hmr.js +38 -14
  55. package/dist/hmr.mjs +38 -14
  56. package/dist/http.cjs +251 -99
  57. package/dist/http.d.ts +38 -104
  58. package/dist/http.js +249 -99
  59. package/dist/http.mjs +249 -99
  60. package/dist/https.cjs +524 -228
  61. package/dist/https.d.ts +44 -36
  62. package/dist/https.js +520 -226
  63. package/dist/https.mjs +522 -228
  64. package/dist/index.cjs +7502 -7691
  65. package/dist/index.d.ts +6 -3
  66. package/dist/index.js +7486 -7677
  67. package/dist/index.mjs +7497 -7687
  68. package/dist/mime-types.cjs +10 -4
  69. package/dist/mime-types.d.ts +8 -11
  70. package/dist/mime-types.js +9 -3
  71. package/dist/mime-types.mjs +9 -3
  72. package/dist/native.cjs +8616 -8870
  73. package/dist/native.d.ts +7 -10
  74. package/dist/native.js +8682 -8936
  75. package/dist/native.mjs +8615 -8869
  76. package/dist/path.cjs +83 -77
  77. package/dist/path.d.ts +29 -29
  78. package/dist/path.js +82 -76
  79. package/dist/path.mjs +82 -76
  80. package/dist/pm.cjs +3300 -0
  81. package/dist/pm.d.ts +256 -0
  82. package/dist/pm.js +5638 -0
  83. package/dist/pm.mjs +3196 -0
  84. package/dist/preview-build.cjs +712 -0
  85. package/dist/preview-build.d.ts +59 -0
  86. package/dist/preview-build.js +3194 -0
  87. package/dist/preview-build.mjs +676 -0
  88. package/dist/render-context.cjs +13 -2
  89. package/dist/render-context.d.ts +9 -34
  90. package/dist/render-context.js +11 -2
  91. package/dist/render-context.mjs +11 -2
  92. package/dist/router.cjs +787 -646
  93. package/dist/router.d.ts +8 -14
  94. package/dist/router.js +786 -645
  95. package/dist/router.mjs +786 -645
  96. package/dist/runtime.cjs +1 -1
  97. package/dist/runtime.js +1 -1
  98. package/dist/runtime.mjs +1 -1
  99. package/dist/server.cjs +3254 -2684
  100. package/dist/server.d.ts +47 -5
  101. package/dist/server.js +3427 -2859
  102. package/dist/server.mjs +3397 -2829
  103. package/dist/smtp-server.cjs +16 -3
  104. package/dist/smtp-server.d.ts +12 -26
  105. package/dist/smtp-server.js +18 -5
  106. package/dist/smtp-server.mjs +16 -3
  107. package/dist/state-DvEkDehk.d.ts +195 -0
  108. package/dist/state.cjs +768 -659
  109. package/dist/state.d.ts +11 -71
  110. package/dist/state.js +760 -651
  111. package/dist/state.mjs +767 -658
  112. package/dist/style.cjs +1011 -968
  113. package/dist/style.d.ts +13 -127
  114. package/dist/style.js +1009 -970
  115. package/dist/style.mjs +1011 -971
  116. package/dist/test-reporter.cjs +332 -316
  117. package/dist/test-reporter.d.ts +28 -33
  118. package/dist/test-reporter.js +328 -312
  119. package/dist/test-reporter.mjs +328 -312
  120. package/dist/test-runtime.cjs +927 -968
  121. package/dist/test-runtime.d.ts +24 -99
  122. package/dist/test-runtime.js +922 -965
  123. package/dist/test-runtime.mjs +922 -965
  124. package/dist/test.cjs +4428 -4273
  125. package/dist/test.d.ts +2 -8
  126. package/dist/test.js +4307 -4154
  127. package/dist/test.mjs +4419 -4267
  128. package/dist/types-BONVzPtp.d.ts +59 -0
  129. package/dist/types-BR4wMiVx.d.ts +32 -0
  130. package/dist/types-C4gKykuG.d.ts +23 -0
  131. package/dist/types-CIhpN1-K.d.ts +64 -0
  132. package/dist/types-Ckj8md_j.d.ts +84 -0
  133. package/dist/types-CpjQTAkX.d.ts +24 -0
  134. package/dist/types-D0LjrYjS.d.ts +14 -0
  135. package/dist/types-DAisuVr5.d.ts +75 -0
  136. package/dist/types-tJn88E1N.d.ts +242 -0
  137. package/dist/types.d.ts +50 -237
  138. package/dist/universal.cjs +1 -1
  139. package/dist/universal.d.ts +1 -7
  140. package/dist/universal.js +1 -1
  141. package/dist/universal.mjs +1 -1
  142. package/dist/websocket-XfyK23zD.d.ts +119 -0
  143. package/dist/ws.cjs +129 -108
  144. package/dist/ws.d.ts +21 -131
  145. package/dist/ws.js +128 -109
  146. package/dist/ws.mjs +128 -109
  147. package/dist/wss.cjs +757 -479
  148. package/dist/wss.d.ts +31 -28
  149. package/dist/wss.js +755 -479
  150. package/dist/wss.mjs +758 -482
  151. package/package.json +8 -1
  152. package/vendor/epaint-0.31.1/src/image.rs +418 -0
  153. package/dist/server-uMQvZAll.d.ts +0 -458
package/dist/ws.cjs CHANGED
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/ws.ts
20
+ // src/server/ws/index.ts
21
21
  var ws_exports = {};
22
22
  __export(ws_exports, {
23
23
  CLOSE_CODES: () => CLOSE_CODES,
@@ -29,16 +29,8 @@ __export(ws_exports, {
29
29
  getRuntime: () => getRuntime
30
30
  });
31
31
  module.exports = __toCommonJS(ws_exports);
32
- var import_events = require("events");
33
-
34
- // src/runtime.ts
35
- var runtime = (() => {
36
- if (typeof Deno !== "undefined") return "deno";
37
- if (typeof Bun !== "undefined") return "bun";
38
- return "node";
39
- })();
40
32
 
41
- // src/ws.ts
33
+ // src/server/ws/constants.ts
42
34
  var ReadyState = /* @__PURE__ */ ((ReadyState2) => {
43
35
  ReadyState2[ReadyState2["CONNECTING"] = 0] = "CONNECTING";
44
36
  ReadyState2[ReadyState2["OPEN"] = 1] = "OPEN";
@@ -63,6 +55,18 @@ var CLOSE_CODES = {
63
55
  BAD_GATEWAY: 1014,
64
56
  TLS_HANDSHAKE_FAIL: 1015
65
57
  };
58
+
59
+ // src/server/ws/server.ts
60
+ var import_events2 = require("events");
61
+
62
+ // src/shares/runtime.ts
63
+ var runtime = (() => {
64
+ if (typeof Deno !== "undefined") return "deno";
65
+ if (typeof Bun !== "undefined") return "bun";
66
+ return "node";
67
+ })();
68
+
69
+ // src/server/ws/utils.ts
66
70
  function queueCallback(callback, error) {
67
71
  if (callback) {
68
72
  queueMicrotask(() => callback(error));
@@ -78,6 +82,73 @@ function getRequestPath(url) {
78
82
  const [pathname = "/"] = (url || "/").split("?");
79
83
  return pathname || "/";
80
84
  }
85
+ function isIgnorableConnectionError(error) {
86
+ const errorCode = error?.code;
87
+ return errorCode === "ECONNABORTED" || errorCode === "ECONNRESET" || errorCode === "EPIPE";
88
+ }
89
+ function coerceBunMessage(message) {
90
+ const isBinary = typeof message !== "string";
91
+ 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));
92
+ return { payload, isBinary };
93
+ }
94
+ function parseFrame(data) {
95
+ if (data.length < 2) {
96
+ return null;
97
+ }
98
+ const firstByte = data[0];
99
+ const secondByte = data[1];
100
+ const opcode = firstByte & 15;
101
+ const isMasked = (secondByte & 128) === 128;
102
+ let payloadLength = secondByte & 127;
103
+ let offset = 2;
104
+ if (payloadLength === 126) {
105
+ payloadLength = data.readUInt16BE(2);
106
+ offset = 4;
107
+ } else if (payloadLength === 127) {
108
+ payloadLength = Number(data.readBigUInt64BE(2));
109
+ offset = 10;
110
+ }
111
+ let payload = data.subarray(offset);
112
+ if (isMasked) {
113
+ const maskKey = data.subarray(offset, offset + 4);
114
+ payload = data.subarray(offset + 4, offset + 4 + payloadLength);
115
+ for (let index = 0; index < payload.length; index += 1) {
116
+ payload[index] ^= maskKey[index % 4];
117
+ }
118
+ }
119
+ if (opcode === 1) {
120
+ return payload.toString("utf8");
121
+ }
122
+ return null;
123
+ }
124
+ function createFrame(data) {
125
+ const payload = typeof data === "string" ? Buffer.from(data) : data;
126
+ const payloadLength = Buffer.isBuffer(payload) ? payload.length : 0;
127
+ let frame;
128
+ let offset = 2;
129
+ if (payloadLength < 126) {
130
+ frame = Buffer.allocUnsafe(2 + payloadLength);
131
+ frame[1] = payloadLength;
132
+ } else if (payloadLength < 65536) {
133
+ frame = Buffer.allocUnsafe(4 + payloadLength);
134
+ frame[1] = 126;
135
+ frame.writeUInt16BE(payloadLength, 2);
136
+ offset = 4;
137
+ } else {
138
+ frame = Buffer.allocUnsafe(10 + payloadLength);
139
+ frame[1] = 127;
140
+ frame.writeBigUInt64BE(BigInt(payloadLength), 2);
141
+ offset = 10;
142
+ }
143
+ frame[0] = 129;
144
+ if (Buffer.isBuffer(payload)) {
145
+ payload.copy(frame, offset);
146
+ }
147
+ return frame;
148
+ }
149
+
150
+ // src/server/ws/websocket.ts
151
+ var import_events = require("events");
81
152
  var WebSocket = class extends import_events.EventEmitter {
82
153
  constructor(address, protocols, _options) {
83
154
  super();
@@ -108,12 +179,13 @@ var WebSocket = class extends import_events.EventEmitter {
108
179
  };
109
180
  }
110
181
  /**
111
- * Send data through WebSocket
182
+ * Send data through WebSocket.
112
183
  */
113
184
  send(data, options, callback) {
114
185
  const cb = typeof options === "function" ? options : callback;
115
186
  if (this.readyState !== 1 /* OPEN */) {
116
- return queueCallback(cb, new Error("WebSocket is not open"));
187
+ queueCallback(cb, new Error("WebSocket is not open"));
188
+ return;
117
189
  }
118
190
  try {
119
191
  this._socket.send(data);
@@ -123,7 +195,7 @@ var WebSocket = class extends import_events.EventEmitter {
123
195
  }
124
196
  }
125
197
  /**
126
- * Close the WebSocket connection
198
+ * Close the WebSocket connection.
127
199
  */
128
200
  close(code, reason) {
129
201
  if (this.readyState === 3 /* CLOSED */ || this.readyState === 2 /* CLOSING */) {
@@ -133,42 +205,44 @@ var WebSocket = class extends import_events.EventEmitter {
133
205
  this._socket.close(code, typeof reason === "string" ? reason : reason?.toString());
134
206
  }
135
207
  /**
136
- * Pause the socket (no-op for native WebSocket)
208
+ * Pause the socket (no-op for native WebSocket).
137
209
  */
138
210
  pause() {
139
211
  }
140
212
  /**
141
- * Resume the socket (no-op for native WebSocket)
213
+ * Resume the socket (no-op for native WebSocket).
142
214
  */
143
215
  resume() {
144
216
  }
145
217
  /**
146
- * Send a ping frame (no-op for native WebSocket)
218
+ * Send a ping frame (no-op for native WebSocket).
147
219
  */
148
220
  ping(_data, _mask, callback) {
149
221
  queueCallback(callback);
150
222
  }
151
223
  /**
152
- * Send a pong frame (no-op for native WebSocket)
224
+ * Send a pong frame (no-op for native WebSocket).
153
225
  */
154
226
  pong(_data, _mask, callback) {
155
227
  queueCallback(callback);
156
228
  }
157
229
  /**
158
- * Terminate the connection
230
+ * Terminate the connection.
159
231
  */
160
232
  terminate() {
161
233
  this._socket.close();
162
234
  this.readyState = 3 /* CLOSED */;
163
235
  }
164
236
  /**
165
- * Get buffered amount
237
+ * Get buffered amount.
166
238
  */
167
239
  get bufferedAmount() {
168
240
  return this._socket.bufferedAmount || 0;
169
241
  }
170
242
  };
171
- var WebSocketServer = class extends import_events.EventEmitter {
243
+
244
+ // src/server/ws/server.ts
245
+ var WebSocketServer = class extends import_events2.EventEmitter {
172
246
  constructor(options, callback) {
173
247
  super();
174
248
  this.clients = /* @__PURE__ */ new Set();
@@ -179,8 +253,7 @@ var WebSocketServer = class extends import_events.EventEmitter {
179
253
  if (options?.server) {
180
254
  this._httpServer = options.server;
181
255
  this._setupUpgradeHandler();
182
- } else if (options?.noServer) {
183
- } else {
256
+ } else if (!options?.noServer) {
184
257
  const http = require("http");
185
258
  this._httpServer = http.createServer();
186
259
  this._ownsHttpServer = true;
@@ -214,7 +287,7 @@ var WebSocketServer = class extends import_events.EventEmitter {
214
287
  });
215
288
  }
216
289
  /**
217
- * Handle HTTP upgrade for WebSocket
290
+ * Handle HTTP upgrade for WebSocket.
218
291
  */
219
292
  handleUpgrade(request, socket, _head, callback) {
220
293
  const key = request.headers["sec-websocket-key"];
@@ -244,7 +317,7 @@ var WebSocketServer = class extends import_events.EventEmitter {
244
317
  }
245
318
  _createClientFromSocket(socket) {
246
319
  const client = Object.create(WebSocket.prototype);
247
- import_events.EventEmitter.call(client);
320
+ import_events2.EventEmitter.call(client);
248
321
  client.readyState = 1 /* OPEN */;
249
322
  client.url = "ws://localhost";
250
323
  client.protocol = "";
@@ -253,7 +326,7 @@ var WebSocketServer = class extends import_events.EventEmitter {
253
326
  client._socket = socket;
254
327
  socket.on("data", (data) => {
255
328
  try {
256
- const message = this._parseFrame(data);
329
+ const message = parseFrame(data);
257
330
  if (message) {
258
331
  client.emit("message", message, false);
259
332
  }
@@ -266,33 +339,31 @@ var WebSocketServer = class extends import_events.EventEmitter {
266
339
  client.emit("close", CLOSE_CODES.NORMAL, "");
267
340
  });
268
341
  socket.on("error", (error) => {
269
- const errorCode = error.code;
270
- if (errorCode === "ECONNABORTED" || errorCode === "ECONNRESET" || errorCode === "EPIPE") {
342
+ if (isIgnorableConnectionError(error)) {
271
343
  return;
272
344
  }
273
345
  client.emit("error", error);
274
346
  });
275
347
  client.send = (data, _options, callback) => {
276
348
  if (!socket.writable || client.readyState !== 1 /* OPEN */) {
277
- const err = new Error("WebSocket is not open");
278
- err.code = "WS_NOT_OPEN";
279
- queueCallback(callback, err);
349
+ const error = new Error("WebSocket is not open");
350
+ error.code = "WS_NOT_OPEN";
351
+ queueCallback(callback, error);
280
352
  return;
281
353
  }
282
354
  try {
283
- const frame = this._createFrame(data);
284
- socket.write(frame, (err) => {
285
- if (err) {
286
- const errorCode = err.code;
287
- if (errorCode !== "ECONNABORTED" && errorCode !== "ECONNRESET" && errorCode !== "EPIPE") {
288
- queueCallback(callback, err);
289
- } else {
290
- client.readyState = 3 /* CLOSED */;
291
- queueCallback(callback);
292
- }
293
- } else {
355
+ const frame = createFrame(data);
356
+ socket.write(frame, (error) => {
357
+ if (!error) {
294
358
  queueCallback(callback);
359
+ return;
295
360
  }
361
+ if (isIgnorableConnectionError(error)) {
362
+ client.readyState = 3 /* CLOSED */;
363
+ queueCallback(callback);
364
+ return;
365
+ }
366
+ queueCallback(callback, error);
296
367
  });
297
368
  } catch (error) {
298
369
  queueCallback(callback, error);
@@ -306,7 +377,7 @@ var WebSocketServer = class extends import_events.EventEmitter {
306
377
  }
307
378
  _createClientFromBunSocket(socket) {
308
379
  const client = Object.create(WebSocket.prototype);
309
- import_events.EventEmitter.call(client);
380
+ import_events2.EventEmitter.call(client);
310
381
  client.readyState = 1 /* OPEN */;
311
382
  client.url = "ws://localhost";
312
383
  client.protocol = "";
@@ -330,7 +401,7 @@ var WebSocketServer = class extends import_events.EventEmitter {
330
401
  return;
331
402
  }
332
403
  client.readyState = 2 /* CLOSING */;
333
- socket.close(code ?? CLOSE_CODES.NORMAL, reason);
404
+ socket.close(code ?? CLOSE_CODES.NORMAL, typeof reason === "string" ? reason : reason?.toString());
334
405
  };
335
406
  client.terminate = () => {
336
407
  socket.close();
@@ -361,8 +432,7 @@ var WebSocketServer = class extends import_events.EventEmitter {
361
432
  if (!client) {
362
433
  return;
363
434
  }
364
- const isBinary = typeof message !== "string";
365
- 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));
435
+ const { payload, isBinary } = coerceBunMessage(message);
366
436
  client.emit("message", payload, isBinary);
367
437
  }
368
438
  _handleBunClose(socket, code, reason) {
@@ -374,77 +444,24 @@ var WebSocketServer = class extends import_events.EventEmitter {
374
444
  client.emit("close", code, typeof reason === "string" ? reason : reason?.toString() || "");
375
445
  this.clients.delete(client);
376
446
  }
377
- _parseFrame(data) {
378
- if (data.length < 2) return null;
379
- const firstByte = data[0];
380
- const secondByte = data[1];
381
- const opcode = firstByte & 15;
382
- const isMasked = (secondByte & 128) === 128;
383
- let payloadLength = secondByte & 127;
384
- let offset = 2;
385
- if (payloadLength === 126) {
386
- payloadLength = data.readUInt16BE(2);
387
- offset = 4;
388
- } else if (payloadLength === 127) {
389
- payloadLength = Number(data.readBigUInt64BE(2));
390
- offset = 10;
391
- }
392
- let payload = data.subarray(offset);
393
- if (isMasked) {
394
- const maskKey = data.subarray(offset, offset + 4);
395
- payload = data.subarray(offset + 4, offset + 4 + payloadLength);
396
- for (let i = 0; i < payload.length; i++) {
397
- payload[i] ^= maskKey[i % 4];
398
- }
399
- }
400
- if (opcode === 1) {
401
- return payload.toString("utf8");
402
- }
403
- return null;
404
- }
405
- _createFrame(data) {
406
- const payload = typeof data === "string" ? Buffer.from(data) : data;
407
- const payloadLength = Buffer.isBuffer(payload) ? payload.length : 0;
408
- let frame;
409
- let offset = 2;
410
- if (payloadLength < 126) {
411
- frame = Buffer.allocUnsafe(2 + payloadLength);
412
- frame[1] = payloadLength;
413
- } else if (payloadLength < 65536) {
414
- frame = Buffer.allocUnsafe(4 + payloadLength);
415
- frame[1] = 126;
416
- frame.writeUInt16BE(payloadLength, 2);
417
- offset = 4;
418
- } else {
419
- frame = Buffer.allocUnsafe(10 + payloadLength);
420
- frame[1] = 127;
421
- frame.writeBigUInt64BE(BigInt(payloadLength), 2);
422
- offset = 10;
423
- }
424
- frame[0] = 129;
425
- if (Buffer.isBuffer(payload)) {
426
- payload.copy(frame, offset);
427
- }
428
- return frame;
429
- }
430
447
  /**
431
- * Close the server
448
+ * Close the server.
432
449
  */
433
450
  close(callback) {
434
451
  this.clients.forEach((client) => client.close());
435
452
  this.clients.clear();
436
453
  if (this._httpServer && this._ownsHttpServer) {
437
454
  this._httpServer.close(callback);
438
- } else {
439
- if (runtime === "bun" && this._httpServer?.unregisterWebSocketServer) {
440
- this._httpServer.unregisterWebSocketServer(this);
441
- }
442
- this.emit("close");
443
- queueCallback(callback);
455
+ return;
456
+ }
457
+ if (runtime === "bun" && this._httpServer?.unregisterWebSocketServer) {
458
+ this._httpServer.unregisterWebSocketServer(this);
444
459
  }
460
+ this.emit("close");
461
+ queueCallback(callback);
445
462
  }
446
463
  /**
447
- * Check if server should handle request
464
+ * Check if server should handle request.
448
465
  */
449
466
  shouldHandle(request) {
450
467
  if (this.path && getRequestPath(request.url) !== this.path) {
@@ -453,10 +470,10 @@ var WebSocketServer = class extends import_events.EventEmitter {
453
470
  return true;
454
471
  }
455
472
  /**
456
- * Get server address
473
+ * Get server address.
457
474
  */
458
475
  address() {
459
- if (this._httpServer && this._httpServer.address) {
476
+ if (this._httpServer?.address) {
460
477
  return this._httpServer.address();
461
478
  }
462
479
  return null;
@@ -465,9 +482,13 @@ var WebSocketServer = class extends import_events.EventEmitter {
465
482
  function createWebSocketServer(options, callback) {
466
483
  return new WebSocketServer(options, callback);
467
484
  }
485
+
486
+ // src/server/ws/runtime.ts
468
487
  function getRuntime() {
469
488
  return runtime;
470
489
  }
490
+
491
+ // src/server/ws/ws.ts
471
492
  var ws_default = {
472
493
  WebSocket,
473
494
  WebSocketServer,
package/dist/ws.d.ts CHANGED
@@ -1,129 +1,11 @@
1
+ import { W as WebSocket, S as ServerOptions, R as ReadyState } from './websocket-XfyK23zD.js';
2
+ export { C as CLOSE_CODES, D as Data, a as SendOptions, V as VerifyClientCallback } from './websocket-XfyK23zD.js';
1
3
  import { EventEmitter } from 'events';
2
- import { IncomingMessage } from './http.js';
4
+ import { I as IncomingMessage } from './types-DAisuVr5.js';
3
5
  import 'node:events';
4
6
 
5
7
  /**
6
- * WebSocket module with unified API across runtimes
7
- * Pure implementation without external dependencies
8
- * - Node.js: uses native 'ws' module (built-in WebSocket implementation)
9
- * - Bun: uses native WebSocket
10
- * - Deno: uses native WebSocket
11
- */
12
-
13
- /**
14
- * WebSocket ready state
15
- */
16
- declare enum ReadyState {
17
- CONNECTING = 0,
18
- OPEN = 1,
19
- CLOSING = 2,
20
- CLOSED = 3
21
- }
22
- /**
23
- * WebSocket close codes
24
- */
25
- declare const CLOSE_CODES: {
26
- readonly NORMAL: 1000;
27
- readonly GOING_AWAY: 1001;
28
- readonly PROTOCOL_ERROR: 1002;
29
- readonly UNSUPPORTED_DATA: 1003;
30
- readonly NO_STATUS: 1005;
31
- readonly ABNORMAL: 1006;
32
- readonly INVALID_DATA: 1007;
33
- readonly POLICY_VIOLATION: 1008;
34
- readonly MESSAGE_TOO_BIG: 1009;
35
- readonly EXTENSION_REQUIRED: 1010;
36
- readonly INTERNAL_ERROR: 1011;
37
- readonly SERVICE_RESTART: 1012;
38
- readonly TRY_AGAIN_LATER: 1013;
39
- readonly BAD_GATEWAY: 1014;
40
- readonly TLS_HANDSHAKE_FAIL: 1015;
41
- };
42
- /**
43
- * WebSocket data types
44
- */
45
- type Data = string | Buffer | ArrayBuffer | Buffer[];
46
- /**
47
- * WebSocket send options
48
- */
49
- interface SendOptions {
50
- binary?: boolean;
51
- compress?: boolean;
52
- fin?: boolean;
53
- mask?: boolean;
54
- }
55
- /**
56
- * WebSocket server options
57
- */
58
- interface ServerOptions {
59
- host?: string;
60
- port?: number;
61
- backlog?: number;
62
- server?: any;
63
- verifyClient?: VerifyClientCallback;
64
- handleProtocols?: (protocols: Set<string>, request: IncomingMessage) => string | false;
65
- path?: string;
66
- noServer?: boolean;
67
- clientTracking?: boolean;
68
- perMessageDeflate?: boolean | object;
69
- maxPayload?: number;
70
- }
71
- /**
72
- * Verify client callback
73
- */
74
- type VerifyClientCallback = (info: {
75
- origin: string;
76
- secure: boolean;
77
- req: IncomingMessage;
78
- }, callback?: (result: boolean, code?: number, message?: string) => void) => boolean | void;
79
- /**
80
- * WebSocket class - Pure implementation
81
- */
82
- declare class WebSocket extends EventEmitter {
83
- readyState: ReadyState;
84
- url: string;
85
- protocol: string;
86
- extensions: string;
87
- binaryType: 'nodebuffer' | 'arraybuffer' | 'fragments';
88
- /** @internal */
89
- _socket: any;
90
- constructor(address: string | URL, protocols?: string | string[], _options?: any);
91
- private _setupNativeSocket;
92
- /**
93
- * Send data through WebSocket
94
- */
95
- send(data: Data, options?: SendOptions | ((err?: Error) => void), callback?: (err?: Error) => void): void;
96
- /**
97
- * Close the WebSocket connection
98
- */
99
- close(code?: number, reason?: string | Buffer): void;
100
- /**
101
- * Pause the socket (no-op for native WebSocket)
102
- */
103
- pause(): void;
104
- /**
105
- * Resume the socket (no-op for native WebSocket)
106
- */
107
- resume(): void;
108
- /**
109
- * Send a ping frame (no-op for native WebSocket)
110
- */
111
- ping(_data?: Data, _mask?: boolean, callback?: (err?: Error) => void): void;
112
- /**
113
- * Send a pong frame (no-op for native WebSocket)
114
- */
115
- pong(_data?: Data, _mask?: boolean, callback?: (err?: Error) => void): void;
116
- /**
117
- * Terminate the connection
118
- */
119
- terminate(): void;
120
- /**
121
- * Get buffered amount
122
- */
123
- get bufferedAmount(): number;
124
- }
125
- /**
126
- * WebSocket Server - Server-side WebSocket implementation
8
+ * WebSocket server implementation.
127
9
  */
128
10
  declare class WebSocketServer extends EventEmitter {
129
11
  clients: Set<WebSocket>;
@@ -134,7 +16,7 @@ declare class WebSocketServer extends EventEmitter {
134
16
  constructor(options?: ServerOptions, callback?: () => void);
135
17
  private _setupUpgradeHandler;
136
18
  /**
137
- * Handle HTTP upgrade for WebSocket
19
+ * Handle HTTP upgrade for WebSocket.
138
20
  */
139
21
  handleUpgrade(request: IncomingMessage, socket: any, _head: Buffer, callback: (client: WebSocket) => void): void;
140
22
  private _createClientFromSocket;
@@ -142,18 +24,16 @@ declare class WebSocketServer extends EventEmitter {
142
24
  _handleBunOpen(socket: any, request?: Partial<IncomingMessage>): void;
143
25
  _handleBunMessage(socket: any, message: any): void;
144
26
  _handleBunClose(socket: any, code: number, reason: any): void;
145
- private _parseFrame;
146
- private _createFrame;
147
27
  /**
148
- * Close the server
28
+ * Close the server.
149
29
  */
150
30
  close(callback?: (err?: Error) => void): void;
151
31
  /**
152
- * Check if server should handle request
32
+ * Check if server should handle request.
153
33
  */
154
34
  shouldHandle(request: IncomingMessage): boolean;
155
35
  /**
156
- * Get server address
36
+ * Get server address.
157
37
  */
158
38
  address(): {
159
39
  port: number;
@@ -162,13 +42,23 @@ declare class WebSocketServer extends EventEmitter {
162
42
  } | null;
163
43
  }
164
44
  /**
165
- * Create WebSocket server
45
+ * Create WebSocket server.
166
46
  */
167
47
  declare function createWebSocketServer(options?: ServerOptions, callback?: () => void): WebSocketServer;
48
+
168
49
  /**
169
- * Get current runtime
50
+ * Get current runtime.
170
51
  */
171
52
  declare function getRuntime(): 'node' | 'bun' | 'deno';
53
+
54
+ /**
55
+ * WebSocket module with unified API across runtimes
56
+ * Pure implementation without external dependencies
57
+ * - Node.js: uses native 'ws' module (built-in WebSocket implementation)
58
+ * - Bun: uses native WebSocket
59
+ * - Deno: uses native WebSocket
60
+ */
61
+
172
62
  /**
173
63
  * Default export
174
64
  */
@@ -197,4 +87,4 @@ declare const _default: {
197
87
  getRuntime: typeof getRuntime;
198
88
  };
199
89
 
200
- export { CLOSE_CODES, type Data, ReadyState, type SendOptions, type ServerOptions, type VerifyClientCallback, WebSocket, WebSocketServer, createWebSocketServer, _default as default, getRuntime };
90
+ export { ReadyState, ServerOptions, WebSocket, WebSocketServer, createWebSocketServer, _default as default, getRuntime };