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.
Files changed (154) hide show
  1. package/Cargo.lock +1 -1
  2. package/Cargo.toml +1 -1
  3. package/README.md +6 -0
  4. package/dist/build.cjs +421 -331
  5. package/dist/build.d.ts +1 -16
  6. package/dist/build.js +420 -330
  7. package/dist/build.mjs +420 -330
  8. package/dist/chokidar.cjs +219 -182
  9. package/dist/chokidar.d.ts +25 -10
  10. package/dist/chokidar.js +217 -182
  11. package/dist/chokidar.mjs +218 -183
  12. package/dist/cli.cjs +21608 -20241
  13. package/dist/cli.d.ts +19 -37
  14. package/dist/cli.mjs +21262 -19910
  15. package/dist/config.cjs +357 -350
  16. package/dist/config.d.ts +19 -240
  17. package/dist/config.js +520 -515
  18. package/dist/config.mjs +346 -341
  19. package/dist/contracts-BeW9k0yZ.d.ts +54 -0
  20. package/dist/contracts-D7KIS-TK.d.ts +36 -0
  21. package/dist/coverage.cjs +448 -485
  22. package/dist/coverage.d.ts +13 -59
  23. package/dist/coverage.js +447 -484
  24. package/dist/coverage.mjs +447 -484
  25. package/dist/database.cjs +819 -828
  26. package/dist/database.d.ts +8 -24
  27. package/dist/database.js +818 -829
  28. package/dist/database.mjs +818 -829
  29. package/dist/desktop-auto-render.cjs +1700 -1522
  30. package/dist/desktop-auto-render.d.ts +4 -9
  31. package/dist/desktop-auto-render.js +1695 -1517
  32. package/dist/desktop-auto-render.mjs +1696 -1518
  33. package/dist/desktop.cjs +3 -1
  34. package/dist/desktop.d.ts +4 -1
  35. package/dist/desktop.js +1 -1
  36. package/dist/desktop.mjs +1 -1
  37. package/dist/dev-build.cjs +830 -0
  38. package/dist/dev-build.d.ts +53 -0
  39. package/dist/dev-build.js +3318 -0
  40. package/dist/dev-build.mjs +797 -0
  41. package/dist/dom.cjs +717 -590
  42. package/dist/dom.d.ts +2 -15
  43. package/dist/dom.js +714 -587
  44. package/dist/dom.mjs +716 -589
  45. package/dist/el.cjs +62 -52
  46. package/dist/el.d.ts +5 -10
  47. package/dist/el.js +60 -52
  48. package/dist/el.mjs +60 -52
  49. package/dist/fs.cjs +72 -63
  50. package/dist/fs.d.ts +22 -19
  51. package/dist/fs.js +71 -62
  52. package/dist/fs.mjs +71 -62
  53. package/dist/hmr.cjs +40 -14
  54. package/dist/hmr.d.ts +11 -23
  55. package/dist/hmr.js +38 -14
  56. package/dist/hmr.mjs +38 -14
  57. package/dist/http.cjs +251 -99
  58. package/dist/http.d.ts +38 -104
  59. package/dist/http.js +249 -99
  60. package/dist/http.mjs +249 -99
  61. package/dist/https.cjs +524 -228
  62. package/dist/https.d.ts +44 -36
  63. package/dist/https.js +520 -226
  64. package/dist/https.mjs +522 -228
  65. package/dist/index.cjs +7502 -7690
  66. package/dist/index.d.ts +8 -3
  67. package/dist/index.js +7486 -7676
  68. package/dist/index.mjs +7497 -7686
  69. package/dist/mime-types.cjs +10 -4
  70. package/dist/mime-types.d.ts +8 -11
  71. package/dist/mime-types.js +9 -3
  72. package/dist/mime-types.mjs +9 -3
  73. package/dist/native.cjs +8616 -8869
  74. package/dist/native.d.ts +7 -8
  75. package/dist/native.js +8682 -8935
  76. package/dist/native.mjs +8615 -8868
  77. package/dist/path.cjs +83 -77
  78. package/dist/path.d.ts +29 -29
  79. package/dist/path.js +82 -76
  80. package/dist/path.mjs +82 -76
  81. package/dist/pm.cjs +3300 -0
  82. package/dist/pm.d.ts +256 -0
  83. package/dist/pm.js +5638 -0
  84. package/dist/pm.mjs +3196 -0
  85. package/dist/preview-build.cjs +712 -0
  86. package/dist/preview-build.d.ts +59 -0
  87. package/dist/preview-build.js +3194 -0
  88. package/dist/preview-build.mjs +676 -0
  89. package/dist/render-context.cjs +13 -2
  90. package/dist/render-context.d.ts +9 -31
  91. package/dist/render-context.js +11 -2
  92. package/dist/render-context.mjs +11 -2
  93. package/dist/router.cjs +787 -645
  94. package/dist/router.d.ts +8 -12
  95. package/dist/router.js +786 -644
  96. package/dist/router.mjs +786 -644
  97. package/dist/runtime.cjs +1 -1
  98. package/dist/runtime.js +1 -1
  99. package/dist/runtime.mjs +1 -1
  100. package/dist/server.cjs +3315 -2603
  101. package/dist/server.d.ts +49 -4
  102. package/dist/server.js +7611 -2834
  103. package/dist/server.mjs +3317 -2607
  104. package/dist/smtp-server.cjs +128 -0
  105. package/dist/smtp-server.d.ts +27 -0
  106. package/dist/smtp-server.js +4199 -0
  107. package/dist/smtp-server.mjs +100 -0
  108. package/dist/state-DvEkDehk.d.ts +195 -0
  109. package/dist/state.cjs +768 -658
  110. package/dist/state.d.ts +11 -69
  111. package/dist/state.js +760 -650
  112. package/dist/state.mjs +767 -657
  113. package/dist/style.cjs +1011 -968
  114. package/dist/style.d.ts +13 -127
  115. package/dist/style.js +1009 -970
  116. package/dist/style.mjs +1011 -971
  117. package/dist/test-reporter.cjs +332 -316
  118. package/dist/test-reporter.d.ts +28 -33
  119. package/dist/test-reporter.js +328 -312
  120. package/dist/test-reporter.mjs +328 -312
  121. package/dist/test-runtime.cjs +927 -968
  122. package/dist/test-runtime.d.ts +24 -99
  123. package/dist/test-runtime.js +922 -965
  124. package/dist/test-runtime.mjs +922 -965
  125. package/dist/test.cjs +4428 -4273
  126. package/dist/test.d.ts +2 -8
  127. package/dist/test.js +4307 -4154
  128. package/dist/test.mjs +4419 -4267
  129. package/dist/types-BONVzPtp.d.ts +59 -0
  130. package/dist/types-BR4wMiVx.d.ts +32 -0
  131. package/dist/types-C4gKykuG.d.ts +23 -0
  132. package/dist/types-CIhpN1-K.d.ts +64 -0
  133. package/dist/types-Ckj8md_j.d.ts +84 -0
  134. package/dist/types-CpjQTAkX.d.ts +24 -0
  135. package/dist/types-D0LjrYjS.d.ts +14 -0
  136. package/dist/types-DAisuVr5.d.ts +75 -0
  137. package/dist/types-tJn88E1N.d.ts +242 -0
  138. package/dist/types.d.ts +71 -226
  139. package/dist/universal.cjs +1 -1
  140. package/dist/universal.d.ts +1 -5
  141. package/dist/universal.js +1 -1
  142. package/dist/universal.mjs +1 -1
  143. package/dist/websocket-XfyK23zD.d.ts +119 -0
  144. package/dist/ws.cjs +129 -108
  145. package/dist/ws.d.ts +21 -131
  146. package/dist/ws.js +128 -109
  147. package/dist/ws.mjs +128 -109
  148. package/dist/wss.cjs +757 -479
  149. package/dist/wss.d.ts +31 -28
  150. package/dist/wss.js +755 -479
  151. package/dist/wss.mjs +758 -482
  152. package/package.json +16 -1
  153. package/vendor/epaint-0.31.1/src/image.rs +418 -0
  154. package/dist/server-CcBFc2F5.d.ts +0 -449
package/dist/https.cjs CHANGED
@@ -20,41 +20,78 @@ var __copyProps = (to, from, except, desc) => {
20
20
  };
21
21
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
22
 
23
- // src/runtime.ts
24
- var runtime, isNode, isBun, isDeno;
25
- var init_runtime = __esm({
26
- "src/runtime.ts"() {
27
- "use strict";
28
- runtime = (() => {
29
- if (typeof Deno !== "undefined") return "deno";
30
- if (typeof Bun !== "undefined") return "bun";
31
- return "node";
32
- })();
33
- isNode = runtime === "node";
34
- isBun = runtime === "bun";
35
- isDeno = runtime === "deno";
36
- }
37
- });
38
-
39
- // src/http.ts
40
- var http_exports = {};
41
- __export(http_exports, {
42
- Agent: () => Agent,
43
- ClientRequest: () => ClientRequest,
44
- IncomingMessage: () => IncomingMessage,
45
- METHODS: () => METHODS,
46
- STATUS_CODES: () => STATUS_CODES,
47
- Server: () => Server,
48
- ServerResponse: () => ServerResponse,
49
- createServer: () => createServer,
50
- default: () => http_default,
51
- get: () => get,
52
- getRuntime: () => getRuntime,
53
- request: () => request
54
- });
23
+ // src/server/http/utils.ts
55
24
  function queueCallback(callback) {
56
25
  if (callback) queueMicrotask(callback);
57
26
  }
27
+ function getRequestPath(url) {
28
+ if (!url) return "";
29
+ try {
30
+ const urlObj = new URL(url);
31
+ return urlObj.pathname + urlObj.search;
32
+ } catch {
33
+ return url;
34
+ }
35
+ }
36
+ function headersToRecord(headers) {
37
+ const result = /* @__PURE__ */ Object.create(null);
38
+ headers.forEach((value, key) => {
39
+ result[key] = value;
40
+ });
41
+ return result;
42
+ }
43
+ function headersToRawHeaders(headers) {
44
+ const rawHeaders = [];
45
+ headers.forEach((value, key) => {
46
+ rawHeaders.push(key, value);
47
+ });
48
+ return rawHeaders;
49
+ }
50
+ function normalizeRequestBodyChunk(chunk, encoding = "utf8") {
51
+ if (typeof chunk === "string") {
52
+ if (encoding !== "utf8" && typeof Buffer !== "undefined") {
53
+ return Buffer.from(chunk, encoding);
54
+ }
55
+ return chunk;
56
+ }
57
+ if (chunk instanceof Uint8Array) {
58
+ return chunk;
59
+ }
60
+ if (chunk instanceof ArrayBuffer) {
61
+ return new Uint8Array(chunk);
62
+ }
63
+ if (ArrayBuffer.isView(chunk)) {
64
+ return new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
65
+ }
66
+ return new TextEncoder().encode(String(chunk));
67
+ }
68
+ function buildRequestBody(chunks) {
69
+ if (chunks.length === 0) {
70
+ return void 0;
71
+ }
72
+ if (chunks.length === 1) {
73
+ return chunks[0];
74
+ }
75
+ if (chunks.every((chunk) => typeof chunk === "string")) {
76
+ return chunks.join("");
77
+ }
78
+ const encoder = new TextEncoder();
79
+ const bodyParts = chunks.map((chunk) => typeof chunk === "string" ? encoder.encode(chunk) : chunk);
80
+ const totalLength = bodyParts.reduce((sum, part) => sum + part.byteLength, 0);
81
+ const body = new Uint8Array(totalLength);
82
+ let offset = 0;
83
+ for (const part of bodyParts) {
84
+ body.set(part, offset);
85
+ offset += part.byteLength;
86
+ }
87
+ return body;
88
+ }
89
+ function isFetchResponse(value) {
90
+ return typeof value?.status === "number" && typeof value?.statusText === "string" && typeof value?.headers?.forEach === "function";
91
+ }
92
+ function isNodeIncomingMessage(value) {
93
+ return typeof value?.on === "function" && typeof value?.headers === "object" && (typeof value?.httpVersion === "string" || value?.socket !== void 0);
94
+ }
58
95
  function headersToInit(headers) {
59
96
  const result = {};
60
97
  for (const key in headers) {
@@ -79,69 +116,119 @@ function closeAndEmit(server, callback) {
79
116
  server.emit("close");
80
117
  if (callback) queueMicrotask(() => callback());
81
118
  }
82
- function createServer(optionsOrListener, requestListener) {
83
- return new Server(typeof optionsOrListener === "function" ? optionsOrListener : requestListener);
84
- }
85
- function request(url, options, callback) {
86
- const urlString = typeof url === "string" ? url : url.toString();
87
- const req = new ClientRequest(urlString, options);
88
- if (isNode) {
89
- const urlObj = new URL(urlString);
90
- const client = urlObj.protocol === "https:" ? https : http;
91
- const nodeReq = client.request(urlString, {
92
- method: options?.method || "GET",
93
- headers: options?.headers,
94
- timeout: options?.timeout,
95
- signal: options?.signal
96
- }, (res) => {
97
- const incomingMessage = new IncomingMessage(res);
98
- if (callback) callback(incomingMessage);
99
- req.emit("response", incomingMessage);
100
- });
101
- nodeReq.on("error", (error) => req.emit("error", error));
102
- nodeReq.end();
103
- } else {
104
- queueMicrotask(async () => {
105
- try {
106
- const response = await fetch(urlString, {
107
- method: options?.method || "GET",
108
- headers: options?.headers,
109
- signal: options?.signal
110
- });
111
- const fetchRequest = new Request(urlString);
112
- const incomingMessage = new IncomingMessage(fetchRequest);
113
- incomingMessage.statusCode = response.status;
114
- incomingMessage.statusMessage = response.statusText;
115
- if (callback) callback(incomingMessage);
116
- req.emit("response", incomingMessage);
117
- } catch (error) {
118
- req.emit("error", error);
119
+ var init_utils = __esm({
120
+ "src/server/http/utils.ts"() {
121
+ "use strict";
122
+ }
123
+ });
124
+
125
+ // src/shares/runtime.ts
126
+ var runtime, isNode, isBun, isDeno;
127
+ var init_runtime = __esm({
128
+ "src/shares/runtime.ts"() {
129
+ "use strict";
130
+ runtime = (() => {
131
+ if (typeof Deno !== "undefined") return "deno";
132
+ if (typeof Bun !== "undefined") return "bun";
133
+ return "node";
134
+ })();
135
+ isNode = runtime === "node";
136
+ isBun = runtime === "bun";
137
+ isDeno = runtime === "deno";
138
+ }
139
+ });
140
+
141
+ // src/server/http/agent.ts
142
+ var Agent2;
143
+ var init_agent = __esm({
144
+ "src/server/http/agent.ts"() {
145
+ "use strict";
146
+ Agent2 = class {
147
+ constructor(options) {
148
+ this.options = options;
119
149
  }
120
- });
150
+ };
121
151
  }
122
- return req;
123
- }
124
- function get(url, options, callback) {
125
- return request(url, { ...options, method: "GET" }, callback);
126
- }
127
- function getRuntime() {
128
- return runtime;
129
- }
130
- var import_node_events, http, https, METHODS, STATUS_CODES, IncomingMessage, ServerResponse, Server, ClientRequest, Agent, http_default;
131
- var init_http = __esm({
132
- "src/http.ts"() {
152
+ });
153
+
154
+ // src/server/http/client-request.ts
155
+ var import_node_events2, ClientRequest2;
156
+ var init_client_request = __esm({
157
+ "src/server/http/client-request.ts"() {
133
158
  "use strict";
134
- import_node_events = require("events");
135
- init_runtime();
136
- if (isNode && typeof process !== "undefined") {
137
- try {
138
- http = require("http");
139
- https = require("https");
140
- } catch (e) {
141
- http = require("http");
142
- https = require("https");
159
+ import_node_events2 = require("events");
160
+ init_utils();
161
+ ClientRequest2 = class extends import_node_events2.EventEmitter {
162
+ constructor(_url, _options = {}) {
163
+ super();
164
+ this._bodyChunks = [];
165
+ this._ended = false;
143
166
  }
144
- }
167
+ _setNativeRequest(nativeRequest) {
168
+ this._nativeRequest = nativeRequest;
169
+ }
170
+ _setExecutor(executor) {
171
+ this._executor = executor;
172
+ }
173
+ write(chunk, encoding, callback) {
174
+ if (this._ended) {
175
+ throw new Error("Cannot write after end");
176
+ }
177
+ if (typeof encoding === "function") {
178
+ callback = encoding;
179
+ encoding = void 0;
180
+ }
181
+ if (this._nativeRequest) {
182
+ const actualEncoding2 = typeof encoding === "string" ? encoding : void 0;
183
+ return this._nativeRequest.write(chunk, actualEncoding2, callback);
184
+ }
185
+ const actualEncoding = typeof encoding === "string" ? encoding : "utf8";
186
+ this._bodyChunks.push(normalizeRequestBodyChunk(chunk, actualEncoding));
187
+ queueCallback(callback);
188
+ return true;
189
+ }
190
+ end(chunk, encoding, callback) {
191
+ if (typeof chunk === "function") {
192
+ callback = chunk;
193
+ chunk = void 0;
194
+ encoding = void 0;
195
+ } else if (typeof encoding === "function") {
196
+ callback = encoding;
197
+ encoding = void 0;
198
+ }
199
+ if (this._ended) {
200
+ queueCallback(callback);
201
+ return;
202
+ }
203
+ this._ended = true;
204
+ if (this._nativeRequest) {
205
+ const actualEncoding = typeof encoding === "string" ? encoding : void 0;
206
+ if (chunk !== void 0) {
207
+ this._nativeRequest.end(chunk, actualEncoding, callback);
208
+ } else {
209
+ this._nativeRequest.end(callback);
210
+ }
211
+ return;
212
+ }
213
+ if (chunk !== void 0) {
214
+ this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
215
+ }
216
+ const executor = this._executor;
217
+ const body = buildRequestBody(this._bodyChunks);
218
+ if (executor) {
219
+ Promise.resolve().then(() => executor(body)).catch((error) => this.emit("error", error));
220
+ }
221
+ queueCallback(callback);
222
+ }
223
+ };
224
+ }
225
+ });
226
+
227
+ // src/server/http/constants.ts
228
+ var METHODS, STATUS_CODES;
229
+ var init_constants = __esm({
230
+ "src/server/http/constants.ts"() {
231
+ "use strict";
145
232
  METHODS = [
146
233
  "GET",
147
234
  "POST",
@@ -209,13 +296,30 @@ var init_http = __esm({
209
296
  510: "Not Extended",
210
297
  511: "Network Authentication Required"
211
298
  };
212
- IncomingMessage = class extends import_node_events.EventEmitter {
213
- constructor(req) {
299
+ }
300
+ });
301
+
302
+ // src/server/http/incoming-message.ts
303
+ var import_node_events3, IncomingMessage;
304
+ var init_incoming_message = __esm({
305
+ "src/server/http/incoming-message.ts"() {
306
+ "use strict";
307
+ import_node_events3 = require("events");
308
+ init_utils();
309
+ IncomingMessage = class extends import_node_events3.EventEmitter {
310
+ constructor(req, requestMethod) {
214
311
  super();
215
312
  this.httpVersion = "1.1";
216
313
  this.rawHeaders = [];
217
314
  this._req = req;
218
- if (isNode) {
315
+ if (isFetchResponse(req)) {
316
+ this.method = requestMethod || "GET";
317
+ this.url = getRequestPath(req.url);
318
+ this.headers = headersToRecord(req.headers);
319
+ this.statusCode = req.status;
320
+ this.statusMessage = req.statusText;
321
+ this.rawHeaders = headersToRawHeaders(req.headers);
322
+ } else if (isNodeIncomingMessage(req)) {
219
323
  this.method = req.method;
220
324
  this.url = req.url;
221
325
  this.headers = req.headers;
@@ -226,14 +330,13 @@ var init_http = __esm({
226
330
  this.socket = req.socket;
227
331
  } else {
228
332
  this.method = req.method;
229
- const urlObj = new URL(req.url);
230
- this.url = urlObj.pathname + urlObj.search;
231
- this.headers = req.headers;
232
- this.rawHeaders = [];
333
+ this.url = getRequestPath(req.url);
334
+ this.headers = headersToRecord(req.headers);
335
+ this.rawHeaders = headersToRawHeaders(req.headers);
233
336
  }
234
337
  }
235
338
  async text() {
236
- if (isNode) {
339
+ if (isNodeIncomingMessage(this._req)) {
237
340
  return new Promise((resolve, reject) => {
238
341
  const chunks = [];
239
342
  this._req.on("data", (chunk) => chunks.push(chunk));
@@ -244,14 +347,92 @@ var init_http = __esm({
244
347
  return this._req.text();
245
348
  }
246
349
  async json() {
247
- if (isNode) {
350
+ if (isNodeIncomingMessage(this._req)) {
248
351
  const text = await this.text();
249
352
  return JSON.parse(text);
250
353
  }
251
354
  return this._req.json();
252
355
  }
253
356
  };
254
- ServerResponse = class extends import_node_events.EventEmitter {
357
+ }
358
+ });
359
+
360
+ // src/server/http/node-modules.ts
361
+ var http, https;
362
+ var init_node_modules = __esm({
363
+ "src/server/http/node-modules.ts"() {
364
+ "use strict";
365
+ init_runtime();
366
+ if (isNode && typeof process !== "undefined") {
367
+ try {
368
+ http = require("http");
369
+ https = require("https");
370
+ } catch {
371
+ http = require("http");
372
+ https = require("https");
373
+ }
374
+ }
375
+ }
376
+ });
377
+
378
+ // src/server/http/request-api.ts
379
+ function request(url, options, callback) {
380
+ const urlString = typeof url === "string" ? url : url.toString();
381
+ const req = new ClientRequest2(urlString, options);
382
+ if (isNode) {
383
+ const urlObj = new URL(urlString);
384
+ const client = urlObj.protocol === "https:" ? https : http;
385
+ const nodeReq = client.request(urlString, {
386
+ method: options?.method || "GET",
387
+ headers: options?.headers,
388
+ timeout: options?.timeout,
389
+ signal: options?.signal
390
+ }, (res) => {
391
+ const incomingMessage = new IncomingMessage(res);
392
+ if (callback) callback(incomingMessage);
393
+ req.emit("response", incomingMessage);
394
+ });
395
+ req._setNativeRequest(nodeReq);
396
+ nodeReq.on("error", (error) => req.emit("error", error));
397
+ } else {
398
+ req._setExecutor(async (body) => {
399
+ const response = await fetch(urlString, {
400
+ method: options?.method || "GET",
401
+ headers: options?.headers,
402
+ body,
403
+ signal: options?.signal
404
+ });
405
+ const incomingMessage = new IncomingMessage(response, options?.method || "GET");
406
+ if (callback) callback(incomingMessage);
407
+ req.emit("response", incomingMessage);
408
+ });
409
+ }
410
+ return req;
411
+ }
412
+ function get(url, options, callback) {
413
+ const req = request(url, { ...options, method: "GET" }, callback);
414
+ req.end();
415
+ return req;
416
+ }
417
+ var init_request_api = __esm({
418
+ "src/server/http/request-api.ts"() {
419
+ "use strict";
420
+ init_runtime();
421
+ init_client_request();
422
+ init_incoming_message();
423
+ init_node_modules();
424
+ }
425
+ });
426
+
427
+ // src/server/http/response.ts
428
+ var import_node_events4, ServerResponse;
429
+ var init_response = __esm({
430
+ "src/server/http/response.ts"() {
431
+ "use strict";
432
+ import_node_events4 = require("events");
433
+ init_runtime();
434
+ init_utils();
435
+ ServerResponse = class extends import_node_events4.EventEmitter {
255
436
  constructor(_req, nodeRes) {
256
437
  super();
257
438
  this.statusCode = 200;
@@ -384,7 +565,6 @@ var init_http = __esm({
384
565
  _setResolver(resolve) {
385
566
  this._resolve = resolve;
386
567
  }
387
- // Express.js-like methods
388
568
  json(data, statusCode = 200) {
389
569
  if (!this.headersSent) {
390
570
  this.setHeader("Content-Type", "application/json");
@@ -408,7 +588,35 @@ var init_http = __esm({
408
588
  return this;
409
589
  }
410
590
  };
411
- Server = class extends import_node_events.EventEmitter {
591
+ }
592
+ });
593
+
594
+ // src/server/http/runtime.ts
595
+ function getRuntime() {
596
+ return runtime;
597
+ }
598
+ var init_runtime2 = __esm({
599
+ "src/server/http/runtime.ts"() {
600
+ "use strict";
601
+ init_runtime();
602
+ }
603
+ });
604
+
605
+ // src/server/http/server-runtime.ts
606
+ function createServer(optionsOrListener, requestListener) {
607
+ return new Server(typeof optionsOrListener === "function" ? optionsOrListener : requestListener);
608
+ }
609
+ var import_node_events5, Server;
610
+ var init_server_runtime = __esm({
611
+ "src/server/http/server-runtime.ts"() {
612
+ "use strict";
613
+ import_node_events5 = require("events");
614
+ init_runtime();
615
+ init_node_modules();
616
+ init_incoming_message();
617
+ init_response();
618
+ init_utils();
619
+ Server = class extends import_node_events5.EventEmitter {
412
620
  constructor(requestListener) {
413
621
  super();
414
622
  this._bunWebSocketServers = /* @__PURE__ */ new Set();
@@ -483,6 +691,8 @@ var init_http = __esm({
483
691
  const urlObj = new URL(req.url);
484
692
  const pathname = urlObj.pathname;
485
693
  const requestUrl = urlObj.pathname + urlObj.search;
694
+ const incomingHeaders = headersToRecord(req.headers);
695
+ const rawHeaders = headersToRawHeaders(req.headers);
486
696
  const upgradeHeader = req.headers.get("upgrade");
487
697
  if (upgradeHeader && upgradeHeader.toLowerCase() === "websocket") {
488
698
  const matchingWebSocketServer = Array.from(this._bunWebSocketServers).find((wsServer) => {
@@ -519,9 +729,9 @@ var init_http = __esm({
519
729
  const incomingMessage = {
520
730
  method: req.method,
521
731
  url: requestUrl,
522
- headers: req.headers,
732
+ headers: incomingHeaders,
523
733
  httpVersion: "1.1",
524
- rawHeaders: [],
734
+ rawHeaders,
525
735
  _req: req,
526
736
  text: () => req.text(),
527
737
  json: () => req.json()
@@ -580,6 +790,8 @@ var init_http = __esm({
580
790
  };
581
791
  if (self.requestListener) {
582
792
  self.requestListener(incomingMessage, serverResponse);
793
+ } else {
794
+ self.emit("request", incomingMessage, serverResponse);
583
795
  }
584
796
  if (responseReady) {
585
797
  return new Response(body, {
@@ -654,9 +866,11 @@ var init_http = __esm({
654
866
  return createAddress(0, addr, "unix");
655
867
  }
656
868
  return addr;
657
- } else if (isBun) {
869
+ }
870
+ if (isBun) {
658
871
  return createAddress(this.nativeServer.port, this.nativeServer.hostname);
659
- } else if (isDeno) {
872
+ }
873
+ if (isDeno) {
660
874
  const addr = this.nativeServer.addr;
661
875
  return createAddress(addr.port, addr.hostname);
662
876
  }
@@ -666,22 +880,45 @@ var init_http = __esm({
666
880
  return this._listening;
667
881
  }
668
882
  };
669
- ClientRequest = class extends import_node_events.EventEmitter {
670
- constructor(_url, _options = {}) {
671
- super();
672
- }
673
- write(_chunk) {
674
- return true;
675
- }
676
- end(callback) {
677
- queueCallback(callback);
678
- }
679
- };
680
- Agent = class {
681
- constructor(options) {
682
- this.options = options;
683
- }
684
- };
883
+ }
884
+ });
885
+
886
+ // src/server/http/index.ts
887
+ var http_exports = {};
888
+ __export(http_exports, {
889
+ Agent: () => Agent2,
890
+ ClientRequest: () => ClientRequest2,
891
+ IncomingMessage: () => IncomingMessage,
892
+ METHODS: () => METHODS,
893
+ STATUS_CODES: () => STATUS_CODES,
894
+ Server: () => Server,
895
+ ServerResponse: () => ServerResponse,
896
+ createServer: () => createServer,
897
+ default: () => http_default,
898
+ get: () => get,
899
+ getRuntime: () => getRuntime,
900
+ request: () => request
901
+ });
902
+ var http_default;
903
+ var init_http = __esm({
904
+ "src/server/http/index.ts"() {
905
+ "use strict";
906
+ init_agent();
907
+ init_client_request();
908
+ init_constants();
909
+ init_incoming_message();
910
+ init_request_api();
911
+ init_response();
912
+ init_runtime2();
913
+ init_server_runtime();
914
+ init_agent();
915
+ init_client_request();
916
+ init_constants();
917
+ init_incoming_message();
918
+ init_request_api();
919
+ init_response();
920
+ init_runtime2();
921
+ init_server_runtime();
685
922
  http_default = {
686
923
  createServer,
687
924
  request,
@@ -689,8 +926,8 @@ var init_http = __esm({
689
926
  Server,
690
927
  IncomingMessage,
691
928
  ServerResponse,
692
- Agent,
693
- ClientRequest,
929
+ Agent: Agent2,
930
+ ClientRequest: ClientRequest2,
694
931
  METHODS,
695
932
  STATUS_CODES,
696
933
  getRuntime
@@ -698,11 +935,11 @@ var init_http = __esm({
698
935
  }
699
936
  });
700
937
 
701
- // src/https.ts
938
+ // src/server/https/index.ts
702
939
  var https_exports = {};
703
940
  __export(https_exports, {
704
- Agent: () => Agent2,
705
- ClientRequest: () => ClientRequest2,
941
+ Agent: () => Agent,
942
+ ClientRequest: () => ClientRequest,
706
943
  Server: () => Server2,
707
944
  createServer: () => createServer2,
708
945
  default: () => https_default,
@@ -711,27 +948,84 @@ __export(https_exports, {
711
948
  request: () => request2
712
949
  });
713
950
  module.exports = __toCommonJS(https_exports);
714
- var import_events = require("events");
951
+
952
+ // src/server/https/agent.ts
953
+ var Agent = class {
954
+ constructor(options) {
955
+ this.options = options;
956
+ }
957
+ };
958
+
959
+ // src/server/https/client-request.ts
960
+ var import_node_events = require("events");
961
+ init_utils();
962
+ var ClientRequest = class extends import_node_events.EventEmitter {
963
+ constructor(_url, _options = {}) {
964
+ super();
965
+ this._bodyChunks = [];
966
+ this._ended = false;
967
+ }
968
+ _setNativeRequest(nativeRequest) {
969
+ this._nativeRequest = nativeRequest;
970
+ }
971
+ _setExecutor(executor) {
972
+ this._executor = executor;
973
+ }
974
+ write(chunk, encoding, callback) {
975
+ if (this._ended) {
976
+ throw new Error("Cannot write after end");
977
+ }
978
+ if (typeof encoding === "function") {
979
+ callback = encoding;
980
+ encoding = void 0;
981
+ }
982
+ if (this._nativeRequest) {
983
+ const actualEncoding = typeof encoding === "string" ? encoding : void 0;
984
+ return this._nativeRequest.write(chunk, actualEncoding, callback);
985
+ }
986
+ this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
987
+ queueCallback(callback);
988
+ return true;
989
+ }
990
+ end(chunk, encoding, callback) {
991
+ if (typeof chunk === "function") {
992
+ callback = chunk;
993
+ chunk = void 0;
994
+ encoding = void 0;
995
+ } else if (typeof encoding === "function") {
996
+ callback = encoding;
997
+ encoding = void 0;
998
+ }
999
+ if (this._ended) {
1000
+ queueCallback(callback);
1001
+ return;
1002
+ }
1003
+ this._ended = true;
1004
+ if (this._nativeRequest) {
1005
+ const actualEncoding = typeof encoding === "string" ? encoding : void 0;
1006
+ if (chunk !== void 0) {
1007
+ this._nativeRequest.end(chunk, actualEncoding, callback);
1008
+ } else {
1009
+ this._nativeRequest.end(callback);
1010
+ }
1011
+ return;
1012
+ }
1013
+ if (chunk !== void 0) {
1014
+ this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
1015
+ }
1016
+ const executor = this._executor;
1017
+ const body = buildRequestBody(this._bodyChunks);
1018
+ if (executor) {
1019
+ Promise.resolve().then(() => executor(body)).catch((error) => this.emit("error", error));
1020
+ }
1021
+ queueCallback(callback);
1022
+ }
1023
+ };
1024
+
1025
+ // src/server/https/request-api.ts
715
1026
  init_runtime();
716
- function queueCallback2(callback) {
717
- if (callback) queueMicrotask(callback);
718
- }
719
- function createErrorResponse2() {
720
- return new Response("Internal Server Error", { status: 500 });
721
- }
722
- function createAddress2(port, address, family = "IPv4") {
723
- return { port, family, address };
724
- }
725
- function emitListeningWithCallback2(server, callback) {
726
- server._listening = true;
727
- server.emit("listening");
728
- queueCallback2(callback);
729
- }
730
- function closeAndEmit2(server, callback) {
731
- server._listening = false;
732
- server.emit("close");
733
- if (callback) queueMicrotask(() => callback());
734
- }
1027
+
1028
+ // src/server/https/http-classes.ts
735
1029
  function loadHttpClasses() {
736
1030
  const httpModule = (init_http(), __toCommonJS(http_exports));
737
1031
  return {
@@ -739,9 +1033,70 @@ function loadHttpClasses() {
739
1033
  ServerResponse: httpModule.ServerResponse
740
1034
  };
741
1035
  }
1036
+
1037
+ // src/server/https/node-modules.ts
1038
+ init_runtime();
742
1039
  var https2;
743
- var Server2 = class extends import_events.EventEmitter {
744
- constructor(options, requestListener) {
1040
+ if (isNode && typeof process !== "undefined") {
1041
+ try {
1042
+ https2 = require("https");
1043
+ } catch {
1044
+ https2 = require("https");
1045
+ }
1046
+ }
1047
+
1048
+ // src/server/https/request-api.ts
1049
+ function request2(url, options, callback) {
1050
+ const urlString = typeof url === "string" ? url : url.toString();
1051
+ const req = new ClientRequest(urlString, options);
1052
+ if (isNode) {
1053
+ const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
1054
+ const nodeReq = https2.request(urlString, {
1055
+ method: options?.method || "GET",
1056
+ headers: options?.headers,
1057
+ timeout: options?.timeout,
1058
+ signal: options?.signal
1059
+ }, (res) => {
1060
+ const incomingMessage = new IncomingMessage2(res);
1061
+ if (callback) callback(incomingMessage);
1062
+ req.emit("response", incomingMessage);
1063
+ });
1064
+ req._setNativeRequest(nodeReq);
1065
+ nodeReq.on("error", (error) => req.emit("error", error));
1066
+ } else {
1067
+ const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
1068
+ req._setExecutor(async (body) => {
1069
+ const response = await fetch(urlString, {
1070
+ method: options?.method || "GET",
1071
+ headers: options?.headers,
1072
+ body,
1073
+ signal: options?.signal
1074
+ });
1075
+ const incomingMessage = new IncomingMessage2(response, options?.method || "GET");
1076
+ if (callback) callback(incomingMessage);
1077
+ req.emit("response", incomingMessage);
1078
+ });
1079
+ }
1080
+ return req;
1081
+ }
1082
+ function get2(url, options, callback) {
1083
+ const req = request2(url, { ...options, method: "GET" }, callback);
1084
+ req.end();
1085
+ return req;
1086
+ }
1087
+
1088
+ // src/server/https/runtime.ts
1089
+ init_runtime();
1090
+ function getRuntime2() {
1091
+ return runtime;
1092
+ }
1093
+
1094
+ // src/server/https/server-runtime.ts
1095
+ var import_node_events6 = require("events");
1096
+ init_runtime();
1097
+ init_utils();
1098
+ var Server2 = class extends import_node_events6.EventEmitter {
1099
+ constructor(options = {}, requestListener) {
745
1100
  super();
746
1101
  this._listening = false;
747
1102
  this.options = options;
@@ -769,7 +1124,6 @@ var Server2 = class extends import_events.EventEmitter {
769
1124
  const self = this;
770
1125
  if (isNode) {
771
1126
  const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
772
- if (!https2) https2 = require("https");
773
1127
  this.nativeServer = https2.createServer(this.options, (req, res) => {
774
1128
  const incomingMessage = new IncomingMessage2(req);
775
1129
  const serverResponse = new ServerResponse2(incomingMessage, res);
@@ -808,7 +1162,7 @@ var Server2 = class extends import_events.EventEmitter {
808
1162
  },
809
1163
  error: (error) => {
810
1164
  this.emit("error", error);
811
- return createErrorResponse2();
1165
+ return createErrorResponse();
812
1166
  }
813
1167
  };
814
1168
  if (this.options.key || this.options.cert) {
@@ -822,7 +1176,7 @@ var Server2 = class extends import_events.EventEmitter {
822
1176
  tlsOptions.tls = this.options.tls;
823
1177
  }
824
1178
  this.nativeServer = Bun.serve(tlsOptions);
825
- emitListeningWithCallback2(this, callback);
1179
+ emitListeningWithCallback(this, callback);
826
1180
  } else if (isDeno) {
827
1181
  const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
828
1182
  const serveOptions = {
@@ -842,7 +1196,7 @@ var Server2 = class extends import_events.EventEmitter {
842
1196
  },
843
1197
  onError: (error) => {
844
1198
  this.emit("error", error);
845
- return createErrorResponse2();
1199
+ return createErrorResponse();
846
1200
  }
847
1201
  };
848
1202
  if (this.options.key && this.options.cert) {
@@ -850,23 +1204,23 @@ var Server2 = class extends import_events.EventEmitter {
850
1204
  serveOptions.key = this.options.key;
851
1205
  }
852
1206
  this.nativeServer = Deno.serve(serveOptions);
853
- emitListeningWithCallback2(this, callback);
1207
+ emitListeningWithCallback(this, callback);
854
1208
  }
855
1209
  return this;
856
1210
  }
857
1211
  close(callback) {
858
1212
  if (!this.nativeServer) {
859
- if (callback) queueMicrotask(() => callback());
1213
+ if (callback) queueCallback(() => callback());
860
1214
  return this;
861
1215
  }
862
1216
  if (isNode) {
863
1217
  this.nativeServer.close(callback);
864
1218
  } else if (isBun) {
865
1219
  this.nativeServer.stop();
866
- closeAndEmit2(this, callback);
1220
+ closeAndEmit(this, callback);
867
1221
  } else if (isDeno) {
868
1222
  this.nativeServer.shutdown();
869
- closeAndEmit2(this, callback);
1223
+ closeAndEmit(this, callback);
870
1224
  }
871
1225
  return this;
872
1226
  }
@@ -876,14 +1230,16 @@ var Server2 = class extends import_events.EventEmitter {
876
1230
  const addr = this.nativeServer.address();
877
1231
  if (!addr) return null;
878
1232
  if (typeof addr === "string") {
879
- return createAddress2(0, addr, "unix");
1233
+ return createAddress(0, addr, "unix");
880
1234
  }
881
1235
  return addr;
882
- } else if (isBun) {
883
- return createAddress2(this.nativeServer.port, this.nativeServer.hostname);
884
- } else if (isDeno) {
1236
+ }
1237
+ if (isBun) {
1238
+ return createAddress(this.nativeServer.port, this.nativeServer.hostname);
1239
+ }
1240
+ if (isDeno) {
885
1241
  const addr = this.nativeServer.addr;
886
- return createAddress2(addr.port, addr.hostname);
1242
+ return createAddress(addr.port, addr.hostname);
887
1243
  }
888
1244
  return null;
889
1245
  }
@@ -891,78 +1247,18 @@ var Server2 = class extends import_events.EventEmitter {
891
1247
  return this._listening;
892
1248
  }
893
1249
  };
894
- var ClientRequest2 = class extends import_events.EventEmitter {
895
- constructor(_url, _options = {}) {
896
- super();
897
- }
898
- write(_chunk) {
899
- return true;
900
- }
901
- end(callback) {
902
- queueCallback2(callback);
903
- }
904
- };
905
- var Agent2 = class {
906
- constructor(options) {
907
- this.options = options;
908
- }
909
- };
910
- function createServer2(options, requestListener) {
1250
+ function createServer2(options = {}, requestListener) {
911
1251
  return new Server2(options, requestListener);
912
1252
  }
913
- function request2(url, options, callback) {
914
- const urlString = typeof url === "string" ? url : url.toString();
915
- const req = new ClientRequest2(urlString, options);
916
- if (isNode) {
917
- const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
918
- if (!https2) https2 = require("https");
919
- const nodeReq = https2.request(urlString, {
920
- method: options?.method || "GET",
921
- headers: options?.headers,
922
- timeout: options?.timeout,
923
- signal: options?.signal
924
- }, (res) => {
925
- const incomingMessage = new IncomingMessage2(res);
926
- if (callback) callback(incomingMessage);
927
- req.emit("response", incomingMessage);
928
- });
929
- nodeReq.on("error", (error) => req.emit("error", error));
930
- nodeReq.end();
931
- } else {
932
- const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
933
- queueMicrotask(async () => {
934
- try {
935
- const response = await fetch(urlString, {
936
- method: options?.method || "GET",
937
- headers: options?.headers,
938
- signal: options?.signal
939
- });
940
- const fetchRequest = new Request(urlString);
941
- const incomingMessage = new IncomingMessage2(fetchRequest);
942
- incomingMessage.statusCode = response.status;
943
- incomingMessage.statusMessage = response.statusText;
944
- if (callback) callback(incomingMessage);
945
- req.emit("response", incomingMessage);
946
- } catch (error) {
947
- req.emit("error", error);
948
- }
949
- });
950
- }
951
- return req;
952
- }
953
- function get2(url, options, callback) {
954
- return request2(url, { ...options, method: "GET" }, callback);
955
- }
956
- function getRuntime2() {
957
- return runtime;
958
- }
1253
+
1254
+ // src/server/https/index.ts
959
1255
  var https_default = {
960
1256
  createServer: createServer2,
961
1257
  request: request2,
962
1258
  get: get2,
963
1259
  Server: Server2,
964
- Agent: Agent2,
965
- ClientRequest: ClientRequest2,
1260
+ Agent,
1261
+ ClientRequest,
966
1262
  getRuntime: getRuntime2
967
1263
  };
968
1264
  // Annotate the CommonJS export names for ESM import in node: