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/wss.mjs
CHANGED
|
@@ -610,8 +610,9 @@ var init_runtime2 = __esm({
|
|
|
610
610
|
|
|
611
611
|
// src/server/http/server-runtime.ts
|
|
612
612
|
import { EventEmitter as EventEmitter7 } from "events";
|
|
613
|
-
function createServer(
|
|
614
|
-
|
|
613
|
+
function createServer(arg1, arg2) {
|
|
614
|
+
const requestListener = typeof arg1 === "function" ? arg1 : arg2;
|
|
615
|
+
return new Server(requestListener);
|
|
615
616
|
}
|
|
616
617
|
var Server;
|
|
617
618
|
var init_server_runtime = __esm({
|
|
@@ -635,9 +636,28 @@ var init_server_runtime = __esm({
|
|
|
635
636
|
unregisterWebSocketServer(wsServer) {
|
|
636
637
|
this._bunWebSocketServers.delete(wsServer);
|
|
637
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
|
+
}
|
|
638
657
|
listen(...args) {
|
|
639
658
|
let port = 3e3;
|
|
640
659
|
let hostname = "0.0.0.0";
|
|
660
|
+
let fd;
|
|
641
661
|
let callback;
|
|
642
662
|
const firstArg = args[0];
|
|
643
663
|
if (typeof firstArg === "number") {
|
|
@@ -652,8 +672,10 @@ var init_server_runtime = __esm({
|
|
|
652
672
|
} else if (firstArg && typeof firstArg === "object") {
|
|
653
673
|
port = firstArg.port || 3e3;
|
|
654
674
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
675
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
655
676
|
callback = args[1];
|
|
656
677
|
}
|
|
678
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
657
679
|
const self = this;
|
|
658
680
|
if (isNode) {
|
|
659
681
|
this.nativeServer = http.createServer((req, res) => {
|
|
@@ -668,11 +690,19 @@ var init_server_runtime = __esm({
|
|
|
668
690
|
this.nativeServer.on("upgrade", (req, socket, head) => {
|
|
669
691
|
self.emit("upgrade", req, socket, head);
|
|
670
692
|
});
|
|
671
|
-
|
|
672
|
-
this.
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
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
|
+
}
|
|
676
706
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
677
707
|
this.nativeServer.on("close", () => {
|
|
678
708
|
this._listening = false;
|
|
@@ -791,7 +821,6 @@ var init_server_runtime = __esm({
|
|
|
791
821
|
this.writeHead(statusCode);
|
|
792
822
|
}
|
|
793
823
|
responseReady = true;
|
|
794
|
-
return this;
|
|
795
824
|
}
|
|
796
825
|
};
|
|
797
826
|
if (self.requestListener) {
|
|
@@ -799,51 +828,141 @@ var init_server_runtime = __esm({
|
|
|
799
828
|
} else {
|
|
800
829
|
self.emit("request", incomingMessage, serverResponse);
|
|
801
830
|
}
|
|
802
|
-
if (responseReady) {
|
|
803
|
-
|
|
804
|
-
status: statusCode,
|
|
805
|
-
statusText: statusMessage,
|
|
806
|
-
headers
|
|
807
|
-
});
|
|
831
|
+
if (!responseReady) {
|
|
832
|
+
serverResponse.end();
|
|
808
833
|
}
|
|
809
|
-
return new
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
}
|
|
814
|
-
resolve(new Response(body, {
|
|
815
|
-
status: statusCode,
|
|
816
|
-
statusText: statusMessage,
|
|
817
|
-
headers
|
|
818
|
-
}));
|
|
819
|
-
};
|
|
834
|
+
return new Response(body, {
|
|
835
|
+
status: statusCode,
|
|
836
|
+
statusText: statusMessage,
|
|
837
|
+
headers
|
|
820
838
|
});
|
|
821
839
|
},
|
|
822
|
-
error:
|
|
840
|
+
error: (err) => {
|
|
841
|
+
this.emit("error", err);
|
|
842
|
+
return createErrorResponse();
|
|
843
|
+
}
|
|
823
844
|
});
|
|
845
|
+
this._listening = true;
|
|
824
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
|
+
});
|
|
825
853
|
} else if (isDeno) {
|
|
854
|
+
const server = this;
|
|
826
855
|
this.nativeServer = Deno.serve({
|
|
827
856
|
port,
|
|
828
|
-
hostname
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
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
|
+
});
|
|
838
912
|
}
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
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);
|
|
942
|
+
}
|
|
943
|
+
if (!responseClosed) {
|
|
944
|
+
serverResponse.end();
|
|
844
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
|
+
});
|
|
845
962
|
});
|
|
963
|
+
this._listening = true;
|
|
846
964
|
emitListeningWithCallback(this, callback);
|
|
965
|
+
this.nativeServer.finished.then(() => closeAndEmit(this)).catch((err) => this.emit("error", err));
|
|
847
966
|
}
|
|
848
967
|
return this;
|
|
849
968
|
}
|
|
@@ -1451,9 +1570,28 @@ var Server2 = class extends EventEmitter8 {
|
|
|
1451
1570
|
this.options = options;
|
|
1452
1571
|
this.requestListener = requestListener;
|
|
1453
1572
|
}
|
|
1573
|
+
resolvePmInheritedFd(explicitPort, explicitFd) {
|
|
1574
|
+
if (typeof explicitFd === "number" && Number.isInteger(explicitFd) && explicitFd >= 0) {
|
|
1575
|
+
return explicitFd;
|
|
1576
|
+
}
|
|
1577
|
+
const fdValue = process.env.ELIT_PM_LISTEN_FD;
|
|
1578
|
+
if (!fdValue) {
|
|
1579
|
+
return void 0;
|
|
1580
|
+
}
|
|
1581
|
+
const parsedFd = Number.parseInt(fdValue, 10);
|
|
1582
|
+
if (!Number.isInteger(parsedFd) || parsedFd < 0) {
|
|
1583
|
+
return void 0;
|
|
1584
|
+
}
|
|
1585
|
+
const publicPort = Number.parseInt(process.env.ELIT_PM_PUBLIC_PORT ?? process.env.ELIT_PM_PORT ?? "", 10);
|
|
1586
|
+
if (Number.isInteger(explicitPort) && Number.isInteger(publicPort) && explicitPort !== publicPort) {
|
|
1587
|
+
return void 0;
|
|
1588
|
+
}
|
|
1589
|
+
return parsedFd;
|
|
1590
|
+
}
|
|
1454
1591
|
listen(...args) {
|
|
1455
1592
|
let port = 3e3;
|
|
1456
1593
|
let hostname = "0.0.0.0";
|
|
1594
|
+
let fd;
|
|
1457
1595
|
let callback;
|
|
1458
1596
|
const firstArg = args[0];
|
|
1459
1597
|
if (typeof firstArg === "number") {
|
|
@@ -1468,8 +1606,10 @@ var Server2 = class extends EventEmitter8 {
|
|
|
1468
1606
|
} else if (firstArg && typeof firstArg === "object") {
|
|
1469
1607
|
port = firstArg.port || 3e3;
|
|
1470
1608
|
hostname = firstArg.hostname || "0.0.0.0";
|
|
1609
|
+
fd = typeof firstArg.fd === "number" ? firstArg.fd : void 0;
|
|
1471
1610
|
callback = args[1];
|
|
1472
1611
|
}
|
|
1612
|
+
fd = this.resolvePmInheritedFd(firstArg && typeof firstArg === "object" ? firstArg.port : port, fd);
|
|
1473
1613
|
const self = this;
|
|
1474
1614
|
if (isNode) {
|
|
1475
1615
|
const { IncomingMessage: IncomingMessage2, ServerResponse: ServerResponse2 } = loadHttpClasses();
|
|
@@ -1482,11 +1622,19 @@ var Server2 = class extends EventEmitter8 {
|
|
|
1482
1622
|
self.emit("request", incomingMessage, serverResponse);
|
|
1483
1623
|
}
|
|
1484
1624
|
});
|
|
1485
|
-
|
|
1486
|
-
this.
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1625
|
+
if (fd !== void 0) {
|
|
1626
|
+
this.nativeServer.listen({ fd, exclusive: false }, () => {
|
|
1627
|
+
this._listening = true;
|
|
1628
|
+
this.emit("listening");
|
|
1629
|
+
if (callback) callback();
|
|
1630
|
+
});
|
|
1631
|
+
} else {
|
|
1632
|
+
this.nativeServer.listen(port, hostname, () => {
|
|
1633
|
+
this._listening = true;
|
|
1634
|
+
this.emit("listening");
|
|
1635
|
+
if (callback) callback();
|
|
1636
|
+
});
|
|
1637
|
+
}
|
|
1490
1638
|
this.nativeServer.on("error", (err) => this.emit("error", err));
|
|
1491
1639
|
this.nativeServer.on("close", () => {
|
|
1492
1640
|
this._listening = false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elit",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.9",
|
|
4
4
|
"description": "Optimized lightweight library for creating DOM elements with reactive state",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -155,6 +155,11 @@
|
|
|
155
155
|
"import": "./dist/database.mjs",
|
|
156
156
|
"require": "./dist/database.cjs"
|
|
157
157
|
},
|
|
158
|
+
"./config": {
|
|
159
|
+
"types": "./dist/config.d.ts",
|
|
160
|
+
"import": "./dist/config.mjs",
|
|
161
|
+
"require": "./dist/config.cjs"
|
|
162
|
+
},
|
|
158
163
|
"./test": {
|
|
159
164
|
"types": "./dist/test.d.ts",
|
|
160
165
|
"browser": "./dist/test.js",
|
|
@@ -217,11 +222,11 @@
|
|
|
217
222
|
"build": "node ./scripts/tsup-runner.mjs",
|
|
218
223
|
"dev": "node ./scripts/tsup-runner.mjs --watch",
|
|
219
224
|
"typecheck": "tsc --noEmit",
|
|
220
|
-
"test": "
|
|
221
|
-
"test:run": "
|
|
222
|
-
"test:coverage": "
|
|
223
|
-
"test:e2e": "
|
|
224
|
-
"test:wapk:google-drive": "
|
|
225
|
+
"test": "node ./scripts/run-local-cli.mjs test",
|
|
226
|
+
"test:run": "node ./scripts/run-local-cli.mjs test --run",
|
|
227
|
+
"test:coverage": "node ./scripts/run-local-cli.mjs test --coverage",
|
|
228
|
+
"test:e2e": "node ./scripts/run-local-cli.mjs test --e2e",
|
|
229
|
+
"test:wapk:google-drive": "node ./scripts/run-local-cli.mjs test --run --file ./testing/unit/wapk.google-drive.integration.test.ts",
|
|
225
230
|
"benchmark": "node benchmark/server-benchmark.js",
|
|
226
231
|
"benchmark:router": "node benchmark/router-benchmark.js",
|
|
227
232
|
"docs:dev": "npm run --prefix docs dev",
|