diff --git a/extensions/ql-vscode/gulpfile.ts/appInsights.ts b/extensions/ql-vscode/gulpfile.ts/appInsights.ts index 86d36aae4fe..c0589459f8c 100644 --- a/extensions/ql-vscode/gulpfile.ts/appInsights.ts +++ b/extensions/ql-vscode/gulpfile.ts/appInsights.ts @@ -1,18 +1,21 @@ -import { src, dest } from "gulp"; -import replace from "gulp-replace"; +import { readFile, writeFile } from "fs/promises"; /** Inject the application insights key into the telemetry file */ -export function injectAppInsightsKey() { +export async function injectAppInsightsKey() { if (!process.env.APP_INSIGHTS_KEY) { // noop console.log( "APP_INSIGHTS_KEY environment variable is not set. So, cannot inject it into the application.", ); - return Promise.resolve(); + return; } // replace the key - return src(["out/extension.js"]) - .pipe(replace(/REPLACE-APP-INSIGHTS-KEY/, process.env.APP_INSIGHTS_KEY)) - .pipe(dest("out/")); + const filePath = "out/extension.js"; + const content = await readFile(filePath, "utf8"); + await writeFile( + filePath, + content.replace(/REPLACE-APP-INSIGHTS-KEY/, process.env.APP_INSIGHTS_KEY), + "utf8", + ); } diff --git a/extensions/ql-vscode/gulpfile.ts/textmate.ts b/extensions/ql-vscode/gulpfile.ts/textmate.ts index 3666722f6fe..7927d4f1ca4 100644 --- a/extensions/ql-vscode/gulpfile.ts/textmate.ts +++ b/extensions/ql-vscode/gulpfile.ts/textmate.ts @@ -1,6 +1,7 @@ import { dest, src } from "gulp"; import { load } from "js-yaml"; -import { objectTransform } from "through2"; +import type { TransformCallback } from "stream"; +import { Transform } from "stream"; import PluginError from "plugin-error"; import type Vinyl from "vinyl"; import type { @@ -247,12 +248,13 @@ function transformFile(yaml: ExtendedTextmateGrammar) { } export function transpileTextMateGrammar() { - return objectTransform( - ( + return new Transform({ + objectMode: true, + transform( file: Vinyl, - _encoding: string, - callback: (err?: Error | null, file?: Vinyl) => void, - ): void => { + _encoding: BufferEncoding, + callback: TransformCallback, + ): void { if (file.isNull()) { callback(null, file); } else if (file.isBuffer()) { @@ -270,7 +272,7 @@ export function transpileTextMateGrammar() { ); } }, - ); + }); } export function compileTextMateGrammar() { diff --git a/extensions/ql-vscode/gulpfile.ts/typescript.ts b/extensions/ql-vscode/gulpfile.ts/typescript.ts index d050205a4b0..a735e6ebbea 100644 --- a/extensions/ql-vscode/gulpfile.ts/typescript.ts +++ b/extensions/ql-vscode/gulpfile.ts/typescript.ts @@ -1,18 +1,19 @@ -import { gray, red } from "ansi-colors"; +import { styleText } from "util"; import { dest, parallel, src, watch } from "gulp"; import esbuild from "gulp-esbuild"; import type { reporter } from "gulp-typescript"; import { createProject } from "gulp-typescript"; -import del from "del"; import { pipeline } from "stream/promises"; -import { mkdir } from "fs/promises"; +import { mkdir, rm } from "fs/promises"; +import { join } from "path"; export function goodReporter(): reporter.Reporter { return { error: (error, typescript) => { if (error.tsFile) { console.log( - `[${gray("gulp-typescript")}] ${red( + `[${styleText("gray", "gulp-typescript")}] ${styleText( + "red", `${error.fullFilename}(${error.startPosition!.line + 1},${ error.startPosition!.character }): `, @@ -32,10 +33,13 @@ export function goodReporter(): reporter.Reporter { const tsProject = createProject("tsconfig.json"); -export function cleanOutput() { - return tsProject.projectDirectory - ? del(`${tsProject.projectDirectory}/out/*`) - : Promise.resolve(); +export async function cleanOutput() { + if (tsProject.projectDirectory) { + await rm(join(tsProject.projectDirectory, "out"), { + recursive: true, + force: true, + }); + } } export function compileEsbuild() { diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 63b6e47f7ba..1711aa6ce04 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -21,13 +21,11 @@ "@vscode/debugprotocol": "^1.68.0", "ajv": "^8.18.0", "chokidar": "^5.0.0", - "d3": "^7.9.0", "d3-graphviz": "^5.6.0", "fs-extra": "^11.1.1", "js-yaml": "^5.2.3", "koffi": "^3.3.2", "msw": "^2.15.0", - "nanoid": "^6.0.1", "p-queue": "^8.0.1", "proper-lockfile": "^4.1.2", "react": "^19.3.0", @@ -37,7 +35,6 @@ "source-map-support": "^0.5.21", "stream-json": "^3.5.0", "styled-components": "^6.5.3", - "tmp": "^0.2.7", "tmp-promise": "^3.0.2", "tree-kill": "^1.2.2", "vscode-extension-telemetry": "^0.1.6", @@ -69,7 +66,6 @@ "@testing-library/react": "^16.3.3", "@testing-library/user-event": "^14.6.7", "@types/cross-spawn": "^6.0.6", - "@types/d3": "^7.4.0", "@types/d3-graphviz": "^3.1.0", "@types/fs-extra": "^11.0.1", "@types/gulp": "^4.0.18", @@ -79,7 +75,6 @@ "@types/proper-lockfile": "^4.1.4", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "@types/readable-stream": "^4.0.24", "@types/sarif": "^2.1.2", "@types/semver": "^7.7.1", "@types/tar-stream": "^3.1.4", @@ -89,12 +84,10 @@ "@typescript-eslint/parser": "^8.71.0", "@vscode/test-electron": "^3.1.0", "@vscode/vsce": "^4.0.0", - "ansi-colors": "^4.1.1", "applicationinsights": "^2.9.8", "babel-jest": "30.2.0", "cross-env": "^10.1.0", "cross-spawn": "^7.0.6", - "del": "^6.0.0", "eslint": "^9.28.0", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.5", @@ -107,7 +100,6 @@ "glob": "^13.0.6", "gulp": "^5.0.1", "gulp-esbuild": "^0.14.1", - "gulp-replace": "^1.1.3", "gulp-typescript": "^5.0.1", "husky": "^9.1.7", "jest": "^30.2.0", @@ -121,7 +113,6 @@ "prettier": "^3.9.3", "storybook": "^10.6.1", "tar-stream": "^3.2.0", - "through2": "^5.0.11", "ts-jest": "^29.4.14", "ts-json-schema-generator": "^2.3.0", "ts-node": "^10.9.2", @@ -12877,153 +12868,6 @@ "@types/node": "*" } }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "dev": true, - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", - "dev": true - }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "dev": true - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "dev": true - }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "dev": true, - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "dev": true - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", - "dev": true - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "dev": true - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "dev": true - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "dev": true, - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz", - "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==", - "dev": true - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "dev": true - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "dev": true, - "dependencies": { - "@types/geojson": "*" - } - }, "node_modules/@types/d3-graphviz": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-graphviz/-/d3-graphviz-3.1.0.tgz", @@ -13076,112 +12920,6 @@ "@types/d3-selection": "^1" } }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.6.tgz", - "integrity": "sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==", - "dev": true - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "dev": true, - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.2.tgz", - "integrity": "sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==", - "dev": true - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "dev": true - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "dev": true - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "dev": true - }, - "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", - "dev": true, - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", - "dev": true - }, - "node_modules/@types/d3-selection": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", - "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", - "dev": true - }, - "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", - "dev": true, - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", - "dev": true - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "dev": true - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "dev": true - }, - "node_modules/@types/d3-transition": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", - "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", - "dev": true, - "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" - } - }, "node_modules/@types/debug": { "version": "4.1.13", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", @@ -13236,12 +12974,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/geojson": { - "version": "7946.0.13", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz", - "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==", - "dev": true - }, "node_modules/@types/glob-stream": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-8.0.2.tgz", @@ -13741,16 +13473,6 @@ "@types/react": "^19.3.0" } }, - "node_modules/@types/readable-stream": { - "version": "4.0.24", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.24.tgz", - "integrity": "sha512-NRvUNC/JFGPJvqdAfEve8oginbM6V08u5NzLWpG8MwA2kTPOLnqk+wpwuPT+mp3aUsxyuT6m2gnrPuHYCruzEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/resolve": { "version": "1.20.6", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", @@ -14864,19 +14586,6 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -14932,19 +14641,6 @@ "node": ">= 14" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", @@ -14961,15 +14657,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -15208,15 +14895,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -16200,18 +15878,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/binaryextensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", - "dev": true, - "engines": { - "node": ">=0.8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", @@ -16577,15 +16243,6 @@ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -17067,91 +16724,6 @@ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", @@ -17160,28 +16732,6 @@ "node": ">=12" } }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-dispatch": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", @@ -17202,38 +16752,6 @@ "node": ">=12" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, "node_modules/d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", @@ -17242,30 +16760,6 @@ "node": ">=12" } }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-format": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", @@ -17274,17 +16768,6 @@ "node": ">=12" } }, - "node_modules/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-graphviz": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-5.6.0.tgz", @@ -17438,14 +16921,6 @@ "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" - } - }, "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -17465,57 +16940,6 @@ "node": ">=12" } }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-selection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", @@ -17524,39 +16948,6 @@ "node": ">=12" } }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-timer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", @@ -17844,36 +17235,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -17962,18 +17323,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -19364,32 +18713,12 @@ "node": ">=4.0.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/eventemitter3": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/events-universal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", @@ -20295,26 +19624,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/glogg": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", @@ -20571,22 +19880,6 @@ "esbuild": ">=0.17" } }, - "node_modules/gulp-replace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz", - "integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/gulp-typescript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", @@ -21112,6 +20405,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -21312,14 +20606,6 @@ "node": ">= 0.4" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -21774,15 +21060,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -22259,22 +21536,6 @@ "node": ">=8" } }, - "node_modules/istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", - "dev": true, - "dependencies": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -28020,24 +27281,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "node_modules/nanoid": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-6.0.1.tgz", - "integrity": "sha512-3wVS3i51pE2pi1k5FFL/95BGfVS0kSsvDVuGXHOtxox/TywUmtgq+3qiTOTbs9J7KfHaXPiN171k/A6dBnaXFw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^22 || ^24 || >=26" - } - }, "node_modules/napi-postinstall": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", @@ -28701,21 +27944,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-queue": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", @@ -29506,16 +28734,6 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -30111,17 +29329,6 @@ "node": ">= 10.13.0" } }, - "node_modules/replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -30346,11 +29553,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" - }, "node_modules/rolldown": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.9.tgz", @@ -30431,11 +29633,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -30523,7 +29720,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/sass": { "version": "1.86.3", @@ -31876,28 +31074,6 @@ "dev": true, "license": "MIT" }, - "node_modules/textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/through2": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/through2/-/through2-5.0.11.tgz", - "integrity": "sha512-g3ACuADXGxvApYBg83YNLCSGeQUkKnXjH0FEBLmtap5vDN6pFfLr8uhVUqynb704X6Q3KpgLW2enSZ7WE+Vp5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^4.7.0" - } - }, "node_modules/through2-filter": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", @@ -31918,58 +31094,6 @@ "xtend": "~4.0.1" } }, - "node_modules/through2/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index e69cfa20ed8..88060034fa4 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2079,13 +2079,11 @@ "@vscode/debugprotocol": "^1.68.0", "ajv": "^8.18.0", "chokidar": "^5.0.0", - "d3": "^7.9.0", "d3-graphviz": "^5.6.0", "fs-extra": "^11.1.1", "js-yaml": "^5.2.3", "koffi": "^3.3.2", "msw": "^2.15.0", - "nanoid": "^6.0.1", "p-queue": "^8.0.1", "proper-lockfile": "^4.1.2", "react": "^19.3.0", @@ -2095,7 +2093,6 @@ "source-map-support": "^0.5.21", "stream-json": "^3.5.0", "styled-components": "^6.5.3", - "tmp": "^0.2.7", "tmp-promise": "^3.0.2", "tree-kill": "^1.2.2", "vscode-extension-telemetry": "^0.1.6", @@ -2127,7 +2124,6 @@ "@testing-library/react": "^16.3.3", "@testing-library/user-event": "^14.6.7", "@types/cross-spawn": "^6.0.6", - "@types/d3": "^7.4.0", "@types/d3-graphviz": "^3.1.0", "@types/fs-extra": "^11.0.1", "@types/gulp": "^4.0.18", @@ -2137,7 +2133,6 @@ "@types/proper-lockfile": "^4.1.4", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "@types/readable-stream": "^4.0.24", "@types/sarif": "^2.1.2", "@types/semver": "^7.7.1", "@types/tar-stream": "^3.1.4", @@ -2147,12 +2142,10 @@ "@typescript-eslint/parser": "^8.71.0", "@vscode/test-electron": "^3.1.0", "@vscode/vsce": "^4.0.0", - "ansi-colors": "^4.1.1", "applicationinsights": "^2.9.8", "babel-jest": "30.2.0", "cross-env": "^10.1.0", "cross-spawn": "^7.0.6", - "del": "^6.0.0", "eslint": "^9.28.0", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.5", @@ -2165,7 +2158,6 @@ "glob": "^13.0.6", "gulp": "^5.0.1", "gulp-esbuild": "^0.14.1", - "gulp-replace": "^1.1.3", "gulp-typescript": "^5.0.1", "husky": "^9.1.7", "jest": "^30.2.0", @@ -2179,7 +2171,6 @@ "prettier": "^3.9.3", "storybook": "^10.6.1", "tar-stream": "^3.2.0", - "through2": "^5.0.11", "ts-jest": "^29.4.14", "ts-json-schema-generator": "^2.3.0", "ts-node": "^10.9.2", diff --git a/extensions/ql-vscode/src/compare/compare-view.ts b/extensions/ql-vscode/src/compare/compare-view.ts index 4ab42794d33..87483ffecbd 100644 --- a/extensions/ql-vscode/src/compare/compare-view.ts +++ b/extensions/ql-vscode/src/compare/compare-view.ts @@ -38,7 +38,7 @@ import { getResultSetNames, } from "./result-set-names"; import { isCanary } from "../config"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; interface ComparePair { from: CompletedLocalQueryInfo; @@ -243,7 +243,7 @@ export class CompareView extends AbstractWebview< return; } - const id = nanoid(); + const id = randomUUID(); // Streaming itself is implemented like this: // - 1 setup message which contains the first 1,000 results diff --git a/extensions/ql-vscode/src/databases/database-fetcher.ts b/extensions/ql-vscode/src/databases/database-fetcher.ts index c3240f6095c..6518dd52ca0 100644 --- a/extensions/ql-vscode/src/databases/database-fetcher.ts +++ b/extensions/ql-vscode/src/databases/database-fetcher.ts @@ -11,7 +11,7 @@ import { } from "fs-extra"; import { basename, join } from "path"; import type { Octokit } from "@octokit/rest"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; import type { DatabaseManager, DatabaseItem } from "./local-databases"; import { tmpDir } from "../tmp-dir"; @@ -39,7 +39,7 @@ import { convertGithubNwoToDatabaseUrl } from "./github-databases/api"; import { ensureZippedSourceLocation } from "./local-databases/database-contents"; // The number of tries to use when generating a unique filename before -// giving up and using a nanoid. +// giving up and using a random UUID. const DUPLICATE_FILENAMES_TRIES = 10_000; export class DatabaseFetcher { @@ -429,7 +429,7 @@ export class DatabaseFetcher { } else if (counter <= DUPLICATE_FILENAMES_TRIES + 5) { // If there are more than 10,000 similarly named databases, // give up on using a counter and use a random string instead. - folderName = `${lastName}-${nanoid()}`; + folderName = `${lastName}-${randomUUID()}`; } else { // This should almost never happen, but just in case, we don't want to // get stuck in an infinite loop. diff --git a/extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts b/extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts index f3736748805..2756f4d280a 100644 --- a/extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts +++ b/extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts @@ -5,7 +5,7 @@ import { containsPath, tmpdir } from "../common/files"; import type { NotificationLogger } from "../common/logging"; import { showAndLogErrorMessage } from "../common/logging"; import { isAbsolute, normalize, resolve } from "path"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; import type { ModelConfig } from "../config"; /** @@ -245,11 +245,11 @@ export async function ensurePackLocationIsInWorkspaceFolder( const otherPackLocations = await Promise.all( Array.from({ length: 3 }).map(() => packLocationToAbsolute( - modelConfig.getPackLocation(nanoid(), { - database: nanoid(), - language: nanoid(), - name: nanoid(), - owner: nanoid(), + modelConfig.getPackLocation(randomUUID(), { + database: randomUUID(), + language: randomUUID(), + name: randomUUID(), + owner: randomUUID(), }), logger, ), diff --git a/extensions/ql-vscode/src/query-server/query-runner.ts b/extensions/ql-vscode/src/query-server/query-runner.ts index 5d42e6056d7..78bdbdd3b07 100644 --- a/extensions/ql-vscode/src/query-server/query-runner.ts +++ b/extensions/ql-vscode/src/query-server/query-runner.ts @@ -24,7 +24,7 @@ import { } from "./messages"; import type { BaseLogger, Logger } from "../common/logging"; import { join } from "path"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; import type { QueryServerClient } from "./query-server-client"; import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; import { compileAndRunQueryAgainstDatabaseCore } from "./run-queries"; @@ -259,7 +259,7 @@ export class QueryRunner { queryBasename: string, templates: Record | undefined, ): CoreQueryRun { - const id = `${queryBasename}-${nanoid()}`; + const id = `${queryBasename}-${randomUUID()}`; const outputDir = new QueryOutputDir(join(queryStorageDir, id)); return { diff --git a/extensions/ql-vscode/src/run-queries-shared.ts b/extensions/ql-vscode/src/run-queries-shared.ts index b8e6a711c59..89025e0c865 100644 --- a/extensions/ql-vscode/src/run-queries-shared.ts +++ b/extensions/ql-vscode/src/run-queries-shared.ts @@ -16,7 +16,6 @@ import { import type { InitialQueryInfo } from "./query-results"; import { ensureMetadataIsComplete } from "./query-results"; import { isQuickQueryPath } from "./local-queries/quick-query"; -import { nanoid } from "nanoid"; import type { CodeQLCliServer } from "./codeql-cli/cli"; import { SELECT_QUERY_NAME } from "./language-support"; import type { DatabaseManager } from "./databases/local-databases"; @@ -28,7 +27,7 @@ import type { BaseLogger } from "./common/logging"; import { showAndLogWarningMessage } from "./common/logging"; import { extLogger } from "./common/logging/vscode"; import { getErrorMessage } from "./common/helpers-pure"; -import { createHash } from "crypto"; +import { createHash, randomUUID } from "crypto"; import { QueryOutputDir } from "./local-queries/query-output-dir"; import { progressUpdate } from "./common/vscode/progress"; import type { ProgressCallback } from "./common/vscode/progress"; @@ -526,7 +525,7 @@ export async function createInitialQueryInfo( isQuickEvalCount, isQuickQuery: isQuickQueryPath(selectedQuery.queryPath), databaseInfo, - id: `${basename(selectedQuery.queryPath)}-${nanoid()}`, + id: `${basename(selectedQuery.queryPath)}-${randomUUID()}`, start: new Date(), ...(selectedQuery.quickEval !== undefined ? { diff --git a/extensions/ql-vscode/src/stories/variant-analysis/VariantAnalysisAnalyzedRepos.stories.tsx b/extensions/ql-vscode/src/stories/variant-analysis/VariantAnalysisAnalyzedRepos.stories.tsx index 7b8f08878e0..16836cae1c6 100644 --- a/extensions/ql-vscode/src/stories/variant-analysis/VariantAnalysisAnalyzedRepos.stories.tsx +++ b/extensions/ql-vscode/src/stories/variant-analysis/VariantAnalysisAnalyzedRepos.stories.tsx @@ -1,7 +1,6 @@ import type { Meta, StoryFn } from "@storybook/react"; import { faker } from "@faker-js/faker"; -import { customAlphabet } from "nanoid"; import { VariantAnalysisContainer } from "../../view/variant-analysis/VariantAnalysisContainer"; import { VariantAnalysisAnalyzedRepos } from "../../view/variant-analysis/VariantAnalysisAnalyzedRepos"; @@ -129,7 +128,6 @@ faker.seed(42); const manyScannedRepos = Array.from({ length: 1000 }, (_, i) => { const mockedScannedRepo = createMockScannedRepo(); - const nanoid = customAlphabet("123456789"); return { ...mockedScannedRepo, analysisStatus: VariantAnalysisRepoStatus.Succeeded, @@ -137,8 +135,8 @@ const manyScannedRepos = Array.from({ length: 1000 }, (_, i) => { repository: { ...mockedScannedRepo.repository, // We need to ensure the ID is unique for React keys - id: parseInt(nanoid()), - fullName: `octodemo/${nanoid()}`, + id: faker.number.int(), + fullName: `octodemo/${faker.string.numeric({ length: 21, allowLeadingZeros: false })}`, }, }; }); diff --git a/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts b/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts index f2670d914ae..0ab0e3eb2f9 100644 --- a/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts +++ b/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts @@ -3,7 +3,7 @@ import { window } from "vscode"; import { join, basename, relative } from "path"; import { dump } from "js-yaml"; import { copy, writeFile, readFile, mkdirp, remove } from "fs-extra"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; import { tmpDir } from "../tmp-dir"; import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; import type { Credentials } from "../common/authentication"; @@ -167,7 +167,7 @@ async function createRemoteQueriesTempDirectory(): Promise { // archive if the pack path contains any 8.3 components. const tmpDirPath = await expandShortPaths(tmpDir.name, extLogger); - const remoteQueryDir = join(tmpDirPath, `remote-query-${nanoid()}`); + const remoteQueryDir = join(tmpDirPath, `remote-query-${randomUUID()}`); await mkdirp(remoteQueryDir); const queryPackDir = join(remoteQueryDir, "query-pack"); @@ -175,7 +175,10 @@ async function createRemoteQueriesTempDirectory(): Promise { const compiledPackDir = join(remoteQueryDir, "compiled-pack"); - const bundleFile = join(remoteQueryDir, `qlpack-${nanoid()}-generated.tgz`); + const bundleFile = join( + remoteQueryDir, + `qlpack-${randomUUID()}-generated.tgz`, + ); return { remoteQueryDir, queryPackDir, compiledPackDir, bundleFile }; } diff --git a/extensions/ql-vscode/src/view/results/Graph.tsx b/extensions/ql-vscode/src/view/results/Graph.tsx index 0c82e41c008..c2bc9503ad8 100644 --- a/extensions/ql-vscode/src/view/results/Graph.tsx +++ b/extensions/ql-vscode/src/view/results/Graph.tsx @@ -1,4 +1,3 @@ -import { select } from "d3"; import { jumpToLocation } from "./result-table-utils"; import type { GraphvizOptions } from "d3-graphviz"; import { graphviz } from "d3-graphviz"; @@ -48,10 +47,12 @@ export function Graph({ graphData, databaseUri }: GraphProps) { d.attributes["xlink:href"] = "#"; d.attributes["href"] = "#"; loc.uri = `file://${loc.uri}`; - select(this).on("click", (event: Event) => { - jumpToLocation(loc, databaseUri); - event.preventDefault(); // Avoid resetting scroll position - }); + if (this && "addEventListener" in this) { + this.addEventListener("click", (event: Event) => { + jumpToLocation(loc, databaseUri); + event.preventDefault(); // Avoid resetting scroll position + }); + } } } if ("fill" in d.attributes) { diff --git a/extensions/ql-vscode/test/common/logging/output-channel-logger.test.ts b/extensions/ql-vscode/test/common/logging/output-channel-logger.test.ts index ad835dda77e..19bd1995910 100644 --- a/extensions/ql-vscode/test/common/logging/output-channel-logger.test.ts +++ b/extensions/ql-vscode/test/common/logging/output-channel-logger.test.ts @@ -1,7 +1,7 @@ import { readdirSync, readFileSync } from "fs-extra"; import { join } from "path"; import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import type { BaseLogger, Logger } from "../../../src/common/logging"; import { TeeLogger } from "../../../src/common/logging"; import { OutputChannelLogger } from "../../../src/common/logging/vscode"; diff --git a/extensions/ql-vscode/test/jest-config.ts b/extensions/ql-vscode/test/jest-config.ts index 2d9b3f1a397..4528dd0f886 100644 --- a/extensions/ql-vscode/test/jest-config.ts +++ b/extensions/ql-vscode/test/jest-config.ts @@ -13,7 +13,6 @@ const transformScopes = [ const transformPackages = [ "before-after-hook", "chokidar", - "d3", "data-uri-to-buffer", "delaunator", "exenv-es6", @@ -21,7 +20,6 @@ const transformPackages = [ "formdata-polyfill", "internmap", "lit", - "nanoid", "p-queue", "p-timeout", "readdirp", diff --git a/extensions/ql-vscode/test/unit-tests/common/files.test.ts b/extensions/ql-vscode/test/unit-tests/common/files.test.ts index b9b90136ee9..9434c826076 100644 --- a/extensions/ql-vscode/test/unit-tests/common/files.test.ts +++ b/extensions/ql-vscode/test/unit-tests/common/files.test.ts @@ -11,7 +11,7 @@ import { walkDirectory, } from "../../../src/common/files"; import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { createFileSync, ensureDirSync, diff --git a/extensions/ql-vscode/test/unit-tests/databases/local-databases/db-contents-heuristics.test.ts b/extensions/ql-vscode/test/unit-tests/databases/local-databases/db-contents-heuristics.test.ts index 771b55058fa..8c66bf8335e 100644 --- a/extensions/ql-vscode/test/unit-tests/databases/local-databases/db-contents-heuristics.test.ts +++ b/extensions/ql-vscode/test/unit-tests/databases/local-databases/db-contents-heuristics.test.ts @@ -1,5 +1,5 @@ import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { join } from "path"; import { mkdirSync, writeFileSync } from "fs-extra"; import { diff --git a/extensions/ql-vscode/test/unit-tests/local-queries/query-contents.test.ts b/extensions/ql-vscode/test/unit-tests/local-queries/query-contents.test.ts index 11d9d80e04e..c5aa79facbb 100644 --- a/extensions/ql-vscode/test/unit-tests/local-queries/query-contents.test.ts +++ b/extensions/ql-vscode/test/unit-tests/local-queries/query-contents.test.ts @@ -1,5 +1,5 @@ import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { dump } from "js-yaml"; import { writeFileSync } from "fs-extra"; import { join } from "path"; diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts index 4e5c9489869..701b84cbaf4 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts @@ -5,7 +5,7 @@ import { } from "../../../../src/local-queries/skeleton-query-wizard"; import { mockedObject, mockedQuickPickItem } from "../../utils/mocking.helpers"; import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import type { MessageItem, TextDocument, WorkspaceFolder } from "vscode"; import { Uri, window, workspace } from "vscode"; import { QlPackGenerator } from "../../../../src/local-queries/qlpack-generator"; diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/model-editor/modeled-method-fs.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/model-editor/modeled-method-fs.test.ts index 78bf3c11375..5180a85f498 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/model-editor/modeled-method-fs.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/model-editor/modeled-method-fs.test.ts @@ -11,7 +11,7 @@ import { join } from "path"; import { extLogger } from "../../../../src/common/logging/vscode"; import { homedir, tmpdir } from "os"; import { mkdir, rm } from "fs-extra"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; import { QueryLanguage } from "../../../../src/common/query-language"; const dummyExtensionPackContents = ` @@ -68,7 +68,10 @@ describe("modeled-method-fs", () => { process.platform === "win32" ? join(homedir(), "AppData", "Local", "Temp") : tmpdir(); - tmpDir = join(systemTmpDir, `codeql-vscode-test-${nanoid(8)}`); + tmpDir = join( + systemTmpDir, + `codeql-vscode-test-${randomUUID().slice(0, 8)}`, + ); await mkdir(tmpDir, { recursive: true }); tmpDirRemoveCallback = async () => { await rm(tmpDir, { recursive: true }); diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/query-server/query-server-client.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/query-server/query-server-client.test.ts index 655e30acc31..760d1ca614d 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/query-server/query-server-client.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/query-server/query-server-client.test.ts @@ -1,5 +1,5 @@ import { join, basename } from "path"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { CancellationTokenSource } from "vscode-jsonrpc"; import type { RunQueryParams } from "../../../../src/query-server/messages"; import { diff --git a/extensions/ql-vscode/test/vscode-tests/jest.activated-extension.setup.ts b/extensions/ql-vscode/test/vscode-tests/jest.activated-extension.setup.ts index dc47c409111..e53cba38c31 100644 --- a/extensions/ql-vscode/test/vscode-tests/jest.activated-extension.setup.ts +++ b/extensions/ql-vscode/test/vscode-tests/jest.activated-extension.setup.ts @@ -1,7 +1,7 @@ import { env } from "vscode"; import { beforeEachAction as testConfigBeforeEachAction } from "./test-config"; import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { realpathSync } from "fs-extra"; import { getActivatedExtension, diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/common/vscode/file-path-discovery.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/common/vscode/file-path-discovery.test.ts index 99dadc0cd85..55a5f0d0d3a 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/common/vscode/file-path-discovery.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/common/vscode/file-path-discovery.test.ts @@ -8,7 +8,7 @@ import { FilePathDiscovery } from "../../../../../src/common/vscode/file-path-di import { basename, dirname, join } from "path"; import { mkdirSync, readFileSync, rmSync, writeFileSync } from "fs"; import { rm } from "fs/promises"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { normalizePath } from "../../../../../src/common/files"; import { extLogger } from "../../../../../src/common/logging/vscode/loggers"; import { getErrorMessage } from "../../../../../src/common/helpers-pure"; diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts index 517373bd3fd..dd68ab52bc7 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/local-queries/local-databases.test.ts @@ -1,5 +1,5 @@ import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { ensureDir, ensureFile, pathExists, writeFile } from "fs-extra"; import { join } from "path"; import type { ExtensionContext } from "vscode"; diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/qlpack-generator.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/qlpack-generator.test.ts index f9a538250b3..cfbf7361052 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/qlpack-generator.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/qlpack-generator.test.ts @@ -6,7 +6,7 @@ import type { CodeQLCliServer } from "../../../src/codeql-cli/cli"; import { Uri, workspace } from "vscode"; import { getErrorMessage } from "../../../src/common/helpers-pure"; import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { mockedObject } from "../utils/mocking.helpers"; import { ensureDir, readFile } from "fs-extra"; import { load } from "js-yaml"; diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-discovery.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-discovery.test.ts index dbde79ef81e..969f1ef57df 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-discovery.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-discovery.test.ts @@ -3,7 +3,7 @@ import type { QueryPackDiscoverer } from "../../../../src/queries-panel/query-di import { QueryDiscovery } from "../../../../src/queries-panel/query-discovery"; import { createMockApp } from "../../../__mocks__/appMock"; import { basename, dirname, join } from "path"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { rm } from "fs/promises"; import { FileTreeDirectory, diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-pack-discovery.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-pack-discovery.test.ts index 326c4e5813e..ec32a93b20d 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-pack-discovery.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/queries-panel/query-pack-discovery.test.ts @@ -1,6 +1,6 @@ import { Uri, workspace } from "vscode"; import { QueryPackDiscovery } from "../../../../src/queries-panel/query-pack-discovery"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { rm } from "fs/promises"; import { dirname, join } from "path"; import { ensureDir, writeJSON } from "fs-extra"; diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/code-tour/code-tour.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/code-tour/code-tour.test.ts index 645da748bf0..edbe8f9ce1b 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/code-tour/code-tour.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/code-tour/code-tour.test.ts @@ -1,7 +1,7 @@ import type { WorkspaceFolder } from "vscode"; import { Uri, window, workspace } from "vscode"; import type { DirResult } from "tmp"; -import { dirSync } from "tmp"; +import { dirSync } from "tmp-promise"; import { join } from "path"; import { mkdir, writeFile } from "fs-extra"; diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/local-databases-ui.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/local-databases-ui.test.ts index abe3b22111b..5321b212890 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/local-databases-ui.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/local-databases-ui.test.ts @@ -1,4 +1,4 @@ -import { dirSync, fileSync } from "tmp"; +import { dirSync, fileSync } from "tmp-promise"; import { dirname, join } from "path"; import { mkdirs, diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/local-queries/webview.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/local-queries/webview.test.ts index 18556ab7aad..20694692847 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/local-queries/webview.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/local-queries/webview.test.ts @@ -2,7 +2,7 @@ import type { WebviewPanel } from "vscode"; import { Uri, ViewColumn, window } from "vscode"; import { basename } from "path"; import type { FileResult } from "tmp"; -import { fileSync } from "tmp"; +import { fileSync } from "tmp-promise"; import { fileUriToWebviewUri } from "../../../../src/local-queries/webview"; import { getDefaultResultSetName } from "../../../../src/common/interface-types"; diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts index e8ae5a82975..c0428ec2963 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts @@ -14,7 +14,7 @@ import { CancellationTokenSource, Uri } from "vscode"; import { tmpDir } from "../../../../../src/tmp-dir"; import type { QueryHistoryInfo } from "../../../../../src/query-history/query-history-info"; import { createMockVariantAnalysisHistoryItem } from "../../../../factories/query-history/variant-analysis-history-item"; -import { nanoid } from "nanoid"; +import { randomUUID } from "crypto"; import type { QueryHistoryDto, QueryHistoryItemDto, @@ -144,7 +144,7 @@ describe("write and read", () => { t: "remote", status: "InProgress", completed: false, - queryId: nanoid(), + queryId: randomUUID(), remoteQuery: { queryName: "query-name", queryFilePath: "query-file.ql", @@ -163,7 +163,7 @@ describe("write and read", () => { t: "remote", status: "Completed", completed: true, - queryId: nanoid(), + queryId: randomUUID(), remoteQuery: { queryName: "query-name", queryFilePath: "query-file.ql",