elit 3.6.7 → 3.6.9
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/cli.cjs +2777 -321
- package/dist/cli.mjs +2764 -308
- package/dist/config.d.ts +6 -6
- package/dist/{contracts-BeW9k0yZ.d.ts → contracts-_0p1-15U.d.ts} +1 -1
- package/dist/coverage.d.ts +1 -1
- package/dist/dev-build.d.ts +3 -3
- package/dist/http.cjs +160 -41
- package/dist/http.d.ts +5 -11
- package/dist/http.js +160 -41
- package/dist/http.mjs +160 -41
- package/dist/https.cjs +194 -46
- package/dist/https.d.ts +3 -6
- package/dist/https.js +194 -46
- package/dist/https.mjs +194 -46
- package/dist/pm-node-shared-listener-bootstrap.cjs +75 -0
- package/dist/pm.cjs +2390 -160
- package/dist/pm.d.ts +83 -8
- package/dist/pm.js +2388 -188
- package/dist/pm.mjs +2380 -165
- package/dist/preview-build.d.ts +3 -3
- package/dist/server.cjs +417 -168
- package/dist/server.d.ts +4 -4
- package/dist/server.js +453 -179
- package/dist/server.mjs +417 -168
- package/dist/smtp-server.js +37 -12
- package/dist/test-reporter.d.ts +1 -1
- package/dist/test-runtime.d.ts +1 -1
- package/dist/{types-tJn88E1N.d.ts → types-BayMVo_k.d.ts} +39 -3
- package/dist/{types-CIhpN1-K.d.ts → types-C70T-42Z.d.ts} +1 -1
- package/dist/{types-DAisuVr5.d.ts → types-DPOgoGs-.d.ts} +7 -1
- package/dist/{state-DvEkDehk.d.ts → types-fiLday0L.d.ts} +96 -92
- package/dist/types.d.ts +4 -0
- package/dist/{websocket-XfyK23zD.d.ts → websocket-BLBEAnhp.d.ts} +1 -1
- package/dist/ws.d.ts +3 -3
- package/dist/wss.cjs +194 -46
- package/dist/wss.d.ts +3 -3
- package/dist/wss.js +194 -46
- package/dist/wss.mjs +194 -46
- package/package.json +11 -6
package/dist/http.mjs
CHANGED
|
@@ -540,9 +540,28 @@ var Server = class extends EventEmitter4 {
|
|
|
540
540
|
unregisterWebSocketServer(wsServer) {
|
|
541
541
|
this._bunWebSocketServers.delete(wsServer);
|
|
542
542
|
}
|
|
543
|
+
resolvePmInheritedFd(explicitPort, explicitFd) {
|
|
544
|
+
if (typeof explicitFd === "number" && Number.isInteger(explicitFd) && explicitFd >= 0) {
|
|
545
|
+
return explicitFd;
|
|
546
|
+
}
|
|
547
|
+
const fdValue = process.env.ELIT_PM_LISTEN_FD;
|
|
548
|
+
if (!fdValue) {
|
|
549
|
+
return void 0;
|
|
550
|
+
}
|
|
551
|
+
const parsedFd = Number.parseInt(fdValue, 10);
|
|
552
|
+
if (!Number.isInteger(parsedFd) || parsedFd < 0) {
|
|
553
|
+
return void 0;
|
|
554
|
+
}
|
|
555
|
+
const publicPort = Number.parseInt(process.env.ELIT_PM_PUBLIC_PORT ?? process.env.ELIT_PM_PORT ?? "", 10);
|
|
556
|
+
if (Number.isInteger(explicitPort) && Number.isInteger(publicPort) && explicitPort !== publicPort) {
|
|
557
|
+
return void 0;
|
|
558
|
+
}
|
|
559
|
+
return parsedFd;
|
|
560
|
+
}
|
|
543
561
|
listen(...args) {
|
|
544
562
|
let port = 3e3;
|
|
545
563
|
let hostname = "0.0.0.0";
|
|
564
|
+
let fd;
|
|
546
565
|
let callback;
|
|
547
566
|
const firstArg = args[0];
|
|
548
567
|
if (typeof firstArg === "number") {
|
|
@@ -557,8 +576,10 @@ var Server = class extends EventEmitter4 {
|
|
|
557
576
|
} else if (firstArg && typeof firstArg === "object") {
|
|
558
577
|
port = firstArg.port || 3e3;
|
|
559
578
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
579
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
560
580
|
callback = args[1];
|
|
561
581
|
}
|
|
582
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
562
583
|
const self = this;
|
|
563
584
|
if (isNode) {
|
|
564
585
|
this.nativeServer = http.createServer((req, res) => {
|
|
@@ -573,11 +594,19 @@ var Server = class extends EventEmitter4 {
|
|
|
573
594
|
this.nativeServer.on("upgrade", (req, socket, head) => {
|
|
574
595
|
self.emit("upgrade", req, socket, head);
|
|
575
596
|
});
|
|
576
|
-
|
|
577
|
-
this.
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
597
|
+
if (fd !== void 0) {
|
|
598
|
+
this.nativeServer.listen({ fd, exclusive: false }, () => {
|
|
599
|
+
this._listening = true;
|
|
600
|
+
this.emit("listening");
|
|
601
|
+
if (callback) callback();
|
|
602
|
+
});
|
|
603
|
+
} else {
|
|
604
|
+
this.nativeServer.listen(port, hostname, () => {
|
|
605
|
+
this._listening = true;
|
|
606
|
+
this.emit("listening");
|
|
607
|
+
if (callback) callback();
|
|
608
|
+
});
|
|
609
|
+
}
|
|
581
610
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
582
611
|
this.nativeServer.on("close", () => {
|
|
583
612
|
this._listening = false;
|
|
@@ -696,7 +725,6 @@ var Server = class extends EventEmitter4 {
|
|
|
696
725
|
this.writeHead(statusCode);
|
|
697
726
|
}
|
|
698
727
|
responseReady = true;
|
|
699
|
-
return this;
|
|
700
728
|
}
|
|
701
729
|
};
|
|
702
730
|
if (self.requestListener) {
|
|
@@ -704,51 +732,141 @@ var Server = class extends EventEmitter4 {
|
|
|
704
732
|
} else {
|
|
705
733
|
self.emit("request", incomingMessage, serverResponse);
|
|
706
734
|
}
|
|
707
|
-
if (responseReady) {
|
|
708
|
-
|
|
709
|
-
status: statusCode,
|
|
710
|
-
statusText: statusMessage,
|
|
711
|
-
headers
|
|
712
|
-
});
|
|
735
|
+
if (!responseReady) {
|
|
736
|
+
serverResponse.end();
|
|
713
737
|
}
|
|
714
|
-
return new
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
}
|
|
719
|
-
resolve(new Response(body, {
|
|
720
|
-
status: statusCode,
|
|
721
|
-
statusText: statusMessage,
|
|
722
|
-
headers
|
|
723
|
-
}));
|
|
724
|
-
};
|
|
738
|
+
return new Response(body, {
|
|
739
|
+
status: statusCode,
|
|
740
|
+
statusText: statusMessage,
|
|
741
|
+
headers
|
|
725
742
|
});
|
|
726
743
|
},
|
|
727
|
-
error:
|
|
744
|
+
error: (err) => {
|
|
745
|
+
this.emit("error", err);
|
|
746
|
+
return createErrorResponse();
|
|
747
|
+
}
|
|
728
748
|
});
|
|
749
|
+
this._listening = true;
|
|
729
750
|
emitListeningWithCallback(this, callback);
|
|
751
|
+
this.nativeServer.stop = this.nativeServer.stop || this.nativeServer.close;
|
|
752
|
+
this.nativeServer.close = this.nativeServer.close || this.nativeServer.stop;
|
|
753
|
+
this.nativeServer.on?.("close", () => {
|
|
754
|
+
this._listening = false;
|
|
755
|
+
this.emit("close");
|
|
756
|
+
});
|
|
730
757
|
} else if (isDeno) {
|
|
758
|
+
const server = this;
|
|
731
759
|
this.nativeServer = Deno.serve({
|
|
732
760
|
port,
|
|
733
|
-
hostname
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
761
|
+
hostname
|
|
762
|
+
}, async (req) => {
|
|
763
|
+
const urlObj = new URL(req.url);
|
|
764
|
+
const requestUrl = urlObj.pathname + urlObj.search;
|
|
765
|
+
const incomingHeaders = headersToRecord(req.headers);
|
|
766
|
+
const rawHeaders = headersToRawHeaders(req.headers);
|
|
767
|
+
const bodyChunks = [];
|
|
768
|
+
const responseHeaders = new Headers();
|
|
769
|
+
let statusCode = 200;
|
|
770
|
+
let statusText = "OK";
|
|
771
|
+
let responseClosed = false;
|
|
772
|
+
const incomingMessage = {
|
|
773
|
+
method: req.method,
|
|
774
|
+
url: requestUrl,
|
|
775
|
+
headers: incomingHeaders,
|
|
776
|
+
httpVersion: "1.1",
|
|
777
|
+
rawHeaders,
|
|
778
|
+
_req: req,
|
|
779
|
+
text: () => req.text(),
|
|
780
|
+
json: () => req.json()
|
|
781
|
+
};
|
|
782
|
+
const serverResponse = {
|
|
783
|
+
statusCode: 200,
|
|
784
|
+
statusMessage: "OK",
|
|
785
|
+
headersSent: false,
|
|
786
|
+
setHeader(name, value) {
|
|
787
|
+
responseHeaders.set(name, Array.isArray(value) ? value.join(", ") : String(value));
|
|
788
|
+
return this;
|
|
789
|
+
},
|
|
790
|
+
getHeader(name) {
|
|
791
|
+
return responseHeaders.get(name) ?? void 0;
|
|
792
|
+
},
|
|
793
|
+
getHeaders() {
|
|
794
|
+
const headers = {};
|
|
795
|
+
responseHeaders.forEach((value, key) => {
|
|
796
|
+
headers[key] = value;
|
|
797
|
+
});
|
|
798
|
+
return headers;
|
|
799
|
+
},
|
|
800
|
+
writeHead(status, arg2, arg3) {
|
|
801
|
+
statusCode = status;
|
|
802
|
+
this.statusCode = status;
|
|
803
|
+
this.headersSent = true;
|
|
804
|
+
if (typeof arg2 === "string") {
|
|
805
|
+
statusText = arg2;
|
|
806
|
+
this.statusMessage = arg2;
|
|
807
|
+
if (arg3) {
|
|
808
|
+
Object.entries(arg3).forEach(([key, value]) => {
|
|
809
|
+
responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : String(value));
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
} else if (arg2) {
|
|
813
|
+
Object.entries(arg2).forEach(([key, value]) => {
|
|
814
|
+
responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : String(value));
|
|
815
|
+
});
|
|
743
816
|
}
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
817
|
+
return this;
|
|
818
|
+
},
|
|
819
|
+
write(chunk) {
|
|
820
|
+
if (!this.headersSent) {
|
|
821
|
+
this.writeHead(statusCode);
|
|
822
|
+
}
|
|
823
|
+
if (typeof chunk === "string") {
|
|
824
|
+
bodyChunks.push(new TextEncoder().encode(chunk));
|
|
825
|
+
} else if (chunk instanceof Uint8Array) {
|
|
826
|
+
bodyChunks.push(chunk);
|
|
827
|
+
} else if (chunk !== void 0 && chunk !== null) {
|
|
828
|
+
bodyChunks.push(new TextEncoder().encode(String(chunk)));
|
|
829
|
+
}
|
|
830
|
+
return true;
|
|
831
|
+
},
|
|
832
|
+
end(chunk) {
|
|
833
|
+
if (chunk !== void 0) {
|
|
834
|
+
this.write(chunk);
|
|
835
|
+
}
|
|
836
|
+
if (!this.headersSent) {
|
|
837
|
+
this.writeHead(statusCode);
|
|
838
|
+
}
|
|
839
|
+
responseClosed = true;
|
|
840
|
+
}
|
|
841
|
+
};
|
|
842
|
+
if (server.requestListener) {
|
|
843
|
+
server.requestListener(incomingMessage, serverResponse);
|
|
844
|
+
} else {
|
|
845
|
+
server.emit("request", incomingMessage, serverResponse);
|
|
749
846
|
}
|
|
847
|
+
if (!responseClosed) {
|
|
848
|
+
serverResponse.end();
|
|
849
|
+
}
|
|
850
|
+
const body = bodyChunks.length === 0 ? void 0 : (() => {
|
|
851
|
+
const totalLength = bodyChunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
852
|
+
const output = new ArrayBuffer(totalLength);
|
|
853
|
+
const combined = new Uint8Array(output);
|
|
854
|
+
let offset = 0;
|
|
855
|
+
for (const chunk of bodyChunks) {
|
|
856
|
+
combined.set(chunk, offset);
|
|
857
|
+
offset += chunk.length;
|
|
858
|
+
}
|
|
859
|
+
return output;
|
|
860
|
+
})();
|
|
861
|
+
return new Response(body, {
|
|
862
|
+
status: statusCode,
|
|
863
|
+
statusText,
|
|
864
|
+
headers: responseHeaders
|
|
865
|
+
});
|
|
750
866
|
});
|
|
867
|
+
this._listening = true;
|
|
751
868
|
emitListeningWithCallback(this, callback);
|
|
869
|
+
this.nativeServer.finished.then(() => closeAndEmit(this)).catch((err) => this.emit("error", err));
|
|
752
870
|
}
|
|
753
871
|
return this;
|
|
754
872
|
}
|
|
@@ -791,8 +909,9 @@ var Server = class extends EventEmitter4 {
|
|
|
791
909
|
return this._listening;
|
|
792
910
|
}
|
|
793
911
|
};
|
|
794
|
-
function createServer(
|
|
795
|
-
|
|
912
|
+
function createServer(arg1, arg2) {
|
|
913
|
+
const requestListener = typeof arg1 === "function" ? arg1 : arg2;
|
|
914
|
+
return new Server(requestListener);
|
|
796
915
|
}
|
|
797
916
|
|
|
798
917
|
// src/server/http/index.ts
|
package/dist/https.cjs
CHANGED
|
@@ -603,8 +603,9 @@ var init_runtime2 = __esm({
|
|
|
603
603
|
});
|
|
604
604
|
|
|
605
605
|
// src/server/http/server-runtime.ts
|
|
606
|
-
function createServer(
|
|
607
|
-
|
|
606
|
+
function createServer(arg1, arg2) {
|
|
607
|
+
const requestListener = typeof arg1 === "function" ? arg1 : arg2;
|
|
608
|
+
return new Server(requestListener);
|
|
608
609
|
}
|
|
609
610
|
var import_node_events5, Server;
|
|
610
611
|
var init_server_runtime = __esm({
|
|
@@ -629,9 +630,28 @@ var init_server_runtime = __esm({
|
|
|
629
630
|
unregisterWebSocketServer(wsServer) {
|
|
630
631
|
this._bunWebSocketServers.delete(wsServer);
|
|
631
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
|
+
}
|
|
632
651
|
listen(...args) {
|
|
633
652
|
let port = 3e3;
|
|
634
653
|
let hostname = "0.0.0.0";
|
|
654
|
+
let fd;
|
|
635
655
|
let callback;
|
|
636
656
|
const firstArg = args[0];
|
|
637
657
|
if (typeof firstArg === "number") {
|
|
@@ -646,8 +666,10 @@ var init_server_runtime = __esm({
|
|
|
646
666
|
} else if (firstArg && typeof firstArg === "object") {
|
|
647
667
|
port = firstArg.port || 3e3;
|
|
648
668
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
669
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
649
670
|
callback = args[1];
|
|
650
671
|
}
|
|
672
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
651
673
|
const self = this;
|
|
652
674
|
if (isNode) {
|
|
653
675
|
this.nativeServer = http.createServer((req, res) => {
|
|
@@ -662,11 +684,19 @@ var init_server_runtime = __esm({
|
|
|
662
684
|
this.nativeServer.on("upgrade", (req, socket, head) => {
|
|
663
685
|
self.emit("upgrade", req, socket, head);
|
|
664
686
|
});
|
|
665
|
-
|
|
666
|
-
this.
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
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
|
+
}
|
|
670
700
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
671
701
|
this.nativeServer.on("close", () => {
|
|
672
702
|
this._listening = false;
|
|
@@ -785,7 +815,6 @@ var init_server_runtime = __esm({
|
|
|
785
815
|
this.writeHead(statusCode);
|
|
786
816
|
}
|
|
787
817
|
responseReady = true;
|
|
788
|
-
return this;
|
|
789
818
|
}
|
|
790
819
|
};
|
|
791
820
|
if (self.requestListener) {
|
|
@@ -793,51 +822,141 @@ var init_server_runtime = __esm({
|
|
|
793
822
|
} else {
|
|
794
823
|
self.emit("request", incomingMessage, serverResponse);
|
|
795
824
|
}
|
|
796
|
-
if (responseReady) {
|
|
797
|
-
|
|
798
|
-
status: statusCode,
|
|
799
|
-
statusText: statusMessage,
|
|
800
|
-
headers
|
|
801
|
-
});
|
|
825
|
+
if (!responseReady) {
|
|
826
|
+
serverResponse.end();
|
|
802
827
|
}
|
|
803
|
-
return new
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
}
|
|
808
|
-
resolve(new Response(body, {
|
|
809
|
-
status: statusCode,
|
|
810
|
-
statusText: statusMessage,
|
|
811
|
-
headers
|
|
812
|
-
}));
|
|
813
|
-
};
|
|
828
|
+
return new Response(body, {
|
|
829
|
+
status: statusCode,
|
|
830
|
+
statusText: statusMessage,
|
|
831
|
+
headers
|
|
814
832
|
});
|
|
815
833
|
},
|
|
816
|
-
error:
|
|
834
|
+
error: (err) => {
|
|
835
|
+
this.emit("error", err);
|
|
836
|
+
return createErrorResponse();
|
|
837
|
+
}
|
|
817
838
|
});
|
|
839
|
+
this._listening = true;
|
|
818
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
|
+
});
|
|
819
847
|
} else if (isDeno) {
|
|
848
|
+
const server = this;
|
|
820
849
|
this.nativeServer = Deno.serve({
|
|
821
850
|
port,
|
|
822
|
-
hostname
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
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
|
+
});
|
|
832
906
|
}
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
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);
|
|
936
|
+
}
|
|
937
|
+
if (!responseClosed) {
|
|
938
|
+
serverResponse.end();
|
|
838
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
|
+
});
|
|
839
956
|
});
|
|
957
|
+
this._listening = true;
|
|
840
958
|
emitListeningWithCallback(this, callback);
|
|
959
|
+
this.nativeServer.finished.then(() => closeAndEmit(this)).catch((err) => this.emit("error", err));
|
|
841
960
|
}
|
|
842
961
|
return this;
|
|
843
962
|
}
|
|
@@ -1102,9 +1221,28 @@ var Server2 = class extends import_node_events6.EventEmitter {
|
|
|
1102
1221
|
this.options = options;
|
|
1103
1222
|
this.requestListener = requestListener;
|
|
1104
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
|
+
}
|
|
1105
1242
|
listen(...args) {
|
|
1106
1243
|
let port = 3e3;
|
|
1107
1244
|
let hostname = "0.0.0.0";
|
|
1245
|
+
let fd;
|
|
1108
1246
|
let callback;
|
|
1109
1247
|
const firstArg = args[0];
|
|
1110
1248
|
if (typeof firstArg === "number") {
|
|
@@ -1119,8 +1257,10 @@ var Server2 = class extends import_node_events6.EventEmitter {
|
|
|
1119
1257
|
} else if (firstArg && typeof firstArg === "object") {
|
|
1120
1258
|
port = firstArg.port || 3e3;
|
|
1121
1259
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
1260
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
1122
1261
|
callback = args[1];
|
|
1123
1262
|
}
|
|
1263
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
1124
1264
|
const self = this;
|
|
1125
1265
|
if (isNode) {
|
|
1126
1266
|
const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
|
|
@@ -1133,11 +1273,19 @@ var Server2 = class extends import_node_events6.EventEmitter {
|
|
|
1133
1273
|
self.emit("request", incomingMessage, serverResponse);
|
|
1134
1274
|
}
|
|
1135
1275
|
});
|
|
1136
|
-
|
|
1137
|
-
this.
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
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
|
+
}
|
|
1141
1289
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
1142
1290
|
this.nativeServer.on("close", () => {
|
|
1143
1291
|
this._listening = false;
|
package/dist/https.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
|
-
import { I as IncomingMessage,
|
|
2
|
+
import { I as IncomingMessage, c as ServerResponse, R as RequestOptions, a as RequestListener, S as ServerListenOptions } from './types-DPOgoGs-.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* HTTPS Agent
|
|
@@ -77,14 +77,11 @@ declare class Server extends EventEmitter {
|
|
|
77
77
|
_listening: boolean;
|
|
78
78
|
private options;
|
|
79
79
|
constructor(options?: ServerOptions, requestListener?: RequestListener);
|
|
80
|
+
private resolvePmInheritedFd;
|
|
80
81
|
listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
|
|
81
82
|
listen(port?: number, hostname?: string, listeningListener?: () => void): this;
|
|
82
83
|
listen(port?: number, listeningListener?: () => void): this;
|
|
83
|
-
listen(options?:
|
|
84
|
-
port?: number;
|
|
85
|
-
hostname?: string;
|
|
86
|
-
backlog?: number;
|
|
87
|
-
}, listeningListener?: () => void): this;
|
|
84
|
+
listen(options?: ServerListenOptions, listeningListener?: () => void): this;
|
|
88
85
|
close(callback?: (err?: Error) => void): this;
|
|
89
86
|
address(): {
|
|
90
87
|
port: number;
|