(code: number | null)
| 589 | } |
| 590 | |
| 591 | function handleWorkerExit(code: number | null): void { |
| 592 | if (disposed) return; |
| 593 | if (stopRequested) { |
| 594 | if (code !== 0 && fatal === null) { |
| 595 | fatal = new ZrUiError( |
| 596 | "ZRUI_BACKEND_ERROR", |
| 597 | `worker exited unexpectedly: code=${String(code)}`, |
| 598 | ); |
| 599 | failAll(fatal); |
| 600 | } else { |
| 601 | rejectPending(new Error("NodeBackend: stopped")); |
| 602 | } |
| 603 | } else if (fatal === null) { |
| 604 | const message = |
| 605 | code === 0 && !started && startDef !== null && !startSettled |
| 606 | ? "worker exited before ready handshake" |
| 607 | : `worker exited unexpectedly: code=${String(code)}`; |
| 608 | fatal = new ZrUiError("ZRUI_BACKEND_ERROR", message); |
| 609 | failAll(fatal); |
| 610 | } |
| 611 | |
| 612 | if (stopDef !== null && !stopSettled) { |
| 613 | stopSettled = true; |
| 614 | stopDef.resolve(); |
| 615 | } |
| 616 | |
| 617 | if (exitDef !== null) exitDef.resolve(); |
| 618 | worker = null; |
| 619 | started = false; |
| 620 | } |
| 621 | |
| 622 | const backend: RuntimeBackend = { |
| 623 | async start(): Promise<void> { |
no test coverage detected