mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
chore(lint): clear desktop warnings to zero
Convert polling loops to recursive helpers to avoid no-await-in-loop, and switch the ws import to the named export so the WebSocket type is referenced directly.
This commit is contained in:
@@ -351,7 +351,7 @@ async function inspectFullscreenResizer(page) {
|
||||
}
|
||||
|
||||
async function findAppPage(browser) {
|
||||
for (let attempt = 0; attempt < 30; attempt += 1) {
|
||||
function findMatchingPage() {
|
||||
for (const context of browser.contexts()) {
|
||||
for (const page of context.pages()) {
|
||||
if (page.url().includes(APP_URL_FRAGMENT) && !page.url().startsWith("devtools://")) {
|
||||
@@ -359,9 +359,18 @@ async function findAppPage(browser) {
|
||||
}
|
||||
}
|
||||
}
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
return null;
|
||||
}
|
||||
throw new Error(`Unable to find Electron app page for ${APP_URL_FRAGMENT}`);
|
||||
async function poll(attempt) {
|
||||
const page = findMatchingPage();
|
||||
if (page) return page;
|
||||
if (attempt >= 29) {
|
||||
throw new Error(`Unable to find Electron app page for ${APP_URL_FRAGMENT}`);
|
||||
}
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
return poll(attempt + 1);
|
||||
}
|
||||
return poll(0);
|
||||
}
|
||||
|
||||
function attachConsoleCollector(page, consoleMessages) {
|
||||
|
||||
@@ -134,11 +134,13 @@ function sleep(ms: number): Promise<void> {
|
||||
|
||||
async function waitForPidExit(pid: number, timeoutMs: number): Promise<boolean> {
|
||||
const deadline = Date.now() + timeoutMs;
|
||||
while (Date.now() < deadline) {
|
||||
async function poll(): Promise<boolean> {
|
||||
if (!isProcessRunning(pid)) return true;
|
||||
if (Date.now() >= deadline) return !isProcessRunning(pid);
|
||||
await sleep(PID_POLL_INTERVAL_MS);
|
||||
return poll();
|
||||
}
|
||||
return !isProcessRunning(pid);
|
||||
return poll();
|
||||
}
|
||||
|
||||
function tailFile(filePath: string, lines = 50): string {
|
||||
@@ -262,7 +264,8 @@ function buildStartupFailureError(
|
||||
}
|
||||
|
||||
async function pollForRunningDaemon(): Promise<DesktopDaemonStatus> {
|
||||
for (let attempt = 0; attempt < STARTUP_POLL_MAX_ATTEMPTS; attempt++) {
|
||||
async function poll(attempt: number): Promise<DesktopDaemonStatus> {
|
||||
if (attempt >= STARTUP_POLL_MAX_ATTEMPTS) return resolveStatus();
|
||||
const status = await resolveStatus();
|
||||
if (attempt === 0 || attempt === STARTUP_POLL_MAX_ATTEMPTS - 1 || attempt % 10 === 9) {
|
||||
logDesktopDaemonLifecycle("polling daemon status after detached start", {
|
||||
@@ -275,8 +278,9 @@ async function pollForRunningDaemon(): Promise<DesktopDaemonStatus> {
|
||||
}
|
||||
if (status.status === "running" && status.serverId && status.listen) return status;
|
||||
await sleep(STARTUP_POLL_INTERVAL_MS);
|
||||
return poll(attempt + 1);
|
||||
}
|
||||
return resolveStatus();
|
||||
return poll(0);
|
||||
}
|
||||
|
||||
async function startDaemon(): Promise<DesktopDaemonStatus> {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { BrowserWindow } from "electron";
|
||||
import WebSocket from "ws";
|
||||
import { WebSocket, type RawData } from "ws";
|
||||
|
||||
interface TransportTarget {
|
||||
transportType: "socket" | "pipe";
|
||||
@@ -97,7 +97,7 @@ export function openLocalTransportSession(target: TransportTarget): Promise<stri
|
||||
emitTransportEvent({ sessionId, kind: "open" });
|
||||
});
|
||||
|
||||
ws.on("message", (data: WebSocket.RawData, isBinary: boolean) => {
|
||||
ws.on("message", (data: RawData, isBinary: boolean) => {
|
||||
if (isBinary || data instanceof Buffer) {
|
||||
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data as ArrayBuffer);
|
||||
emitTransportEvent({
|
||||
|
||||
Reference in New Issue
Block a user