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.mjs
CHANGED
|
@@ -26,42 +26,78 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
26
26
|
};
|
|
27
27
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
28
|
|
|
29
|
-
// src/
|
|
30
|
-
var runtime, isNode, isBun, isDeno;
|
|
31
|
-
var init_runtime = __esm({
|
|
32
|
-
"src/runtime.ts"() {
|
|
33
|
-
"use strict";
|
|
34
|
-
runtime = (() => {
|
|
35
|
-
if (typeof Deno !== "undefined") return "deno";
|
|
36
|
-
if (typeof Bun !== "undefined") return "bun";
|
|
37
|
-
return "node";
|
|
38
|
-
})();
|
|
39
|
-
isNode = runtime === "node";
|
|
40
|
-
isBun = runtime === "bun";
|
|
41
|
-
isDeno = runtime === "deno";
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
// src/http.ts
|
|
46
|
-
var http_exports = {};
|
|
47
|
-
__export(http_exports, {
|
|
48
|
-
Agent: () => Agent,
|
|
49
|
-
ClientRequest: () => ClientRequest,
|
|
50
|
-
IncomingMessage: () => IncomingMessage,
|
|
51
|
-
METHODS: () => METHODS,
|
|
52
|
-
STATUS_CODES: () => STATUS_CODES,
|
|
53
|
-
Server: () => Server,
|
|
54
|
-
ServerResponse: () => ServerResponse,
|
|
55
|
-
createServer: () => createServer,
|
|
56
|
-
default: () => http_default,
|
|
57
|
-
get: () => get,
|
|
58
|
-
getRuntime: () => getRuntime,
|
|
59
|
-
request: () => request
|
|
60
|
-
});
|
|
61
|
-
import { EventEmitter } from "events";
|
|
29
|
+
// src/server/http/utils.ts
|
|
62
30
|
function queueCallback(callback) {
|
|
63
31
|
if (callback) queueMicrotask(callback);
|
|
64
32
|
}
|
|
33
|
+
function getRequestPath(url) {
|
|
34
|
+
if (!url) return "";
|
|
35
|
+
try {
|
|
36
|
+
const urlObj = new URL(url);
|
|
37
|
+
return urlObj.pathname + urlObj.search;
|
|
38
|
+
} catch {
|
|
39
|
+
return url;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function headersToRecord(headers) {
|
|
43
|
+
const result = /* @__PURE__ */ Object.create(null);
|
|
44
|
+
headers.forEach((value, key) => {
|
|
45
|
+
result[key] = value;
|
|
46
|
+
});
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
function headersToRawHeaders(headers) {
|
|
50
|
+
const rawHeaders = [];
|
|
51
|
+
headers.forEach((value, key) => {
|
|
52
|
+
rawHeaders.push(key, value);
|
|
53
|
+
});
|
|
54
|
+
return rawHeaders;
|
|
55
|
+
}
|
|
56
|
+
function normalizeRequestBodyChunk(chunk, encoding = "utf8") {
|
|
57
|
+
if (typeof chunk === "string") {
|
|
58
|
+
if (encoding !== "utf8" && typeof Buffer !== "undefined") {
|
|
59
|
+
return Buffer.from(chunk, encoding);
|
|
60
|
+
}
|
|
61
|
+
return chunk;
|
|
62
|
+
}
|
|
63
|
+
if (chunk instanceof Uint8Array) {
|
|
64
|
+
return chunk;
|
|
65
|
+
}
|
|
66
|
+
if (chunk instanceof ArrayBuffer) {
|
|
67
|
+
return new Uint8Array(chunk);
|
|
68
|
+
}
|
|
69
|
+
if (ArrayBuffer.isView(chunk)) {
|
|
70
|
+
return new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
|
|
71
|
+
}
|
|
72
|
+
return new TextEncoder().encode(String(chunk));
|
|
73
|
+
}
|
|
74
|
+
function buildRequestBody(chunks) {
|
|
75
|
+
if (chunks.length === 0) {
|
|
76
|
+
return void 0;
|
|
77
|
+
}
|
|
78
|
+
if (chunks.length === 1) {
|
|
79
|
+
return chunks[0];
|
|
80
|
+
}
|
|
81
|
+
if (chunks.every((chunk) => typeof chunk === "string")) {
|
|
82
|
+
return chunks.join("");
|
|
83
|
+
}
|
|
84
|
+
const encoder = new TextEncoder();
|
|
85
|
+
const bodyParts = chunks.map((chunk) => typeof chunk === "string" ? encoder.encode(chunk) : chunk);
|
|
86
|
+
const totalLength = bodyParts.reduce((sum, part) => sum + part.byteLength, 0);
|
|
87
|
+
const body = new Uint8Array(totalLength);
|
|
88
|
+
let offset = 0;
|
|
89
|
+
for (const part of bodyParts) {
|
|
90
|
+
body.set(part, offset);
|
|
91
|
+
offset += part.byteLength;
|
|
92
|
+
}
|
|
93
|
+
return body;
|
|
94
|
+
}
|
|
95
|
+
function isFetchResponse(value) {
|
|
96
|
+
return typeof value?.status === "number" && typeof value?.statusText === "string" && typeof value?.headers?.forEach === "function";
|
|
97
|
+
}
|
|
98
|
+
function isNodeIncomingMessage(value) {
|
|
99
|
+
return typeof value?.on === "function" && typeof value?.headers === "object" && (typeof value?.httpVersion === "string" || value?.socket !== void 0);
|
|
100
|
+
}
|
|
65
101
|
function headersToInit(headers) {
|
|
66
102
|
const result = {};
|
|
67
103
|
for (const key in headers) {
|
|
@@ -86,68 +122,119 @@ function closeAndEmit(server, callback) {
|
|
|
86
122
|
server.emit("close");
|
|
87
123
|
if (callback) queueMicrotask(() => callback());
|
|
88
124
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const incomingMessage = new IncomingMessage(fetchRequest);
|
|
120
|
-
incomingMessage.statusCode = response.status;
|
|
121
|
-
incomingMessage.statusMessage = response.statusText;
|
|
122
|
-
if (callback) callback(incomingMessage);
|
|
123
|
-
req.emit("response", incomingMessage);
|
|
124
|
-
} catch (error) {
|
|
125
|
-
req.emit("error", error);
|
|
125
|
+
var init_utils = __esm({
|
|
126
|
+
"src/server/http/utils.ts"() {
|
|
127
|
+
"use strict";
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// src/shares/runtime.ts
|
|
132
|
+
var runtime, isNode, isBun, isDeno;
|
|
133
|
+
var init_runtime = __esm({
|
|
134
|
+
"src/shares/runtime.ts"() {
|
|
135
|
+
"use strict";
|
|
136
|
+
runtime = (() => {
|
|
137
|
+
if (typeof Deno !== "undefined") return "deno";
|
|
138
|
+
if (typeof Bun !== "undefined") return "bun";
|
|
139
|
+
return "node";
|
|
140
|
+
})();
|
|
141
|
+
isNode = runtime === "node";
|
|
142
|
+
isBun = runtime === "bun";
|
|
143
|
+
isDeno = runtime === "deno";
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// src/server/http/agent.ts
|
|
148
|
+
var Agent2;
|
|
149
|
+
var init_agent = __esm({
|
|
150
|
+
"src/server/http/agent.ts"() {
|
|
151
|
+
"use strict";
|
|
152
|
+
Agent2 = class {
|
|
153
|
+
constructor(options) {
|
|
154
|
+
this.options = options;
|
|
126
155
|
}
|
|
127
|
-
}
|
|
156
|
+
};
|
|
128
157
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
var http, https, METHODS, STATUS_CODES, IncomingMessage, ServerResponse, Server, ClientRequest, Agent, http_default;
|
|
138
|
-
var init_http = __esm({
|
|
139
|
-
"src/http.ts"() {
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// src/server/http/client-request.ts
|
|
161
|
+
import { EventEmitter as EventEmitter2 } from "events";
|
|
162
|
+
var ClientRequest2;
|
|
163
|
+
var init_client_request = __esm({
|
|
164
|
+
"src/server/http/client-request.ts"() {
|
|
140
165
|
"use strict";
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
http = __require("http");
|
|
148
|
-
https = __require("https");
|
|
166
|
+
init_utils();
|
|
167
|
+
ClientRequest2 = class extends EventEmitter2 {
|
|
168
|
+
constructor(_url, _options = {}) {
|
|
169
|
+
super();
|
|
170
|
+
this._bodyChunks = [];
|
|
171
|
+
this._ended = false;
|
|
149
172
|
}
|
|
150
|
-
|
|
173
|
+
_setNativeRequest(nativeRequest) {
|
|
174
|
+
this._nativeRequest = nativeRequest;
|
|
175
|
+
}
|
|
176
|
+
_setExecutor(executor) {
|
|
177
|
+
this._executor = executor;
|
|
178
|
+
}
|
|
179
|
+
write(chunk, encoding, callback) {
|
|
180
|
+
if (this._ended) {
|
|
181
|
+
throw new Error("Cannot write after end");
|
|
182
|
+
}
|
|
183
|
+
if (typeof encoding === "function") {
|
|
184
|
+
callback = encoding;
|
|
185
|
+
encoding = void 0;
|
|
186
|
+
}
|
|
187
|
+
if (this._nativeRequest) {
|
|
188
|
+
const actualEncoding2 = typeof encoding === "string" ? encoding : void 0;
|
|
189
|
+
return this._nativeRequest.write(chunk, actualEncoding2, callback);
|
|
190
|
+
}
|
|
191
|
+
const actualEncoding = typeof encoding === "string" ? encoding : "utf8";
|
|
192
|
+
this._bodyChunks.push(normalizeRequestBodyChunk(chunk, actualEncoding));
|
|
193
|
+
queueCallback(callback);
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
end(chunk, encoding, callback) {
|
|
197
|
+
if (typeof chunk === "function") {
|
|
198
|
+
callback = chunk;
|
|
199
|
+
chunk = void 0;
|
|
200
|
+
encoding = void 0;
|
|
201
|
+
} else if (typeof encoding === "function") {
|
|
202
|
+
callback = encoding;
|
|
203
|
+
encoding = void 0;
|
|
204
|
+
}
|
|
205
|
+
if (this._ended) {
|
|
206
|
+
queueCallback(callback);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
this._ended = true;
|
|
210
|
+
if (this._nativeRequest) {
|
|
211
|
+
const actualEncoding = typeof encoding === "string" ? encoding : void 0;
|
|
212
|
+
if (chunk !== void 0) {
|
|
213
|
+
this._nativeRequest.end(chunk, actualEncoding, callback);
|
|
214
|
+
} else {
|
|
215
|
+
this._nativeRequest.end(callback);
|
|
216
|
+
}
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (chunk !== void 0) {
|
|
220
|
+
this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
|
|
221
|
+
}
|
|
222
|
+
const executor = this._executor;
|
|
223
|
+
const body = buildRequestBody(this._bodyChunks);
|
|
224
|
+
if (executor) {
|
|
225
|
+
Promise.resolve().then(() => executor(body)).catch((error) => this.emit("error", error));
|
|
226
|
+
}
|
|
227
|
+
queueCallback(callback);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
// src/server/http/constants.ts
|
|
234
|
+
var METHODS, STATUS_CODES;
|
|
235
|
+
var init_constants = __esm({
|
|
236
|
+
"src/server/http/constants.ts"() {
|
|
237
|
+
"use strict";
|
|
151
238
|
METHODS = [
|
|
152
239
|
"GET",
|
|
153
240
|
"POST",
|
|
@@ -215,13 +302,30 @@ var init_http = __esm({
|
|
|
215
302
|
510: "Not Extended",
|
|
216
303
|
511: "Network Authentication Required"
|
|
217
304
|
};
|
|
218
|
-
|
|
219
|
-
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
// src/server/http/incoming-message.ts
|
|
309
|
+
import { EventEmitter as EventEmitter3 } from "events";
|
|
310
|
+
var IncomingMessage;
|
|
311
|
+
var init_incoming_message = __esm({
|
|
312
|
+
"src/server/http/incoming-message.ts"() {
|
|
313
|
+
"use strict";
|
|
314
|
+
init_utils();
|
|
315
|
+
IncomingMessage = class extends EventEmitter3 {
|
|
316
|
+
constructor(req, requestMethod) {
|
|
220
317
|
super();
|
|
221
318
|
this.httpVersion = "1.1";
|
|
222
319
|
this.rawHeaders = [];
|
|
223
320
|
this._req = req;
|
|
224
|
-
if (
|
|
321
|
+
if (isFetchResponse(req)) {
|
|
322
|
+
this.method = requestMethod || "GET";
|
|
323
|
+
this.url = getRequestPath(req.url);
|
|
324
|
+
this.headers = headersToRecord(req.headers);
|
|
325
|
+
this.statusCode = req.status;
|
|
326
|
+
this.statusMessage = req.statusText;
|
|
327
|
+
this.rawHeaders = headersToRawHeaders(req.headers);
|
|
328
|
+
} else if (isNodeIncomingMessage(req)) {
|
|
225
329
|
this.method = req.method;
|
|
226
330
|
this.url = req.url;
|
|
227
331
|
this.headers = req.headers;
|
|
@@ -232,14 +336,13 @@ var init_http = __esm({
|
|
|
232
336
|
this.socket = req.socket;
|
|
233
337
|
} else {
|
|
234
338
|
this.method = req.method;
|
|
235
|
-
|
|
236
|
-
this.
|
|
237
|
-
this.
|
|
238
|
-
this.rawHeaders = [];
|
|
339
|
+
this.url = getRequestPath(req.url);
|
|
340
|
+
this.headers = headersToRecord(req.headers);
|
|
341
|
+
this.rawHeaders = headersToRawHeaders(req.headers);
|
|
239
342
|
}
|
|
240
343
|
}
|
|
241
344
|
async text() {
|
|
242
|
-
if (
|
|
345
|
+
if (isNodeIncomingMessage(this._req)) {
|
|
243
346
|
return new Promise((resolve, reject) => {
|
|
244
347
|
const chunks = [];
|
|
245
348
|
this._req.on("data", (chunk) => chunks.push(chunk));
|
|
@@ -250,14 +353,92 @@ var init_http = __esm({
|
|
|
250
353
|
return this._req.text();
|
|
251
354
|
}
|
|
252
355
|
async json() {
|
|
253
|
-
if (
|
|
356
|
+
if (isNodeIncomingMessage(this._req)) {
|
|
254
357
|
const text = await this.text();
|
|
255
358
|
return JSON.parse(text);
|
|
256
359
|
}
|
|
257
360
|
return this._req.json();
|
|
258
361
|
}
|
|
259
362
|
};
|
|
260
|
-
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
// src/server/http/node-modules.ts
|
|
367
|
+
var http, https;
|
|
368
|
+
var init_node_modules = __esm({
|
|
369
|
+
"src/server/http/node-modules.ts"() {
|
|
370
|
+
"use strict";
|
|
371
|
+
init_runtime();
|
|
372
|
+
if (isNode && typeof process !== "undefined") {
|
|
373
|
+
try {
|
|
374
|
+
http = __require("http");
|
|
375
|
+
https = __require("https");
|
|
376
|
+
} catch {
|
|
377
|
+
http = __require("http");
|
|
378
|
+
https = __require("https");
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
// src/server/http/request-api.ts
|
|
385
|
+
function request(url, options, callback) {
|
|
386
|
+
const urlString = typeof url === "string" ? url : url.toString();
|
|
387
|
+
const req = new ClientRequest2(urlString, options);
|
|
388
|
+
if (isNode) {
|
|
389
|
+
const urlObj = new URL(urlString);
|
|
390
|
+
const client = urlObj.protocol === "https:" ? https : http;
|
|
391
|
+
const nodeReq = client.request(urlString, {
|
|
392
|
+
method: options?.method || "GET",
|
|
393
|
+
headers: options?.headers,
|
|
394
|
+
timeout: options?.timeout,
|
|
395
|
+
signal: options?.signal
|
|
396
|
+
}, (res) => {
|
|
397
|
+
const incomingMessage = new IncomingMessage(res);
|
|
398
|
+
if (callback) callback(incomingMessage);
|
|
399
|
+
req.emit("response", incomingMessage);
|
|
400
|
+
});
|
|
401
|
+
req._setNativeRequest(nodeReq);
|
|
402
|
+
nodeReq.on("error", (error) => req.emit("error", error));
|
|
403
|
+
} else {
|
|
404
|
+
req._setExecutor(async (body) => {
|
|
405
|
+
const response = await fetch(urlString, {
|
|
406
|
+
method: options?.method || "GET",
|
|
407
|
+
headers: options?.headers,
|
|
408
|
+
body,
|
|
409
|
+
signal: options?.signal
|
|
410
|
+
});
|
|
411
|
+
const incomingMessage = new IncomingMessage(response, options?.method || "GET");
|
|
412
|
+
if (callback) callback(incomingMessage);
|
|
413
|
+
req.emit("response", incomingMessage);
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
return req;
|
|
417
|
+
}
|
|
418
|
+
function get(url, options, callback) {
|
|
419
|
+
const req = request(url, { ...options, method: "GET" }, callback);
|
|
420
|
+
req.end();
|
|
421
|
+
return req;
|
|
422
|
+
}
|
|
423
|
+
var init_request_api = __esm({
|
|
424
|
+
"src/server/http/request-api.ts"() {
|
|
425
|
+
"use strict";
|
|
426
|
+
init_runtime();
|
|
427
|
+
init_client_request();
|
|
428
|
+
init_incoming_message();
|
|
429
|
+
init_node_modules();
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
// src/server/http/response.ts
|
|
434
|
+
import { EventEmitter as EventEmitter4 } from "events";
|
|
435
|
+
var ServerResponse;
|
|
436
|
+
var init_response = __esm({
|
|
437
|
+
"src/server/http/response.ts"() {
|
|
438
|
+
"use strict";
|
|
439
|
+
init_runtime();
|
|
440
|
+
init_utils();
|
|
441
|
+
ServerResponse = class extends EventEmitter4 {
|
|
261
442
|
constructor(_req, nodeRes) {
|
|
262
443
|
super();
|
|
263
444
|
this.statusCode = 200;
|
|
@@ -390,7 +571,6 @@ var init_http = __esm({
|
|
|
390
571
|
_setResolver(resolve) {
|
|
391
572
|
this._resolve = resolve;
|
|
392
573
|
}
|
|
393
|
-
// Express.js-like methods
|
|
394
574
|
json(data, statusCode = 200) {
|
|
395
575
|
if (!this.headersSent) {
|
|
396
576
|
this.setHeader("Content-Type", "application/json");
|
|
@@ -414,7 +594,36 @@ var init_http = __esm({
|
|
|
414
594
|
return this;
|
|
415
595
|
}
|
|
416
596
|
};
|
|
417
|
-
|
|
597
|
+
}
|
|
598
|
+
});
|
|
599
|
+
|
|
600
|
+
// src/server/http/runtime.ts
|
|
601
|
+
function getRuntime() {
|
|
602
|
+
return runtime;
|
|
603
|
+
}
|
|
604
|
+
var init_runtime2 = __esm({
|
|
605
|
+
"src/server/http/runtime.ts"() {
|
|
606
|
+
"use strict";
|
|
607
|
+
init_runtime();
|
|
608
|
+
}
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
// src/server/http/server-runtime.ts
|
|
612
|
+
import { EventEmitter as EventEmitter5 } from "events";
|
|
613
|
+
function createServer(arg1, arg2) {
|
|
614
|
+
const requestListener = typeof arg1 === "function" ? arg1 : arg2;
|
|
615
|
+
return new Server(requestListener);
|
|
616
|
+
}
|
|
617
|
+
var Server;
|
|
618
|
+
var init_server_runtime = __esm({
|
|
619
|
+
"src/server/http/server-runtime.ts"() {
|
|
620
|
+
"use strict";
|
|
621
|
+
init_runtime();
|
|
622
|
+
init_node_modules();
|
|
623
|
+
init_incoming_message();
|
|
624
|
+
init_response();
|
|
625
|
+
init_utils();
|
|
626
|
+
Server = class extends EventEmitter5 {
|
|
418
627
|
constructor(requestListener) {
|
|
419
628
|
super();
|
|
420
629
|
this._bunWebSocketServers = /* @__PURE__ */ new Set();
|
|
@@ -427,9 +636,28 @@ var init_http = __esm({
|
|
|
427
636
|
unregisterWebSocketServer(wsServer) {
|
|
428
637
|
this._bunWebSocketServers.delete(wsServer);
|
|
429
638
|
}
|
|
639
|
+
resolvePmInheritedFd(explicitPort, explicitFd) {
|
|
640
|
+
if (typeof explicitFd === "number" && Number.isInteger(explicitFd) && explicitFd >= 0) {
|
|
641
|
+
return explicitFd;
|
|
642
|
+
}
|
|
643
|
+
const fdValue = process.env.ELIT_PM_LISTEN_FD;
|
|
644
|
+
if (!fdValue) {
|
|
645
|
+
return void 0;
|
|
646
|
+
}
|
|
647
|
+
const parsedFd = Number.parseInt(fdValue, 10);
|
|
648
|
+
if (!Number.isInteger(parsedFd) || parsedFd < 0) {
|
|
649
|
+
return void 0;
|
|
650
|
+
}
|
|
651
|
+
const publicPort = Number.parseInt(process.env.ELIT_PM_PUBLIC_PORT ?? process.env.ELIT_PM_PORT ?? "", 10);
|
|
652
|
+
if (Number.isInteger(explicitPort) && Number.isInteger(publicPort) && explicitPort !== publicPort) {
|
|
653
|
+
return void 0;
|
|
654
|
+
}
|
|
655
|
+
return parsedFd;
|
|
656
|
+
}
|
|
430
657
|
listen(...args) {
|
|
431
658
|
let port = 3e3;
|
|
432
659
|
let hostname = "0.0.0.0";
|
|
660
|
+
let fd;
|
|
433
661
|
let callback;
|
|
434
662
|
const firstArg = args[0];
|
|
435
663
|
if (typeof firstArg === "number") {
|
|
@@ -444,8 +672,10 @@ var init_http = __esm({
|
|
|
444
672
|
} else if (firstArg && typeof firstArg === "object") {
|
|
445
673
|
port = firstArg.port || 3e3;
|
|
446
674
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
675
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
447
676
|
callback = args[1];
|
|
448
677
|
}
|
|
678
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
449
679
|
const self = this;
|
|
450
680
|
if (isNode) {
|
|
451
681
|
this.nativeServer = http.createServer((req, res) => {
|
|
@@ -460,11 +690,19 @@ var init_http = __esm({
|
|
|
460
690
|
this.nativeServer.on("upgrade", (req, socket, head) => {
|
|
461
691
|
self.emit("upgrade", req, socket, head);
|
|
462
692
|
});
|
|
463
|
-
|
|
464
|
-
this.
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
693
|
+
if (fd !== void 0) {
|
|
694
|
+
this.nativeServer.listen({ fd, exclusive: false }, () => {
|
|
695
|
+
this._listening = true;
|
|
696
|
+
this.emit("listening");
|
|
697
|
+
if (callback) callback();
|
|
698
|
+
});
|
|
699
|
+
} else {
|
|
700
|
+
this.nativeServer.listen(port, hostname, () => {
|
|
701
|
+
this._listening = true;
|
|
702
|
+
this.emit("listening");
|
|
703
|
+
if (callback) callback();
|
|
704
|
+
});
|
|
705
|
+
}
|
|
468
706
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
469
707
|
this.nativeServer.on("close", () => {
|
|
470
708
|
this._listening = false;
|
|
@@ -489,6 +727,8 @@ var init_http = __esm({
|
|
|
489
727
|
const urlObj = new URL(req.url);
|
|
490
728
|
const pathname = urlObj.pathname;
|
|
491
729
|
const requestUrl = urlObj.pathname + urlObj.search;
|
|
730
|
+
const incomingHeaders = headersToRecord(req.headers);
|
|
731
|
+
const rawHeaders = headersToRawHeaders(req.headers);
|
|
492
732
|
const upgradeHeader = req.headers.get("upgrade");
|
|
493
733
|
if (upgradeHeader && upgradeHeader.toLowerCase() === "websocket") {
|
|
494
734
|
const matchingWebSocketServer = Array.from(this._bunWebSocketServers).find((wsServer) => {
|
|
@@ -525,9 +765,9 @@ var init_http = __esm({
|
|
|
525
765
|
const incomingMessage = {
|
|
526
766
|
method: req.method,
|
|
527
767
|
url: requestUrl,
|
|
528
|
-
headers:
|
|
768
|
+
headers: incomingHeaders,
|
|
529
769
|
httpVersion: "1.1",
|
|
530
|
-
rawHeaders
|
|
770
|
+
rawHeaders,
|
|
531
771
|
_req: req,
|
|
532
772
|
text: () => req.text(),
|
|
533
773
|
json: () => req.json()
|
|
@@ -581,57 +821,148 @@ var init_http = __esm({
|
|
|
581
821
|
this.writeHead(statusCode);
|
|
582
822
|
}
|
|
583
823
|
responseReady = true;
|
|
584
|
-
return this;
|
|
585
824
|
}
|
|
586
825
|
};
|
|
587
826
|
if (self.requestListener) {
|
|
588
827
|
self.requestListener(incomingMessage, serverResponse);
|
|
828
|
+
} else {
|
|
829
|
+
self.emit("request", incomingMessage, serverResponse);
|
|
589
830
|
}
|
|
590
|
-
if (responseReady) {
|
|
591
|
-
|
|
592
|
-
status: statusCode,
|
|
593
|
-
statusText: statusMessage,
|
|
594
|
-
headers
|
|
595
|
-
});
|
|
831
|
+
if (!responseReady) {
|
|
832
|
+
serverResponse.end();
|
|
596
833
|
}
|
|
597
|
-
return new
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
}
|
|
602
|
-
resolve(new Response(body, {
|
|
603
|
-
status: statusCode,
|
|
604
|
-
statusText: statusMessage,
|
|
605
|
-
headers
|
|
606
|
-
}));
|
|
607
|
-
};
|
|
834
|
+
return new Response(body, {
|
|
835
|
+
status: statusCode,
|
|
836
|
+
statusText: statusMessage,
|
|
837
|
+
headers
|
|
608
838
|
});
|
|
609
839
|
},
|
|
610
|
-
error:
|
|
840
|
+
error: (err) => {
|
|
841
|
+
this.emit("error", err);
|
|
842
|
+
return createErrorResponse();
|
|
843
|
+
}
|
|
611
844
|
});
|
|
845
|
+
this._listening = true;
|
|
612
846
|
emitListeningWithCallback(this, callback);
|
|
847
|
+
this.nativeServer.stop = this.nativeServer.stop || this.nativeServer.close;
|
|
848
|
+
this.nativeServer.close = this.nativeServer.close || this.nativeServer.stop;
|
|
849
|
+
this.nativeServer.on?.("close", () => {
|
|
850
|
+
this._listening = false;
|
|
851
|
+
this.emit("close");
|
|
852
|
+
});
|
|
613
853
|
} else if (isDeno) {
|
|
854
|
+
const server = this;
|
|
614
855
|
this.nativeServer = Deno.serve({
|
|
615
856
|
port,
|
|
616
|
-
hostname
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
857
|
+
hostname
|
|
858
|
+
}, async (req) => {
|
|
859
|
+
const urlObj = new URL(req.url);
|
|
860
|
+
const requestUrl = urlObj.pathname + urlObj.search;
|
|
861
|
+
const incomingHeaders = headersToRecord(req.headers);
|
|
862
|
+
const rawHeaders = headersToRawHeaders(req.headers);
|
|
863
|
+
const bodyChunks = [];
|
|
864
|
+
const responseHeaders = new Headers();
|
|
865
|
+
let statusCode = 200;
|
|
866
|
+
let statusText = "OK";
|
|
867
|
+
let responseClosed = false;
|
|
868
|
+
const incomingMessage = {
|
|
869
|
+
method: req.method,
|
|
870
|
+
url: requestUrl,
|
|
871
|
+
headers: incomingHeaders,
|
|
872
|
+
httpVersion: "1.1",
|
|
873
|
+
rawHeaders,
|
|
874
|
+
_req: req,
|
|
875
|
+
text: () => req.text(),
|
|
876
|
+
json: () => req.json()
|
|
877
|
+
};
|
|
878
|
+
const serverResponse = {
|
|
879
|
+
statusCode: 200,
|
|
880
|
+
statusMessage: "OK",
|
|
881
|
+
headersSent: false,
|
|
882
|
+
setHeader(name, value) {
|
|
883
|
+
responseHeaders.set(name, Array.isArray(value) ? value.join(", ") : String(value));
|
|
884
|
+
return this;
|
|
885
|
+
},
|
|
886
|
+
getHeader(name) {
|
|
887
|
+
return responseHeaders.get(name) ?? void 0;
|
|
888
|
+
},
|
|
889
|
+
getHeaders() {
|
|
890
|
+
const headers = {};
|
|
891
|
+
responseHeaders.forEach((value, key) => {
|
|
892
|
+
headers[key] = value;
|
|
893
|
+
});
|
|
894
|
+
return headers;
|
|
895
|
+
},
|
|
896
|
+
writeHead(status, arg2, arg3) {
|
|
897
|
+
statusCode = status;
|
|
898
|
+
this.statusCode = status;
|
|
899
|
+
this.headersSent = true;
|
|
900
|
+
if (typeof arg2 === "string") {
|
|
901
|
+
statusText = arg2;
|
|
902
|
+
this.statusMessage = arg2;
|
|
903
|
+
if (arg3) {
|
|
904
|
+
Object.entries(arg3).forEach(([key, value]) => {
|
|
905
|
+
responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : String(value));
|
|
906
|
+
});
|
|
907
|
+
}
|
|
908
|
+
} else if (arg2) {
|
|
909
|
+
Object.entries(arg2).forEach(([key, value]) => {
|
|
910
|
+
responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : String(value));
|
|
911
|
+
});
|
|
626
912
|
}
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
913
|
+
return this;
|
|
914
|
+
},
|
|
915
|
+
write(chunk) {
|
|
916
|
+
if (!this.headersSent) {
|
|
917
|
+
this.writeHead(statusCode);
|
|
918
|
+
}
|
|
919
|
+
if (typeof chunk === "string") {
|
|
920
|
+
bodyChunks.push(new TextEncoder().encode(chunk));
|
|
921
|
+
} else if (chunk instanceof Uint8Array) {
|
|
922
|
+
bodyChunks.push(chunk);
|
|
923
|
+
} else if (chunk !== void 0 && chunk !== null) {
|
|
924
|
+
bodyChunks.push(new TextEncoder().encode(String(chunk)));
|
|
925
|
+
}
|
|
926
|
+
return true;
|
|
927
|
+
},
|
|
928
|
+
end(chunk) {
|
|
929
|
+
if (chunk !== void 0) {
|
|
930
|
+
this.write(chunk);
|
|
931
|
+
}
|
|
932
|
+
if (!this.headersSent) {
|
|
933
|
+
this.writeHead(statusCode);
|
|
934
|
+
}
|
|
935
|
+
responseClosed = true;
|
|
936
|
+
}
|
|
937
|
+
};
|
|
938
|
+
if (server.requestListener) {
|
|
939
|
+
server.requestListener(incomingMessage, serverResponse);
|
|
940
|
+
} else {
|
|
941
|
+
server.emit("request", incomingMessage, serverResponse);
|
|
632
942
|
}
|
|
943
|
+
if (!responseClosed) {
|
|
944
|
+
serverResponse.end();
|
|
945
|
+
}
|
|
946
|
+
const body = bodyChunks.length === 0 ? void 0 : (() => {
|
|
947
|
+
const totalLength = bodyChunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
948
|
+
const output = new ArrayBuffer(totalLength);
|
|
949
|
+
const combined = new Uint8Array(output);
|
|
950
|
+
let offset = 0;
|
|
951
|
+
for (const chunk of bodyChunks) {
|
|
952
|
+
combined.set(chunk, offset);
|
|
953
|
+
offset += chunk.length;
|
|
954
|
+
}
|
|
955
|
+
return output;
|
|
956
|
+
})();
|
|
957
|
+
return new Response(body, {
|
|
958
|
+
status: statusCode,
|
|
959
|
+
statusText,
|
|
960
|
+
headers: responseHeaders
|
|
961
|
+
});
|
|
633
962
|
});
|
|
963
|
+
this._listening = true;
|
|
634
964
|
emitListeningWithCallback(this, callback);
|
|
965
|
+
this.nativeServer.finished.then(() => closeAndEmit(this)).catch((err) => this.emit("error", err));
|
|
635
966
|
}
|
|
636
967
|
return this;
|
|
637
968
|
}
|
|
@@ -660,9 +991,11 @@ var init_http = __esm({
|
|
|
660
991
|
return createAddress(0, addr, "unix");
|
|
661
992
|
}
|
|
662
993
|
return addr;
|
|
663
|
-
}
|
|
994
|
+
}
|
|
995
|
+
if (isBun) {
|
|
664
996
|
return createAddress(this.nativeServer.port, this.nativeServer.hostname);
|
|
665
|
-
}
|
|
997
|
+
}
|
|
998
|
+
if (isDeno) {
|
|
666
999
|
const addr = this.nativeServer.addr;
|
|
667
1000
|
return createAddress(addr.port, addr.hostname);
|
|
668
1001
|
}
|
|
@@ -672,22 +1005,45 @@ var init_http = __esm({
|
|
|
672
1005
|
return this._listening;
|
|
673
1006
|
}
|
|
674
1007
|
};
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
1008
|
+
}
|
|
1009
|
+
});
|
|
1010
|
+
|
|
1011
|
+
// src/server/http/index.ts
|
|
1012
|
+
var http_exports = {};
|
|
1013
|
+
__export(http_exports, {
|
|
1014
|
+
Agent: () => Agent2,
|
|
1015
|
+
ClientRequest: () => ClientRequest2,
|
|
1016
|
+
IncomingMessage: () => IncomingMessage,
|
|
1017
|
+
METHODS: () => METHODS,
|
|
1018
|
+
STATUS_CODES: () => STATUS_CODES,
|
|
1019
|
+
Server: () => Server,
|
|
1020
|
+
ServerResponse: () => ServerResponse,
|
|
1021
|
+
createServer: () => createServer,
|
|
1022
|
+
default: () => http_default,
|
|
1023
|
+
get: () => get,
|
|
1024
|
+
getRuntime: () => getRuntime,
|
|
1025
|
+
request: () => request
|
|
1026
|
+
});
|
|
1027
|
+
var http_default;
|
|
1028
|
+
var init_http = __esm({
|
|
1029
|
+
"src/server/http/index.ts"() {
|
|
1030
|
+
"use strict";
|
|
1031
|
+
init_agent();
|
|
1032
|
+
init_client_request();
|
|
1033
|
+
init_constants();
|
|
1034
|
+
init_incoming_message();
|
|
1035
|
+
init_request_api();
|
|
1036
|
+
init_response();
|
|
1037
|
+
init_runtime2();
|
|
1038
|
+
init_server_runtime();
|
|
1039
|
+
init_agent();
|
|
1040
|
+
init_client_request();
|
|
1041
|
+
init_constants();
|
|
1042
|
+
init_incoming_message();
|
|
1043
|
+
init_request_api();
|
|
1044
|
+
init_response();
|
|
1045
|
+
init_runtime2();
|
|
1046
|
+
init_server_runtime();
|
|
691
1047
|
http_default = {
|
|
692
1048
|
createServer,
|
|
693
1049
|
request,
|
|
@@ -695,8 +1051,8 @@ var init_http = __esm({
|
|
|
695
1051
|
Server,
|
|
696
1052
|
IncomingMessage,
|
|
697
1053
|
ServerResponse,
|
|
698
|
-
Agent,
|
|
699
|
-
ClientRequest,
|
|
1054
|
+
Agent: Agent2,
|
|
1055
|
+
ClientRequest: ClientRequest2,
|
|
700
1056
|
METHODS,
|
|
701
1057
|
STATUS_CODES,
|
|
702
1058
|
getRuntime
|
|
@@ -704,28 +1060,83 @@ var init_http = __esm({
|
|
|
704
1060
|
}
|
|
705
1061
|
});
|
|
706
1062
|
|
|
707
|
-
// src/https.ts
|
|
1063
|
+
// src/server/https/agent.ts
|
|
1064
|
+
var Agent = class {
|
|
1065
|
+
constructor(options) {
|
|
1066
|
+
this.options = options;
|
|
1067
|
+
}
|
|
1068
|
+
};
|
|
1069
|
+
|
|
1070
|
+
// src/server/https/client-request.ts
|
|
1071
|
+
init_utils();
|
|
1072
|
+
import { EventEmitter } from "events";
|
|
1073
|
+
var ClientRequest = class extends EventEmitter {
|
|
1074
|
+
constructor(_url, _options = {}) {
|
|
1075
|
+
super();
|
|
1076
|
+
this._bodyChunks = [];
|
|
1077
|
+
this._ended = false;
|
|
1078
|
+
}
|
|
1079
|
+
_setNativeRequest(nativeRequest) {
|
|
1080
|
+
this._nativeRequest = nativeRequest;
|
|
1081
|
+
}
|
|
1082
|
+
_setExecutor(executor) {
|
|
1083
|
+
this._executor = executor;
|
|
1084
|
+
}
|
|
1085
|
+
write(chunk, encoding, callback) {
|
|
1086
|
+
if (this._ended) {
|
|
1087
|
+
throw new Error("Cannot write after end");
|
|
1088
|
+
}
|
|
1089
|
+
if (typeof encoding === "function") {
|
|
1090
|
+
callback = encoding;
|
|
1091
|
+
encoding = void 0;
|
|
1092
|
+
}
|
|
1093
|
+
if (this._nativeRequest) {
|
|
1094
|
+
const actualEncoding = typeof encoding === "string" ? encoding : void 0;
|
|
1095
|
+
return this._nativeRequest.write(chunk, actualEncoding, callback);
|
|
1096
|
+
}
|
|
1097
|
+
this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
|
|
1098
|
+
queueCallback(callback);
|
|
1099
|
+
return true;
|
|
1100
|
+
}
|
|
1101
|
+
end(chunk, encoding, callback) {
|
|
1102
|
+
if (typeof chunk === "function") {
|
|
1103
|
+
callback = chunk;
|
|
1104
|
+
chunk = void 0;
|
|
1105
|
+
encoding = void 0;
|
|
1106
|
+
} else if (typeof encoding === "function") {
|
|
1107
|
+
callback = encoding;
|
|
1108
|
+
encoding = void 0;
|
|
1109
|
+
}
|
|
1110
|
+
if (this._ended) {
|
|
1111
|
+
queueCallback(callback);
|
|
1112
|
+
return;
|
|
1113
|
+
}
|
|
1114
|
+
this._ended = true;
|
|
1115
|
+
if (this._nativeRequest) {
|
|
1116
|
+
const actualEncoding = typeof encoding === "string" ? encoding : void 0;
|
|
1117
|
+
if (chunk !== void 0) {
|
|
1118
|
+
this._nativeRequest.end(chunk, actualEncoding, callback);
|
|
1119
|
+
} else {
|
|
1120
|
+
this._nativeRequest.end(callback);
|
|
1121
|
+
}
|
|
1122
|
+
return;
|
|
1123
|
+
}
|
|
1124
|
+
if (chunk !== void 0) {
|
|
1125
|
+
this._bodyChunks.push(normalizeRequestBodyChunk(chunk, typeof encoding === "string" ? encoding : "utf8"));
|
|
1126
|
+
}
|
|
1127
|
+
const executor = this._executor;
|
|
1128
|
+
const body = buildRequestBody(this._bodyChunks);
|
|
1129
|
+
if (executor) {
|
|
1130
|
+
Promise.resolve().then(() => executor(body)).catch((error) => this.emit("error", error));
|
|
1131
|
+
}
|
|
1132
|
+
queueCallback(callback);
|
|
1133
|
+
}
|
|
1134
|
+
};
|
|
1135
|
+
|
|
1136
|
+
// src/server/https/request-api.ts
|
|
708
1137
|
init_runtime();
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
if (callback) queueMicrotask(callback);
|
|
712
|
-
}
|
|
713
|
-
function createErrorResponse2() {
|
|
714
|
-
return new Response("Internal Server Error", { status: 500 });
|
|
715
|
-
}
|
|
716
|
-
function createAddress2(port, address, family = "IPv4") {
|
|
717
|
-
return { port, family, address };
|
|
718
|
-
}
|
|
719
|
-
function emitListeningWithCallback2(server, callback) {
|
|
720
|
-
server._listening = true;
|
|
721
|
-
server.emit("listening");
|
|
722
|
-
queueCallback2(callback);
|
|
723
|
-
}
|
|
724
|
-
function closeAndEmit2(server, callback) {
|
|
725
|
-
server._listening = false;
|
|
726
|
-
server.emit("close");
|
|
727
|
-
if (callback) queueMicrotask(() => callback());
|
|
728
|
-
}
|
|
1138
|
+
|
|
1139
|
+
// src/server/https/http-classes.ts
|
|
729
1140
|
function loadHttpClasses() {
|
|
730
1141
|
const httpModule = (init_http(), __toCommonJS(http_exports));
|
|
731
1142
|
return {
|
|
@@ -733,17 +1144,97 @@ function loadHttpClasses() {
|
|
|
733
1144
|
ServerResponse: httpModule.ServerResponse
|
|
734
1145
|
};
|
|
735
1146
|
}
|
|
1147
|
+
|
|
1148
|
+
// src/server/https/node-modules.ts
|
|
1149
|
+
init_runtime();
|
|
736
1150
|
var https2;
|
|
737
|
-
|
|
738
|
-
|
|
1151
|
+
if (isNode && typeof process !== "undefined") {
|
|
1152
|
+
try {
|
|
1153
|
+
https2 = __require("https");
|
|
1154
|
+
} catch {
|
|
1155
|
+
https2 = __require("https");
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
// src/server/https/request-api.ts
|
|
1160
|
+
function request2(url, options, callback) {
|
|
1161
|
+
const urlString = typeof url === "string" ? url : url.toString();
|
|
1162
|
+
const req = new ClientRequest(urlString, options);
|
|
1163
|
+
if (isNode) {
|
|
1164
|
+
const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
|
|
1165
|
+
const nodeReq = https2.request(urlString, {
|
|
1166
|
+
method: options?.method || "GET",
|
|
1167
|
+
headers: options?.headers,
|
|
1168
|
+
timeout: options?.timeout,
|
|
1169
|
+
signal: options?.signal
|
|
1170
|
+
}, (res) => {
|
|
1171
|
+
const incomingMessage = new IncomingMessage2(res);
|
|
1172
|
+
if (callback) callback(incomingMessage);
|
|
1173
|
+
req.emit("response", incomingMessage);
|
|
1174
|
+
});
|
|
1175
|
+
req._setNativeRequest(nodeReq);
|
|
1176
|
+
nodeReq.on("error", (error) => req.emit("error", error));
|
|
1177
|
+
} else {
|
|
1178
|
+
const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
|
|
1179
|
+
req._setExecutor(async (body) => {
|
|
1180
|
+
const response = await fetch(urlString, {
|
|
1181
|
+
method: options?.method || "GET",
|
|
1182
|
+
headers: options?.headers,
|
|
1183
|
+
body,
|
|
1184
|
+
signal: options?.signal
|
|
1185
|
+
});
|
|
1186
|
+
const incomingMessage = new IncomingMessage2(response, options?.method || "GET");
|
|
1187
|
+
if (callback) callback(incomingMessage);
|
|
1188
|
+
req.emit("response", incomingMessage);
|
|
1189
|
+
});
|
|
1190
|
+
}
|
|
1191
|
+
return req;
|
|
1192
|
+
}
|
|
1193
|
+
function get2(url, options, callback) {
|
|
1194
|
+
const req = request2(url, { ...options, method: "GET" }, callback);
|
|
1195
|
+
req.end();
|
|
1196
|
+
return req;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
// src/server/https/runtime.ts
|
|
1200
|
+
init_runtime();
|
|
1201
|
+
function getRuntime2() {
|
|
1202
|
+
return runtime;
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
// src/server/https/server-runtime.ts
|
|
1206
|
+
init_runtime();
|
|
1207
|
+
init_utils();
|
|
1208
|
+
import { EventEmitter as EventEmitter6 } from "events";
|
|
1209
|
+
var Server2 = class extends EventEmitter6 {
|
|
1210
|
+
constructor(options = {}, requestListener) {
|
|
739
1211
|
super();
|
|
740
1212
|
this._listening = false;
|
|
741
1213
|
this.options = options;
|
|
742
1214
|
this.requestListener = requestListener;
|
|
743
1215
|
}
|
|
1216
|
+
resolvePmInheritedFd(explicitPort, explicitFd) {
|
|
1217
|
+
if (typeof explicitFd === "number" && Number.isInteger(explicitFd) && explicitFd >= 0) {
|
|
1218
|
+
return explicitFd;
|
|
1219
|
+
}
|
|
1220
|
+
const fdValue = process.env.ELIT_PM_LISTEN_FD;
|
|
1221
|
+
if (!fdValue) {
|
|
1222
|
+
return void 0;
|
|
1223
|
+
}
|
|
1224
|
+
const parsedFd = Number.parseInt(fdValue, 10);
|
|
1225
|
+
if (!Number.isInteger(parsedFd) || parsedFd < 0) {
|
|
1226
|
+
return void 0;
|
|
1227
|
+
}
|
|
1228
|
+
const publicPort = Number.parseInt(process.env.ELIT_PM_PUBLIC_PORT ?? process.env.ELIT_PM_PORT ?? "", 10);
|
|
1229
|
+
if (Number.isInteger(explicitPort) && Number.isInteger(publicPort) && explicitPort !== publicPort) {
|
|
1230
|
+
return void 0;
|
|
1231
|
+
}
|
|
1232
|
+
return parsedFd;
|
|
1233
|
+
}
|
|
744
1234
|
listen(...args) {
|
|
745
1235
|
let port = 3e3;
|
|
746
1236
|
let hostname = "0.0.0.0";
|
|
1237
|
+
let fd;
|
|
747
1238
|
let callback;
|
|
748
1239
|
const firstArg = args[0];
|
|
749
1240
|
if (typeof firstArg === "number") {
|
|
@@ -758,12 +1249,13 @@ var Server2 = class extends EventEmitter2 {
|
|
|
758
1249
|
} else if (firstArg && typeof firstArg === "object") {
|
|
759
1250
|
port = firstArg.port || 3e3;
|
|
760
1251
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
1252
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
761
1253
|
callback = args[1];
|
|
762
1254
|
}
|
|
1255
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
763
1256
|
const self = this;
|
|
764
1257
|
if (isNode) {
|
|
765
1258
|
const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
|
|
766
|
-
if (!https2) https2 = __require("https");
|
|
767
1259
|
this.nativeServer = https2.createServer(this.options, (req, res) => {
|
|
768
1260
|
const incomingMessage = new IncomingMessage2(req);
|
|
769
1261
|
const serverResponse = new ServerResponse2(incomingMessage, res);
|
|
@@ -773,11 +1265,19 @@ var Server2 = class extends EventEmitter2 {
|
|
|
773
1265
|
self.emit("request", incomingMessage, serverResponse);
|
|
774
1266
|
}
|
|
775
1267
|
});
|
|
776
|
-
|
|
777
|
-
this.
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
1268
|
+
if (fd !== void 0) {
|
|
1269
|
+
this.nativeServer.listen({ fd, exclusive: false }, () => {
|
|
1270
|
+
this._listening = true;
|
|
1271
|
+
this.emit("listening");
|
|
1272
|
+
if (callback) callback();
|
|
1273
|
+
});
|
|
1274
|
+
} else {
|
|
1275
|
+
this.nativeServer.listen(port, hostname, () => {
|
|
1276
|
+
this._listening = true;
|
|
1277
|
+
this.emit("listening");
|
|
1278
|
+
if (callback) callback();
|
|
1279
|
+
});
|
|
1280
|
+
}
|
|
781
1281
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
782
1282
|
this.nativeServer.on("close", () => {
|
|
783
1283
|
this._listening = false;
|
|
@@ -802,7 +1302,7 @@ var Server2 = class extends EventEmitter2 {
|
|
|
802
1302
|
},
|
|
803
1303
|
error: (error) => {
|
|
804
1304
|
this.emit("error", error);
|
|
805
|
-
return
|
|
1305
|
+
return createErrorResponse();
|
|
806
1306
|
}
|
|
807
1307
|
};
|
|
808
1308
|
if (this.options.key || this.options.cert) {
|
|
@@ -816,7 +1316,7 @@ var Server2 = class extends EventEmitter2 {
|
|
|
816
1316
|
tlsOptions.tls = this.options.tls;
|
|
817
1317
|
}
|
|
818
1318
|
this.nativeServer = Bun.serve(tlsOptions);
|
|
819
|
-
|
|
1319
|
+
emitListeningWithCallback(this, callback);
|
|
820
1320
|
} else if (isDeno) {
|
|
821
1321
|
const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
|
|
822
1322
|
const serveOptions = {
|
|
@@ -836,7 +1336,7 @@ var Server2 = class extends EventEmitter2 {
|
|
|
836
1336
|
},
|
|
837
1337
|
onError: (error) => {
|
|
838
1338
|
this.emit("error", error);
|
|
839
|
-
return
|
|
1339
|
+
return createErrorResponse();
|
|
840
1340
|
}
|
|
841
1341
|
};
|
|
842
1342
|
if (this.options.key && this.options.cert) {
|
|
@@ -844,23 +1344,23 @@ var Server2 = class extends EventEmitter2 {
|
|
|
844
1344
|
serveOptions.key = this.options.key;
|
|
845
1345
|
}
|
|
846
1346
|
this.nativeServer = Deno.serve(serveOptions);
|
|
847
|
-
|
|
1347
|
+
emitListeningWithCallback(this, callback);
|
|
848
1348
|
}
|
|
849
1349
|
return this;
|
|
850
1350
|
}
|
|
851
1351
|
close(callback) {
|
|
852
1352
|
if (!this.nativeServer) {
|
|
853
|
-
if (callback)
|
|
1353
|
+
if (callback) queueCallback(() => callback());
|
|
854
1354
|
return this;
|
|
855
1355
|
}
|
|
856
1356
|
if (isNode) {
|
|
857
1357
|
this.nativeServer.close(callback);
|
|
858
1358
|
} else if (isBun) {
|
|
859
1359
|
this.nativeServer.stop();
|
|
860
|
-
|
|
1360
|
+
closeAndEmit(this, callback);
|
|
861
1361
|
} else if (isDeno) {
|
|
862
1362
|
this.nativeServer.shutdown();
|
|
863
|
-
|
|
1363
|
+
closeAndEmit(this, callback);
|
|
864
1364
|
}
|
|
865
1365
|
return this;
|
|
866
1366
|
}
|
|
@@ -870,14 +1370,16 @@ var Server2 = class extends EventEmitter2 {
|
|
|
870
1370
|
const addr = this.nativeServer.address();
|
|
871
1371
|
if (!addr) return null;
|
|
872
1372
|
if (typeof addr === "string") {
|
|
873
|
-
return
|
|
1373
|
+
return createAddress(0, addr, "unix");
|
|
874
1374
|
}
|
|
875
1375
|
return addr;
|
|
876
|
-
}
|
|
877
|
-
|
|
878
|
-
|
|
1376
|
+
}
|
|
1377
|
+
if (isBun) {
|
|
1378
|
+
return createAddress(this.nativeServer.port, this.nativeServer.hostname);
|
|
1379
|
+
}
|
|
1380
|
+
if (isDeno) {
|
|
879
1381
|
const addr = this.nativeServer.addr;
|
|
880
|
-
return
|
|
1382
|
+
return createAddress(addr.port, addr.hostname);
|
|
881
1383
|
}
|
|
882
1384
|
return null;
|
|
883
1385
|
}
|
|
@@ -885,83 +1387,23 @@ var Server2 = class extends EventEmitter2 {
|
|
|
885
1387
|
return this._listening;
|
|
886
1388
|
}
|
|
887
1389
|
};
|
|
888
|
-
|
|
889
|
-
constructor(_url, _options = {}) {
|
|
890
|
-
super();
|
|
891
|
-
}
|
|
892
|
-
write(_chunk) {
|
|
893
|
-
return true;
|
|
894
|
-
}
|
|
895
|
-
end(callback) {
|
|
896
|
-
queueCallback2(callback);
|
|
897
|
-
}
|
|
898
|
-
};
|
|
899
|
-
var Agent2 = class {
|
|
900
|
-
constructor(options) {
|
|
901
|
-
this.options = options;
|
|
902
|
-
}
|
|
903
|
-
};
|
|
904
|
-
function createServer2(options, requestListener) {
|
|
1390
|
+
function createServer2(options = {}, requestListener) {
|
|
905
1391
|
return new Server2(options, requestListener);
|
|
906
1392
|
}
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
const req = new ClientRequest2(urlString, options);
|
|
910
|
-
if (isNode) {
|
|
911
|
-
const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
|
|
912
|
-
if (!https2) https2 = __require("https");
|
|
913
|
-
const nodeReq = https2.request(urlString, {
|
|
914
|
-
method: options?.method || "GET",
|
|
915
|
-
headers: options?.headers,
|
|
916
|
-
timeout: options?.timeout,
|
|
917
|
-
signal: options?.signal
|
|
918
|
-
}, (res) => {
|
|
919
|
-
const incomingMessage = new IncomingMessage2(res);
|
|
920
|
-
if (callback) callback(incomingMessage);
|
|
921
|
-
req.emit("response", incomingMessage);
|
|
922
|
-
});
|
|
923
|
-
nodeReq.on("error", (error) => req.emit("error", error));
|
|
924
|
-
nodeReq.end();
|
|
925
|
-
} else {
|
|
926
|
-
const { IncomingMessage: IncomingMessage2 } = loadHttpClasses();
|
|
927
|
-
queueMicrotask(async () => {
|
|
928
|
-
try {
|
|
929
|
-
const response = await fetch(urlString, {
|
|
930
|
-
method: options?.method || "GET",
|
|
931
|
-
headers: options?.headers,
|
|
932
|
-
signal: options?.signal
|
|
933
|
-
});
|
|
934
|
-
const fetchRequest = new Request(urlString);
|
|
935
|
-
const incomingMessage = new IncomingMessage2(fetchRequest);
|
|
936
|
-
incomingMessage.statusCode = response.status;
|
|
937
|
-
incomingMessage.statusMessage = response.statusText;
|
|
938
|
-
if (callback) callback(incomingMessage);
|
|
939
|
-
req.emit("response", incomingMessage);
|
|
940
|
-
} catch (error) {
|
|
941
|
-
req.emit("error", error);
|
|
942
|
-
}
|
|
943
|
-
});
|
|
944
|
-
}
|
|
945
|
-
return req;
|
|
946
|
-
}
|
|
947
|
-
function get2(url, options, callback) {
|
|
948
|
-
return request2(url, { ...options, method: "GET" }, callback);
|
|
949
|
-
}
|
|
950
|
-
function getRuntime2() {
|
|
951
|
-
return runtime;
|
|
952
|
-
}
|
|
1393
|
+
|
|
1394
|
+
// src/server/https/index.ts
|
|
953
1395
|
var https_default = {
|
|
954
1396
|
createServer: createServer2,
|
|
955
1397
|
request: request2,
|
|
956
1398
|
get: get2,
|
|
957
1399
|
Server: Server2,
|
|
958
|
-
Agent
|
|
959
|
-
ClientRequest
|
|
1400
|
+
Agent,
|
|
1401
|
+
ClientRequest,
|
|
960
1402
|
getRuntime: getRuntime2
|
|
961
1403
|
};
|
|
962
1404
|
export {
|
|
963
|
-
|
|
964
|
-
|
|
1405
|
+
Agent,
|
|
1406
|
+
ClientRequest,
|
|
965
1407
|
Server2 as Server,
|
|
966
1408
|
createServer2 as createServer,
|
|
967
1409
|
https_default as default,
|