From aec3ad9ed3529106210849b7fb457d39d1443bac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 12:43:26 -0400 Subject: [PATCH] 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] * 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] 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 Co-authored-by: Hunter Thornsberry --- apps/web/package.json | 2 +- .../src/pages/Connections/useConnections.ts | 4 +- e2e/fixtures/peer.ts | 12 +- e2e/global-setup.ts | 14 +- e2e/global-teardown.ts | 4 +- e2e/pages/ConnectionPage.ts | 18 +- e2e/pages/MessagesPage.ts | 4 +- e2e/tests/messaging.broadcast.spec.ts | 8 +- e2e/tests/messaging.direct.spec.ts | 23 ++- package.json | 2 +- .../src/features/nodes/NodesClient.test.ts | 4 +- packages/ui/vitest.config.ts | 9 + playwright.config.ts | 5 +- pnpm-lock.yaml | 166 +++++++++--------- 14 files changed, 161 insertions(+), 114 deletions(-) create mode 100644 packages/ui/vitest.config.ts diff --git a/apps/web/package.json b/apps/web/package.json index 9f89ff6c..8a816e81 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -112,7 +112,7 @@ "autoprefixer": "^10.5.2", "gzipper": "^8.3.0", "happy-dom": "^20.10.6", - "oxfmt": "^0.58.0", + "oxfmt": "^0.59.0", "oxlint": "^1.74.0", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.2", diff --git a/apps/web/src/pages/Connections/useConnections.ts b/apps/web/src/pages/Connections/useConnections.ts index 4c7ae193..d8cf7d0c 100644 --- a/apps/web/src/pages/Connections/useConnections.ts +++ b/apps/web/src/pages/Connections/useConnections.ts @@ -249,7 +249,9 @@ export function useConnections() { // Read from the live store, not the memoized `connections` closure: callers // such as addConnectionAndConnect() add a connection and connect to it in the // same tick, before this hook re-renders, so the closure would be stale. - const conn = useDeviceStore.getState().savedConnections.find((c) => c.id === id); + const conn = useDeviceStore + .getState() + .savedConnections.find((c) => c.id === id); if (!conn) { log.warn("connect: unknown connection id", { id }); return false; diff --git a/e2e/fixtures/peer.ts b/e2e/fixtures/peer.ts index ca512bc3..a0600f82 100644 --- a/e2e/fixtures/peer.ts +++ b/e2e/fixtures/peer.ts @@ -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((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); }); diff --git a/e2e/global-setup.ts b/e2e/global-setup.ts index 7fe64248..51ac0a78 100644 --- a/e2e/global-setup.ts +++ b/e2e/global-setup.ts @@ -44,11 +44,17 @@ async function waitForHttps(url: string, timeoutMs: number): Promise { 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 { +async function waitForTcp( + host: string, + port: number, + timeoutMs: number, +): Promise { const deadline = Date.now() + timeoutMs; let lastErr = "connection refused"; while (Date.now() < deadline) { @@ -83,7 +89,9 @@ export default async function globalSetup(): Promise { 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} ...`); diff --git a/e2e/global-teardown.ts b/e2e/global-teardown.ts index 5a91feff..8fd272be 100644 --- a/e2e/global-teardown.ts +++ b/e2e/global-teardown.ts @@ -17,6 +17,8 @@ export default async function globalTeardown(): Promise { 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).", + ); } } diff --git a/e2e/pages/ConnectionPage.ts b/e2e/pages/ConnectionPage.ts index 95ba9d31..a39e194e 100644 --- a/e2e/pages/ConnectionPage.ts +++ b/e2e/pages/ConnectionPage.ts @@ -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 { + async connectHttp(opts: { + host: string; + tls: boolean; + name?: string; + }): Promise { 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, + }); } } diff --git a/e2e/pages/MessagesPage.ts b/e2e/pages/MessagesPage.ts index 25626e52..bf878304 100644 --- a/e2e/pages/MessagesPage.ts +++ b/e2e/pages/MessagesPage.ts @@ -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, }); } diff --git a/e2e/tests/messaging.broadcast.spec.ts b/e2e/tests/messaging.broadcast.spec.ts index f17724e6..04f8f178 100644 --- a/e2e/tests/messaging.broadcast.spec.ts +++ b/e2e/tests/messaging.broadcast.spec.ts @@ -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 }); diff --git a/e2e/tests/messaging.direct.spec.ts b/e2e/tests/messaging.direct.spec.ts index af3e9aa7..696a0083 100644 --- a/e2e/tests/messaging.direct.spec.ts +++ b/e2e/tests/messaging.direct.spec.ts @@ -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); + }); }); diff --git a/package.json b/package.json index 2c8352f0..d4f1a7a0 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@typescript/typescript6": "^6.0.2", "husky": "^9.1.0", "lint-staged": "^17.0.8", - "oxfmt": "^0.58.0", + "oxfmt": "^0.59.0", "oxlint": "^1.74.0", "tsdown": "^0.22.7", "typescript": "^7.0.2", diff --git a/packages/sdk/src/features/nodes/NodesClient.test.ts b/packages/sdk/src/features/nodes/NodesClient.test.ts index 8d7b8170..3edb9d9a 100644 --- a/packages/sdk/src/features/nodes/NodesClient.test.ts +++ b/packages/sdk/src/features/nodes/NodesClient.test.ts @@ -33,7 +33,9 @@ describe("NodesClient", () => { const { transport } = createFakeTransport(); const client = new MeshClient({ transport }); - client.events.onNodeInfoPacket.dispatch(create(Protobuf.Mesh.NodeInfoSchema, { num: 100 })); + client.events.onNodeInfoPacket.dispatch( + create(Protobuf.Mesh.NodeInfoSchema, { num: 100 }), + ); client.events.onTelemetryPacket.dispatch({ id: 1, from: 100, diff --git a/packages/ui/vitest.config.ts b/packages/ui/vitest.config.ts new file mode 100644 index 00000000..eb48bc42 --- /dev/null +++ b/packages/ui/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineProject } from "vitest/config"; + +export default defineProject({ + test: { + name: "@meshtastic/ui", + environment: "happy-dom", + include: ["src/**/*.test.ts", "src/**/*.test.tsx"], + }, +}); diff --git a/playwright.config.ts b/playwright.config.ts index 10a6fa90..43b3ed80 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -24,7 +24,10 @@ export default defineConfig({ timeout: 90_000, expect: { timeout: 15_000 }, - reporter: [["list"], ["html", { outputFolder: "e2e/.report", open: "never" }]], + reporter: [ + ["list"], + ["html", { outputFolder: "e2e/.report", open: "never" }], + ], use: { baseURL: `http://localhost:${WEB_PORT}`, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a6cc9a6..3f956ffc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,8 +43,8 @@ importers: specifier: ^17.0.8 version: 17.0.8 oxfmt: - specifier: ^0.58.0 - version: 0.58.0 + specifier: ^0.59.0 + version: 0.59.0 oxlint: specifier: ^1.74.0 version: 1.74.0 @@ -296,8 +296,8 @@ importers: specifier: ^20.10.6 version: 20.10.6 oxfmt: - specifier: ^0.58.0 - version: 0.58.0 + specifier: ^0.59.0 + version: 0.59.0 oxlint: specifier: ^1.74.0 version: 1.74.0 @@ -1446,124 +1446,124 @@ packages: '@oxc-project/types@0.139.0': resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} - '@oxfmt/binding-android-arm-eabi@0.58.0': - resolution: {integrity: sha512-Uz62sHduGGPftXtILGyxdSW4PX82rUg+rfdNqhsgxe881g4rIoXlIqmZQ6HVKcF4f+F8qMhdD03Bx5u7gmeTdg==} + '@oxfmt/binding-android-arm-eabi@0.59.0': + resolution: {integrity: sha512-bNTnfbuG7sAwb2PakMNaDukx5kXeW9duXOBeWtTOiLz3fXz3q2DlWguufPZ+c2IHEVrRXHD+M4aUgEWm841LDA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxfmt/binding-android-arm64@0.58.0': - resolution: {integrity: sha512-rD0lRaJp1b+9vw6X4A2dJWKukd6X8yxiicN4JxXcXayolmUypRZxk+lKR+fVOu5q/iYc0fh5fR4bgmfOfVlbaA==} + '@oxfmt/binding-android-arm64@0.59.0': + resolution: {integrity: sha512-R/Sn7z52QtdAKNqQLLY0EK7hVMjXiz3XUlvoCFCm/60jgIzAnQtiqLKBCFaBkimCQL5rs2ezPMcicpjCsrl54Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxfmt/binding-darwin-arm64@0.58.0': - resolution: {integrity: sha512-uzbPPk7O6M+w2K65vcQ1woga3wgP8zghjL1KOG5b6qJ8dvYHZJ1VShaslg2KOK6yQIwCQtcMCXqLBM6sqXUNTg==} + '@oxfmt/binding-darwin-arm64@0.59.0': + resolution: {integrity: sha512-vm/ynUqE4HjC0ZIEjmXv1UJu1/GngccQ+T+TJudTMxUxm6r+GQTg1TO3E5jJfI71pBaXxSzs1+vWHIwuilGHhw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.58.0': - resolution: {integrity: sha512-L0nKYDxU32oxeQqJj21W9SlIMnf81VZEhyah6iDvFhf5q0oynq498Fopth7blErUJVBpVtxQ98RMCfMPqpJX6w==} + '@oxfmt/binding-darwin-x64@0.59.0': + resolution: {integrity: sha512-uTtYDpLN/obfKVWGpgEc8BqYlLZBQTPz2uYEvLRy3HPZxjZ34wiFzukUBU2bf64JuCYZI//GTV1EOMmWlPjf/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxfmt/binding-freebsd-x64@0.58.0': - resolution: {integrity: sha512-woNwfD58dC5PGS9LSLSD5JYfo/EFK5iG9vhDWkcCg3q78ag7KC8bpDqgvPHrMoXpx83OLXxoSOhu6z8FsVTHlg==} + '@oxfmt/binding-freebsd-x64@0.59.0': + resolution: {integrity: sha512-e2UnxL/ifStSPy8ffBCDbdy595SYsGy+U1pur4G65TuMmWxAMBzYGG7atZo/3mp515p8rZdsflxVD/E1FAdPLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxfmt/binding-linux-arm-gnueabihf@0.58.0': - resolution: {integrity: sha512-Sqs8nMLxuQpY21NKJ1u4stPDmO5hskBCNNh2E3AdCfI1QqWtf4m+Qn4mGEIUO4KGmuq3SWc/SZ80uy5IiwTCDw==} + '@oxfmt/binding-linux-arm-gnueabihf@0.59.0': + resolution: {integrity: sha512-LtdeZ1l0urxte3VNi3g8cocZwv1xGM1NKHSgF/fJEEVhyQmlgGh7WFWKFd/pNuO7djfvPNtNO1+MS+FEWkgVSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.58.0': - resolution: {integrity: sha512-Vd4exzBI5B5hB9m22JiTQzIL23WvHo/Pe+sNXPNeBLXSP9swCBPKCEBRwKpmpQzYhlgYaCgfPcGXPKAJBRIiZQ==} + '@oxfmt/binding-linux-arm-musleabihf@0.59.0': + resolution: {integrity: sha512-dBTciSsj9GTMl7p+h2gMSI0hoPn2ijfc/dUsbnWsP0RbwgPl2r0C/5zkMb3Pb+gGj17LH7f1o4qLo9aes/pAvA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm64-gnu@0.58.0': - resolution: {integrity: sha512-bUWi5mHV+4Vi56RLHE1h6q/HHfwAIT3XoB9vJAVeRzfu5NriXM8y6eeJu0vlKa0C9kq2rq1sOWRClhdLHPocrg==} + '@oxfmt/binding-linux-arm64-gnu@0.59.0': + resolution: {integrity: sha512-tXVdJ/JINsNWdponPHN0OuKHtC+HdpyoS9sd6IDPNiiEYsRki8b7tefRZ1iMnRkdbyT4SEbguWsr6o+5awvbPQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-musl@0.58.0': - resolution: {integrity: sha512-2ZHxemzgHcjtktAuVUwSoyXmGo/t+aF5tS1ciPpPei4rhSyrz3JOqDosXXrmhN/yLUSzJjtuW7ToTWqfQpCj2w==} + '@oxfmt/binding-linux-arm64-musl@0.59.0': + resolution: {integrity: sha512-RRTq38i2zT5fnw6XGHjvT6w2mh6x/G3m6AZcAZ56OTDTT/lsOeYnG3SVjwmH40z5kPqF+lf+o35e6m6PpKy9Dw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-ppc64-gnu@0.58.0': - resolution: {integrity: sha512-AwKkVwjVmFQ3bcO7j0McGYAqCKH2a326fswfofng/E8VewCT/raeeGQr4huVhY704deK8AWASSTlxzMj0eZc6Q==} + '@oxfmt/binding-linux-ppc64-gnu@0.59.0': + resolution: {integrity: sha512-lD3k7glAJSaXW0D6xzu8VOZbYbosvy+0ktOVkfLEoQF5HJlMSxTQ2KNW0JO+08ccP/1ElOKktVEMI0fqRbVB4w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.58.0': - resolution: {integrity: sha512-xsRpTxfUnJF8D3AUKko/qyWdjw4GZVHlCVFuGlzSCTeewLmykKINW8em1+wx+axsDVtJJcMtvsiaXggXxrlHgw==} + '@oxfmt/binding-linux-riscv64-gnu@0.59.0': + resolution: {integrity: sha512-WH5ZP1RbuHKBO/yfPRQKpNO/ijHcEDNbnmC4VPf/Bcd3+mbMAZpRiJWRa1PL5bREdIZZHo343mk3sqlc9x7Usw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-musl@0.58.0': - resolution: {integrity: sha512-Z4AYOTcy7nYEIiXwD62PlerimyYRcfJOgUbQAEBjXz098kxKuERBlRntofGy69HHhe9E0TLVNMl1yspVNu+efw==} + '@oxfmt/binding-linux-riscv64-musl@0.59.0': + resolution: {integrity: sha512-743wOiaI9RZY4QVGkWkfGRavD5ZJUJ6gscFjVrVu1dP8AZh9jM+a6v3NhlR+OIzHdS6DhLM96w+gcVskskz7rw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-s390x-gnu@0.58.0': - resolution: {integrity: sha512-A3nhhtZPC/TKVWOPj9q/H3p2znJDCcHWYlJBhWL8hGq/bFmBaNBHC8Np6E581yVq1w9Mi3rMDNzDalWvtUfJtQ==} + '@oxfmt/binding-linux-s390x-gnu@0.59.0': + resolution: {integrity: sha512-xjRXQsRnrRZCcCkIEnbd2lmsQNobtwwkJxdy2bWXhZ1lIN0ouZwsBXRsoovW3yATuziAYwr9HMiQuR/Cc75NIw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.58.0': - resolution: {integrity: sha512-2g+tVkgwqphw8R4hgo+kF4oz8+P5RwVOtr9+irsC7uwEp0e9j7Crw8kDGKL20uYlLPD7g02DqA61mC/UNYx98A==} + '@oxfmt/binding-linux-x64-gnu@0.59.0': + resolution: {integrity: sha512-4hNjqq/Rbr9B+StY9zMMAfm72+mtM4v80xYL5Qkb59Qd72g2vJMI0iFlPj3kf6miMsie/yJ7rt4urJT292HBgA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-musl@0.58.0': - resolution: {integrity: sha512-rc15P6AbyyB7426aN8AakLd02Trb3a6ML/mmfAQeVHJEfVofWLcWIrBdy6zDEY+DIaL/s8E4GGPboVw+oP3+EA==} + '@oxfmt/binding-linux-x64-musl@0.59.0': + resolution: {integrity: sha512-NH579iN8EVQYsWowUB8B5vFchcylJtwPVJ7NmUAqEQHNLfhPbDT3K56KrECNAkUN4QpF4qiMgN2vsfZwVvjm7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxfmt/binding-openharmony-arm64@0.58.0': - resolution: {integrity: sha512-ZWoTM27/HYPOh9iq86DAbhPu9nXb8qKvvGU/h8OfliyVUFAMMNTLDkGsWDKKnDqIkqvZ9+dXlgUOsH1LYO3O7g==} + '@oxfmt/binding-openharmony-arm64@0.59.0': + resolution: {integrity: sha512-mzZy3Z5Aj1D75Aq9FVlmoRQH5ei8Ga4o/NZmlXkKyeZ5EmPrUXRR7c6BMBteV1ZuZ/356UYDuLRLjAMxTDTiBA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxfmt/binding-win32-arm64-msvc@0.58.0': - resolution: {integrity: sha512-LHZnqFXe2dEfkRI4XdZS/57nEOT/I4UCRX5IyM9v4GYW9XwQCjGe1IUK59SuKw3POwvcgWQ4pme2cYXmNqTNPg==} + '@oxfmt/binding-win32-arm64-msvc@0.59.0': + resolution: {integrity: sha512-0CpDJ1gE3jN1Gk6xms1Ie6LPfPcOtY4FAtoOmVLHQoAf8DvO2wd0DW2dIX2f7YTp5dxrr0ND8JeUEjm3DP3k5g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.58.0': - resolution: {integrity: sha512-mZKpg20TpheCJym1rarcZCUJeW1sSruw8zAAaCYWvuVfwIUDN1CXdrPU/JgCWReXTCTrEfCB8Wyo3hh9jSZ2EA==} + '@oxfmt/binding-win32-ia32-msvc@0.59.0': + resolution: {integrity: sha512-zwdKBu3pt87uW0bRcywZb0oGMS7C6n87qogwRYFUgmk44T90ZzYlPjtlFYXs/DnBFrgNCvlHwCuWKfVWLeE7kw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.58.0': - resolution: {integrity: sha512-N/wUU4N5PZ2orBtI+Ko7MnMfYLfE7K91UrGMY/c/pYyHR3lA9kwst1XugkZx+92YcRh/Eo+iv2eTESSWXfiZPA==} + '@oxfmt/binding-win32-x64-msvc@0.59.0': + resolution: {integrity: sha512-dUUbZkKgWrmAeI/puzv4bxN8lzcYaFnQVwFTFtwO2Gp8M7lZGSE2qJjC58g518+1bltJ8mizjYwD0BGHym0l/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5110,8 +5110,8 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - oxfmt@0.58.0: - resolution: {integrity: sha512-8feG/7NVEHDVwc1OUpP6Pks+TnaDFUw2jLLFIMi5bcmmwxAX2wBQvjSzj62RRTYBf2Op1Wt8xbkmagmPTR5ETg==} + oxfmt@0.59.0: + resolution: {integrity: sha512-Xqk6cPZS1yMvVa7OAuenaDZUsgMDutvvbZ9/L5gSvAfW64+WN4HVhgipLj5rVERbYQt8fLs9TopyZ1rU1XEG/w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -7531,61 +7531,61 @@ snapshots: '@oxc-project/types@0.139.0': {} - '@oxfmt/binding-android-arm-eabi@0.58.0': + '@oxfmt/binding-android-arm-eabi@0.59.0': optional: true - '@oxfmt/binding-android-arm64@0.58.0': + '@oxfmt/binding-android-arm64@0.59.0': optional: true - '@oxfmt/binding-darwin-arm64@0.58.0': + '@oxfmt/binding-darwin-arm64@0.59.0': optional: true - '@oxfmt/binding-darwin-x64@0.58.0': + '@oxfmt/binding-darwin-x64@0.59.0': optional: true - '@oxfmt/binding-freebsd-x64@0.58.0': + '@oxfmt/binding-freebsd-x64@0.59.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.58.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.59.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.58.0': + '@oxfmt/binding-linux-arm-musleabihf@0.59.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.58.0': + '@oxfmt/binding-linux-arm64-gnu@0.59.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.58.0': + '@oxfmt/binding-linux-arm64-musl@0.59.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.58.0': + '@oxfmt/binding-linux-ppc64-gnu@0.59.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.58.0': + '@oxfmt/binding-linux-riscv64-gnu@0.59.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.58.0': + '@oxfmt/binding-linux-riscv64-musl@0.59.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.58.0': + '@oxfmt/binding-linux-s390x-gnu@0.59.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.58.0': + '@oxfmt/binding-linux-x64-gnu@0.59.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.58.0': + '@oxfmt/binding-linux-x64-musl@0.59.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.58.0': + '@oxfmt/binding-openharmony-arm64@0.59.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.58.0': + '@oxfmt/binding-win32-arm64-msvc@0.59.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.58.0': + '@oxfmt/binding-win32-ia32-msvc@0.59.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.58.0': + '@oxfmt/binding-win32-x64-msvc@0.59.0': optional: true '@oxlint/binding-android-arm-eabi@1.74.0': @@ -11634,29 +11634,29 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxfmt@0.58.0: + oxfmt@0.59.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.58.0 - '@oxfmt/binding-android-arm64': 0.58.0 - '@oxfmt/binding-darwin-arm64': 0.58.0 - '@oxfmt/binding-darwin-x64': 0.58.0 - '@oxfmt/binding-freebsd-x64': 0.58.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.58.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.58.0 - '@oxfmt/binding-linux-arm64-gnu': 0.58.0 - '@oxfmt/binding-linux-arm64-musl': 0.58.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.58.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.58.0 - '@oxfmt/binding-linux-riscv64-musl': 0.58.0 - '@oxfmt/binding-linux-s390x-gnu': 0.58.0 - '@oxfmt/binding-linux-x64-gnu': 0.58.0 - '@oxfmt/binding-linux-x64-musl': 0.58.0 - '@oxfmt/binding-openharmony-arm64': 0.58.0 - '@oxfmt/binding-win32-arm64-msvc': 0.58.0 - '@oxfmt/binding-win32-ia32-msvc': 0.58.0 - '@oxfmt/binding-win32-x64-msvc': 0.58.0 + '@oxfmt/binding-android-arm-eabi': 0.59.0 + '@oxfmt/binding-android-arm64': 0.59.0 + '@oxfmt/binding-darwin-arm64': 0.59.0 + '@oxfmt/binding-darwin-x64': 0.59.0 + '@oxfmt/binding-freebsd-x64': 0.59.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.59.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.59.0 + '@oxfmt/binding-linux-arm64-gnu': 0.59.0 + '@oxfmt/binding-linux-arm64-musl': 0.59.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.59.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.59.0 + '@oxfmt/binding-linux-riscv64-musl': 0.59.0 + '@oxfmt/binding-linux-s390x-gnu': 0.59.0 + '@oxfmt/binding-linux-x64-gnu': 0.59.0 + '@oxfmt/binding-linux-x64-musl': 0.59.0 + '@oxfmt/binding-openharmony-arm64': 0.59.0 + '@oxfmt/binding-win32-arm64-msvc': 0.59.0 + '@oxfmt/binding-win32-ia32-msvc': 0.59.0 + '@oxfmt/binding-win32-x64-msvc': 0.59.0 oxlint@1.74.0: optionalDependencies: