diff --git a/packages/transport-deno/scripts/build_npm.ts b/packages/transport-deno/scripts/build_npm.ts index 2b98e947..5c88dbd6 100644 --- a/packages/transport-deno/scripts/build_npm.ts +++ b/packages/transport-deno/scripts/build_npm.ts @@ -13,7 +13,8 @@ await build({ // package.json properties name: "@meshtastic/transport-deno", version: Deno.args[0], - description: "A Deno transport layer for your project, enabling seamless integration with npm.", + description: + "A Deno transport layer for your project, enabling seamless integration with npm.", license: "GPL-3.0-only", repository: { type: "git", diff --git a/packages/transport-node-serial/src/transport.ts b/packages/transport-node-serial/src/transport.ts index 02f439e2..56947bb6 100644 --- a/packages/transport-node-serial/src/transport.ts +++ b/packages/transport-node-serial/src/transport.ts @@ -14,7 +14,10 @@ export class TransportNodeSerial implements Types.Transport { * @param baudRate - The port number for the TCP connection (defaults to 4403). * @returns A promise that resolves with a connected TransportNode instance. */ - public static create(path: string, baudRate = 115200): Promise { + public static create( + path: string, + baudRate = 115200, + ): Promise { return new Promise((resolve, reject) => { const port = new SerialPort({ path, @@ -45,9 +48,7 @@ export class TransportNodeSerial implements Types.Transport { console.error("Serial port connection error:", err); }); - const fromDeviceSource = Readable.toWeb( - port, - ) as ReadableStream; + const fromDeviceSource = Readable.toWeb(port) as ReadableStream; this._fromDevice = fromDeviceSource.pipeThrough(Utils.fromDeviceStream()); // Stream for data going FROM the application TO the Meshtastic device. diff --git a/packages/transport-web-bluetooth/src/transport.ts b/packages/transport-web-bluetooth/src/transport.ts index 717ec277..05cf094c 100644 --- a/packages/transport-web-bluetooth/src/transport.ts +++ b/packages/transport-web-bluetooth/src/transport.ts @@ -95,6 +95,7 @@ export class TransportWebBluetooth implements Types.Transport { this._isFirstWrite = false; setTimeout(() => { + // biome-ignore lint/style/noNonNullAssertion: we know this will be set this.readFromRadio(this._fromDeviceController!); }, 50); } diff --git a/packages/transport-web-serial/src/transport.ts b/packages/transport-web-serial/src/transport.ts index 1c1706dc..69aa35a1 100644 --- a/packages/transport-web-serial/src/transport.ts +++ b/packages/transport-web-serial/src/transport.ts @@ -33,7 +33,7 @@ export class TransportWebSerial implements Types.Transport { // Set up the pipe with abort signal for clean cancellation this.pipePromise = Utils.toDeviceStream.readable.pipeTo( connection.writable, - { signal: this.abortController.signal } + { signal: this.abortController.signal }, ); this._toDevice = Utils.toDeviceStream.writable; @@ -58,31 +58,30 @@ export class TransportWebSerial implements Types.Transport { async disconnect() { try { this.abortController.abort(); - + if (this.pipePromise) { try { await this.pipePromise; } catch (error) { - if (error instanceof Error && error.name !== 'AbortError') { + if (error instanceof Error && error.name !== "AbortError") { throw error; } } } // Cancel any remaining streams - if (this._fromDevice && this._fromDevice.locked) { + if (this._fromDevice?.locked) { try { await this._fromDevice.cancel(); - } catch (error) { + } catch { // Stream cancellation might fail if already cancelled } } await this.connection.close(); - } catch (error) { // If we can't close cleanly, let the browser handle cleanup - console.warn('Could not cleanly disconnect serial port:', error); + console.warn("Could not cleanly disconnect serial port:", error); } } @@ -93,11 +92,11 @@ export class TransportWebSerial implements Types.Transport { async reconnect() { // Create a new AbortController for the new connection this.abortController = new AbortController(); - + // Re-establish the pipe connection this.pipePromise = Utils.toDeviceStream.readable.pipeTo( this.connection.writable, - { signal: this.abortController.signal } + { signal: this.abortController.signal }, ); } } diff --git a/packages/web/src/components/CommandPalette/index.tsx b/packages/web/src/components/CommandPalette/index.tsx index fc177862..a07ac46c 100644 --- a/packages/web/src/components/CommandPalette/index.tsx +++ b/packages/web/src/components/CommandPalette/index.tsx @@ -193,7 +193,7 @@ export const CommandPalette = () => { label: t("contextual.command.dfuMode"), icon: HardDriveUpload, action() { - connection?.enterDfuMode() + connection?.enterDfuMode(); }, }, {