elit 3.6.6 → 3.6.8
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 +20 -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 +25197 -22128
- package/dist/cli.d.ts +19 -37
- package/dist/cli.mjs +26668 -23614
- 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-D7KIS-TK.d.ts +36 -0
- package/dist/contracts-_0p1-15U.d.ts +54 -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 +411 -140
- package/dist/http.d.ts +40 -112
- package/dist/http.js +409 -140
- package/dist/http.mjs +409 -140
- package/dist/https.cjs +716 -272
- package/dist/https.d.ts +46 -41
- package/dist/https.js +712 -270
- package/dist/https.mjs +714 -272
- 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-node-shared-listener-bootstrap.cjs +75 -0
- package/dist/pm.cjs +5267 -0
- package/dist/pm.d.ts +331 -0
- package/dist/pm.js +7575 -0
- package/dist/pm.mjs +5148 -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 +3702 -2883
- package/dist/server.d.ts +47 -5
- package/dist/server.js +4007 -3165
- package/dist/server.mjs +3665 -2848
- package/dist/smtp-server.cjs +16 -3
- package/dist/smtp-server.d.ts +12 -26
- package/dist/smtp-server.js +55 -17
- package/dist/smtp-server.mjs +16 -3
- 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-BayMVo_k.d.ts +278 -0
- package/dist/types-C4gKykuG.d.ts +23 -0
- package/dist/types-C70T-42Z.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-DPOgoGs-.d.ts +81 -0
- package/dist/types-fiLday0L.d.ts +199 -0
- package/dist/types.d.ts +54 -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-BLBEAnhp.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 +938 -512
- package/dist/wss.d.ts +31 -28
- package/dist/wss.js +932 -508
- package/dist/wss.mjs +936 -512
- package/package.json +18 -6
- package/vendor/epaint-0.31.1/src/image.rs +418 -0
- package/dist/server-uMQvZAll.d.ts +0 -458
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/
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
213
|
-
|
|
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 (
|
|
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
|
-
|
|
230
|
-
this.
|
|
231
|
-
this.
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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,36 @@ var init_http = __esm({
|
|
|
408
588
|
return this;
|
|
409
589
|
}
|
|
410
590
|
};
|
|
411
|
-
|
|
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(arg1, arg2) {
|
|
607
|
+
const requestListener = typeof arg1 === "function" ? arg1 : arg2;
|
|
608
|
+
return new Server(requestListener);
|
|
609
|
+
}
|
|
610
|
+
var import_node_events5, Server;
|
|
611
|
+
var init_server_runtime = __esm({
|
|
612
|
+
"src/server/http/server-runtime.ts"() {
|
|
613
|
+
"use strict";
|
|
614
|
+
import_node_events5 = require("events");
|
|
615
|
+
init_runtime();
|
|
616
|
+
init_node_modules();
|
|
617
|
+
init_incoming_message();
|
|
618
|
+
init_response();
|
|
619
|
+
init_utils();
|
|
620
|
+
Server = class extends import_node_events5.EventEmitter {
|
|
412
621
|
constructor(requestListener) {
|
|
413
622
|
super();
|
|
414
623
|
this._bunWebSocketServers = /* @__PURE__ */ new Set();
|
|
@@ -421,9 +630,28 @@ var init_http = __esm({
|
|
|
421
630
|
unregisterWebSocketServer(wsServer) {
|
|
422
631
|
this._bunWebSocketServers.delete(wsServer);
|
|
423
632
|
}
|
|
633
|
+
resolvePmInheritedFd(explicitPort, explicitFd) {
|
|
634
|
+
if (typeof explicitFd === "number" && Number.isInteger(explicitFd) && explicitFd >= 0) {
|
|
635
|
+
return explicitFd;
|
|
636
|
+
}
|
|
637
|
+
const fdValue = process.env.ELIT_PM_LISTEN_FD;
|
|
638
|
+
if (!fdValue) {
|
|
639
|
+
return void 0;
|
|
640
|
+
}
|
|
641
|
+
const parsedFd = Number.parseInt(fdValue, 10);
|
|
642
|
+
if (!Number.isInteger(parsedFd) || parsedFd < 0) {
|
|
643
|
+
return void 0;
|
|
644
|
+
}
|
|
645
|
+
const publicPort = Number.parseInt(process.env.ELIT_PM_PUBLIC_PORT ?? process.env.ELIT_PM_PORT ?? "", 10);
|
|
646
|
+
if (Number.isInteger(explicitPort) && Number.isInteger(publicPort) && explicitPort !== publicPort) {
|
|
647
|
+
return void 0;
|
|
648
|
+
}
|
|
649
|
+
return parsedFd;
|
|
650
|
+
}
|
|
424
651
|
listen(...args) {
|
|
425
652
|
let port = 3e3;
|
|
426
653
|
let hostname = "0.0.0.0";
|
|
654
|
+
let fd;
|
|
427
655
|
let callback;
|
|
428
656
|
const firstArg = args[0];
|
|
429
657
|
if (typeof firstArg === "number") {
|
|
@@ -438,8 +666,10 @@ var init_http = __esm({
|
|
|
438
666
|
} else if (firstArg && typeof firstArg === "object") {
|
|
439
667
|
port = firstArg.port || 3e3;
|
|
440
668
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
669
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
441
670
|
callback = args[1];
|
|
442
671
|
}
|
|
672
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
443
673
|
const self = this;
|
|
444
674
|
if (isNode) {
|
|
445
675
|
this.nativeServer = http.createServer((req, res) => {
|
|
@@ -454,11 +684,19 @@ var init_http = __esm({
|
|
|
454
684
|
this.nativeServer.on("upgrade", (req, socket, head) => {
|
|
455
685
|
self.emit("upgrade", req, socket, head);
|
|
456
686
|
});
|
|
457
|
-
|
|
458
|
-
this.
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
687
|
+
if (fd !== void 0) {
|
|
688
|
+
this.nativeServer.listen({ fd, exclusive: false }, () => {
|
|
689
|
+
this._listening = true;
|
|
690
|
+
this.emit("listening");
|
|
691
|
+
if (callback) callback();
|
|
692
|
+
});
|
|
693
|
+
} else {
|
|
694
|
+
this.nativeServer.listen(port, hostname, () => {
|
|
695
|
+
this._listening = true;
|
|
696
|
+
this.emit("listening");
|
|
697
|
+
if (callback) callback();
|
|
698
|
+
});
|
|
699
|
+
}
|
|
462
700
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
463
701
|
this.nativeServer.on("close", () => {
|
|
464
702
|
this._listening = false;
|
|
@@ -483,6 +721,8 @@ var init_http = __esm({
|
|
|
483
721
|
const urlObj = new URL(req.url);
|
|
484
722
|
const pathname = urlObj.pathname;
|
|
485
723
|
const requestUrl = urlObj.pathname + urlObj.search;
|
|
724
|
+
const incomingHeaders = headersToRecord(req.headers);
|
|
725
|
+
const rawHeaders = headersToRawHeaders(req.headers);
|
|
486
726
|
const upgradeHeader = req.headers.get("upgrade");
|
|
487
727
|
if (upgradeHeader && upgradeHeader.toLowerCase() === "websocket") {
|
|
488
728
|
const matchingWebSocketServer = Array.from(this._bunWebSocketServers).find((wsServer) => {
|
|
@@ -519,9 +759,9 @@ var init_http = __esm({
|
|
|
519
759
|
const incomingMessage = {
|
|
520
760
|
method: req.method,
|
|
521
761
|
url: requestUrl,
|
|
522
|
-
headers:
|
|
762
|
+
headers: incomingHeaders,
|
|
523
763
|
httpVersion: "1.1",
|
|
524
|
-
rawHeaders
|
|
764
|
+
rawHeaders,
|
|
525
765
|
_req: req,
|
|
526
766
|
text: () => req.text(),
|
|
527
767
|
json: () => req.json()
|
|
@@ -575,57 +815,148 @@ var init_http = __esm({
|
|
|
575
815
|
this.writeHead(statusCode);
|
|
576
816
|
}
|
|
577
817
|
responseReady = true;
|
|
578
|
-
return this;
|
|
579
818
|
}
|
|
580
819
|
};
|
|
581
820
|
if (self.requestListener) {
|
|
582
821
|
self.requestListener(incomingMessage, serverResponse);
|
|
822
|
+
} else {
|
|
823
|
+
self.emit("request", incomingMessage, serverResponse);
|
|
583
824
|
}
|
|
584
|
-
if (responseReady) {
|
|
585
|
-
|
|
586
|
-
status: statusCode,
|
|
587
|
-
statusText: statusMessage,
|
|
588
|
-
headers
|
|
589
|
-
});
|
|
825
|
+
if (!responseReady) {
|
|
826
|
+
serverResponse.end();
|
|
590
827
|
}
|
|
591
|
-
return new
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
}
|
|
596
|
-
resolve(new Response(body, {
|
|
597
|
-
status: statusCode,
|
|
598
|
-
statusText: statusMessage,
|
|
599
|
-
headers
|
|
600
|
-
}));
|
|
601
|
-
};
|
|
828
|
+
return new Response(body, {
|
|
829
|
+
status: statusCode,
|
|
830
|
+
statusText: statusMessage,
|
|
831
|
+
headers
|
|
602
832
|
});
|
|
603
833
|
},
|
|
604
|
-
error:
|
|
834
|
+
error: (err) => {
|
|
835
|
+
this.emit("error", err);
|
|
836
|
+
return createErrorResponse();
|
|
837
|
+
}
|
|
605
838
|
});
|
|
839
|
+
this._listening = true;
|
|
606
840
|
emitListeningWithCallback(this, callback);
|
|
841
|
+
this.nativeServer.stop = this.nativeServer.stop || this.nativeServer.close;
|
|
842
|
+
this.nativeServer.close = this.nativeServer.close || this.nativeServer.stop;
|
|
843
|
+
this.nativeServer.on?.("close", () => {
|
|
844
|
+
this._listening = false;
|
|
845
|
+
this.emit("close");
|
|
846
|
+
});
|
|
607
847
|
} else if (isDeno) {
|
|
848
|
+
const server = this;
|
|
608
849
|
this.nativeServer = Deno.serve({
|
|
609
850
|
port,
|
|
610
|
-
hostname
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
851
|
+
hostname
|
|
852
|
+
}, async (req) => {
|
|
853
|
+
const urlObj = new URL(req.url);
|
|
854
|
+
const requestUrl = urlObj.pathname + urlObj.search;
|
|
855
|
+
const incomingHeaders = headersToRecord(req.headers);
|
|
856
|
+
const rawHeaders = headersToRawHeaders(req.headers);
|
|
857
|
+
const bodyChunks = [];
|
|
858
|
+
const responseHeaders = new Headers();
|
|
859
|
+
let statusCode = 200;
|
|
860
|
+
let statusText = "OK";
|
|
861
|
+
let responseClosed = false;
|
|
862
|
+
const incomingMessage = {
|
|
863
|
+
method: req.method,
|
|
864
|
+
url: requestUrl,
|
|
865
|
+
headers: incomingHeaders,
|
|
866
|
+
httpVersion: "1.1",
|
|
867
|
+
rawHeaders,
|
|
868
|
+
_req: req,
|
|
869
|
+
text: () => req.text(),
|
|
870
|
+
json: () => req.json()
|
|
871
|
+
};
|
|
872
|
+
const serverResponse = {
|
|
873
|
+
statusCode: 200,
|
|
874
|
+
statusMessage: "OK",
|
|
875
|
+
headersSent: false,
|
|
876
|
+
setHeader(name, value) {
|
|
877
|
+
responseHeaders.set(name, Array.isArray(value) ? value.join(", ") : String(value));
|
|
878
|
+
return this;
|
|
879
|
+
},
|
|
880
|
+
getHeader(name) {
|
|
881
|
+
return responseHeaders.get(name) ?? void 0;
|
|
882
|
+
},
|
|
883
|
+
getHeaders() {
|
|
884
|
+
const headers = {};
|
|
885
|
+
responseHeaders.forEach((value, key) => {
|
|
886
|
+
headers[key] = value;
|
|
887
|
+
});
|
|
888
|
+
return headers;
|
|
889
|
+
},
|
|
890
|
+
writeHead(status, arg2, arg3) {
|
|
891
|
+
statusCode = status;
|
|
892
|
+
this.statusCode = status;
|
|
893
|
+
this.headersSent = true;
|
|
894
|
+
if (typeof arg2 === "string") {
|
|
895
|
+
statusText = arg2;
|
|
896
|
+
this.statusMessage = arg2;
|
|
897
|
+
if (arg3) {
|
|
898
|
+
Object.entries(arg3).forEach(([key, value]) => {
|
|
899
|
+
responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : String(value));
|
|
900
|
+
});
|
|
901
|
+
}
|
|
902
|
+
} else if (arg2) {
|
|
903
|
+
Object.entries(arg2).forEach(([key, value]) => {
|
|
904
|
+
responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : String(value));
|
|
905
|
+
});
|
|
620
906
|
}
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
907
|
+
return this;
|
|
908
|
+
},
|
|
909
|
+
write(chunk) {
|
|
910
|
+
if (!this.headersSent) {
|
|
911
|
+
this.writeHead(statusCode);
|
|
912
|
+
}
|
|
913
|
+
if (typeof chunk === "string") {
|
|
914
|
+
bodyChunks.push(new TextEncoder().encode(chunk));
|
|
915
|
+
} else if (chunk instanceof Uint8Array) {
|
|
916
|
+
bodyChunks.push(chunk);
|
|
917
|
+
} else if (chunk !== void 0 && chunk !== null) {
|
|
918
|
+
bodyChunks.push(new TextEncoder().encode(String(chunk)));
|
|
919
|
+
}
|
|
920
|
+
return true;
|
|
921
|
+
},
|
|
922
|
+
end(chunk) {
|
|
923
|
+
if (chunk !== void 0) {
|
|
924
|
+
this.write(chunk);
|
|
925
|
+
}
|
|
926
|
+
if (!this.headersSent) {
|
|
927
|
+
this.writeHead(statusCode);
|
|
928
|
+
}
|
|
929
|
+
responseClosed = true;
|
|
930
|
+
}
|
|
931
|
+
};
|
|
932
|
+
if (server.requestListener) {
|
|
933
|
+
server.requestListener(incomingMessage, serverResponse);
|
|
934
|
+
} else {
|
|
935
|
+
server.emit("request", incomingMessage, serverResponse);
|
|
626
936
|
}
|
|
937
|
+
if (!responseClosed) {
|
|
938
|
+
serverResponse.end();
|
|
939
|
+
}
|
|
940
|
+
const body = bodyChunks.length === 0 ? void 0 : (() => {
|
|
941
|
+
const totalLength = bodyChunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
942
|
+
const output = new ArrayBuffer(totalLength);
|
|
943
|
+
const combined = new Uint8Array(output);
|
|
944
|
+
let offset = 0;
|
|
945
|
+
for (const chunk of bodyChunks) {
|
|
946
|
+
combined.set(chunk, offset);
|
|
947
|
+
offset += chunk.length;
|
|
948
|
+
}
|
|
949
|
+
return output;
|
|
950
|
+
})();
|
|
951
|
+
return new Response(body, {
|
|
952
|
+
status: statusCode,
|
|
953
|
+
statusText,
|
|
954
|
+
headers: responseHeaders
|
|
955
|
+
});
|
|
627
956
|
});
|
|
957
|
+
this._listening = true;
|
|
628
958
|
emitListeningWithCallback(this, callback);
|
|
959
|
+
this.nativeServer.finished.then(() => closeAndEmit(this)).catch((err) => this.emit("error", err));
|
|
629
960
|
}
|
|
630
961
|
return this;
|
|
631
962
|
}
|
|
@@ -654,9 +985,11 @@ var init_http = __esm({
|
|
|
654
985
|
return createAddress(0, addr, "unix");
|
|
655
986
|
}
|
|
656
987
|
return addr;
|
|
657
|
-
}
|
|
988
|
+
}
|
|
989
|
+
if (isBun) {
|
|
658
990
|
return createAddress(this.nativeServer.port, this.nativeServer.hostname);
|
|
659
|
-
}
|
|
991
|
+
}
|
|
992
|
+
if (isDeno) {
|
|
660
993
|
const addr = this.nativeServer.addr;
|
|
661
994
|
return createAddress(addr.port, addr.hostname);
|
|
662
995
|
}
|
|
@@ -666,22 +999,45 @@ var init_http = __esm({
|
|
|
666
999
|
return this._listening;
|
|
667
1000
|
}
|
|
668
1001
|
};
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
1002
|
+
}
|
|
1003
|
+
});
|
|
1004
|
+
|
|
1005
|
+
// src/server/http/index.ts
|
|
1006
|
+
var http_exports = {};
|
|
1007
|
+
__export(http_exports, {
|
|
1008
|
+
Agent: () => Agent2,
|
|
1009
|
+
ClientRequest: () => ClientRequest2,
|
|
1010
|
+
IncomingMessage: () => IncomingMessage,
|
|
1011
|
+
METHODS: () => METHODS,
|
|
1012
|
+
STATUS_CODES: () => STATUS_CODES,
|
|
1013
|
+
Server: () => Server,
|
|
1014
|
+
ServerResponse: () => ServerResponse,
|
|
1015
|
+
createServer: () => createServer,
|
|
1016
|
+
default: () => http_default,
|
|
1017
|
+
get: () => get,
|
|
1018
|
+
getRuntime: () => getRuntime,
|
|
1019
|
+
request: () => request
|
|
1020
|
+
});
|
|
1021
|
+
var http_default;
|
|
1022
|
+
var init_http = __esm({
|
|
1023
|
+
"src/server/http/index.ts"() {
|
|
1024
|
+
"use strict";
|
|
1025
|
+
init_agent();
|
|
1026
|
+
init_client_request();
|
|
1027
|
+
init_constants();
|
|
1028
|
+
init_incoming_message();
|
|
1029
|
+
init_request_api();
|
|
1030
|
+
init_response();
|
|
1031
|
+
init_runtime2();
|
|
1032
|
+
init_server_runtime();
|
|
1033
|
+
init_agent();
|
|
1034
|
+
init_client_request();
|
|
1035
|
+
init_constants();
|
|
1036
|
+
init_incoming_message();
|
|
1037
|
+
init_request_api();
|
|
1038
|
+
init_response();
|
|
1039
|
+
init_runtime2();
|
|
1040
|
+
init_server_runtime();
|
|
685
1041
|
http_default = {
|
|
686
1042
|
createServer,
|
|
687
1043
|
request,
|
|
@@ -689,8 +1045,8 @@ var init_http = __esm({
|
|
|
689
1045
|
Server,
|
|
690
1046
|
IncomingMessage,
|
|
691
1047
|
ServerResponse,
|
|
692
|
-
Agent,
|
|
693
|
-
ClientRequest,
|
|
1048
|
+
Agent: Agent2,
|
|
1049
|
+
ClientRequest: ClientRequest2,
|
|
694
1050
|
METHODS,
|
|
695
1051
|
STATUS_CODES,
|
|
696
1052
|
getRuntime
|
|
@@ -698,11 +1054,11 @@ var init_http = __esm({
|
|
|
698
1054
|
}
|
|
699
1055
|
});
|
|
700
1056
|
|
|
701
|
-
// src/https.ts
|
|
1057
|
+
// src/server/https/index.ts
|
|
702
1058
|
var https_exports = {};
|
|
703
1059
|
__export(https_exports, {
|
|
704
|
-
Agent: () =>
|
|
705
|
-
ClientRequest: () =>
|
|
1060
|
+
Agent: () => Agent,
|
|
1061
|
+
ClientRequest: () => ClientRequest,
|
|
706
1062
|
Server: () => Server2,
|
|
707
1063
|
createServer: () => createServer2,
|
|
708
1064
|
default: () => https_default,
|
|
@@ -711,27 +1067,84 @@ __export(https_exports, {
|
|
|
711
1067
|
request: () => request2
|
|
712
1068
|
});
|
|
713
1069
|
module.exports = __toCommonJS(https_exports);
|
|
714
|
-
|
|
1070
|
+
|
|
1071
|
+
// src/server/https/agent.ts
|
|
1072
|
+
var Agent = class {
|
|
1073
|
+
constructor(options) {
|
|
1074
|
+
this.options = options;
|
|
1075
|
+
}
|
|
1076
|
+
};
|
|
1077
|
+
|
|
1078
|
+
// src/server/https/client-request.ts
|
|
1079
|
+
var import_node_events = require("events");
|
|
1080
|
+
init_utils();
|
|
1081
|
+
var ClientRequest = class extends import_node_events.EventEmitter {
|
|
1082
|
+
constructor(_url, _options = {}) {
|
|
1083
|
+
super();
|
|
1084
|
+
this._bodyChunks = [];
|
|
1085
|
+
this._ended = false;
|
|
1086
|
+
}
|
|
1087
|
+
_setNativeRequest(nativeRequest) {
|
|
1088
|
+
this._nativeRequest = nativeRequest;
|
|
1089
|
+
}
|
|
1090
|
+
_setExecutor(executor) {
|
|
1091
|
+
this._executor = executor;
|
|
1092
|
+
}
|
|
1093
|
+
write(chunk, encoding, callback) {
|
|
1094
|
+
if (this._ended) {
|
|
1095
|
+
throw new Error("Cannot write after end");
|
|
1096
|
+
}
|
|
1097
|
+
if (typeof encoding === "function") {
|
|
1098
|
+
callback = encoding;
|
|
1099
|
+
encoding = void 0;
|
|
1100
|
+
}
|
|
1101
|
+
if (this._nativeRequest) {
|
|
1102
|
+
const actualEncoding = typeof encoding === "string" ? encoding : void 0;
|
|
1103
|
+
return this._nativeRequest.write(chunk, actualEncoding, callback);
|
|
1104
|
+
}
|
|
1105
|
+
this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
|
|
1106
|
+
queueCallback(callback);
|
|
1107
|
+
return true;
|
|
1108
|
+
}
|
|
1109
|
+
end(chunk, encoding, callback) {
|
|
1110
|
+
if (typeof chunk === "function") {
|
|
1111
|
+
callback = chunk;
|
|
1112
|
+
chunk = void 0;
|
|
1113
|
+
encoding = void 0;
|
|
1114
|
+
} else if (typeof encoding === "function") {
|
|
1115
|
+
callback = encoding;
|
|
1116
|
+
encoding = void 0;
|
|
1117
|
+
}
|
|
1118
|
+
if (this._ended) {
|
|
1119
|
+
queueCallback(callback);
|
|
1120
|
+
return;
|
|
1121
|
+
}
|
|
1122
|
+
this._ended = true;
|
|
1123
|
+
if (this._nativeRequest) {
|
|
1124
|
+
const actualEncoding = typeof encoding === "string" ? encoding : void 0;
|
|
1125
|
+
if (chunk !== void 0) {
|
|
1126
|
+
this._nativeRequest.end(chunk, actualEncoding, callback);
|
|
1127
|
+
} else {
|
|
1128
|
+
this._nativeRequest.end(callback);
|
|
1129
|
+
}
|
|
1130
|
+
return;
|
|
1131
|
+
}
|
|
1132
|
+
if (chunk !== void 0) {
|
|
1133
|
+
this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
|
|
1134
|
+
}
|
|
1135
|
+
const executor = this._executor;
|
|
1136
|
+
const body = buildRequestBody(this._bodyChunks);
|
|
1137
|
+
if (executor) {
|
|
1138
|
+
Promise.resolve().then(() => executor(body)).catch((error) => this.emit("error", error));
|
|
1139
|
+
}
|
|
1140
|
+
queueCallback(callback);
|
|
1141
|
+
}
|
|
1142
|
+
};
|
|
1143
|
+
|
|
1144
|
+
// src/server/https/request-api.ts
|
|
715
1145
|
init_runtime();
|
|
716
|
-
|
|
717
|
-
|
|
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
|
-
}
|
|
1146
|
+
|
|
1147
|
+
// src/server/https/http-classes.ts
|
|
735
1148
|
function loadHttpClasses() {
|
|
736
1149
|
const httpModule = (init_http(), __toCommonJS(http_exports));
|
|
737
1150
|
return {
|
|
@@ -739,17 +1152,97 @@ function loadHttpClasses() {
|
|
|
739
1152
|
ServerResponse: httpModule.ServerResponse
|
|
740
1153
|
};
|
|
741
1154
|
}
|
|
1155
|
+
|
|
1156
|
+
// src/server/https/node-modules.ts
|
|
1157
|
+
init_runtime();
|
|
742
1158
|
var https2;
|
|
743
|
-
|
|
744
|
-
|
|
1159
|
+
if (isNode && typeof process !== "undefined") {
|
|
1160
|
+
try {
|
|
1161
|
+
https2 = require("https");
|
|
1162
|
+
} catch {
|
|
1163
|
+
https2 = require("https");
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
// src/server/https/request-api.ts
|
|
1168
|
+
function request2(url, options, callback) {
|
|
1169
|
+
const urlString = typeof url === "string" ? url : url.toString();
|
|
1170
|
+
const req = new ClientRequest(urlString, options);
|
|
1171
|
+
if (isNode) {
|
|
1172
|
+
const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
|
|
1173
|
+
const nodeReq = https2.request(urlString, {
|
|
1174
|
+
method: options?.method || "GET",
|
|
1175
|
+
headers: options?.headers,
|
|
1176
|
+
timeout: options?.timeout,
|
|
1177
|
+
signal: options?.signal
|
|
1178
|
+
}, (res) => {
|
|
1179
|
+
const incomingMessage = new IncomingMessage2(res);
|
|
1180
|
+
if (callback) callback(incomingMessage);
|
|
1181
|
+
req.emit("response", incomingMessage);
|
|
1182
|
+
});
|
|
1183
|
+
req._setNativeRequest(nodeReq);
|
|
1184
|
+
nodeReq.on("error", (error) => req.emit("error", error));
|
|
1185
|
+
} else {
|
|
1186
|
+
const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
|
|
1187
|
+
req._setExecutor(async (body) => {
|
|
1188
|
+
const response = await fetch(urlString, {
|
|
1189
|
+
method: options?.method || "GET",
|
|
1190
|
+
headers: options?.headers,
|
|
1191
|
+
body,
|
|
1192
|
+
signal: options?.signal
|
|
1193
|
+
});
|
|
1194
|
+
const incomingMessage = new IncomingMessage2(response, options?.method || "GET");
|
|
1195
|
+
if (callback) callback(incomingMessage);
|
|
1196
|
+
req.emit("response", incomingMessage);
|
|
1197
|
+
});
|
|
1198
|
+
}
|
|
1199
|
+
return req;
|
|
1200
|
+
}
|
|
1201
|
+
function get2(url, options, callback) {
|
|
1202
|
+
const req = request2(url, { ...options, method: "GET" }, callback);
|
|
1203
|
+
req.end();
|
|
1204
|
+
return req;
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
// src/server/https/runtime.ts
|
|
1208
|
+
init_runtime();
|
|
1209
|
+
function getRuntime2() {
|
|
1210
|
+
return runtime;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
// src/server/https/server-runtime.ts
|
|
1214
|
+
var import_node_events6 = require("events");
|
|
1215
|
+
init_runtime();
|
|
1216
|
+
init_utils();
|
|
1217
|
+
var Server2 = class extends import_node_events6.EventEmitter {
|
|
1218
|
+
constructor(options = {}, requestListener) {
|
|
745
1219
|
super();
|
|
746
1220
|
this._listening = false;
|
|
747
1221
|
this.options = options;
|
|
748
1222
|
this.requestListener = requestListener;
|
|
749
1223
|
}
|
|
1224
|
+
resolvePmInheritedFd(explicitPort, explicitFd) {
|
|
1225
|
+
if (typeof explicitFd === "number" && Number.isInteger(explicitFd) && explicitFd >= 0) {
|
|
1226
|
+
return explicitFd;
|
|
1227
|
+
}
|
|
1228
|
+
const fdValue = process.env.ELIT_PM_LISTEN_FD;
|
|
1229
|
+
if (!fdValue) {
|
|
1230
|
+
return void 0;
|
|
1231
|
+
}
|
|
1232
|
+
const parsedFd = Number.parseInt(fdValue, 10);
|
|
1233
|
+
if (!Number.isInteger(parsedFd) || parsedFd < 0) {
|
|
1234
|
+
return void 0;
|
|
1235
|
+
}
|
|
1236
|
+
const publicPort = Number.parseInt(process.env.ELIT_PM_PUBLIC_PORT ?? process.env.ELIT_PM_PORT ?? "", 10);
|
|
1237
|
+
if (Number.isInteger(explicitPort) && Number.isInteger(publicPort) && explicitPort !== publicPort) {
|
|
1238
|
+
return void 0;
|
|
1239
|
+
}
|
|
1240
|
+
return parsedFd;
|
|
1241
|
+
}
|
|
750
1242
|
listen(...args) {
|
|
751
1243
|
let port = 3e3;
|
|
752
1244
|
let hostname = "0.0.0.0";
|
|
1245
|
+
let fd;
|
|
753
1246
|
let callback;
|
|
754
1247
|
const firstArg = args[0];
|
|
755
1248
|
if (typeof firstArg === "number") {
|
|
@@ -764,12 +1257,13 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
764
1257
|
} else if (firstArg && typeof firstArg === "object") {
|
|
765
1258
|
port = firstArg.port || 3e3;
|
|
766
1259
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
1260
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
767
1261
|
callback = args[1];
|
|
768
1262
|
}
|
|
1263
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
769
1264
|
const self = this;
|
|
770
1265
|
if (isNode) {
|
|
771
1266
|
const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
|
|
772
|
-
if (!https2) https2 = require("https");
|
|
773
1267
|
this.nativeServer = https2.createServer(this.options, (req, res) => {
|
|
774
1268
|
const incomingMessage = new IncomingMessage2(req);
|
|
775
1269
|
const serverResponse = new ServerResponse2(incomingMessage, res);
|
|
@@ -779,11 +1273,19 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
779
1273
|
self.emit("request", incomingMessage, serverResponse);
|
|
780
1274
|
}
|
|
781
1275
|
});
|
|
782
|
-
|
|
783
|
-
this.
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
1276
|
+
if (fd !== void 0) {
|
|
1277
|
+
this.nativeServer.listen({ fd, exclusive: false }, () => {
|
|
1278
|
+
this._listening = true;
|
|
1279
|
+
this.emit("listening");
|
|
1280
|
+
if (callback) callback();
|
|
1281
|
+
});
|
|
1282
|
+
} else {
|
|
1283
|
+
this.nativeServer.listen(port, hostname, () => {
|
|
1284
|
+
this._listening = true;
|
|
1285
|
+
this.emit("listening");
|
|
1286
|
+
if (callback) callback();
|
|
1287
|
+
});
|
|
1288
|
+
}
|
|
787
1289
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
788
1290
|
this.nativeServer.on("close", () => {
|
|
789
1291
|
this._listening = false;
|
|
@@ -808,7 +1310,7 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
808
1310
|
},
|
|
809
1311
|
error: (error) => {
|
|
810
1312
|
this.emit("error", error);
|
|
811
|
-
return
|
|
1313
|
+
return createErrorResponse();
|
|
812
1314
|
}
|
|
813
1315
|
};
|
|
814
1316
|
if (this.options.key || this.options.cert) {
|
|
@@ -822,7 +1324,7 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
822
1324
|
tlsOptions.tls = this.options.tls;
|
|
823
1325
|
}
|
|
824
1326
|
this.nativeServer = Bun.serve(tlsOptions);
|
|
825
|
-
|
|
1327
|
+
emitListeningWithCallback(this, callback);
|
|
826
1328
|
} else if (isDeno) {
|
|
827
1329
|
const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
|
|
828
1330
|
const serveOptions = {
|
|
@@ -842,7 +1344,7 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
842
1344
|
},
|
|
843
1345
|
onError: (error) => {
|
|
844
1346
|
this.emit("error", error);
|
|
845
|
-
return
|
|
1347
|
+
return createErrorResponse();
|
|
846
1348
|
}
|
|
847
1349
|
};
|
|
848
1350
|
if (this.options.key && this.options.cert) {
|
|
@@ -850,23 +1352,23 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
850
1352
|
serveOptions.key = this.options.key;
|
|
851
1353
|
}
|
|
852
1354
|
this.nativeServer = Deno.serve(serveOptions);
|
|
853
|
-
|
|
1355
|
+
emitListeningWithCallback(this, callback);
|
|
854
1356
|
}
|
|
855
1357
|
return this;
|
|
856
1358
|
}
|
|
857
1359
|
close(callback) {
|
|
858
1360
|
if (!this.nativeServer) {
|
|
859
|
-
if (callback)
|
|
1361
|
+
if (callback) queueCallback(() => callback());
|
|
860
1362
|
return this;
|
|
861
1363
|
}
|
|
862
1364
|
if (isNode) {
|
|
863
1365
|
this.nativeServer.close(callback);
|
|
864
1366
|
} else if (isBun) {
|
|
865
1367
|
this.nativeServer.stop();
|
|
866
|
-
|
|
1368
|
+
closeAndEmit(this, callback);
|
|
867
1369
|
} else if (isDeno) {
|
|
868
1370
|
this.nativeServer.shutdown();
|
|
869
|
-
|
|
1371
|
+
closeAndEmit(this, callback);
|
|
870
1372
|
}
|
|
871
1373
|
return this;
|
|
872
1374
|
}
|
|
@@ -876,14 +1378,16 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
876
1378
|
const addr = this.nativeServer.address();
|
|
877
1379
|
if (!addr) return null;
|
|
878
1380
|
if (typeof addr === "string") {
|
|
879
|
-
return
|
|
1381
|
+
return createAddress(0, addr, "unix");
|
|
880
1382
|
}
|
|
881
1383
|
return addr;
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
|
|
1384
|
+
}
|
|
1385
|
+
if (isBun) {
|
|
1386
|
+
return createAddress(this.nativeServer.port, this.nativeServer.hostname);
|
|
1387
|
+
}
|
|
1388
|
+
if (isDeno) {
|
|
885
1389
|
const addr = this.nativeServer.addr;
|
|
886
|
-
return
|
|
1390
|
+
return createAddress(addr.port, addr.hostname);
|
|
887
1391
|
}
|
|
888
1392
|
return null;
|
|
889
1393
|
}
|
|
@@ -891,78 +1395,18 @@ var Server2 = class extends import_events.EventEmitter {
|
|
|
891
1395
|
return this._listening;
|
|
892
1396
|
}
|
|
893
1397
|
};
|
|
894
|
-
|
|
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) {
|
|
1398
|
+
function createServer2(options = {}, requestListener) {
|
|
911
1399
|
return new Server2(options, requestListener);
|
|
912
1400
|
}
|
|
913
|
-
|
|
914
|
-
|
|
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
|
-
}
|
|
1401
|
+
|
|
1402
|
+
// src/server/https/index.ts
|
|
959
1403
|
var https_default = {
|
|
960
1404
|
createServer: createServer2,
|
|
961
1405
|
request: request2,
|
|
962
1406
|
get: get2,
|
|
963
1407
|
Server: Server2,
|
|
964
|
-
Agent
|
|
965
|
-
ClientRequest
|
|
1408
|
+
Agent,
|
|
1409
|
+
ClientRequest,
|
|
966
1410
|
getRuntime: getRuntime2
|
|
967
1411
|
};
|
|
968
1412
|
// Annotate the CommonJS export names for ESM import in node:
|