From d4e0394364563401e77daa7928ed5534df1ad2bf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:26:48 +0000 Subject: [PATCH 1/4] Initial plan From db1818a985c11a13de3d1bb7cf0bb5a25a5a9dbc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:31:48 +0000 Subject: [PATCH 2/4] Enable TypeScript 5.9.3 compatibility with skipLibCheck and esModuleInterop Co-authored-by: ankoh <3986510+ankoh@users.noreply.github.com> --- packages/dashql-core-api/tsconfig.json | 4 +++- tsconfig.json | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/dashql-core-api/tsconfig.json b/packages/dashql-core-api/tsconfig.json index 35fd7503c..78c196e97 100644 --- a/packages/dashql-core-api/tsconfig.json +++ b/packages/dashql-core-api/tsconfig.json @@ -10,8 +10,10 @@ "declarationMap": true, "declarationDir": "./dist", "noImplicitAny": true, - "esModuleInterop": false, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, "isolatedModules": true, + "skipLibCheck": true, "lib": [ "es6", "dom" diff --git a/tsconfig.json b/tsconfig.json index bc3b3b444..67e6d72d8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,11 +5,13 @@ "moduleResolution": "NodeNext", "sourceMap": true, "noImplicitAny": true, - "esModuleInterop": false, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, "downlevelIteration": true, "isolatedModules": true, "strict": true, "jsx": "react", + "skipLibCheck": true, "types": [ "node", "jest" From 0773c581e71fe97b7b1f9b6563c3b6df43c04090 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:37:29 +0000 Subject: [PATCH 3/4] Fix TypeScript 5.9.3 Uint8Array type errors by using .buffer property Co-authored-by: ankoh <3986510+ankoh@users.noreply.github.com> --- packages/dashql-app/src/platform/native_grpc_client.ts | 2 +- packages/dashql-app/src/platform/native_http_client.ts | 4 ++-- packages/dashql-app/src/platform/web_file_downloader.ts | 2 +- packages/dashql-core-api/tsconfig.json | 4 +--- tsconfig.json | 4 +--- 5 files changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/dashql-app/src/platform/native_grpc_client.ts b/packages/dashql-app/src/platform/native_grpc_client.ts index acea08ef1..ab024b5aa 100644 --- a/packages/dashql-app/src/platform/native_grpc_client.ts +++ b/packages/dashql-app/src/platform/native_grpc_client.ts @@ -246,7 +246,7 @@ export class NativeGrpcChannel { const request = new Request(url, { method: 'POST', headers, - body: args.body, + body: args.body.buffer, }); const response = await fetch(request); await throwIfError(response); diff --git a/packages/dashql-app/src/platform/native_http_client.ts b/packages/dashql-app/src/platform/native_http_client.ts index b937e0603..0ea5d3140 100644 --- a/packages/dashql-app/src/platform/native_http_client.ts +++ b/packages/dashql-app/src/platform/native_http_client.ts @@ -189,9 +189,9 @@ export class NativeHttpClient implements HttpClient { if (init.body instanceof ArrayBuffer) { bodyBuffer = init.body; } else if (init.body instanceof URLSearchParams) { - bodyBuffer = new TextEncoder().encode(body.toString()); + bodyBuffer = new TextEncoder().encode(body.toString()).buffer; } else if (typeof init.body == "string") { - bodyBuffer = new TextEncoder().encode(body); + bodyBuffer = new TextEncoder().encode(body).buffer; } else { throw Error("fetch body is of unexpected type"); } diff --git a/packages/dashql-app/src/platform/web_file_downloader.ts b/packages/dashql-app/src/platform/web_file_downloader.ts index f243b4510..8478c9eae 100644 --- a/packages/dashql-app/src/platform/web_file_downloader.ts +++ b/packages/dashql-app/src/platform/web_file_downloader.ts @@ -3,7 +3,7 @@ import { FileDownloader } from './file_downloader.js'; export class WebFileDownloader implements FileDownloader { async downloadBufferAsFile(uint8Array: Uint8Array, filename: string): Promise { // Create a Blob from the Uint8Array - const blob = new Blob([uint8Array], { type: 'application/octet-stream' }); + const blob = new Blob([uint8Array.buffer], { type: 'application/octet-stream' }); // Create a temporary URL for the Blob const url = URL.createObjectURL(blob); // Create an anchor element and trigger the download diff --git a/packages/dashql-core-api/tsconfig.json b/packages/dashql-core-api/tsconfig.json index 78c196e97..35fd7503c 100644 --- a/packages/dashql-core-api/tsconfig.json +++ b/packages/dashql-core-api/tsconfig.json @@ -10,10 +10,8 @@ "declarationMap": true, "declarationDir": "./dist", "noImplicitAny": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, + "esModuleInterop": false, "isolatedModules": true, - "skipLibCheck": true, "lib": [ "es6", "dom" diff --git a/tsconfig.json b/tsconfig.json index 67e6d72d8..bc3b3b444 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,13 +5,11 @@ "moduleResolution": "NodeNext", "sourceMap": true, "noImplicitAny": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, + "esModuleInterop": false, "downlevelIteration": true, "isolatedModules": true, "strict": true, "jsx": "react", - "skipLibCheck": true, "types": [ "node", "jest" From e7d87a098c84d7d6c63b86241f5501b2956810c5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:38:55 +0000 Subject: [PATCH 4/4] Use type assertions instead of .buffer to preserve Uint8Array data size Co-authored-by: ankoh <3986510+ankoh@users.noreply.github.com> --- packages/dashql-app/src/platform/native_grpc_client.ts | 2 +- packages/dashql-app/src/platform/native_http_client.ts | 6 +++--- packages/dashql-app/src/platform/web_file_downloader.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/dashql-app/src/platform/native_grpc_client.ts b/packages/dashql-app/src/platform/native_grpc_client.ts index ab024b5aa..e39b1c66c 100644 --- a/packages/dashql-app/src/platform/native_grpc_client.ts +++ b/packages/dashql-app/src/platform/native_grpc_client.ts @@ -246,7 +246,7 @@ export class NativeGrpcChannel { const request = new Request(url, { method: 'POST', headers, - body: args.body.buffer, + body: args.body as BodyInit, }); const response = await fetch(request); await throwIfError(response); diff --git a/packages/dashql-app/src/platform/native_http_client.ts b/packages/dashql-app/src/platform/native_http_client.ts index 0ea5d3140..05db3d077 100644 --- a/packages/dashql-app/src/platform/native_http_client.ts +++ b/packages/dashql-app/src/platform/native_http_client.ts @@ -184,14 +184,14 @@ export class NativeHttpClient implements HttpClient { this.logger.debug(`fetch http stream`, { "remote": remote, "path": input?.toString() }, "native_http_client"); const body: any = init?.body; - let bodyBuffer: ArrayBuffer; + let bodyBuffer: ArrayBuffer | Uint8Array; if (init?.body) { if (init.body instanceof ArrayBuffer) { bodyBuffer = init.body; } else if (init.body instanceof URLSearchParams) { - bodyBuffer = new TextEncoder().encode(body.toString()).buffer; + bodyBuffer = new TextEncoder().encode(body.toString()); } else if (typeof init.body == "string") { - bodyBuffer = new TextEncoder().encode(body).buffer; + bodyBuffer = new TextEncoder().encode(body); } else { throw Error("fetch body is of unexpected type"); } diff --git a/packages/dashql-app/src/platform/web_file_downloader.ts b/packages/dashql-app/src/platform/web_file_downloader.ts index 8478c9eae..c47e67386 100644 --- a/packages/dashql-app/src/platform/web_file_downloader.ts +++ b/packages/dashql-app/src/platform/web_file_downloader.ts @@ -3,7 +3,7 @@ import { FileDownloader } from './file_downloader.js'; export class WebFileDownloader implements FileDownloader { async downloadBufferAsFile(uint8Array: Uint8Array, filename: string): Promise { // Create a Blob from the Uint8Array - const blob = new Blob([uint8Array.buffer], { type: 'application/octet-stream' }); + const blob = new Blob([uint8Array as BlobPart], { type: 'application/octet-stream' }); // Create a temporary URL for the Blob const url = URL.createObjectURL(blob); // Create an anchor element and trigger the download