From 03a7225da0e5ea8c2c376a4e8e480461d418de69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 23:25:59 +0000 Subject: [PATCH 1/2] Bump stream-json from 1.9.1 to 3.5.0 in /extensions/ql-vscode Bumps [stream-json](https://github.com/uhop/stream-json) from 1.9.1 to 3.5.0. - [Commits](https://github.com/uhop/stream-json/compare/1.9.1...3.5.0) --- updated-dependencies: - dependency-name: stream-json dependency-version: 3.5.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 29 +++++++++++++++++++------- extensions/ql-vscode/package.json | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 76be5faad14..5e26aff95a7 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -35,7 +35,7 @@ "semver": "^7.7.4", "source-map": "^0.7.6", "source-map-support": "^0.5.21", - "stream-json": "^1.9.1", + "stream-json": "^3.5.0", "styled-components": "^6.5.3", "tmp": "^0.2.7", "tmp-promise": "^3.0.2", @@ -26986,9 +26986,16 @@ } }, "node_modules/stream-chain": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==" + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-4.2.5.tgz", + "integrity": "sha512-Wtyq3bNE3ggLR0v2vftqvuhltym3WbZAkZpfIrkr5F/6vpeUmWmwTgXa16zD87gpahwJ/Qulq3zVfUlgIc0J2A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=22" + }, + "funding": { + "url": "https://github.com/sponsors/uhop" + } }, "node_modules/stream-composer": { "version": "1.0.2", @@ -27007,12 +27014,18 @@ "dev": true }, "node_modules/stream-json": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", - "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-3.5.0.tgz", + "integrity": "sha512-dobB7zipGW8o11PvdRljQSWuyMxifADLvoHeA4elwNWOTbZo6+BlNa+P6aCq7Y9jRiWTy2Ucu2xSv0Y2/T+/kQ==", "license": "BSD-3-Clause", "dependencies": { - "stream-chain": "^2.2.5" + "stream-chain": "^4.2.5" + }, + "engines": { + "node": ">=22" + }, + "funding": { + "url": "https://github.com/sponsors/uhop" } }, "node_modules/stream-shift": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index f8a8d7d5aeb..e11388ed339 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2093,7 +2093,7 @@ "semver": "^7.7.4", "source-map": "^0.7.6", "source-map-support": "^0.5.21", - "stream-json": "^1.9.1", + "stream-json": "^3.5.0", "styled-components": "^6.5.3", "tmp": "^0.2.7", "tmp-promise": "^3.0.2", From 7f99505e11192b2f4efb4a8f392f853ac00f8daf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 7 Sep 2026 11:15:05 +0000 Subject: [PATCH 2/2] Migrate sarif-parser to stream-json v3 API --- extensions/ql-vscode/package-lock.json | 75 ------------------- extensions/ql-vscode/package.json | 1 - .../ql-vscode/src/common/sarif-parser.ts | 50 +++++++------ extensions/ql-vscode/test/jest-config.ts | 2 + 4 files changed, 28 insertions(+), 100 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 5e26aff95a7..e27b86ca4ae 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -83,7 +83,6 @@ "@types/readable-stream": "^4.0.24", "@types/sarif": "^2.1.2", "@types/semver": "^7.7.1", - "@types/stream-json": "^1.7.8", "@types/styled-components": "^5.1.11", "@types/tar-stream": "^3.1.4", "@types/tmp": "^0.2.6", @@ -6445,9 +6444,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -6462,9 +6458,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -6479,9 +6472,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -6496,9 +6486,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -6513,9 +6500,6 @@ "riscv64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -6530,9 +6514,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -6547,9 +6528,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -6564,9 +6542,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -7166,9 +7141,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -7186,9 +7158,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -7206,9 +7175,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -7226,9 +7192,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -7246,9 +7209,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -7266,9 +7226,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -9377,26 +9334,6 @@ "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", "license": "MIT" }, - "node_modules/@types/stream-chain": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/stream-chain/-/stream-chain-2.0.4.tgz", - "integrity": "sha512-V7TsWLHrx79KumkHqSD7F8eR6POpEuWb6PuXJ7s/dRHAf3uVst3Jkp1yZ5XqIfECZLQ4a28vBVstTErmsMBvaQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stream-json": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@types/stream-json/-/stream-json-1.7.8.tgz", - "integrity": "sha512-MU1OB1eFLcYWd1LjwKXrxdoPtXSRzRmAnnxs4Js/ayB5O/NvHraWwuOaqMWIebpYwM6khFlsJOHEhI9xK/ab4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/stream-chain": "*" - } - }, "node_modules/@types/streamx": { "version": "2.9.5", "resolved": "https://registry.npmjs.org/@types/streamx/-/streamx-2.9.5.tgz", @@ -21884,9 +21821,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -21908,9 +21842,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -21932,9 +21863,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -21956,9 +21884,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index e11388ed339..c36837dec02 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2141,7 +2141,6 @@ "@types/readable-stream": "^4.0.24", "@types/sarif": "^2.1.2", "@types/semver": "^7.7.1", - "@types/stream-json": "^1.7.8", "@types/styled-components": "^5.1.11", "@types/tar-stream": "^3.1.4", "@types/tmp": "^0.2.6", diff --git a/extensions/ql-vscode/src/common/sarif-parser.ts b/extensions/ql-vscode/src/common/sarif-parser.ts index 7221bc13144..e70d1618a48 100644 --- a/extensions/ql-vscode/src/common/sarif-parser.ts +++ b/extensions/ql-vscode/src/common/sarif-parser.ts @@ -1,8 +1,8 @@ import type { Log } from "sarif"; import { createReadStream } from "fs-extra"; -import { connectTo } from "stream-json/Assembler"; +import { Assembler } from "stream-json/assembler.js"; import { getErrorMessage } from "./helpers-pure"; -import { withParser } from "stream-json/filters/Ignore"; +import { ignore } from "stream-json/filters/ignore.js"; export async function sarifParser( interpretedResultsPath: string, @@ -11,20 +11,39 @@ export async function sarifParser( // Parse the SARIF file into token streams, filtering out some of the larger subtrees that we // don't need. const pipeline = createReadStream(interpretedResultsPath).pipe( - withParser({ + ignore.withParserAsStream({ // We don't need to run's `artifacts` property, nor the driver's `notifications` property. filter: /^runs\.\d+\.(artifacts|tool\.driver\.notifications)/, }), ); - // Creates JavaScript objects from the token stream - const asm = connectTo(pipeline); - // Returns a constructed Log object with the results of an empty array if no results were found. // If the parser fails for any reason, it will reject the promise. return await new Promise((resolve, reject) => { let alreadyDone = false; - pipeline.on("error", (error) => { + + // Creates JavaScript objects from the token stream + Assembler.connectTo(pipeline, { + onDone: (asm) => { + const log = asm.current; + + // Do some trivial validation. This isn't a full validation of the SARIF file, but it's at + // least enough to ensure that we're not trying to parse complete garbage later. + if (log === null || log.runs === undefined || log.runs.length < 1) { + reject( + new Error( + "Invalid SARIF file: expecting at least one run with result.", + ), + ); + return; + } + + resolve(log); + alreadyDone = true; + }, + }); + + pipeline.on("error", (error: Error) => { reject(error); }); @@ -38,23 +57,6 @@ export async function sarifParser( ); } }); - - asm.on("done", (asm) => { - const log = asm.current; - - // Do some trivial validation. This isn't a full validation of the SARIF file, but it's at - // least enough to ensure that we're not trying to parse complete garbage later. - if (log.runs === undefined || log.runs.length < 1) { - reject( - new Error( - "Invalid SARIF file: expecting at least one run with result.", - ), - ); - } - - resolve(log); - alreadyDone = true; - }); }); } catch (e) { throw new Error( diff --git a/extensions/ql-vscode/test/jest-config.ts b/extensions/ql-vscode/test/jest-config.ts index f1088100468..2d9b3f1a397 100644 --- a/extensions/ql-vscode/test/jest-config.ts +++ b/extensions/ql-vscode/test/jest-config.ts @@ -27,6 +27,8 @@ const transformPackages = [ "readdirp", "rettime", "robust-predicates", + "stream-chain", + "stream-json", "universal-user-agent", "until-async", ];