chore(deps-dev): bump oxfmt from 0.58.0 to 0.59.0 (#1306)

* chore(deps-dev): bump oxfmt from 0.58.0 to 0.59.0

Bumps [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) from 0.58.0 to 0.59.0.
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.59.0/npm/oxfmt)

---
updated-dependencies:
- dependency-name: oxfmt
  dependency-version: 0.59.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix formatting issues for oxfmt 0.59.0

* fix: add vitest.config.ts for packages/ui to avoid unplugin-dts TypeScript 7 crash

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Dan Ditomaso <dan.ditomaso@gmail.com>
Co-authored-by: Hunter Thornsberry <hunter@hunterthornsberry.com>
This commit is contained in:
dependabot[bot]
2026-07-22 12:43:26 -04:00
committed by GitHub
co-authored by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Dan Ditomaso Hunter Thornsberry
parent 1eeabeaa91
commit aec3ad9ed3
14 changed files with 161 additions and 114 deletions
+9 -3
View File
@@ -6,7 +6,8 @@ import path from "node:path";
* that talks to the non-browser node over the TCP phone API. It sends text,
* blocks until a specific text is received, or reports the node's number.
*/
const PYTHON = process.env.E2E_PEER_PYTHON ?? path.resolve("e2e/peer/.venv/bin/python");
const PYTHON =
process.env.E2E_PEER_PYTHON ?? path.resolve("e2e/peer/.venv/bin/python");
const SCRIPT = path.resolve("e2e/peer/peer.py");
const HOST = process.env.E2E_PEER_HOST ?? "127.0.0.1";
const PORT = process.env.E2E_PEER_PORT ?? "14404";
@@ -16,7 +17,10 @@ function spawnPeer(args: string[]): ChildProcess {
}
/** Invoke `onLine` for each complete stdout line. */
function onStdoutLines(child: ChildProcess, onLine: (line: string) => void): void {
function onStdoutLines(
child: ChildProcess,
onLine: (line: string) => void,
): void {
let buf = "";
child.stdout?.on("data", (chunk: Buffer) => {
buf += chunk.toString();
@@ -44,7 +48,9 @@ export function peerSend(
});
return new Promise<void>((resolve, reject) => {
child.on("exit", (code) =>
code === 0 ? resolve() : reject(new Error(`peer send exited ${code}: ${stderr.trim()}`)),
code === 0
? resolve()
: reject(new Error(`peer send exited ${code}: ${stderr.trim()}`)),
);
child.on("error", reject);
});
+11 -3
View File
@@ -44,11 +44,17 @@ async function waitForHttps(url: string, timeoutMs: number): Promise<void> {
if (ok) return;
await sleep(1000);
}
throw new Error(`device webserver not ready at ${url} within ${timeoutMs}ms (last: ${lastErr})`);
throw new Error(
`device webserver not ready at ${url} within ${timeoutMs}ms (last: ${lastErr})`,
);
}
/** Poll a TCP port until it accepts a connection. */
async function waitForTcp(host: string, port: number, timeoutMs: number): Promise<void> {
async function waitForTcp(
host: string,
port: number,
timeoutMs: number,
): Promise<void> {
const deadline = Date.now() + timeoutMs;
let lastErr = "connection refused";
while (Date.now() < deadline) {
@@ -83,7 +89,9 @@ export default async function globalSetup(): Promise<void> {
console.log("[e2e] bringing up meshtasticd two-node mesh ...");
execSync(`docker compose -f ${COMPOSE_FILE} up -d`, { stdio: "inherit" });
} else {
console.log(`[e2e] hardware mode: device=${NODE_A_URL} peer=${PEER_HOST}:${PEER_PORT}`);
console.log(
`[e2e] hardware mode: device=${NODE_A_URL} peer=${PEER_HOST}:${PEER_PORT}`,
);
}
console.log(`[e2e] waiting for device webserver ${NODE_A_URL} ...`);
+3 -1
View File
@@ -17,6 +17,8 @@ export default async function globalTeardown(): Promise<void> {
console.log("[e2e] tearing down meshtasticd mesh ...");
execSync(`docker compose -f ${COMPOSE_FILE} down -v`, { stdio: "inherit" });
} else {
console.log("[e2e] leaving meshtasticd mesh running (set E2E_DOCKER_DOWN=1 to stop).");
console.log(
"[e2e] leaving meshtasticd mesh running (set E2E_DOCKER_DOWN=1 to stop).",
);
}
}
+14 -4
View File
@@ -9,7 +9,11 @@ import { expect, type Page } from "@playwright/test";
export class ConnectionPage {
constructor(private readonly page: Page) {}
async connectHttp(opts: { host: string; tls: boolean; name?: string }): Promise<void> {
async connectHttp(opts: {
host: string;
tls: boolean;
name?: string;
}): Promise<void> {
const { host, tls, name = "E2E Device" } = opts;
const page = this.page;
@@ -25,7 +29,8 @@ export class ConnectionPage {
await dialog.locator("#url").fill(host);
const httpsSwitch = dialog.getByRole("switch");
const isChecked = (await httpsSwitch.getAttribute("aria-checked")) === "true";
const isChecked =
(await httpsSwitch.getAttribute("aria-checked")) === "true";
if (tls !== isChecked) {
await httpsSwitch.click();
}
@@ -33,11 +38,16 @@ export class ConnectionPage {
await dialog.getByRole("button", { name: "Test connection" }).click();
const save = dialog.getByRole("button", { name: "Save connection" });
await expect(save, "Save enables only after the device is reachable").toBeEnabled({
await expect(
save,
"Save enables only after the device is reachable",
).toBeEnabled({
timeout: 20_000,
});
await save.click();
await expect(page).toHaveURL(/\/messages\/broadcast\/0/, { timeout: 60_000 });
await expect(page).toHaveURL(/\/messages\/broadcast\/0/, {
timeout: 60_000,
});
}
}
+3 -1
View File
@@ -23,7 +23,9 @@ export class MessagesPage {
await expect(this.input()).toBeEnabled();
// The SDK chat client lags the composer (device handshake + sqlocal init), so
// an immediate send is silently dropped. Gate on the "Connected" status.
await expect(this.page.getByText("Connected", { exact: true }).first()).toBeVisible({
await expect(
this.page.getByText("Connected", { exact: true }).first(),
).toBeVisible({
timeout: 30_000,
});
}
+6 -2
View File
@@ -13,13 +13,17 @@ test.describe("broadcast messaging over a real two-node mesh", () => {
await messagesPage.waitReady();
});
test("renders a broadcast received from a mesh peer (mesh -> web)", async ({ messagesPage }) => {
test("renders a broadcast received from a mesh peer (mesh -> web)", async ({
messagesPage,
}) => {
const nonce = `pong-${Date.now()}`;
await peerSend(nonce);
await messagesPage.expectMessage(nonce);
});
test("delivers a typed broadcast to the mesh (web -> mesh)", async ({ messagesPage }) => {
test("delivers a typed broadcast to the mesh (web -> mesh)", async ({
messagesPage,
}) => {
const nonce = `ping-${Date.now()}`;
// Listen on the peer node before sending, then type+send from the browser.
const recv = await startPeerRecv(nonce, { timeout: 60 });
+11 -12
View File
@@ -28,16 +28,15 @@ test.describe("direct messaging over a real two-node mesh", () => {
await messagesPage.waitReady();
});
test.fixme(
"delivers a direct message from the browser to the peer node (web -> mesh)",
async ({ messagesPage }) => {
const peerNum = await peerNodeNum();
const nonce = `dm-${Date.now()}`;
const recv = await startPeerRecv(nonce, { timeout: 60 });
await messagesPage.openDirectMessageByNodeNum(peerNum);
await messagesPage.send(nonce);
const from = await recv.received;
expect(from).toBeGreaterThan(0);
},
);
test.fixme("delivers a direct message from the browser to the peer node (web -> mesh)", async ({
messagesPage,
}) => {
const peerNum = await peerNodeNum();
const nonce = `dm-${Date.now()}`;
const recv = await startPeerRecv(nonce, { timeout: 60 });
await messagesPage.openDirectMessageByNodeNum(peerNum);
await messagesPage.send(nonce);
const from = await recv.received;
expect(from).toBeGreaterThan(0);
});
});