@ai-ecoverse/slicc-kernel 1.58.1 → 1.59.1
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/README.md +19 -11
- package/dist/driver-worker.js +30 -11
- package/dist/driver-worker.js.map +2 -2
- package/dist/driver.js +30 -11
- package/dist/driver.js.map +2 -2
- package/dist/index.js +25 -7
- package/dist/index.js.map +2 -2
- package/dist/kernel-worker.js +271 -111
- package/dist/kernel-worker.js.map +3 -3
- package/dist/node-driver-worker.js +30 -11
- package/dist/node-driver-worker.js.map +2 -2
- package/dist/node-process-worker.js +87 -13
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +367 -133
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +85 -11
- package/dist/process-worker.js.map +3 -3
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -604,6 +604,11 @@ function blockedReason(url, e) {
|
|
|
604
604
|
}
|
|
605
605
|
return `${url}: ${e instanceof Error ? e.message : String(e)}`;
|
|
606
606
|
}
|
|
607
|
+
function unopened(url, code) {
|
|
608
|
+
return Object.assign(new Error(`${url}: the WebSocket closed (${code}) before it opened`), {
|
|
609
|
+
status: 502
|
|
610
|
+
});
|
|
611
|
+
}
|
|
607
612
|
function openWebSocket(Socket, request, withHeaders) {
|
|
608
613
|
const { url, protocols, signal } = request;
|
|
609
614
|
signal.throwIfAborted();
|
|
@@ -617,13 +622,22 @@ function openWebSocket(Socket, request, withHeaders) {
|
|
|
617
622
|
const queue = new MessageQueue(() => socket.close(1e3, "too many waiting messages"));
|
|
618
623
|
return new Promise((resolve, reject) => {
|
|
619
624
|
let open = false;
|
|
625
|
+
let settled = false;
|
|
626
|
+
const fail = (error) => {
|
|
627
|
+
if (settled) return;
|
|
628
|
+
settled = true;
|
|
629
|
+
signal.removeEventListener("abort", abort);
|
|
630
|
+
reject(error);
|
|
631
|
+
};
|
|
620
632
|
const abort = () => {
|
|
621
633
|
socket.close(1e3, "aborted");
|
|
622
|
-
|
|
634
|
+
fail(signal.reason);
|
|
623
635
|
};
|
|
624
636
|
signal.addEventListener("abort", abort, { once: true });
|
|
625
637
|
socket.addEventListener("open", () => {
|
|
638
|
+
if (settled) return;
|
|
626
639
|
open = true;
|
|
640
|
+
settled = true;
|
|
627
641
|
signal.removeEventListener("abort", abort);
|
|
628
642
|
resolve({
|
|
629
643
|
protocol: socket.protocol,
|
|
@@ -639,15 +653,19 @@ function openWebSocket(Socket, request, withHeaders) {
|
|
|
639
653
|
socket.addEventListener("message", (event) => {
|
|
640
654
|
queue.push(typeof event.data === "string" ? event.data : new Uint8Array(event.data));
|
|
641
655
|
});
|
|
656
|
+
socket.addEventListener("error", () => {
|
|
657
|
+
if (open || settled) return;
|
|
658
|
+
try {
|
|
659
|
+
socket.close();
|
|
660
|
+
} catch {
|
|
661
|
+
}
|
|
662
|
+
queue.end({ code: 1006, reason: "" });
|
|
663
|
+
fail(unopened(url, 1006));
|
|
664
|
+
});
|
|
642
665
|
socket.addEventListener("close", (event) => {
|
|
643
666
|
queue.end({ code: event.code, reason: event.reason });
|
|
644
667
|
if (open) return;
|
|
645
|
-
|
|
646
|
-
reject(
|
|
647
|
-
Object.assign(new Error(`${url}: the WebSocket closed (${event.code}) before it opened`), {
|
|
648
|
-
status: 502
|
|
649
|
-
})
|
|
650
|
-
);
|
|
668
|
+
fail(unopened(url, event.code));
|
|
651
669
|
});
|
|
652
670
|
});
|
|
653
671
|
}
|